Đề tài Tổng quan về kit thí nghiệm vi điều khiển μp8951

Tài liệu Đề tài Tổng quan về kit thí nghiệm vi điều khiển μp8951: Phòng thí nghiệm Tự động hoá – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 1 TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN μP8951 I. KIT KTCT_μp8951: KIT thí nghiệm gồm 10 module được bố trí như trên hình 1. 1/- MICROCONTROLLER WITH EXTERNAL RAM: Là khối điều khiển trung tâm gồm một vi điều khiển AT89C51 có nối kết với RAM ngoài và một vi điều khiển AT89C2051. AT89C51 có thể chạy bằng bộ nhớ trong (internal memory, dung lượng 4Kb) hoặc chạy bằng bộ nhớ ngoài (external memory, dung lượng 8Kb). Các socket trên module này bao gồm: TÊN CHỨC NĂNG JP7: P1_CPU PORT 1, CPU 89C51 JP8: P3_CPU PORT 3, CPU 89C51 JP3: P2_ADDRESS PORT 2, CPU 89C51 JP1: DATA_CPU PORT 0, CPU 89C51 JP2: DECODE2_LCD PORT 0, CPU 89C51 JP4: DECODE1_8255 Tín hiệu giải mã cho PPI 8255A JP3: P1_89C2051 PORT 1, CPU 89C2051 JP4: P3_89C2051 PORT 3, CPU 89C2051 2/- PPI 8255A: Module giao tiếp song song, gồm các socket sau: TÊN CHỨC NĂNG JP9: DATA_8255 DATA BUS, 8255A JP10:...

pdf58 trang | Chia sẻ: ntt139 | Lượt xem: 1006 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Tổng quan về kit thí nghiệm vi điều khiển μp8951, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 1 TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN μP8951 I. KIT KTCT_μp8951: KIT thí nghiệm gồm 10 module được bố trí như trên hình 1. 1/- MICROCONTROLLER WITH EXTERNAL RAM: Là khối điều khiển trung tâm gồm một vi điều khiển AT89C51 cĩ nối kết với RAM ngồi và một vi điều khiển AT89C2051. AT89C51 cĩ thể chạy bằng bộ nhớ trong (internal memory, dung lượng 4Kb) hoặc chạy bằng bộ nhớ ngồi (external memory, dung lượng 8Kb). Các socket trên module này bao gồm: TÊN CHỨC NĂNG JP7: P1_CPU PORT 1, CPU 89C51 JP8: P3_CPU PORT 3, CPU 89C51 JP3: P2_ADDRESS PORT 2, CPU 89C51 JP1: DATA_CPU PORT 0, CPU 89C51 JP2: DECODE2_LCD PORT 0, CPU 89C51 JP4: DECODE1_8255 Tín hiệu giải mã cho PPI 8255A JP3: P1_89C2051 PORT 1, CPU 89C2051 JP4: P3_89C2051 PORT 3, CPU 89C2051 2/- PPI 8255A: Module giao tiếp song song, gồm các socket sau: TÊN CHỨC NĂNG JP9: DATA_8255 DATA BUS, 8255A JP10: CTRL_8255 Các tín hiệu điều khiển 8255A JP11: PA_8255 PORT A, 8255A JP12: PB_8255 PORT B, 8255A JB13: PC1_8255 PORT C, 8255A JB14: PC2_8255 PORT C, 8255A Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 2 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 3 3/- COUNTER: Gồm một socket: JP15: COUNTER, cung cấp xung cho mạch đếm, dùng để mơ phỏng cho bài thí nghiệm đếm sản phẩm. 4/- MATRIX LED 8x5: Module ma trận LED 8 hàng, 5 cột, các bit hàng và cột đều tác động ở mức cao . Các socket bao gồm: TÊN CHỨC NĂNG JP24: DATA_MATRIX 8 ĐƯỜNG DATA MATRẬN LED JP25: CATHOD BLUE 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED XANH JP26: CATHOD RED 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED ĐỎ 5/- LED _ LCD TC1602A: Gồm 8 led đơn, 5 ly màu đỏ, tác động ở mức cao và một LCD TC1602A, module gồm các socket sau: TÊN CHỨC NĂNG JP27: DATA LED 8 BIT ĐIỀU KHIỂN LED ĐƠN JP22: DATA LCD 8 BIT DATA CỦA LCD JP23: CONTROL_LCD ĐƯỜNG ĐIỀU KHIỂN ĐỌC/ GHI LCD 6/- LED 7 ĐOẠN: Module gồm 8 led 7 đoạn cathod chung, các đường DATA và điều khiển đều tác động ở mức cao. Các socket: TÊN CHỨC NĂNG JP20: DATA_LED7S. 8 BIT DATA CỦA LED 7 ĐOẠN JP21: CONTROL_LED7S 8 BIT ĐIỀU KHIỂN LED 7/- STEP MOTOR: Gồm một động cơ bước và mạch điều khiển, cĩ một socket: JP28: STEP_MOTOR, các đường điều khiển tác động cao. 8/- CONTROL_KEYBOARD: Gồm 4 phím nhấn, cĩ một socket: JP29: DATA_SW Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 4 9/- DAC0808: Gồm một mạch DAC 8 bit sử dụng IC DAC0808, ngõ ra của mạch được nối với một LED 5 ly, dùng để điều khiển độ sáng của LED theo giá trị số ở ngõ vào. Module cĩ một socket: JP18: DATA_DAC, gồm 8 bit data của bộ biến đổi số – tương tự. 10/- ADC0804: Gồm mộ ADC 8 bit sử dụng IC ADC0804, ngõ vào tương tự là bộ cảm biến nhiệt độ dùng LM335, module gồm 2 socket: TÊN CHỨC NĂNG JP16: DATA_ADC 8 BIT NGÕ RA SỐ JP17: CONTROL_ADC CÁC ĐƯỜNG TÍN HIỆU ĐIỀU KHIỂN II. SƠ ĐỒ NGUYÊN LÝ CÁC KHỐI: D4 JP1 D A TA _C PU 1 2 3 4 5 6 7 8 C6 33p VCC D 1 A11 A5 A0 VCC A8 INT1 Y7 D6D6 A 9 W R R X D P 1 . 1 R64 270 RD D2 U5 74LS138 1 2 3 15 14 13 12 11 10 9 7 6 4 5 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B P 1 . 0 JP7 P 1 _ C P U 1 2 3 4 5 6 7 8 D 7 R61 2K2 A15 U6A 74LS08 1 2 3 T 1 P1.0 A14 RD A9 RESET A10 C8 10uF Y2 11,0592Mhz PSEN RN6 10K 1 2 3 4 5 6 7 8 9 MICROCONTROLLER WITH EXTERNAL RAM B 1 1Monday , July 24, 2006 Title Size Document Number Rev Date: Sheet of T1 TXD1 WR P 1 . 2 A1 JP5 P1_89C 20511 2 3 4 5 6 7 8 A 1 5 Y5 P1.7 Y3 D2 U23 AT89C2051 1 5 4 12 13 14 15 16 17 18 19 2 3 6 7 8 9 11 RST/VPP XTAL1 XTAL2 P1.0/AIN0 P1.1/AIN1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.7 JP4DEC O D E1_8255 1 2 3 4 5 6 7 8 Y4 Y1 11,0592Mhz R62 2K2 RXD Y1 A8 A12 C9 10uF P1.3 A 1 1 P 1 . 3 TXD1 P1.5 P1.6 TXD (0000H - 1FFFH) R D Y8 RN3 10K 1 2 3 4 5 6 7 8 9 A13 R60 2K2 D17 READY PC INTERFACE A3 A15 D 0 A7 VCC A 1 2 JP3 P2_A D D R ESS 1 2 3 4 5 6 7 8 A13 COMPORT 2051 A12 I N T 1 U6C 7408 9 1 0 8 Y2 A 1 4 D 4 D1 I N T 0 VCC A14 R63 270 A 1 3 P 1 . 0 D5 A11 D B 9_2 (M ale) 5 9 4 8 3 7 2 6 1 A1 RXD1 D19 DATA LOAD P 1 . 7 T0 RXD D B 9_1 (F em ale) 5 9 4 8 3 7 2 6 1 R19 100 A10 INT0 D 5 U6B 7408 4 5 6R59 2K2 VCC C15 10p D7 A4P1.4 C10 10uF C5 10p D 3 D 6 A2 Y6 D4 A6 P 1 . 4 RN4 10K 1 2 3 4 5 6 7 8 9 RN7 10K 123456789 T X D SW1 MEMORY SELECTION 1 2C7 10uF/50V RN5 10K 1 2 3 4 5 6 7 8 9 R E S E T A0 U20 MAX232 1 3 4 5 2 6 12 9 11 10 13 8 14 7 C1+ C1- C2+ C2- V+ V- R1OUT R2OUT T1IN T2IN R1IN R2IN T1OUT T2OUT P1.2 D7 P 1 . 1 D5 U2 SN74LS374 3 4 7 8 13 14 17 18 1 11 2 5 6 9 12 15 16 19 D0 D1 D2 D3 D4 D5 D6 D7 OE LE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 WR P1.1 P 1 . 6 TXD R28 10K D 2 P 1 . 5 U1 AT89C51 9 18 19 29 30 3 1 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 R S T XTAL2 XTAL1 PSEN ALE/PROG E A / V P P P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 RESET SW JP6 P 3 _ 8 9 C 2 0 5 1 1 2 3 4 5 6 7 8 C23 10p RXD1 D3 A 8 A 1 0 D3 WR Y2 JP8 P 3 _ C P U 1 2 3 4 5 6 7 8 VCC D0 D1 C11 10uF T 0 A9 D0 U4 6264 10 9 8 7 6 5 4 3 25 24 21 23 2 11 12 13 15 16 17 18 19 22 27 20 26 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 D0 D1 D2 D3 D4 D5 D6 D7 OE WE CS1 CS2 RD R67 10K RN2 10K 1 2 3 4 5 6 7 8 9 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 5 PPI-8255A PC2 PC7 PC5 PC3 JP12 PB _8255 1 2 3 4 5 6 7 8 PC1 PC2 PC5 JP14 PC 2_8255 1 2 3 4 5 6 7 8 PC4 PC6 PC7 PC4 PC0 PC3 PC6 PC1 JP10D EC O D E_8255 1 2 3 4 5 6 7 8 JP11 PA _8255 1 2 3 4 5 6 7 8 PC0 JP9 D A TA _8255 1 2 3 4 5 6 7 8 U3 8255 34 33 32 31 30 29 28 27 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 5 36 9 8 35 6 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 RD WR A0 A1 RESET CS JP13 PC 1_8255 1 2 3 4 5 6 7 8 VCC U18 LM555 3 4 8 5 2 6 7 OUT R S T V C C CV TRG THR DSCHG C4 104 R48 330 C3 470uF D18 LED Q14 C828 J15 COUNTER 1 2 3 4 5 6 7 8 OPTO 2 1 5 4 R46 47K R50 270 R49 4K7 R47 2K7 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 6 S5 JP21 C O N T R O L _ L E D 7 S 1 2 3 4 5 6 7 8 S1 S3 D25 D16 LED R43 270 S5 W1 U16 ULN2803 1 0 1 2 3 4 5 6 7 8 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 C O M I N 1 I N 2 I N 3 I N 4 I N 5 I N 6 I N 7 I N 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 D26 S5 R37 15K S6 S1 S5 W4 Q12 A1013 R39 270 S2 MATRIX LED 8x5 MLED1 1 2 1 3 1 2 1 0 1 8 3 4 7 1 1 16 15 17 14 8 5 6 9 B 1 B 2 B 3 B 4 B 5 R 1 R 2 R 3 R 4 R 5 W1 W2 W3 W4 W5 W6 W7 W8 S2 R42 270 D12 LED D23 S8 S7 S8 W8 VCC D27 JP24 DATA_MATRIX 1 2 3 4 5 6 7 8 W7 S1 4007 X 8 S3 RN1 10K 1 2 3 4 5 6 7 8 9 R32 15K Q7 A1013 S7 R44 270 S6 S5 D30 JP22DATA_LCD 1 2 3 4 5 6 7 8 S7 S2 LED8 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 JP26 CATHOD RED 1 2 3 4 5 6 7 8 W4 S3 R65 5/3W D13 LED S2 S5 W6 S4 R41 270 U14 ULN2803 1 0 1 2 3 4 5 6 7 8 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 C O M I N 1 I N 2 I N 3 I N 4 I N 5 I N 6 I N 7 I N 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 U17 ULN2803 1 0 1 2 3 4 5 6 7 8 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 C O M I N 1 I N 2 I N 3 I N 4 I N 5 I N 6 I N 7 I N 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 W5 D29 S7 S6 S4 LED4 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 JP23 CONTROL_LCD 1 2 3 4 5 6 7 8 W8 S1S1 C27 104 VCC W5 W3 C28 104 S6 R40 270 R10 10K R45 270 JP25 CATHOD BLUE 1 2 3 4 5 6 7 8 12VDC W2 Q8 A1013 S2 LED2 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S3 S8 D11 LED R66 4K7 S8 Q13 A1013 Q6 A1013 S4 S7 S3 S8 R31 15K R20 150 X 8 S7 5VDC S4 S6 D10 LED LED7 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S3 C34 104 S6 C30 104 D15 LED S3S3 S1 R38 270 W7 U12 ULN2803 10 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 S8 S5 W1 JP27 DATA_LED 1 2 3 4 5 6 7 8 LED6 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 C31 104 C32 104 D14 LED S8 MATRIX 8x5 AND LCD B 1 1Monday , July 24, 2006 Title Size Document Number Rev Date: Sheet of S4 S5 R36 15K S4 S8 C29 104 Q5 A1013 S2 S4 W6 Q9 A1013 W2 D24 C33 104 Q11 A1013 LED3 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 THIS IS THE LCD 2 LINES x 16 CHARACTERS L A M P LCD1 7 8 9 1 0 1 1 1 2 1 3 1 4 4 5 6 3 1 2 1 5 1 6 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 R S R / W C S C O N S T G N D V C C A K U15 ULN2803 1 0 1 2 3 4 5 6 7 8 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 C O M I N 1 I N 2 I N 3 I N 4 I N 5 I N 6 I N 7 I N 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 S1 S4 LED5 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 D9 LED VCC S7 R33 15K S2 S2 Q10 A1013 D28R34 15K R30 15K S6 S6 W3 S7 JP20 DATA_LED7S 1 2 3 4 5 6 7 8 S1 R35 15K LED1 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 U13 74LS244 2 4 6 8 1 18 16 14 12 11 13 15 17 9 7 5 3 19 A1 A2 A3 A4 1OE Y1 Y2 Y3 Y4 A5 A6 A7 A8 Y5 Y6 Y7 Y8 2OE Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 7 R16 270 R14 4K7 R15 270 Q4 TIP122 Q2 TIP122 VCC R13 4K7 D6 LED3 D5 LED4 MG1 MOTOR STEPPER 1 2 3 4 5 6 VCC D2 4007 D7 LED2 D8 LED1 R18 270 JP28 S T E P _ M O T O R 1 2 3 4 5 6 7 8 Q1 TIP122 R11 4K7 D4 4007 R17 220 D3 4007 Q3 TIP122 D1 4007 R12 4K7 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 8 INC JP29 D A TA _SW 1 2 3 4 5 6 7 8 MODE C19 101 ENTER C21 101 DEC C20 101 C22 101 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 9 C16 CAP R54 5K - + U22A JR4558 3 2 1 8 4 R56 2K7 D21 5V1 C12 100uF R52 10 U21 DAC0808 1 3 16 1 4 1 5 2 1 3 5 6 7 8 9 10 11 12 4 GND VEE COMPS V R E F + V R E F - Iout V C C D7 D6 D5 D4 D3 D2 D1 D0 Iout R68 270 +12VDC R57 2K7 C14 104 R58 150 C17 104 D22 LED R51 2K7 JP18 D A T A _ D A C 1 2 3 4 5 6 7 8 VCC R29 10 R55 10K VCC VCC R69 2K7 JP19 DAC_OUT 1 2 - + U22B JR4558 5 6 7 8 4 R53 820 D20 4007 -12VDC C13 104 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 10 VCC JP16 D A TA _A D C 1 2 3 4 5 6 7 8-VCC - + U8A JR4558 3 2 1 8 4 R8 1K - + U8B JR4558 5 6 7 8 4 VCC R3 470K U9 LM35 2 3 1 V S + ADJ G N D R9 1K -VCC R1 1K C2 100uF/25V JP17 C O N TR O L_A D C 1 2 3 4 5 6 7 8 VCC R5 1K C1 1nF VCC VCC U7 ADC0804 6 7 9 11 12 13 14 15 16 17 18 19 4 5 1 2 3 +IN -IN VREF/2 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 CLKR CLKIN INTR CS RD WR R4 1K R7 1K R6 1K VCC R2 10K Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 11 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 12 II. THIẾT BỊ GHI CHƯƠNG TRÌNH TVT_V1.1: Thiết bị dùng để ghi chương trình vào bộ nhớ Flash ROM của các vi điều khiển họ 89C51/2051. Trên thiết bị cĩ một đế kẹp 40 chân, và một đế kẹp 20 chân. Vi điều khiển cần ghi chương trình được đặt vào đúng vị trí của đế kẹp (mỗi thời điểm chỉ cho phép cắm một IC trên thiết bị), cấp nguồn cho thiết bị và kết nối với máy tính để sử dụng. Sơ đồ chân các đế kẹp như hình sau: III. PHẦN MỀM ĐIỀU KHIỂN: Giao diện chương trình: 40 21 1 20 20 11 1 10 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 13 Gồm các menu: - Comport: cho phép chọn cổng COM1 hoặc cổng COM2 để giao tiếp với ngoại vi. - ChipSelect: cho phép chọn loại CPU để ghi chương trình vào bộ nhớ trong (Flach ROM) - ProType: chọn kiểu ghi chương trình + clr_Unlock: xĩa và ghi chương trình khơng khĩa, tức là chương trình sau khi ghi vào bộ nhớ CPU cĩ thể đọc ngược trở ra. + clr_Lock: xĩa và ghi chương trình với 3 bit khĩa, chương trình đã ghi vào khơng thể đọc ra được. + Compare: so sánh nội dung bộ nhớ CPU với vùng đệm của chương trình. + Read: đọc nội dung bộ nhớ Flash ROM của CPU và lưu vào vùng đệm chương trình. + Clear: Xĩa bộ nhớ CPU. Tất cả các thao tác trên khi được chọn trong menu ProType sẽ tác động lên nút lệnh nằm trong khung Flash ROM, để thực thi thao tác vừa chọn, ta click chuột vào nút lệnh này. - Emulator: Cho phép truyền nhận từng byte giữa PC và thiết bị với tốc độ truyền nhận 4800bps. Xem hình sau: Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 14 Khi nhấn nút START sẽ kích hoạt trạng thái sẵn sàng nhận của chương trình. Nếu cĩ một Byte được nhận thì giá trị byte này sẽ được hiển thị trong khung R. Byte và đồng thời được vẽ trên khung Picture ở trên. Khi nhập vào khung T. Byte một giá trị (số hoặc chữ) và click chuột vào nút TRANS., byte dữ liệu này sẽ được truyền đi. 1/- Sử dụng phần mềm soạn thảo chương trình: Từ giao diện của chương trình trên PC, click chuột vào nút lệnh EDIT ASM, phần mềm soạn thảo sẽ được kích hoạt. Xem cửa sổ trang sau. Để soạn thảo chương trình, thực hiện lệnh File-> New, và nhập các dịng lệnh của chương trình vào trang màn hình soan thảo. Kết thúc một chương trình hợp ngữ cho MOS51 bằng lệnh END. File được lưu vào đĩa với phần mở rộng mặc định *.a51. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 15 Để biên dịch chương trình và kiểm tra các lỗi cú pháp trong quá trình dịch ta chọn lệnh Winsdow-> Tile (hiển thị cửa sổ kết quả trong quá trình biện dịch), và dịch chương trình bằng lệnh Assemble->Assemble hoặc nhấn phím CTRL_F7. Nếu chương trình khơng cĩ lỗi sẽ tạo ra được file *.HEX. Xem kết quả biên dịch chương trình vào windows->Ouputs. 2/- Thao tác ghi chương trình vào Flash ROM của CPU: - Nối kết đường truyền từ cổng COM của PC và cổng giao tiếp của thiết bị ghi - Mở nguồn cho thiết bị, khi thấy LED chỉ thị trên thiết bị nhấp nháy tức là thiết bị đã sẵn sàng. Nếu LED tắt hoặc sáng hẳn thì tắt nguồn 15 giây và mở lại. - Đặt CPU cần nạp vào đúng đế kẹp và đúng vị trí chân trên đế. - Chọn cổng giao tiếp (mặc định khi vừa khởi động chương trình trên PC là COM1) - Chọn loại CPU từ menu ChipSelect - Chọn thao tác thực hiện trong ProType - Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ (file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm. Số byte của file sẽ được hiển thị trong ơ nằm ở gĩc dưới phải của chương trình. - Click chuột vào nút lệnh thao tác trong khung Flash ROM (ở gĩc dưới bên phải của cửa sổ chương trình) - Kiểm tra lại nội dung vừa ghi (thao tác này khơng cần thiết): chọn thao tác Compare từ menu ProType và click chuột vào nút lệnh thao tác. 3/- Thao tác ghi và thực hiện chương trình ở bộ nhớ RAM của CPU: - Đặt CPU 89C51 (đã cĩ chương trình giao tiếp với PC) vào đúng vị trí của đế kẹp trong module MICROCONTROLER WITH EXTERNAL RAM - Bật SW chọn bộ nhớ trong module này về vị trí INT. MEMORY Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 16 - Nhấn SW RESET và kiểm tra đèn LED tín hiệu READY, nếu đèn nhấp nháy thì hệ thống sẵn sàng cho việc truyền/nhận dữ liệu. - Nối cáp tín hiệu giữa cổng COM máy PC với cổng giao tiếp PC INTERFACE trên module - Kích hoạt chương trình trên máy PC, chọn cổng COM (1 hoặc 2) - Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ (file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm. Số byte của file sẽ được hiển thị trong ơ nằm ở gĩc dưới phải của chương trình. - Click chuột vào nút WRITE_RAM. Nếu đường truyền bị lỗi thì sẽ hiển thị câu thơng báo “Time out”, khi đĩ nhấn SW RESET trên mudule và thực hiện hiện lại thao tác này. 4/- Một số lưu ý khi sử dụng thiết bị: Do CPU 89C51 cĩ thể thực hiện chương trình từ bộ nhớ trong hoặc bộ nhớ ngồi nhờ SW Memory Selection, nên khi sử dụng ở chế độ bộ nhớ trong phải hết sức cẩn thận khi sử dụng PORT P2, vì các tín hiệu của port này dùng làm các tín hiệu giải mã địa chỉ cho bộ nhớ ngồi (0000H - 1FFFH), nếu các trạng thái của các bit P2.7, P2.6, P2.5 = 000B thì bộ nhớ ngồi sẽ được chọn, khi đĩ dễ dẫn đến xung đột dữ liệu giữa các bit của port P0 với các bit data của bộ nhớ ngồi RAM. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 17 I. MỤC ĐÍCH YÊU CẦU: Giúp sinh viên làm quen với thiết bị và tìm hiểu một số nhĩm lệnh quan trọng trong tập lệnh của 8951 II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC_uPC8951 - Máy tính - Kiểm tra cable truyền - Xem các module: microcontroller, led đơn III. TIẾN TRÌNH THÍ NGHIỆM: 1/- Nhĩm lệnh di chuyển dữ liệu, lệnh nhảy: a/- Nối mạch thí nghiệm: Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P1.0 đến P1.7, các led đều tác động ở mức cao. b/- Viết chương các trình ứng dụng: Chương trình 1.1: Chớp tắt 8 led vơ hạn lần MAIN: MOV P1,#0FFH ; P1 <- 11111111B, các led đều sáng CALL DELAY ; gọi chương trình trì hỗn DELAY MOV P1,#00H ; P1 <- 00000000B, các led đều tắt CALL DELAY LJMP MAIN ; nhảy đến MAIN để lập lại quá trình vơ hạn DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp BÀI 01: SỬ DỤNG TẬP LỆNH 8951 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 18 RET ; kết thúc chương trình con. END NHẮC LẠI: DJNZ Ri, : Ri là một trong các thanh ghi từ R0 -> R7, lệnh giảm nội dung thanh ghi Ri một đơn vị, nếu Ri > 0 thì nhảy đến NHÃN chỉ định, ngược lại sẽ chuyển sang thực hiện kế tiếp. Chương trình 1.2: giống nội dung chương trình 01 nhưng lặp lại quá trình 10 lần. - Hướng dẫn: MOV Ri, # 255)> NHÃN: - LỆNH 1 - LỆNH 2 - LỆNH n DJNZ Ri, - Chương trình: MOV R7,#10 MAIN: MOV P1,#0FFH ; P1 <- 11111111B, các led đều sáng CALL DELAY ; gọi chương trình trì hỗn DELAY MOV P1,#00H ; P1 <- 00000000B, các led đều tắt CALL DELAY DJNZ R7,MAIN ; SJMP $ ; “dừng chương trình” DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp RET ; kết thúc chương trình con. END BÀI TẬP SV: Chương trình 1.3: Hiển thị 1 led sáng, dịch dần từ D1 đến D8 vơ hạn lần Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 19 Chương trình 1.4: Hiển thị 1 led sáng, dịch dần từ D8 đến D1 với số lần lặp là 6. 2/- Nhĩm lệnh quay vịng: a/- Nối mạch thí nghiệm: Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều tác động ở mức cao. b/- Viết các chương trình ứng dụng: Chương trình 1.5: viết chương trình dịch một led sáng từ D1 Ỉ D8: MAIN: MOV A,#01H BEGIN: MOV P1, A RL A CALL DELAY LJMP BEGIN DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp RET ; kết thúc chương trình con. END Chương trình 1.6: viết chương trình dịch một led sáng từ D8 Ỉ D1: MAIN: MOV A,#80H BEGIN: MOV P1, A RR A CALL DELAY LJMP BEGIN DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 20 MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp RET ; kết thúc chương trình con. END Chương trình 1.7: viết chương trình sáng dần các led từ D1 Ỉ D8: MAIN: MOV A,#01H BEGIN: SETB C MOV P1, A RLC A CALL DELAY JNC BEGIN LJMP MAIN DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp RET ; kết thúc chương trình con. END Chương trình 1.8: viết chương trình sáng dần các led từ D8 Ỉ D1: MAIN: MOV A,#80H BEGIN: SETB C MOV P1, A RRC A CALL DELAY JNC BEGIN LJMP MAIN Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 21 DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp RET ; kết thúc chương trình con. END BÀI TẬP: Chương trình 1.9: viết chương trình tắt dần các led từ D1 Ỉ D8 Chương trình 1.10: viết chương trình tắt dần các led từ D8 Ỉ D1 Chương trình 1.11: viết chương trình tắt dần các led từ D8 Ỉ D1, thực hiện lặp lại 20 lần. 3/- Nhĩm lệnh tốn học: a/- Nối mạch thí nghiệm: Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều tác động ở mức cao. b/- Viết các chương trình ứng dụng: Chương trình 1.12: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả trên các led. MAIN: MOV A,#12 ADD A,#34 MOV P1,A SJMP $ END Chương trình 1.13: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả trên các led. MAIN: MOV A,#12 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 22 SETB C ADDC A,#34 MOV P1,A SJMP $ END So sánh kết quả của chương trình 1 và chương trình 2. Chương trình 1.14: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần nguyên) trên các led. MAIN: MOV A,#17 MOV B,#3 DIV AB MOV P1,A SJMP $ END Chương trình 1.15: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần dư) trên các led. MAIN: MOV A,#17 MOV B,#3 DIV AB MOV P1,B SJMP $ END Chương trình 1.16: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả (byte thấp) trên các led. MAIN: MOV A,#7 MOV B,#14 MUL AB MOV P1,A SJMP $ END Chương trình 1.17: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả (byte cao) trên các led. MAIN: MOV A,#7 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 23 MOV B,#14 MUL AB MOV P1,B SJMP $ END Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 24 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu cách hiển thị thơng tin trên led 7 đoạn bằng phương pháp quét và xử lý thơng tin trên bàn phím điều khiển. II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch điều khiển led 7 đoạn và bàn phím. Trong sơ đồ mạch: - 74244 là IC đệm một chiều 8 bit với ngõ vào là Ai và ngõ ra là Yi tương ứng: OE AI YI 1 X Z 0 0 0 0 1 1 X: mức logic 1 hoặc 0 Z: trạng thái cách ly (tổng trở cao) - 2803 là IC đệm đảo cơng suất, bên trong gồm một dãy 8 transistor cĩ cấu trúc như sau: OUT1 GND IN1 dịng điện IC cực đại là 500mA, chân GND của 8 transistor được nối chung và đưa ra tại chân số 9 của IC. - LED 7 đoạn sử dụng trong mạch là loại cathod chung cĩ cấu trúc như sau: BÀI 02: LED 7 ĐOA ̣N VA ̀ BÀN PHI ́M e g d be f p o i n t a d f point g b c COM c a C21 101 JP29 D A TA _SW 1 2 3 4 5 6 7 8 ENTERDECINC MODE C22 101 C20 101 C19 101 S8 S1 S6 JP21 C O N T R O L _ L E D 7 S 1 2 3 4 5 6 7 8 S7 S1 S7 S6 S3 S8 S4 S5 S6 S5 S2 S7 S4 S4 S5 LED6 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S6 S7 S1 S4 S5 JP20 DATA_LED7S 1 2 3 4 5 6 7 8 S4 S1 S6 S4 S3 LED2 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S1 R20 150 X 8 S5 S1 S2 S5 LED4 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S3 U13 74LS244 2 4 6 8 1 18 16 14 12 11 13 15 17 9 7 5 3 19 A1 A2 A3 A4 1OE Y1 Y2 Y3 Y4 A5 A6 A7 A8 Y5 Y6 Y7 Y8 2OE S3 S4 S6 S2 LED3 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 LED8 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S8 S2S2 S7 S6 LED5 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S1 S8 S8 U12 ULN2803 10 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 S4 S8 S3 S2 S7 S1 S7 S3 S8 S5 LED1 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S7 S5 S6 S2 S2 S3 LED7 7 6 4 2 1 9 10 5 3 8 a b c d e f g p C 1 C 2 S8 S3 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 25 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 26 III. TIẾN TRÌNH THÍ NGHIỆM: - Nối JP29(DATA_SW) của bàn phím với P3_CPU (port 3 của 8951) - Nối P1_CPU với JP20 (DATA_LED7S) - Nối P2_ADDRESS với JP21 (CONTROL_LED7S) 1/- Viết chương trình hiển thị thơng tin trên led 7 đoạn: Chương trình 2.1: viết chương trình hiển thị số 5 trên LED1: SỐ D7 D6 D5 D4 D3 D2 D1 D0 Giá trị HEX p G f e D c b a 0 1 2 3 4 5 0 1 1 0 1 1 0 1 6DH 6 7 8 9 MAIN: MOV P2,#00H ; tắt các led MOV P1,#6DH ; đặt DATA số 5 ra P1 MOV P2,#01H ; mở nguồn led1 SJMP $ END Chương trình 2.2: viết chương trình hiển thị số 54 trên 2 LED 7 và 8 HƯỚNG DẪN: theo sơ đồ nguyên lý ở trên, ta thấy khơng thể hiển thị 2 thơng tin khác nhau trên 2 led tại cùng thời điểm. Do đĩ: tại mỗi thời điểm (khoảng vài ms) ta hiển thị thơng tin trên 1 led, sau đĩ tắt led và chuyển sang hiển thị thơng tin khác trên led kế tiếp. Thực hiện quá trình này liên tục, do hiện tượng lưu ảnh của mắt sẽ thấy hai thơng tin được hiển thị đồng thời. MAIN: MOV P2,#00H ; tắt các led BEGIN: MOV P1,#6DH ; đặt DATA 5 ra P1 SETB P2.6 ; mở nguồn led 7 CALL DELAY ; trì hỗn để mắt lưu ảnh thơng tin Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 27 CLR P2.6 ; tắt nguồn led 7 MOV P1,#66H ; đặt thơng tin DATA 4 ra P1 SETB P2.7 ; mở nguồn led 8 CALL DELAY ; trì hỗn để mắt lưu ảnh CLR P2.7 ; tắt nguồn led 8 LJMP BEGIN ; lặp lại quá trình vơ hạn DELAY: ; chương trình DELAY ~ 1ms PUSH 07H MOV R7,#100 DJNZ $ POP 07H RET END Chương trình 2.3: viết chương trình hiển thị các số tăng dần từ 0 Ỉ9 trên led 8 HƯỚNG DẪN: MOVC A,@A+DPTR ; là lệnh gán vào thanh ghi A nội dung ơ nhớ chương trình cĩ địa chỉ = (nội dung hiện tại của A + nội dung thanh ghi DPTR), ví dụ: A = 20 và DPTR = 1000 => A Í (1020); lệnh này trong chương trình sau dùng để đổi nội dung một ơ nhớ (cĩ giá trị từ 0 đến 9) sang mã 7 đoạn của số đĩ. CNT EQU 127 ; khai báo biến CNT tại ơ nhớ RAM 127 MAIN: MOV P2,#00H ; tắt các led MOV CNT,#0 ; khởi động biến đếm = 0 MOV DPTR,#MA_7S ; lấy địa chỉ đầu bảng mã 7 đoạn BEGIN: MOV A,CNT MOVC A,@A+DPTR ; đổi nội dung CNT ra mã 7 đoạn MOV P1,A ; đặt mã 7 đoạn ra P1 SETB P2.7 ; mở nguồn led8 CALL DELAY ; trì hỗn INC CNT ; tăng nội dung biến MOV A,CNT CJNE A,#10,BEGIN ; nếu biến < 10 thì tiếp tục hiện thi( MOV CNT,#0 ; nếu biến = 10 thì gán về 0 LJMP BEGIN DELAY: PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 28 POP 06 ; lấy lại giá trị cũ của R6 trong ngăn xếp RET ; kết thúc chương trình con. MA_7S: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END BÀI TẬP: Chương trình 2.4: viết chương trình hiển thị: 15-10-06 trên 8 led Chương trình 2.5: viết chương trình hiển thị các số tăng dần từ 00 – 99 trên 2 led 1 và 2. HƯỚNG DẪN: dùng 1 ơ nhớ chứa số đếm, trước khi hiển thị nội dung ơ nhớ, ta phải đổi ra thành 2 số thập phân (0 -9), sau đĩ lần lượt đổi từng số thập phân sang mã 7 đoạn và quét trên 2 led : CNT EQU 127 DONVI EQU 126 CHUC EQU 125 . . . DOI_SO: PUSH ACC PUSH B MOV A,CNT MOV B,#10 DIV AB MOV CHUC,A MOV DONVI,B POP B POP ACC RET 2/- Thực hành điều khiển các phím: phím SW1 nối chân P3.0; SW2 nối chân P3.1; SW3 nối chân P3.2; SW4 nối chân P3.3 Chương trình 2.6: Viết chương trình thực hiện: - Nhấn SW1: hiển thị số 3 trên led8 - Nhấn SW2: hiển thị số 7 trên led8 - Nhấn SW3: tắt các thơng tin đang hiển thị HƯỚNG DẪN: dùng lệnh JNB bit, để kiểm tra phím nhấn; ví dụ: JNB P3.0, HIENTHI3 ; nếu SW1 nhấn thì logic tại P3.0 là 0, nên lệnh này thỏa điều kiện nhảy đến nhãn HIENTHI3, ngược lại sẽ thực hiện lệnh kế tiếp. SW1 BIT P3.0 ; khai báo kiểu BIT: SW1 Ù P3.0 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 29 SW2 BIT P3.1 SW3 BIT P3.2 MAIN: MOV P2,#00H ; tắt các led SETB P2.7 ; mở nguồn led8 BEGIN: JNB SW1,HT3 ; nếu SW1 nhấn thì Ỉ HT3 JNB SW2,HT7 JNB SW3,TAT LJMP BEGIN SW1: MOV P1,#4FH ; hiển thị số 7 LJMP BEGIN ; trở về tiếp tục kiểm tra phím SW2: MOV P1,#07H LJMP BEGIN SW3: MOV P2,#00H LJMP BEGIN END Chương trình 2.7: Viết chương trình thực hiện: - Nhấn SW1: tăng nội dung hiển thị một đơn vị trên led1 (0-1-2-3-4-59-0) - Nhấn SW2: giảm nội dung hiển thị một đơn vị trên led1 (9-8-72-1-0-9) HƯỚNG DẪN: dùng một ơ nhớ chứa số đếm, khi nhấn SW1, tăng nội dung ơ nhớ, sau đĩ trì hỗn một thời gian (chờ nhấc tay khỏi phím, thời gian này thường chọn từ 100ms -> 500ms); khi nhấn SW2, giảm nội dung ơ nhớ 1 đơn vị, sau đĩ trì hỗn; nếu khơng phím nào được nhấn thì đổi nội dung ơ nhớ sang mã led 7 đoạn và hiển thị. CNT EQU 127 SW1 BIT P3.0 SW2 BIT P3.1 MAIN: MOV P2,#00H SETB P2.0 MOV CNT,#0 BEGIN: JNB SW1,TANG JNB SW2,GIAM MOV A,CNT MOVC A,@A+DPTR MOV P1,A LJMP BEGIN TANG: Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 30 INC CNT MOV A,CNT CJNE A,#10,TROVE MOV CNT,#0 TROVE: CALL DELAY LJMP BEGIN GIAM: DEC CNT MOV A,CNT CJNE A,#255,TROVE MOV CNT,#0 LJMP TROVE DELAY: PUSH 05 ; cất nội dung R5 vào ngăn xếp PUSH 06 ; cất nội dung R6 vào ngăn xếp PUSH 07 ; cất nội dung R7 vào ngăn xếp MOV R5,#2 LAP1: MOV R6,#255 LAP: MOV R7,#255 DJNZ R7,$ ; Ù X: DJNZ R7,X DJNZ R6, LAP DJNZ R5,LAP1 POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp POP 06 ; lấy lại giá trị cũ của R6 trong ngăn xếp POP 05 ; lấy lại giá trị cũ của R5 trong ngăn xếp RET ; kết thúc chương trình con. MA_7S: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END BÀI TẬP: Chương trình 2.8: giống chương trình 1 nhưng hiển thị các số thay đổi trong khoảng 00 – 99. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 31 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu về timer trong 8951 và IC giao tiếp song song cĩ lập trình điều khiển PPI8255A. II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uP8951 - Máy tính - Kiểm tra cable truyền - Xem các module: microcontroller, PPI8255 và led 7 đoạn " Tìm hiểu cấu trúc timer trong vi điều khiển: Vi điều khiển 89C51 cĩ hai thanh ghi timer/counter 16 bit. Các thanh ghi này cĩ thể hoạt động ở một trong hai trạng thái timer hoặc counter. Mỗi thanh ghi gồm 2 thanh ghi 8 bit ghép lại: TLx : 8 BIT PULSE INPUT THx : 8 BIT Cấu trúc của bộ Timer/ Counter trong 89C51 như hình sau. Hoạt động của bộ Timer/Counter được điều khiển bởi hai thanh ghi TCON và TMOD BA ̀I 03: TIMER 8951 & PPI8255A Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 32 1. Thanh ghi TCON (timer control): Là thanh ghi 8 bit, cĩ thể truy xuất byte hoặc bit IE1 3 TF0 IE0 6 TF1 2 IT0 4 TR1 1 TR0 7 0 IT1 5 • TF1: báo trạng thái tràn cho bộ Timer/Counter1 • TR1: điều khiển cấp xung cho bộ Timer/Counter1 • TF0: báo trạng thái tràn cho bộ Timer/Counter0 • TR0: điều khiển cấp xung cho bộ Timer/Counter0 • IE1: khơng liên quan đến hoạt động của Timer/Counter, bit này dùng để báo trạng thái ngắt ngồi 1 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 13 vi điều khiển bit này được đặt lên mức logic 1) • IT1: khơng liên quan đến hoạt động của Timer/Counter, bit này cho phép tác động ngắt ngồi 1 bằng cạnh xuống (default IT1 = 0, tác động ngắt bằng mức thấp) • IE0: khơng liên quan đến hoạt động của Timer/Counter, bit này dùng để báo trạng thái ngắt ngồi 0 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 12 vi điều khiển bit này được đặt lên mức logic 1) • IT0: khơng liên quan đến hoạt động của Timer/Counter, bit này cho phép tác động ngắt ngồi 0 bằng cạnh xuống (default IT1 = 0, tác động ngắt bằng mức thấp) 2. Thanh ghi TMOD (timer mode): Là thanh ghi 8 bit, chỉ cĩ thể truy xuất byte ĐIỀU KHIỂN TIMER 0 GATE 3 M1 M1 6 GATE 2 M0 4 C/T 1 M0 ĐIỀU KHIỂN TIMER 1 7 0 C/T 5 • GATE, C/T: điều khiển trạng thái hoạt động cho Timer/Counter (xem sơ đồ ở trên) • M1, M0: chọn chế độ hoạt động cho Timer/Counter M1 M0 CHẾ ĐỘ (MODE) MƠ TẢ 0 0 0 Timer/Counter 13 bit 0 1 1 Timer/Counter 16 bit 1 0 2 Timer/Counter 8 bit, auto reload 1 1 3 Timer/Counter 8 bit a/- Chế độ 0: Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 33 TLx : 5 BIT PULSE INPUT THx : 8 BIT TFx Thanh ghi THx và TLx kết hợp tạo thành bộ Timer/Counter 13 bit, khi tràn 13 bit thì cờ TFx sẽ đặt lên logic 1. b/- Chế độ 1: TLx : 8 BIT PULSE INPUT THx : 8 BIT TFx c/- Chế độ 2: TFx THx : 8 BIT OVERFLOW TLx : 8 BIT PULSE INPUT TLx được nạp giá trị ban đầu từ THx và bắt đầu đếm từ giá trị này khi cĩ xung ở ngõ vào, khi tràn thì TFx sẽ đặt lên logic 1 đồng thời kích hoạt bộ khĩa để nạp giá trị trong THx vào TLx. d/- Chế độ 3: TL0 : 8 BIT TR1 TF1TH0 : 8 BIT PULSE INPUT OSC:12 TF0 Trong chế độ này, TH1 và TL1 khơng được sử dụng thay vào đĩ là TH0 và TL0 hoạt động như 2 bộ Timer 8 bit (TL0) và Timer/Counter 8 bit (TL0). Tuy nhiên, tín hiệu mở xung cho TH0 khơng phải là TR0 mà là TR1. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 34 " Tìm hiểu PPI8255A: xem sơ đồ mạch trang sau: CONTROL REGISTER (CR) DATA BUS PB PA PC U24 8255 34 33 32 31 30 29 28 27 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 5 36 9 8 35 6 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 RD WR A0 A1 RESET CS - CS (chip select): tác động thấp cho phép 8255 làm việc, khi CS = 1, tất cả các tín hiệu ở tổng trở cao. - D0 –D7: data bus, cho phép 8255 giao tiếp với hệ thống. - PA0-PA7: 8 chân của port A - PB0-PB7: 8 chân của port B - PC0-PC7: 8 chân của port C, cĩ thể chia làm 2 nhĩm: PCL gồm các chân PC0 đến PC3, và PCH gồm các chân PC4 đến PC7. - A1, A0: các chân địa chỉ. Tại mỗi thời điểm, data bus chỉ cĩ thể giao tiếp dữ liệu với PA hoặc PB hoặc PC hoặc CR phụ thuộc vào vị trí của chuyển mạch, vị trí của chuyển mạch được quyết định bởi tín hiệu địa chỉ: A1 A0 GIAO TIẾP 0 0 DATA BUS --- PA 0 1 DATA BUS --- PB 1 0 DATA BUS --- PC 1 1 DATA BUS --- CR - RD (read): tín hiệu cho phép đọc, tác động thấp, cho phép chuyển dữ liệu từ một trong các port đến data bus - WR(write): tín hiệu ghi, tác động thấp, cho phép chuyển dữ liệu từ data bus đến một trong các port hoặc đến CR. - RESET: tác động cao, cho phép xĩa nội dung cài đặt chế độ hoạt động 8255. Khi sử dụng 8255, trước hết phải xác lập cấu hình bằng cách ghi vào CR một giá trị thích hợp tuỳ theo chế độ làm việc, ở chế độ I/O nội dung CR như sau: Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 35 135 0 ACT 7 0 4 PCH0 0PA 2 PCL 6 PB trong đĩ: - ACT: là bit active, cĩ giá trị 1 - bit 5 và bit 6 = 0 - bit 2 = 0 - PA điều khiển port A, PB điều khiển port B, PCL điều khiển 4 chân thấp của PC, PCH điều khiển 4 chân cao của port C; các bit này nếu đặt ở logic 1 thì các port tương ứng sẽ là port nhập (khơng cho phép xuất dữ liệu từ data bus sang), nếu các bit này là 0 thì các port tương ứng sẽ là port xuất (khơng thể đọc được dữ liệu từ các port này), ví dụ: muốn định cấu hình ban đầu cho 8255 với PA xuất, PB xuất, PCL xuất, PCH nhập thì phải ghi vào CR một byte cĩ giá trị là: 10001000b = 88H. Địa chỉ các PORT PPI8255 trong hệ thống: ĐỊA CHỈ GIAO TIẾP 2000H DATA BUS --- PA 2001H DATA BUS --- PB 2002H DATA BUS --- PC 2003H DATA BUS --- CR III. TIẾN TRÌNH THÍ NGHIỆM: 1/-Viết chương trình sử dụng timer (tính tốn timer sử dụng thạch anh 12Mhz): - Nối JP7 với JP27 - Kiểm tra cable truyền Chương trình 3.1: Viết chương trình hiển thị các led sáng dần từ D1 đến D8, với thời gian Delay 200ms, sử dụng timer0, mode 1 MAIN: MOV A,#0 BEGIN: MOV P1,A CALL DL_200MS SETB C RLC A ; dịch bit 1 vào A để sáng dần các led JNC BEGIN SJMP MAIN DL_200MS: PUSH 02 MOV TMOD,#01H MOV R2,#20 ; lặp lại 20 lần X1: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) SETB TR0 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 36 CLR TF0 JNB TF0,$ DJNZ R2,X1 POP 02 RET Chương trình 3.2: tương tự chương trình 3.1, nhưng dùng timer0, mode2 Chương trình 3.3: tương tự chương trình 3.1, nhưng dùng timer0, mode3 Chương trình 3.4: tương tự chương trình 3.1, nhưng thời gian delay là 500ms, dùng timer1, mode1 1/-Viết chương trình điều khiển PPI8255: - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 (led 7 đoạn) - Nối JP12 với JP21 (led 7 đoạn) Chương trình 3.5: Viết chương trình hiển thị các số từ 0 đến 7 trên các led 7 đoạn MAIN: MOV TMOD,#11H MOV DPTR,#2003H MOV A,#89H ; 10001001, PC: NHAP, PA: XUAT, PB:XUAT MOVX @DPTR,A BEGIN: CALL DISPLAY LJMP BEGIN DISPLAY: PUSH A MOV A,#3FH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#01H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#06H MOV DPTR,#2000H MOVX @DPTR,A MOV A,#02H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 37 MOV A,#5BH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#04H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#00H MOVX @DPTR,A MOV A,#4FH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#08H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#66H MOV DPTR,#2000H MOVX @DPTR,A MOV A,#10H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#6DH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#20H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#00H MOVX @DPTR,A MOV A,#7DH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#40H MOV DPTR,#2001H MOVX @DPTR,A Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 38 CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#07 MOV DPTR,#2000H MOVX @DPTR,A MOV A,#80H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A POP A RET DELAY: PUSH 00 MOV R0,#100 DJNZ R0,$ POP 00 RET MA_7D: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END Chương trình 3.6: Viết chương trình hiển thị NGÀY-THÁNG-NĂM trên 8 led 7 đoạn. Chương trình 3.7: Viết chương trình hiển thị GIỜ-PHÚT-GIÂY trên 8 led Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 39 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu và sử dụng các ngắt trong 8951: ngắt timer, ngắt ngồi và ngắt truyền thơng nối tiếp. II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, led 7 đoạn, bàn phím, counter DANH SÁCH CÁC NGẮT TRONG 8951: - Ngắt ngồi 0: Địa chỉ vector ngắt 0003H Khai báo sử dụng ngắt - SETB EA - SETB EX0 - SETB IT0 (ngắt cạnh) Sự kiện ngắt: Xuất hiện cạnh xuống (hoặc mức thấp) tại chân INT0 - Ngắt timer0: Địa chỉ vector ngắt 000BH Khai báo sử dụng ngắt - SETB EA - SETB ET0 Sự kiện ngắt Tràn timer 0 - Ngắt ngồi 1: Địa chỉ vector ngắt 00013H Khai báo sử dụng ngắt - SETB EA - SETB EX1 - SETB IT1 (ngắt cạnh) Sự kiện ngắt: Xuất hiện cạnh xuống (hoặc mức thấp) tại chân INT1 BA ̀I 04: NGẮT (INTERRUPT) Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 40 - Ngắt timer1: Địa chỉ vector ngắt 0001BH Khai báo sử dụng ngắt - SETB EA - SETB ET1 Sự kiện ngắt Tràn timer 1 - Ngắt truyền thơng (truyền/nhận UART): Địa chỉ vector ngắt 00023H Khai báo sử dụng ngắt - SETB EA - SETB ES Sự kiện ngắt Nhận được một byte hoặc truyền xong một byte trong SBUF Tốc độ truyền nhận MODE autoreload (timer1) - TH1 = -3 ; 9600bps - TH1 = -6 ; 4800bps - TH1 = -12 ; 2400bps - TH1 = -24 ; 1200bps SƠ ĐỒ CHƯƠNG TRÌNH KHI CĨ SỬ DỤNG NGẮT: III. TIẾN TRÌNH THÍ NGHIỆM: 1/- Ngắt timer 0: - Nối JP7 với JP20 - Nối JP3 với JP21 Chương trình 4.1: Viết chương trình hiển thị các số tăng dần từ 00-99 trên 2 led 7 và 8 (sử dụng ngắt timer0 để quét led) KHAI BÁO NGẮT Sự kiện ngắt Vector ngắt: . . RETI Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 41 CNT EQU 120 LED7 EQU 121 LED8 EQU 122 POS EQU 123 LJMP MAIN ORG 000BH LJMP QUET_LED MAIN: MOV TMOD,#11H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) MOV CNT,#0 MOV R0,#LED7 MOV POS,#40H SETB EA SETB ET0 SETB TR0 BEGIN: CALL HEX_7S CALL DL_300MS INC CNT MOV A,CNT CJNE A,#100,BEGIN MOV CNT,#0 LJMP BEGIN ;-------chương trình đổi số hex sang 2 mã 7 đoạn đặt vào LED1, LED2----- HEX_7S: . . RET ;------chương trình delay 300ms dùng timer1------------------------------------- DL_300MS: . . RET ; -------chương trình ngắt timer0---------------------------------------------------- QUET_LED: PUSH PSW PUSH ACC MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) MOV P2,#00H ; tắt các led MOV DPTR,#LED_7S MOV A,@R0 MOV P1,A MOV A,POS Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 42 MOV P2,A RL A MOV POS,A INC R0 CJNE R0,#123,EXIT MOV R0,#LED7 MOV POS,#40H EXIT: POP ACC POP PSW RETI LED_7S: DB . END Chương trình 4.2: Viết chương trình điều khiển đèn giao thơng với các thơng số: thời gian đèn xanh: 15s, thời gian đèn vàng 3 giây (dùng ngắt timer0) 2/- Ngắt ngồi 01: - Nối JP7 với JP20 - Nối JP3 với JP21 - Nối JP8 với JP15 Chương trình 4.3: Viết chương trình đếm số xung tạo ra bởi mạch COUNTER, hiển thị số đếm trên 8 led dạng: cnt—000 (dùng ngắt ngồi 1 để đếm và ngắt timer0 để quét led) CNT EQU 127 LED1 EQU 126 LED2 EQU 125 LED3 EQU 124 LED4 EQU 123 LED5 EQU 122 LED6 EQU 121 LED7 EQU 120 LED8 EQU 119 POS EQU 118 LJMP MAIN ORG 000BH LJMP QUET_LED ORG 0013H LJMP COUNTER MAIN: MOV TMOD,#11H MOV CNT,#0 MOV POS,#01H MOV R0,#LED1 SETB EA SETB IT1 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 43 SETB EX1 SETB ET0 . . . ;------chương trình ngắt ngồi 1-------------------------------- COUNTER: INC CNT RETI 3/- Ngắt truyền thơng: - Nối JP7 với JP27 - Nối JP3 với JP29 Chương trình 4.4: Viết chương trình thực hiện: - Nhấn SW1: tăng nội dung ơ nhớ 1 đơn vị, hiển thị ra led đơn và truyền về máy tính - Nhấn SW2 giảm nội dung ơ nhớ một đơn vị, hiển thị ra led và truyền về PC - Chương trình cho phép nhận 4 byte truyền đến từ PC và hiển thị ra led (tốc độ truyền 4800bps,n,8,1; sử dụng ngắt truyền thơng) Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 44 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu stepper motor và điều khiển hoạt động của động cơ này. II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, led 7 đoạn, PPI8255, bàn phím, stepper motor CẤU TẠO MOTOR BƯỚC: MG1 STEPPER MOTOR 1 2 3 4 5 6 Gồm 4 cuộn dây: 1-2, 2-3, 4-5 và 5-6, tất cả cĩ cùng số vịng dây và được chia thành 2 cuộn cách ly, sơ đồ mạch điều khiển như hình trang sau. - Điều khiển một bước (1.8 độ): T1 T2 T3 T4 CHIỀU QUAY 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 Ti = 0: transistor ngưng dẫn Ti = 1: transistor dẫn bão hồ Thuâ ̣n Nghịch BÀI 05: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 45 JP28 ST EP _M O TO R 1 2 3 4 5 6 7 8 D8 LED1 R14 4K7 D7 LED2 D1 4007 R12 4K7 R17 220 R18 270 D5 LED4 R13 4K7 D6 LED3 R16 270 Q4 TIP122 D4 4007 R11 4K7 R15 270 Q1 TIP122 D3 4007 VCC D2 4007 Q3 TIP122 VCC Q2 TIP122 MG1 MOTOR STEPPER 1 2 3 4 5 6 - Điều khiển nửa bước (0.9 độ): T1 T2 T3 T4 CHIỀU QUAY 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 Ti = 0: transistor ngưng dẫn Ti = 1: transistor dẫn bão hồ III. TIẾN TRÌNH THÍ NGHIỆM: - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 (led 7 đoạn) - Nối JP12 với JP21 (led 7 đoạn) - Nối JP8 với JP29 - Nối JP7 với JP28 Thuâ ̣n Nghịch Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 46 Chương trình 5.1: Viết chương trình điều khiển động cơ quay thuận (quay từng bước) với tốc độ 6 vịng/ phút MAIN: MOV R2,#4 MOV A,#01H BEGIN: MOV P1,A CALL DL_50MS RL A DJNZ R2, BEGIN LJMP MAIN ;-----chương trình delay 50ms dùng timer 0------------------------------ DL_50MS: . . RET END Chương trình 5.2: Giảm từng bước thời gian delay của CT5.1, cho biết tốc độ quay nhanh nhất của động cơ bước này. Chương trình 5.3: Chương trình điều khiển động cơ quay thuận (nửa bước). MAIN: MOV R2,#0 MOV DPTR,#DU_LIEU BEGIN: MOV A, R2 MOVC A,@A+DPTR MOV P1,A CALL DL_500MS INC R2 CJNE R2,#8,BEGIN LJMP MAIN ;-----chương trình delay 500ms dùng timer 1------------------------------ DL_500MS: . . RET DU_LIEU: DB . END Chương trình 5.4: Viết chương trình thực hiện: - Nhấn SW1: quay thuận (1 bước) - Nhấn SW2: quay nghịch (1 bước) Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 47 - Nhấn SW3: dừng (mặc định: động cơ dừng) Chương trình 5.5: Viết chương trình cho phép nhập vào số bước (lưu trong một ơ nhớ RAM) dùng SW1 (tăng 10 đơn vị ), SW2 (giảm một đơn vị), nội dung ơ nhớ hiển thị trên LED1-LED8: Count. 000; nhấn SW3 động cơ quay thuận với số bước đã đặt; nhấn SW4 động cớ quay nghịch với số bước đã đặt; trong khi quay, số đếm trên các LED giảm dần, khi giảm đến 0 thì động cơ dừng; trong khi quay: khơng cho phép thao tác phím. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 48 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu led ma trận 2 màu và phương pháp hiển thị thơng tin nhiều màu trên led. II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, led ma trận , PPI8255, bàn phím. SƠ ĐỒ MẠCH: xem trang sau Hiển thị chữ J trên ma trận LED: Cột 1 Cột 2 Cột 3 Cột 4 Cột 5 Hàng 01 1 1 1 1 1 Hàng 02 0 0 1 0 0 Hàng 03 0 0 1 0 0 Hàng 04 0 0 1 0 0 Hàng 05 0 0 1 0 0 Hàng 06 0 0 1 0 0 Hàng 07 1 0 1 0 0 Hàng 08 0 1 0 0 0 DATA_MATRIX = 41H, 81H, 7FH, 01H, 01H CATHODE_BLUE: 01H, 02H, 04H, 08H, 10H, hiển thị màu xanh CATHODE_RED: 01H, 02H, 04H, 08H, 10H, hiển thị màu đỏ BÀI 06: ĐIỀU KHIỂN MA TRẬN LED Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 49 5VDC U14 ULN2803 101 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 C O M IN 1 IN 2 IN 3 IN 4 IN 5 IN 6 IN 7 IN 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 Q12 A1013 C32 104 Q11 A1013 R33 15K W1 MATRIX LED 8x5 MLED1 1 2 13 12 10 18 3 4 7 11 16 15 17 14 8 5 6 9 B 1 B 2 B 3 B 4 B 5 R 1 R 2 R 3 R 4 R 5 W1 W2 W3 W4 W5 W6 W7 W8 Q9 A1013 JP25 CATHOD BLUE 1 2 3 4 5 6 7 8 C27 104 JP26 CATHOD RED 1 2 3 4 5 6 7 8 C28 104 W6 W2 Q8 A1013 4007 X 8 Q7 A1013 R30 15K W8 W1 C33 104 D25 D24 W5 D27 D26 R36 15K C29 104 R35 15K W6 W4 W4 D28 R37 15K W7 Q5 A1013 Q10 A1013 D30 U15 ULN2803 101 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 C O M IN 1 IN 2 IN 3 IN 4 IN 5 IN 6 IN 7 IN 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 W2 U16 ULN2803 101 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 C O M IN 1 IN 2 IN 3 IN 4 IN 5 IN 6 IN 7 IN 8 O U T 1 O U T 2 O U T 3 O U T 4 O U T 5 O U T 6 O U T 7 O U T 8 W5 R34 15K D29 W3 W8 JP24 DATA_MATRIX 1 2 3 4 5 6 7 8 D23 Q6 A1013 W3 C30 104 12VDC C31 104 W7 C34 104 RN1 10K 1 2 3 4 5 6 7 8 9 R32 15K R31 15K III. TIẾN TRÌNH THÍ NGHIỆM: - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP8 với JP29 - Nối JP11 với JP25 - Nối JP12 với JP26 - Nối JP13 với JP24 Chương trình 6.1: Viết chương trình hiển thị chữ J màu xanh trên ma trận LED. POS EQU 127 MAIN: MOV POS,#0 MOV DPTR,#2003H MOV A,#80H ; định cấu hình 8255 với các port đều xuất MOVX @DPTR,A BEGIN: Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 50 ; ******************************************** MOV A,#0h MOV DPTR,#2002H ; PC = 0 MOVX @DPTR,A ; TAT LED MOV A,POS MOV DPTR,#COT MOVC A,@A+DPTR MOV DPTR,#2000H ; PA = 01H MOVX @DPTR,A MOV A,POS MOV DPTR,#DU_LIEU MOVC A,@A+DPTR MOV DPTR,#2002H ; PC = DATA MOVX @DPTR,A CALL DELAY INC POS MOV A,POS CJNE A,#5,BEGIN MOV POS,#0 LJMP BEGIN ;------------------------delay--------------------------------- DELAY: MOV TMOD,#01H MOV TH0,#HIGH(-100) MOV TL0,#LOW(-100) SETB TR0 CLR TF0 JNB TF0,$ CLR TR0 RET ;---------------------------------------------------------------- DU_LIEU: DB 41H, 81H, 7FH, 01H,01H COT: DB 01H, 02H, 04H, 08H, 10H END Chương trình 6.2: Hiển thị chữ A màu đỏ trêm ma trận led Chương trình 6.3: Hiển thị chữ H màu cam trên MT led Chương trình 6.4: hiển thị các số tăng dần từ 0 – 9 trên ma trận led (dùng ngắt timer 0 để quét led), thời gian tăng số là 0.5 giây (dùng timer 1) Chương trình 6.5: Viết chương trình hiển thị chữ T trên ma trận led, chương trình cho phép thay đổi thời gian quét màu đỏ (dùng SW1), thời gian quét màu xanh (dùng SW2) để tạo hiệu ứng TRUE COLOR. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 51 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu LCD và viết chương trình giao tiếp LCD II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, LCD, bàn phím. SƠ ĐỒ MẠCH: THIS IS THE LCD 2 LINES x 16 CHARACTERS LA MP LCD1 7 8 9 10 11 12 13 14 4 5 6 3 1 2 15 16 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 R S R /W C S C O N S T G N D V C C A K Q13 A1013R66 4K7 VCC JP22DATA_LCD 1 2 3 4 5 6 7 8 R65 5/3W VCC R10 10K JP23 CONTROL_LCD 1 2 3 4 5 6 7 8 - CONST: contrast, chỉnh độ tương phản (độ sáng của hình ảnh trên LCD) - CS: chip selection, tác động bằng cạnh xuống, cho phép chốt dữ liệu - RS: register selection, chọn thanh ghi lệnh (RS=0) hoặc thanh ghi dữ liệu (RS = 1) - R/W: chân đọc/ghi - D7 – D0: data bus, hai hướng - A, K: anod và cathode của đèn sáng nền của LCD BÀI 07: LCD TC1602A Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 52 Tập lệnh LCD: TẬP LỆNH (MÃ HEX) Chức năng 01H Xĩa màn hình hiển thị 02H Trở về đầu dịng 04H Dịch con trỏ sang trái 06H Dịch con trỏ sang phải 05H Dịch hiển thị sang phải 07H Dịch hiển thị sang trái 08H Tắt con trỏ, tắt hiển thị 0AH Tắt hiển thị, bật con trỏ 0CH Bật hiển thị, tắt con trỏ 0EH Bật hiển thị, nhấp nháy con trỏ 0FH Tắt hiển thị, nhấp nháy con trỏ 10H Dịch vị trí con trỏ sang trái 14H Dịch vị trí con trỏ sang phải 18H Dịch tồn bộ hiển thị sang trái 1CH Dịch tồn bộ hiển thị sang phải 80H Đưa con trỏ về đầu dịng 1 C0H Đưa con trỏ về đầu dịng 2 38H Xác lập chế độ 2 dịng và độ phân giải chữ 5x7 III. TIẾN TRÌNH THÍ NGHIỆM - Nối JP7 với JP22 - Nối JP8 với JP23 - Nối JP3 với JP29 Chương trình 7.1: Viết chương trình hiển thị “K. DIEN-DIEN TU” - dịng 1 “PTN TDH-VDK” - dịng 2 trên LCD ; = = = = = = = = = = = = = = = = = ; P1.0 - > D0 ; P1.1 - > D1 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 53 ; P1.2 - > D2 ; . . . ; P1.7 - > D7 ; P3.0 - > Enable ; P3.1 - > RS ; P3.2 - > RW ;******************************************************* EN BIT P3.4 RS BIT P3.2 RW BIT P3.3 LAMP BIT P3.5 ;---------------------------------------------------------------------------------- MAIN: CLR LAMP ; bật đèn background LCD clr RS ;RS low clr RW ;RW low setb EN ;Enable mov TMOD,#01h mov TL0,#LOW(-50000) mov TH0,#HIGH(-50000) ; DELAY 50ms MOV p1,#38h ; đặt chế độ 2 dịng call GHI_LENH call GHI_LENH call Delay MOV p1,#0ch ; bật hiển thị call GHI_LENH call GHI_LENH MOV p1,#01h ;xố màn hình call GHI_LENH call GHI_LENH call DONG_01 call DONH_02 sjmp $ ;------------------------------------------------------------------- write: push acc write1: mov a,#0 movc a,@a+dptr cjne a,#2,write_data ; asc = 2: kết thúc pop acc ret write_data: MOV p1,A Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 54 call GHI_DATA inc dptr sjmp write1 ;-------------------------------------------------------------------- delay: clr TF0 setb TR0 jnb TF0,$ clr TR0 ret ;----------------------------------------------- DONG_01: MOV p1,#080h ; đưa con trỏ về đầu dịng 01 call GHI_LENH mov dptr,#DT_DONG1 call write ret ;------------------------------------------------- DONG_02: MOV p1,#0c0h ; đưa con trỏ về đầu dịng 02 call GHI_LENH mov dptr,#DT_DONG2 call write ret ;-------------------------------------------------- GHI_LENH: clr RS clr RW clr EN nop setb EN ret GHI_DATA: setb RS nop wait: clr RW clr EN nop setb EN nop Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 55 ; kiểm tra Busy Flag MOV p1,#0ffh ;configure port1 to input mode setb RW clr RS clr EN nop setb EN wait1: nop MOV A,p1 anl a,#80h ; kiểm tra bit 7: busy flag cjne a,#00h,wait1 ; chờ nop nop nop nop nop nop ret DT_DONG1: db ' K. DIEN-DIEN TU', 02H DT_DONG2: db ' PTN TDH-VDK ', 02H end Chương trình 7.2: Viết chương trình hiển thị NGÀY-THÁNG-NĂM trên dịng 01 và GIỜ-PHÚT-GIÂY trên dịng 02. Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 56 I. MỤC ĐÍCH: Giúp sinh viên tìm hiểu thiết bị biến đổi tương tự – số và số tương tự 8 bit: ADC0804 và ADC0808 II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, LCD, bàn phím, module ADC và DAC. SƠ ĐỒ MẠCH ADC: R5 1K R8 1K - + U8B JR4558 5 6 7 8 4 VCC VCC R3 470K R1 1K U7 ADC0804 6 7 9 11 12 13 14 15 16 17 18 19 4 5 1 2 3 +IN -IN VREF/2 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 CLKR CLKIN INTR CS RD WR U9 LM35 2 3 1 VS + ADJ G N D JP17 C O N TR O L_A D C 1 2 3 4 5 6 7 8 C1 1nF VCC R9 1K C2 100uF/25V R4 1K R2 10K R6 330 VCC -VCC - + U8A JR4558 3 2 1 8 4 JP16 D A TA _A D C 1 2 3 4 5 6 7 8 VCC R7 1K -VCC VCC KÝ HIỆU NGÕ VÀO/RA CHỨC NĂNG VREF Ngõ vào điện áp chuẩn,cho phép chỉnh thang đo. CLKIN/CLKR Các ngõ vào cho mạch dao động RC NGÕ VÀO VIN+ Ngõ vào đo + VIN- Ngõ vào đo - WR Ngõ vào khởi động ADC ( START) RD Ngõ vào điều khiển đọc số liệu. NGÕ RA DB7 –DB0 Ngõ ra dữ liệu số 8 bit INTR Ngõ ra báo tín hiệu biến đổi đã sẳn sàng (EOC: end of converter). BA ̀I 08: ADC-DAC Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 57 ADC biến đổi điện áp : VIN = VIN + - VIN - Thành giá trị số 8 bit ở ngõ ra: N = 255 V V REF IN Trong đĩ: Vref = R6*VCC/(R5+R6) SƠ ĐỒ MẠCH DAC: R58 150 VCC JP19 DAC_OUT 1 2 R51 2K7 R69 2K7 R56 2K7 C14 104 R52 10 D22 LED R29 10 JP18 D A TA _D A C 1 2 3 4 5 6 7 8 R53 820 VCC D21 5V1 R57 2K7 U21 DAC0808 1 3 16 14 15 2 13 5 6 7 8 9 10 11 12 4 GND VEE COMPS V R EF + V R EF - Iout VC C D7 D6 D5 D4 D3 D2 D1 D0 Iout C17 104 R55 10K C13 104 D20 4007 VCC R54 5K -12VDC - + U22A JR4558 3 2 1 8 4 - + U22B JR4558 5 6 7 8 4 C12 100uF C16 CAP +12VDC R68 270 - D7-D0: 8 bit số ngõ vào - Vref+, Vref-: các chân điện áp chuẩn - Vout = (D7/2 + D6/4 ++ D0/256)*Vref hoặc Vout = N*Vref/255 III. TIẾN TRÌNH THÍ NGHIỆM 1/- ADC0804: - Nối JP7 với JP16 - Nối JP8 với JP17 - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 - Nối JP12 với JP21 Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển Trang 58 Chương trình 8.1: Viết chương trình đọc giá trị ADC và hiển thị trên 6 led 7 đoạn (led3 – led8): 000doC (chỉnh biến trở để nhiệt độ đo được đúng với nhiệt độ phịng) Chương trình 8.2: Viết chương trình cho phép lấy mẫu nhiệt độ (1s một mẫu) và truyền về PC (tốc độ 4800bps,n,8,1) để khảo sát sự thay đổi nhiệt độ trong phịng thí nghiệm. Trên giao diện chương trình máy tính chọn Emulator và click START để bắt đầu (chương trình cho phép vẽ các giá trị nhiệt độ nhận được trên đồ thị) 2/- DAC0808: - Nối JP7 với JP18 - Nối JP8 với JP29 - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 - Nối JP12 với JP21 Chương trình 8.3: Viết chương trình cho phép nhập vào một số 0 – 255 bằng SW1 (tăng 10 đơn vị) và SW2 (giảm 1 đơn vị), hiển thị trên 3 led 6,7,8. Nhấn SW3 để xuất ra ngõ vào ADC, quan sát trạng thái sáng của led ở ngõ ra DAC và dùng VOM để đo điện áp. Chương trình 8.4: Viết chương trình cho phép nhận một byte truyền từ PC (4800,n,8,1) và xuất ra DAC.

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf
Tài liệu liên quan