1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giáo trình điều khiển: Phần 2 - Phan Văn Vượng (Chủ biên)

146 19 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 146
Dung lượng 24,98 MB

Nội dung

(NB) Nối tiếp phấn 1, phần 2 giáo trình trình gồm các nội dung sau: giới thiệu hoạt động của bộ định thời trong vi điều khiển 8051; giới thiệu hoạt động của port nối tiếp trong vi điều khiển 8051; giới thiệu hoạt động của ngắt trong vi điều khiển 8051. Giáo trình được biên soạn ngắn gọn, dễ hiểu, bổ sung nhiều kiến thức mới và biên soạn theo quan điểm mở, nghĩa là, đề cập những nội dung cơ bản, cốt yếu để tùy theo tính chất của các ngành nghề đào tạo.

BÀI 4: GIỚI THIỆU HOẠT ĐỘNG CỦA BỘ ĐỊNH THỜI TRONG VI ĐIỀU KHIỂN 8051 Mục tiêu Kiến thức:  Nắm bắt chức định thời vi điều khiển 8051  Nắm bắt chức ghi định thời vi điều khiển 8051  Nắm bắt chế độ định thời vi điều khiển 8051  Nắm bắt chương trình điều khiển định thời vi điều khiển 8051 Kỹ năng:  Viết số chương trình điều khiển định thời vi điều khiển 8051  Viết số tập thực hành liên quan đến hoạt động định thời để điều khiển thiết bị ngoại vi có sẵn mơ hình thực hành Thái độ:  Có ý thức tự giác  Tuân thủ nội quy trình tự thực  Có tinh thần hợp tác giúp đỡ lẫn  Cẩn thận, đảm bảo an toàn vật liệu, linh kiện  Bảo quản thiết bị đo, mô hình học cụ  Vệ sinh mơ hình, thiết bị học tập phòng thực hành Nội dung 4.1 Giới thiệu chung 275  Tần số: tần số xung ngõ tần số xung ngõ vào chia cho 2N  Giá trị: giá trị nhị phân FF định thời số đếm xung clock ngõ vào từ định thời bắt đầu đếm  Tràn: xảy tượng tràn (cờ tràn = 1) số đếm chuyển từ giá trị lớn xuống giá trị nhỏ định thời Ví dụ: Bộ định thời 16 bit (chứa 16 FF bên trong) f f  IN  IN OUT 216 65536  Tần số: f  Giá trị: số đếm nằm khoảng (0000H)  65535 (FFFFH)  Tràn: cờ tràn số đếm từ FFFFH chuyển xuống 0000H  Hình minh họa đơn giản hoạt động định thời bit: Hoạt động định thời bit đơn giản minh họa hình Mỗi tầng D FF kích khởi cạnh âm hoạt động mạch chia ta nối ngõ Q với ngõ vào D Flipflop cờ (Flag FF) mạch chốt D 276 set tầng cuối định thời Giản đồ thời gian cho thấy tầng thứ (Q 0) chia tần số xung clock, tầng thứ hai (Q 1) chia tần số xung clock, … Số đếm ghi dạng thập phân kiểm tra dễ dàng cách khảo sát trạng thái flipflop Ví dụ, số đếm xuất Q2 = 1, Q1 = 0, Q0 = Các flipflop flipflop tác động cạnh âm (nghĩa trạng thái flipflop thay đổi theo cạnh âm xung clock) Khi số đếm tràn từ 111 xuống 000, ngõ Q2 có cạnh âm làm cho trạng thái flipflop cờ đổi từ lên (ngõ vào D flipflop luôn logic 1)  Ứng dụng định thời gian (TIMER): định thời lập trình cho tràn sau khoảng thời gian qui định cờ tràn định thời  Ứng dụng đếm kiện (COUNTER): để xác định số lần xuất kích thích từ bên ngồi tới chân chip 8051 (kích thích chuyển trạng thái từ xuống 0)  Ứng dụng tạo tốc độ baud cho port nối tiếp: xem thêm phần “Hoạt động port nối tiếp.” 4.2 Bộ định thời vi điều khiển 8051 4.2.1 Thanh ghi THx/TLx  TL0: Chứa byte thấp định thời  TL1: Chứa byte thấp định thời  TH0: Chứa byte cao định thời  TH0: Chứa byte cao định thời 4.2.2 Thanh ghi TMOD 277  Thanh ghi TMOD (Timer Mode Register) chứa bit dùng để thiết lập chế độ hoạt động cho định thời định thời  Thanh ghi TMOD nạp giá trị lần thời điểm bắt đầu chương trình để qui định chế độ hoạt động định thời  Cấu trúc ghi TMOD:  Các chế độ hoạt động định thời: Ví dụ 1: Cho biết giá trị cần nạp cho ghi TMOD để  Timer 0: định thời gian 16 bit, điều khiển phần mềm (bit TR0) 278  Timer 1: đếm xung 13 bit, điều khiển phần cứng (chân INT1) Giải Phân tích: (1): Chế độ 16 bit (2): Bộ định thời gian (3): Điều khiển phần mềm (4): Chế độ 13 bit (5): Bộ đếm xung (6): Điều khiển phần cứng       M1 = 0, M0 = C / T = GATE = M1 = 0, M0 = C / T = GATE = Từ ta có: (TMOD) = 11000001B = C1H Ví dụ 2: Cho biết giá trị cần nạp cho ghi TMOD để  Timer 0: không sử dụng  Timer 1: định thời gian bit tự nạp lại, điều khiển phần mềm (bit TR1) Giải Phân tích: (1): Khơng sử dụng  M1 = 0, M0 = (2): Không sử dụng  C / T = (3): Không sử dụng  GATE = Do Timer không sử dụng, nên ta có thiết lập chế độ Thông thường để dễ dàng ta nên cho: GATE=0, C / T = 0, M1 = M0 = (4): Chế độ bit tự động nạp lại  M1 = 1, M0 = (5): Bộ định thời gian  C / T = (6): Điều khiển phần mềm  GATE = 279 Từ ta có: (TMOD) = 00100000B = 20H Ví dụ 3: Cho biết (TMOD) = A5H Hãy cho biết chế độ hoạt động Timer Timer Giải Ta có: (TMOD) = A5H = 10100101B Giải thích: M1 = 1, M0 = C / T = GATE = M1 = 0, M0 = C / T = GATE =       (4): Chế độ bit tự động nạp lại (5): Bộ định thời gian (6): Điều khiển phần cứng (1): Chế độ 16 bit (2): Bộ đếm xung (3): Điều khiển phần mềm Từ ta có: o Timer 0: đếm xung 16 bit, điều khiển phần mềm (bit TR0) o Timer 1: định thời gian bit tự nạp lại, điều khiển phần cứng (chân INT1) Ví dụ 4: Cho biết (TMOD) = 21H Hãy cho biết chế độ hoạt động Timer Timer Giải Ta có: (TMOD) = 21H = 00100001B Giải thích: M1 = 1, M0 = C / T = GATE = M1 = 0, M0 = 280     (4): Chế độ bit tự động nạp lại (5): Bộ định thời gian (6): Điều khiển phần mềm (1): Chế độ 16 bit C / T = GATE =   (2): Bộ định thời gian (3): Điều khiển phần mềm Từ ta có:  Timer 0: định thời gian 16 bit, điều khiển phần mềm (bit TR0)  Timer 1: định thời gian bit tự nạp lại, điều khiển phần mềm (bit TR1) 4.2.3 Thanh ghi TCON  Thanh ghi TCON (Timer Control Register) chứa bit dùng để điều khiển báo trạng thái định thời định thời  Cấu trúc ghi TCON: 281  Lưu ý:Các bit IT0, IT1, IE0, IE1 không dùng để điều khiển định thời Các bit dùng để phát khởi động ngắt Việc thảo luận bit trình bày “Hoạt động ngắt.” 4.2.4 Các chế độ định thời 4.2.4.1 Chế độ định thời 13 bit (Chế độ 0): Chế độ (Mode 0):  Chế độ định thời 13 bit  Sử dụng bit ghi THx bit thấp ghi TLx để tạo định thời  Số đếm: 0000H  1FFFH nghĩa từ  8191 Thời gian định thời: từ 1.TTimer 213.TTimer nghĩa từ 1.TTimer  8192.TTimer  Thanh ghi THx TLx chứa giá trị định thời  Khi có xung clock, định thời bắt đầu đếm lên từ giá trị chứa THx/TLx  Xảy tràn (cờ tràn TFx=1) số đếm chuyển từ 1FFFH sang 0000H việc đếm tiếp tục đếm lên từ giá trị 0000H 282 Hình 4.2.1: Kiến trúc Timer chế độ (Mode 0) 4.2.4.2 Chế độ định thời 16 bit (Chế độ 1): Chế độ (Mode 1):  Chế độ định thời 16 bit  Sử dụng ghi THx TLx để tạo định thời  Số đếm: 0000H  FFFFH nghĩa từ  65535 Thời gian định thời: từ 1.TTimer 216.TTimer nghĩa từ 1.TTimer 65536.TTimer  Thanh ghi THx TLx chứa giá trị định thời  Khi có xung clock, định thời bắt đầu đếm lên từ giá trị chứa THx/TLx  Xảy tràn (cờ tràn TFx=1) số đếm chuyển từ FFFFH sang 0000H việc đếm tiếp tục đếm lên từ giá trị 0000H Hình 4.2.2: Kiến trúc Timer chế độ (Mode 1) 4.2.4.3 Chế độ định thời bit tự nạp lại (Chế độ 2): 283 Chế độ (Mode 2):  Chế độ định thời bit tự nạp lại  Sử dụng ghi TLx để tạo định thời  Số đếm: 00H  FFH nghĩa từ  255 Thời gian định thời: từ 1.TTimer 28.TTimer nghĩa từ 1.TTimer 256.TTimer  Thanh ghi TLx chứa giá trị định thời ghi THx chứa giá trị dùng để nạp lại cho định thời  Khi có xung clock, định thời bắt đầu đếm lên từ giá trị chứa TLx (THx không thay đổi giá trị)  Xảy tràn (cờ tràn TFx=1) số đếm chuyển từ FFH sang 00H, đồng thời giá trị THx nạp vào TLx việc đếm tiếp tục đếm lên từ giá trị chứa ghi TLx (giá trị với giá trị THx) Hình 4.2.3: Kiến trúc Timer chế độ (Mode 2) 4.2.4.4 Chế độ định thời chia xẻ (Chế độ 3): 284 J211 A B C D E F G VCC BCD IN 1-2 VCC C139 104 VCC C140 104 13 12 11 10 15 14 A B C D E F G DP VCC BI/RBO LT VCC RBI GND U100 7447 D0 D1 D2 D3 A B C D E F G BI/RBO LT VCC RBI GND 16 7SEG OUT 13 12 11 10 15 14 J215 VCC 16 A B C D E F G DP 7SEG OUT J214 A B C D A B C D U99 7447 D0 D1 D2 D3 A B C D E F G VCC BCD IN 3-4 VCC C137 104 VCC C138 104 BI/RBO LT VCC RBI GND U101 7447 D0 D1 D2 D3 A B C D E F G BI/RBO LT VCC RBI GND J212 13 12 11 10 15 14 A B C D E F G DP VCC 16 7SEG OUT 13 12 11 10 15 14 74138 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 DECODER 3-8 VCC VCC C135 104 G1 G2A G2B J209 15 14 13 12 11 10 7 VCC C136 104 VCC GND SEL0 SEL1 SEL2 SEL3 SEL4 SEL5 SEL6 SEL7 DECODER OUT 16 VCC J216 VCC 16 U98 SEL A SEL B SEL C 16 D0 D1 D2 D3 J210 J217 A B C D E F G DP 7SEG OUT U102A SEL A SEL B DECODER 2-4 A B G GNDVCC J213 A B C D A B C D 7447 74139 Y0 Y1 Y2 Y3 J218 J219 U102B SEL A SEL B 14 13 DECODER 2-4 15 A B G SEL0 SEL1 SEL2 SEL3 DECODER OUT U97 74139 Y0 Y1 Y2 Y3 J220 12 11 10 SEL0 SEL1 SEL2 SEL3 DECODER OUT J221 GND +5V GND VCC POWER Hình 6.5.9: Sơ đồ nguyên lý khối giải mã đoạn (7 Segment Decoder) 6.5.9 Sơ đồ bố trí linh kiện Hình 6.5.10: Khối LED đơn (Point LED) Hình 6.5.11: Khối nút nhấn (Momentary Switch) Hình 6.5.12: Khối LED đoạn (7 Segment LED) 406 Hình 6.5.13: Khối giải mã đoạn (7 Segment Decoder) BÀI THỰC HÀNH Viết chương trình, mơ lắp ráp mạch điều khiển truyền liệu thông qua port nối tiếp Thay đổi trạng thái LED đơn vi điều khiển (Slave) theo trạng thái nút nhấn vi điều khiển (Master) ngược lại Sử dụng phương pháp ngắt port nối tiếp cho việc truyền liệu 6.5.10 Lưu đồ giải thuật  Bước 1: Vẽ lưu đồ giải thuật chương trình điều khiển SP1 BEGIN THIẾT LẬP VECTƠ Vectơ RESET: 0000H Vectơ ngắt port nối tiếp: 0023H Vectơ chương trình: 0030H MAIN: ĐIỀU KHIỂN TẮT LED (P1) = 00H CẤU HÌNH PORT NỐI TIẾP T1 AUTO RELOAD BAUD RATE = 9600 BPS DATA = BIT STOP = BIT PARITY = NONE BEGIN SP_ISR: Đ KIỂM TRA NGẮT PHÁT (TI) = TRANS_DATA: RECEI_DATA: S XÓA CỜ BÁO THU RI = CẤT DỮ LIỆU NHẬN ĐƯỢC TỪ PORT NỐI TIẾP (A) = (SBUF) XUẤT GIÁ TRỊ RA LED (P1) = (A) KÍCH HOẠT TIMER TẠO BAUD RATE (TR1) = CHO PHÉP NGẮT PORT NỐI TIẾP (IE) = 90H XÓA CỜ BÁO PHÁT TI = ĐỌC TRẠNG THÁI CÁC SW (A) = (P0) ĐẢO TRẠNG THÁI LOGIC CỦA CÁC SW TẢI DỮ LIỆU CẦN PHÁT VÀO PORT NỐI TIẾP (SBUF) = (A) EXIT_SP_ISR: END MASTER & SLAVE Hình 6.5.14: Lưu đồ giải thuật chương trình 6.5.11 Chương trình điều khiển Sử dụng phần mềm Topview Simulation để thực việc viết chương trình biên dịch, kiểm tra lỗi cú pháp chương trình  Bước 2: Khởi động phần mềm Topview Simulation 407  Bước 3: Mở chức soạn thảo chương trình đặt tên tập tin chương trình là: SP_1_M.ASM SP_1_S.ASM  Bước 4: Viết chương trình điều khiển vào máy tính Chương trình cho vi điều khiển Master: ;*************************************************** ;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP GIUA HAI VI DIEU KHIEN ;CHUONG TRINH CHO VI DIEU KHIEN MASTER ;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC SW TUONG UNG ;MO PHONG PROTUES: SERIALPORT_1 ;*************************************************** ;*************************************************** ;KET NOI: SWITCH -> PORT (ACT = 0) ; LED -> PORT (CO SU DUNG DEM DAO - ACT = 1) ;*************************************************** $MOD51 ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI TIEP ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV P1,#00H ;LED TAT ;**************************************************** ;KHOI DONG PORT NOI TIEP MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = MOV TMOD,#20H ;TIMER 1: MODE - TAO TOC DO BAUD CHO SERIAL PORT MOV TH1,#(-3) ;BAUD RATE = 9600 SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT DONG ;**************************************************** ;THIET LAP CAC NGAT CHO PORT NOI TIEP MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP ;**************************************************** MP1: ;DOAN CHUONG TRINH SE THUC HIEN KHI KHONG CO TIN HIEU NGAT SJMP MP1 ;QUAY LAI ;**************************************************** 408 SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP ;P0 = DU LIEU PHAT ;P1 = DU LIEU THU PUSHACC JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA NGAT PHAT HAY NGAT THU RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP VAO THANH GHI A CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP MOV A,SBUF ;THU DU LIEU MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED SJMP EXIT_SP_ISR ;THOAT KHOI ISR TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A RA PORT NOI TIEP CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP MOV A,P0 ;DOC DU LIEU LAY TU PORT SW CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1) MOV SBUF,A ;PHAT DU LIEU EXIT_SP_ISR: POP ACC RETI END Chương trình cho vi điều khiển Slave: ;*************************************************** ;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP GIUA HAI VI DIEU KHIEN ;CHUONG TRINH CHO VI DIEU KHIEN SLAVER ;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC SW TUONG UNG ;MO PHONG PROTUES: SERIALPORT_1 ;*************************************************** ;KET NOI: SWITCH -> PORT (ACT = 0) ; LED -> PORT (CO SU DUNG DEM DAO - ACT = 1) ;*************************************************** $MOD51 ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI TIEP ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV P1,#00H ;LED TAT 409 ;**************************************************** ;KHOI DONG PORT NOI TIEP MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = MOV TMOD,#20H ;TIMER 1: MODE - TAO TOC DO BAUD CHO SERIAL PORT MOV TH1,#(-3) ;BAUD RATE = 9600 SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT DONG ;**************************************************** ;THIET LAP CAC NGAT CHO PORT NOI TIEP MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP ;**************************************************** MP1: ;DOAN CHUONG TRINH SE THUC HIEN KHI KHONG CO TIN HIEU NGAT SJMP MP1 ;QUAY LAI ;**************************************************** SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP ;P0 = DU LIEU PHAT ;P1 = DU LIEU THU PUSHACC JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA NGAT PHAT HAY NGAT THU RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP VAO THANH GHI A CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP MOV A,SBUF ;THU DU LIEU MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED SJMP EXIT_SP_ISR ;THOAT KHOI ISR TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A RA PORT NOI TIEP CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP MOV A,P0 ;DOC DU LIEU LAY TU PORT SW CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1) MOV SBUF,A ;PHAT DU LIEU EXIT_SP_ISR: POP ACC RETI END  Bước 5: Lưu chương trình vào máy tính  Bước 6: Thực biên dịch kiểm tra lỗi chương trình 410 o Nếu có lỗi xuất thực việc hiệu chỉnh khắc phục lỗi Nguyên nhân phát sinh lỗi thông thường cú pháp lệnh khơng xác, cần phải kiểm tra lại Sau hồn tất việc hiệu chỉnh sai sót quay trở thực từ Bước o Nếu lỗi xuất phần mềm tự động tạo tập tin mã máy với tên là: SP_1_M.HEX SP_1_S.HEX thực phần nội dung 6.5.12 Mô hoạt động Sử dụng phần mềm ISIS Professional (Protues 7.10) để thực việc mơ q trình hoạt động hệ thống vi điều khiển  Bước 7: Khởi động phần mềm ISIS Professional (Protues 7.10)  Bước 8: Vẽ sơ đồ thiết kế mạch mô điều khiển truyền liệu nối tiếp Hình 6.5.15 M A ÏC H Đ I E À U K H I Ể N GI A O T I E Á P COÅ N G N Ố I T I Ế P 33p X1 11.0592MHz C1 33p P0.0M P0.1M P0.2M P0.3M P0.4M P0.5M P0.6M P0.7M +5V RP2 +5V RP1 C2 P0.0S P0.1S P0.2S P0.3S P0.4S P0.5S P0.6S P0.7S C5 33p X2 11.0592MHz C4 33p RST P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 R1 10k 29 30 31 +5V +5V RP3 U2 PSEN ALE EA D0M D1M D2M D3M D4M D5M D6M D7M D0M D1M D2M D3M D4M D5M D6M D7M 10 18 17 16 15 14 13 12 11 10K COM 1C 2C 3C 4C 5C 6C 7C 8C 1B 2B 3B 4B 5B 6B 7B 8B 8 ULN2803 P1.0 P1.1 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.6/WR P3.7/RD 21 22 23 24 25 26 27 28 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 10 11 12 13 14 15 16 17 AT89C51 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 +5V +5V +5V +5V C6 10uF RST R18 PSEN ALE EA 10k 29 30 31 +5V +5V P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 8 COM 1C 2C 3C 4C 5C 6C 7C 8C 1B 2B 3B 4B 5B 6B 7B 8B 10 18 17 16 15 14 13 12 11 D0S D1S D2S D3S D4S D5S D6S D7S D0S D1S D2S D3S D4S D5S D6S D7S ULN2803 P0.7S KEY7 +5V KEY6 P0.6S KEY8 +5V RP4 U3 10K SL A V E P0.0M KEY9 +5V 18 AT89C51 P0.1M KEY10 P0.2M KEY11 P0.3M P0.4M KEY12 19 +5V KEY5 +5V KEY4 +5V KEY3 +5V KEY2 +5V KEY1 +5V KEY0 +5V +5V R3 330 330 R2 330 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 D0S R4 330 D1S R5 330 D2S R6 330 D3S R7 330 D4S R8 330 D5S R9 330 D6S R10 330 D7S R11 330 D0M R12 330 D1M R13 330 D2M R14 330 D3M R15 330 D4M R16 330 D5M R17 D6M D7M +5V KEY13 P0.5M P0.6M P0.7M KEY14 XTAL2 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 MA ST ER KEY15 XTAL1 P0.4S P0.0S 39 P0.1S 38 P0.2S 37 P0.3S 36 P0.4S 35 P0.5S 34 P0.6S 33 P0.7S 32 P0.0S 10uF 39 P0.0M 38 P0.1M 37 P0.2M 36 P0.3M 35 P0.4M 34 P0.5M 33 P0.6M 32 P0.7M P0.1S XTAL2 C3 +5V U1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P0.2S XTAL1 18 P0.3S U9 19 10K P0.5S +5V 10K Hình 6.5.15: Sơ đồ ngun lý mơ hệ thống điều khiển  Mạch mô thiết kế sẵn lưu máy tính với tên tập tin là: SerialPort_1.DSN Vì người học tự vẽ thiết kế mạch mô lấy mạch mơ có sẵn sở liệu môn học  Bước 9: Chọn tập tin chương trình cần mơ (tập tin mã máy tạo từ Bước 6) cho hệ thống vi điều khiển: SP_1_M.HEX SP_1_S.HEX 411  Bước 10: Thực chạy mô quan sát trực tiếp kết hình máy tính o Nếu có lỗi xuất thực việc hiệu chỉnh khắc phục lỗi Nguyên nhân phát sinh lỗi thơng thường giải thuật chương trình khơng xác mạch mơ vẽ khơng xác, cần phải kiểm tra lại Sau hoàn tất việc hiệu chỉnh sai sót quay trở thực từ Bước (do giải thuật chương trình khơng xác) Bước (do mạch mô vẽ không xác) o Nếu khơng có lỗi xuất thực phần nội dung 6.5.13 Lắp mạch nạp chương trình điều khiển Sử dụng khối "Microcontroller Unit Slot", "Point LED", "Inverter" "Power Supply" có sẵn mơ hình thực hành vi điều khiển để lắp ráp mạch theo thiết kế bên  Bước 11: Kết nối khối mô Hình 6.5.16 để tạo thành hệ thống mạch điều khiển bên o Tắt nguồn AC cấp cho mơ hình thực hành Hình 6.5.16: Sơ đồ kết nối mạch mơ hình Sử dụng phần mềm Flash Magic để thực việc nạp chương trình cho vi điều khiển P89V51RB2 mơ hình thực hành  Bước 12: Bật nguồn AC cấp cho mơ hình thực hành  Bước 13: Khởi động phần mềm Flash Magic  Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng COM, tốc độ truyền, chuẩn giao tiếp,  Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy tạo từ Bước 6): SP_1_M.HEX SP_1_S.HEX 412  Bước 16: Nạp chương trình vào vi điều khiển  Bước 17: Nhấn nút "Master Reset" khối "Microcontroller Unit Slot" để chạy chương trình quan sát trực tiếp kết mơ hình thực hành o Nếu có lỗi xuất thực việc hiệu chỉnh khắc phục lỗi Nguyên nhân phát sinh lỗi thường việc lắp ráp phần cứng khơng xác linh kiện bị hư hỏng, cần phải kiểm tra lại Sau hoàn tất việc kiểm tra hiệu chỉnh sai sót quay trở thực từ Bước 15 o Nếu khơng có lỗi xuất hồn tất thực hành 6.5.14 Bài tập thực hành 6.5.14.1 Bài tập mẫu  Bài tập số 1: Nội dung: "Viết chương trình, mơ lắp ráp mạch điều khiển truyền liệu thông qua port nối tiếp Thay đổi trạng thái LED đơn vi điều khiển (Slave) theo trạng thái nút nhấn vi điều khiển (Master) ngược lại, LED đoạn hiển thị số đếm liên tục từ 00 đến 99 Sử dụng phương pháp ngắt port nối tiếp cho việc truyền liệu." Lưu đồ giải thuật: 413 Sơ đồ nguyên lý mơ phỏng: MA ÏCH Đ I Ề U K H I Ể N GI A O T I Ế P CỔ N G N Ố I T I Ế P X1 11.0592MHz C1 33p P0.0M P0.1M P0.2M P0.3M P0.4M P0.5M P0.6M P0.7M +5V RP2 +5V RP1 C2 33p P0.0S P0.1S P0.2S P0.3S P0.4S P0.5S P0.6S P0.7S C5 33p X2 11.0592MHz C4 33p 10K RST P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 R1 10k 29 30 31 +5V +5V RP3 U2 PSEN ALE EA D0M D1M D2M D3M D4M D5M D6M D7M 10 18 17 16 15 14 13 12 11 D0M D1M D2M D3M D4M D5M D6M D7M 10K COM 1C 2C 3C 4C 5C 6C 7C 8C 1B 2B 3B 4B 5B 6B 7B 8B 8 ULN2803 P1.0 P1.1 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.6/W R P3.7/RD 21 P2.0M 22 P2.1M 23 P2.2M 24 P2.3M 25 P2.4M 26 P2.5M 27 P2.6M 28 P2.7M P2.0S21 P2.1S22 P2.2S23 P2.3S24 P2.4S25 P2.5S26 P2.6S27 P2.7S28 10 11 12 13 14 15 16 17 10 11 12 13 14 15 16 17 AT89C51 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 +5V +5V +5V +5V R18 10k 29 30 31 PSEN ALE EA +5V +5V P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/W R P3.7/RD P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 COM 1C 2C 3C 4C 5C 6C 7C 8C 1B 2B 3B 4B 5B 6B 7B 8B 10 18 17 16 15 14 13 12 11 D0S D1S D2S D3S D4S D5S D6S D7S D0S D1S D2S D3S D4S D5S D6S D7S ULN2803 P0.7S KEY7 +5V KEY6 P0.6S KEY8 +5V RP4 U3 10K SLA V E P0.0M KEY9 +5V C6 10uF RST AT89C51 P0.1M KEY10 P0.2M P0.3M KEY11 P0.4M +5V +5V KEY5 KEY4 +5V +5V KEY3 KEY2 KEY1 +5V KEY0 +5V +5V +5V +5V D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 R19 R20 R21 R22 R23 R24 R25 U4 A B C D BI/RBO RBI LT U5 P2.0M P2.1M P2.2M P2.3M A B C D BI/RBO RBI LT QA QB QC QD QE QF QG 13 12 11 10 15 14 56 56 56 56 56 56 56 +5V A1 B1 C1 D1 E1 F1 G1 A1 B1 C1 D1 E1 F1 G1 A2 B2 C2 D2 E2 F2 G2 U6 P2.4S P2.5S P2.6S P2.7S 74LS47 QA QB QC QD QE QF QG 74LS47 A B C D BI/RBO RBI LT U7 13 12 11 10 15 14 56 56 56 56 56 56 56 A2 B2 C2 D2 E2 F2 G2 R26 R27 R28 R29 R30 R31 R32 R33 R34 R35 R36 R37 R38 R39 +5V P2.0S P2.1S P2.2S P2.3S A B C D BI/RBO RBI LT QA QB QC QD QE QF QG 13 12 11 10 15 14 56 56 56 56 56 56 56 +5V A3 B3 C3 D3 E3 F3 G3 A3 B3 C3 D3 E3 F3 G3 74LS47 QA QB QC QD QE QF QG 74LS47 13 12 11 10 15 14 56 56 56 56 56 56 56 A4 B4 C4 D4 E4 F4 G4 R40 R41 R42 R43 R44 R45 R46 D0S R2 330 D1S R3 330 D2S R4 330 D3S R5 330 D4S R6 330 D5S R7 330 D6S R8 330 D7S R9 330 D0M R10 330 D1M R11 330 D2M R12 330 D3M R13 330 D4M R14 330 D5M R15 330 D6M R16 330 D7M R17 330 P2.4M P2.5M P2.6M P2.7M 414 KEY12 P0.5M KEY13 P0.6M P0.7M KEY14 18 XTAL2 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 MA ST ER KEY15 19 XTAL1 P0.0S P0.0S 39 P0.1S 38 P0.2S 37 P0.3S 36 P0.4S 35 P0.5S 34 P0.6S 33 P0.7S 32 P0.1S XTAL2 10uF +5V U1 39 P0.0M 38 P0.1M 37 P0.2M 36 P0.3M 35 P0.4M 34 P0.5M 33 P0.6M 32 P0.7M P0.4S 18 C3 10K P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P0.2S XTAL1 P0.3S U9 19 P0.5S +5V +5V A4 B4 C4 D4 E4 F4 G4 Sơ đồ lắp ráp: Chương trình điều khiển cho vi điều khiển Master: ;*************************************************** ;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP GIUA HAI VI DIEU KHIEN ;CHUONG TRINH CHO VI DIEU KHIEN MASTER ;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC SW TUONG UNG ;TRONG KHI SO DEM TANG DAN TU 00 DEN 99 ;MO PHONG PROTUES: SERIALPORT_1 ;*************************************************** ;*************************************************** ;KET NOI: SWITCH -> PORT (ACT = 0) ; LED -> PORT (CO SU DUNG DEM DAO - ACT = 1) ; LED -> PORT (BCD) ;*************************************************** $MOD51 ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI TIEP ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV P1,#00H ;LED TAT ;**************************************************** 415 ;KHOI DONG PORT NOI TIEP MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = MOV TMOD,#20H ;TIMER 1: MODE - TAO TOC DO BAUD CHO SERIAL PORT MOV TH1,#(-3) ;BAUD RATE = 9600 SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT DONG ;**************************************************** ;THIET LAP CAC NGAT CHO PORT NOI TIEP MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP ;**************************************************** MP1: ;DOAN CHUONG TRINH SE THUC HIEN KHI KHONG CO TIN HIEU NGAT MOV A,#00H ;GIA TRI BAT DAU LOOP: MOV P2,A ;XUAT HIEN THI LCALLDELAY500MS ADD A,#1 ;TANG GIA TRI (+1) DA A CJNE A,#00,LOOP SJMP MP1 ;QUAY LAI ;**************************************************** SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP ;P0 = DU LIEU PHAT ;P1 = DU LIEU THU PUSHACC JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA NGAT PHAT HAY NGAT THU RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP VAO THANH GHI A CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP MOV A,SBUF ;THU DU LIEU MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED SJMP EXIT_SP_ISR ;THOAT KHOI ISR TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A RA PORT NOI TIEP CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP MOV A,P0 ;DOC DU LIEU LAY TU PORT SW CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1) MOV SBUF,A ;PHAT DU LIEU EXIT_SP_ISR: POP ACC RETI ;*************************************************** 416 DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS PUSH00H PUSH01H PUSH02H MOV R0,#250 DEL2: MOV R1,#100 DEL1: MOV R2,#10 DJNZ R2,$ DJNZ R1,DEL1 DJNZ R0,DEL2 POP 02H POP 01H POP 00H RET END Chương trình điều khiển cho vi điều khiển Slave: ;*************************************************** ;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP GIUA HAI VI DIEU KHIEN ;CHUONG TRINH CHO VI DIEU KHIEN SLAVER ;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC SW TUONG UNG ;TRONG KHI SO DEM GIAM DAN TU 99 DEN 00 ;MO PHONG PROTUES: SERIALPORT_1 ;*************************************************** ;KET NOI: SWITCH -> PORT (ACT = 0) ; LED -> PORT (CO SU DUNG DEM DAO - ACT = 1) ; LED -> PORT (BCD) ;*************************************************** $MOD51 ORG 00H ;DIEM NHAP RESET SJMP MAIN ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI TIEP ORG 30H ;DIEM NHAP CHUONG TRINH CHINH MAIN: MOV P1,#00H ;LED TAT ;**************************************************** ;KHOI DONG PORT NOI TIEP MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = 417 MOV TMOD,#20H ;TIMER 1: MODE - TAO TOC DO BAUD CHO SERIAL PORT MOV TH1,#(-3) ;BAUD RATE = 9600 SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT DONG ;**************************************************** ;THIET LAP CAC NGAT CHO PORT NOI TIEP MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP ;**************************************************** MP1: ;DOAN CHUONG TRINH SE THUC HIEN KHI KHONG CO TIN HIEU NGAT MOV A,#99H ;GIA TRI BAT DAU LOOP: MOV P2,A ;XUAT HIEN THI LCALLDELAY500MS ADD A,#99H ;GIAM GIA TRI (-1) CJNE A,#0FFH,PROCESS_ERROR ;KIEM TRA LOI KHI GIAM QUA GIA TRI 66 - 65 SETB C ;XU LY LOI (CHO CO C = 1) PROCESS_ERROR: DA A CJNE A,#0F9H,LOOP SJMP MP1 ;QUAY LAI ;**************************************************** SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP ;P0 = DU LIEU PHAT ;P1 = DU LIEU THU PUSHACC JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA NGAT PHAT HAY NGAT THU RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP VAO THANH GHI A CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP MOV A,SBUF ;THU DU LIEU MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED SJMP EXIT_SP_ISR ;THOAT KHOI ISR TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A RA PORT NOI TIEP CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP MOV A,P0 ;DOC DU LIEU LAY TU PORT SW CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1) MOV SBUF,A ;PHAT DU LIEU EXIT_SP_ISR: POP ACC 418 RETI ;*************************************************** DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS PUSH00H PUSH01H PUSH02H MOV R0,#250 DEL2: MOV R1,#100 DEL1: MOV R2,#10 DJNZ R2,$ DJNZ R1,DEL1 DJNZ R0,DEL2 POP 02H POP 01H POP 00H RET END 6.5.15 Bài tập ứng dụng  Bài 1: Cho hệ thống truyền liệu hai vi điều khiển (Master Slave) thông qua port nối tiếp (UART) thiết kế hình vẽ bên Viết chương trình điều khiển hệ thống để thực hoạt động sau: o Ban đầu chưa nhấn nút tất LED đơn tắt LED đoạn hiển thị số o Truyền liệu từ MASTER sang SLAVE:  Nhấn nút “KEY8/MASTER”: D7/SLAVE” sáng tắt liên tục  Nhấn nút “KEY9/MASTER”: D7/SLAVE” sáng đuổi từ trái sang phải liên tục  Nhấn nút “KEY10/MASTER”: D7/SLAVE” sáng dần từ trái sang phải liên tục  Nhấn nút “KEY11/MASTER”: D7/SLAVE” sáng dần từ hai bên vào liên tục  Nhấn nút “KEY12/MASTER”: D7/SLAVE” tắt hết  Nhấn nút “KEY13/MASTER”: D7/SLAVE” sáng hết o Truyền liệu từ SLAVE sang MASTER: 419 LED đơn “D0LED đơn “D0LED đơn “D0LED đơn “D0LED đơn “D0LED đơn “D0-  Nhấn nút “KEY0/SLAVE”: LED đoạn “7seg/MASTER” đếm lên liên tục (giá trị đếm nằm khoảng 00…99)  Nhấn nút “KEY0/SLAVE”: LED đoạn “7seg/MASTER” đếm xuống liên tục (giá trị đếm nằm khoảng 00…99)  Nhấn nút “KEY1/SLAVE”: LED đoạn “7seg/MASTER” đếm (lên xuống) bị dừng lại hiển thị liên tục giá trị thời điểm bị dừng  Nhấn nút “KEY2/SLAVE”: LED đoạn “7seg/MASTER” dừng tiếp tục đếm (lên xuống) từ giá trị bị dừng  Nhấn nút “KEY4/SLAVE”: LED đoạn “7seg/MASTER” hiển thị liên tục giá trị 00  Bài 2: Cho hệ thống truyền liệu hai vi điều khiển (Master Slave) thông qua port nối tiếp (UART) hình vẽ Bài bên Viết chương trình điều khiển hệ thống để thực hoạt động sau: o Ban đầu chưa nhấn nút tất LED đơn tắt LED đoạn hiển thị số o Nhấn nút “KEY8/MASTER”: 16 LED đơn D15/MASTER” “D0-D7/SLAVE” sáng đuổi từ trái sang phải liên tục “D8- o Nhấn nút “KEY9/MASTER”: 16 LED đơn “D8D15/MASTER” “D0-D7/SLAVE” sáng đuổi từ phải sang trái liên tục o Nhấn nút “KEY10/MASTER”: D15/MASTER” “D0-D7/SLAVE” tắt hết 16 LED đơn “D8- o Nhấn nút “KEY0/SLAVE”: LED đoạn “7seg/MASTER” “7seg/SLAVE” đếm lên liên tục từ 0000 đến 9999 o Nhấn nút “KEY1/SLAVE”: LED đoạn “7seg/MASTER” “7seg/SLAVE” đếm xuống liên tục từ 9999 đến 0000 o Nhấn nút “KEY2/SLAVE”: LED đoạn “7seg/MASTER” “7seg/SLAVE” hiển thị giá trị 0000 420 ... AD1 37 AD2 36 AD3 35 AD4 34 AD5 33 AD6 32 AD7 21 22 23 24 25 26 27 28 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 COM 1C 2C 3C 4C 5C 6C 7C 8C 1B 2B 3B 4B 5B 6B 7B 8B 10 18 17 16 15 14 13 12 11 D0 D1 D2 D3 D4... P1.7 AT89C51 U2 10K P0.0/AD0 P0.1/AD1 P0 .2/ AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2 .2/ A10 P2.3/A11 P2.4/A 12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3 .2/ INT0 P3.3/INT1... VCC VC C 9 9 POWER VCC VCC D5 D6 D7 D8 D9 D10 D 11 D 12 D13 D 14 D15 D16 D 17 D18 D19 D 20 D21 D 22 D 23 D24 D25 D 26 D27 D28 D 29 D30 D31 D 32 LED LED LED LED LED LED LED LED LED LED LED LED LED

Ngày đăng: 12/02/2020, 14:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN