Vi Mạch MCS 51 - Ứng Dụng Thực Tế (Phần 2) part 6 potx

9 262 0
Vi Mạch MCS 51 - Ứng Dụng Thực Tế (Phần 2) part 6 potx

Đang tải... (xem toàn văn)

Thông tin tài liệu

K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER. Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1). Giáo trình thực hành vi xử lý. 217 Biên soạn: Phạm Quang Trí RET CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;*************************************************** DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN). PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#0F7H ;MA QUET MOV R0,#63H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P1,#0FFH ;CHONG LAM DEC R0 ;LAY MA HIEN THI KE TIEP RR A ;CHUYEN SANG LED KE TIEP CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;*************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET END 1.3 Lưu chương trình và biên dịch chương trình. 1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có. 1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip hoạt động. 1.6 Nạp chương trình vào vi điều khiển. 1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển. 1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ bước 3 đến bước 9. 2 Bài tập: (xem thêm trong phần hướng dẫn và phần bài tập của Bài 3) K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER. Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1). Giáo trình thực hành vi xử lý. 218 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm. • Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1. 1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. ;*************************************************** ;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DO TAN SO XUNG TAI CHAN T1 ;*************************************************** ;KET NOI: PORT0 -> 7 SEGMENT (DP -> A), PORT1 -> SELECT LED, PULSE -> T1 PIN ;*************************************************** ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 0BH ;DIEM NHAP ISR TIMER0 LJMP T0ISR ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV TMOD,#51H ;TIMER1: COUNTER 16 BIT (MODE 1), TIMER0: TIMER 16 BIT (MODE 1) MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS MOV TL0,#LOW(-50000) SETB TR0 ;CHO TIMER BAT DAU CHAY MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG MP1: MOV 40H,#0 ;NAP GIA TRI BIEN DEM SO LAN NGAT TIMER0 MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI MOV R6,TL1 MOV TH1,#0 ;XOA COUNTER 1, CHUAN BI CHO LAN DEM XUNG TIEP THEO MOV TL1,#0 SETB TR1 ;COUNTER BAT DAU DEM ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD ACALL BCD4TO7SEG ;DOI MA BCD SANG MA 7 DOAN MP2: ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED MOV A,40H CJNE A,#20,MP2 ;KIEM TRA DU 20 LAN NGAT = 1S CLR TR1 ;DUNG COUNTER SAU 1S -> SO XUNG TRONG 1S = TAN SO XUNG SJMP MP1 ;*************************************************** BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD. PUSH ACC PUSH B MOV B,#10 ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10 PUSH B ;CAT SO HANG DON VI MOV B,#10 ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10 PUSH B ;CAT SO HANG CHUC MOV B,#10 MOV A,R6 DIV AB ;TIEP TUC CHIA CHO 10 PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO POP B ;LAY SO HANG TRAM TU STACK ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM MOV R7,A ;R7 = NGAN - TRAM POP ACC ;LAY SO HANG CHUC TU STACK SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO POP B ;LAY SO HANG DON VI TU STACK ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI MOV R6,A ;R6 = CHUC - DON VI POP B POP ACC RET ;*************************************************** DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT. PUSH 02H ;CAT THANH GHI R2 PUSH ACC ;CAT THANH GHI A K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER. Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1). Giáo trình thực hành vi xử lý. 219 Biên soạn: Phạm Quang Trí MOV R2,#16 ;CHO PHEP DICH 16 LAN CLR A DIVIDE: XCH A,R6 CLR C ;DICH BIT 7 CU R6 VAO RLC A ;CARRY, BIT 0 CUA R6 XCH A,R6 ;BANG 0. XCH A,R7 ;DICH BIT CARRY VAO RLC A ;BIT 0 CUA R7 XCH A,R7 RLC A ;DICH BIT 7 CUA R7 VAO A. CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >= SJMP A_GREATER_EQ_B ;SO CHIA CHUA ? NOT_EQUAL: JC BELOW ;N: THUONG SO = 0 TRONG R6. A_GREATER_EQ_B: SUBB A,B ;Y: SO DU CAT TRONG A. XCH A,R6 ORL A,#1 ;THUONG SO = 1 XCH A,R6 ;CAT TRONG R6 BELOW: DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN. XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU. POP ACC POP 02H RET ;*************************************************** BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN). PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH DPL PUSH ACC MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA 4 BIT CAO MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO MOV A,R6 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA 4 BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0FH ;XOA 4 BIT CAO MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO MOV A,R7 ;LAY SO BCD CAN GIAI MA ANL A,#0F0H ;XOA 4 BIT THAP SWAP A ;HOAN CHUYEN CAO - THAP MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI POP DPL POP DPH RET CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9) DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;*************************************************** DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN). PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI PUSH 00H MOV A,#0F7H ;MA QUET K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER. Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1). Giáo trình thực hành vi xử lý. 220 Biên soạn: Phạm Quang Trí MOV R0,#63H ;DIA CHI VUNG MA HIEN THI DISP: MOV P0,@R0 ;XUAT MA HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAYLED MOV P1,#0FFH ;CHONG LAM DEC R0 ;LAY MA HIEN THI KE TIEP RR A ;CHUYEN SANG LED KE TIEP CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI POP ACC RET ;*************************************************** DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS PUSH 00H PUSH 01H MOV R1,#5 DEL: MOV R0,#250 DJNZ R0,$ DJNZ R1,DEL POP 01H POP 00H RET ;*************************************************** T0ISR: ;ISR TIMER0 - 50MS CLR TR0 CLR TF0 MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS MOV TL0,#LOW(-50000) INC 40H ;TANG BIEN DEM SO LAN NGAT - 1 LAN = 50MS SETB TR0 RETI END 1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên. 2 Bài tập: (xem thêm trong phần hướng dẫn và phần bài tập của Bài 3) K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER. Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1). Giáo trình thực hành vi xử lý. 221 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm. • Tắt nguồn cấp cho mô hình thí nghiệm. • Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta chỉ nối 4 bit thấp của J64 với J1). • Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã. • Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển (chú ý là ta chỉ nối vào bit 2 (chân INT0) của J66). • Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn. PORT 0PORT 1PORT 3PORT 2 PORT 1PORT 3 40 PINS 20 PINS 4 POWER PULSE 1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. 1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên. 2 Bài tập: • Bài 1: Hãy viết chương trình điều khiển tạo xung 1 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED. • Bài 2: Hãy viết chương trình điều khiển tạo xung 3 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED. • Bài 3: Hãy viết chương trình điều khiển tạo xung 1 Hz hoặc 3 Hz (sử dụng Timer) tại chân P1.0 tùy thuộc vào ta nhấn hay nhả nút nhấn KEY0 và hiển thị mức logic tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED và nút nhấn. • Bài 4: Hãy viết chương trình điều khiển đếm liên tục số lượng xung được đưa vào chân T0 của vi điều khiển và hiển thị số lượng xung này lên các LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo xung và các LED 7 đoạn. • Bài 5: Hãy viết chương trình điều khiển đo tần số của xung (đơn vị tính là Hz) được đưa vào chân T0 của vi điều khiển và hiển thị giá trị tần số lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo xung và các LED 7 đoạn. • Bài 6: Hãy viết chương trình điều khiển đo độ rộng xung (đơn vị tính là ms) được đưa vào chân T0 của vi điều khiển và hiển thị giá trị độ rộng xung lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo xung và các LED 7 đoạn. • Bài 7: Thực hiện thay đổi tần số của thiết bị tạo xung (bằng cách điều chỉnh biến trở trên thiết bị) hoặc thay đổi nguồn tạo xung khác vào. Thực hiện lại các bài tập trên và quan sát trên LED 7 đoạn để nhận xét sự thay đổi của chương trình. • Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình. 3 Hướng dẫn: Chế độ Counter: o Sử dụng Timer1 ở chế độ 1 counter. K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER. Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1). Giáo trình thực hành vi xử lý. 222 Biên soạn: Phạm Quang Trí o Khi cho Timer1 chạy, đọc liên tục các giá trị của TH1 và TL1. o Đổi qua mã BCD nén và hiển thị lên LED 7 đoạn. Chế độ đo tần số: o Viết chương trình đếm số xung trong 1s và hiển thị lên LED 7 đoạn (trong khi đếm thì không hiển thị số đếm mà vẫn hiển thị giá trị tần số trước đó). Chế độ đo độ rộng xung (chế độ Gate = 1): o Viết chương trình sử dụng Timer0 ở chế độ Gate = 1. TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP T T À À I I L L I I Ệ Ệ U U H H Ư Ư Ớ Ớ N N G G D D Ẫ Ẫ N N T T H H Í Í N N G G H H I I Ệ Ệ M M - - T T H H Ự Ự C C H H À À N N H H L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP. Giáo trình thực hành vi xử lý. 224 Biên soạn: Phạm Quang Trí A. MỤC ĐÍCH: • Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng. • Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển. • Ưùng dụng port nối tiếp của vi điều khiển để mở rộng port nhập và xuất. • Điều khiển việc thu phát nối tiếp. B. YÊU CẦU: • Nắm vững tập lệnh của vi điều khiển MCS-51. • Biết cách hoạt động của port nối tiếp ở các chế độ khác nhau. • Biết cách lập trình điều khiển việc xuất nhập dữ liệu thông qua port nối tiếp ở các chế độ khác nhau. L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP. Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất cách nhau 1s. Giáo trình thực hành vi xử lý. 225 Biên soạn: Phạm Quang Trí 1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm. • Tắt nguồn cấp cho mô hình thí nghiệm. • Dùng dây bus 8 nối J45 (PARALLEL OUT 2) ở khối thanh ghi dịch với J12 (BAR LED 2) ở khối dãy LED. • Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi điều khiển (chú ý là ta chỉ nối bit 1 (IN) của J39 với bit 0 (RXD) của J66). • Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi điều khiển (chú ý là ta chỉ nối bit 2 (CLK) của J39 với bit 1 (TXD) của J66). • Dùng hai dây bus 3 nối J115 (POWER) ở khối thanh ghi dịch và J103 (POWER) ở khối LED dãy với nguồn +5V ở khối nguồn. PORT 0PORT 1PORT 3PORT 2 PORT 1PORT 3 40 PINS 20 PINS PARALLEL OUT 1 POWER SERIAL IN 1 PARALLEL OUT 2 SERIAL IN 2 PARALLEL IN SERIAL OUT 1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. ;*************************************************** ;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP (MO RONG PORT XUAT) ;*************************************************** ;KET NOI: LED -> PARALLEL OUT, RXD -> IN, TXD -> CLK ;*************************************************** ORG 00H MAIN: MOV SCON,#12H ;KHOI TAO SERIAL PORT (MODE0, REN = 1, TI = 1, RI = 0) MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU MOV R0,#0 ;OFFSET VUNG DU LIEU WAIT: JNB TI,WAIT ;KIEM TRA CO TI (KIEM TRA PHAT XONG) CLR TI ;XOA CO TI MOV A,R0 ;LAY OFFSET MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU MOV SBUF,A ;PHAT DU LIEU RA SERIAL PORT ACALL DELAY INC R0 ;CHUYEN SANG DU LIEU KE TIEP CJNE R0,#9,WAIT ;KIEM TRA DA PHAT XONG HET CAC DU LIEU TRONG VUNG DU LIEU SJMP MAIN ;*************************************************** DELAY: PUSH 00H MOV R0,#100 MOV TMOD,#01H DEL: MOV TH0,#0D8H MOV TL0,#0F0H SETB TR0 JNB TF0,$ CLR TR0 . • Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng. • Điều khiển thiết bị ngoại vi bằng các port của vi. TRONG R6. A_GREATER_EQ_B: SUBB A,B ;Y: SO DU CAT TRONG A. XCH A,R6 ORL A,#1 ;THUONG SO = 1 XCH A,R6 ;CAT TRONG R6 BELOW: DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN. XCH A,B ;SAU 16 LAN. Biên soạn: Phạm Quang Trí MOV R2,# 16 ;CHO PHEP DICH 16 LAN CLR A DIVIDE: XCH A,R6 CLR C ;DICH BIT 7 CU R6 VAO RLC A ;CARRY, BIT 0 CUA R6 XCH A,R6 ;BANG 0. XCH A,R7 ;DICH BIT CARRY

Ngày đăng: 09/07/2014, 23:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan