Bài tập vi xử lí có lời giải năm 2024

  • 1. XỬ LÝ TS. LÊ NGỌC TRÂN - THS. LƯU HOÀNG Tài liệu dành cho sinh viên đại học và cao đẳng. TRƯỜNG ĐẠI HỌC BÀ RỊA – VŨNG TÀU VIỆN CNTT - ĐIỆN - ĐIỆN TỬ
  • 2. XỬ LÝ MỤC LỤC LỜI MỞ ĐẦU MỘT SỐ QUY ĐỊNH VÀ CÁC LỖI THƯỜNG GẶP PHẦN 1: ĐIỀU KHIỂN LED ĐƠN........................................................................1 BÀI 1.1 ĐIỀU KHIỂN LED CHỚP TẮT.....................................................................2 I. Mục đích yêu cầu.......................................................................................................2 II. Trình tự thực hiện ......................................................................................................2 III.Chương trình mẫu......................................................................................................3 IV.Bài tập .......................................................................................................................4 BÀI 1.2 ĐIỀU KHIỂN LED SÁNG VÀ TẮT DẦN.....................................................5 I. Mục đích yêu cầu.......................................................................................................5 II. Trình tự thực hiện ......................................................................................................5 III.Chương trình mẫu......................................................................................................7 IV.Bài tập .......................................................................................................................9 BÀI 1.3 ĐIỀU KHIỂN LED SÁNG DỒN..................................................................10 I. Mục đích yêu cầu.....................................................................................................10 II. Trình tự thực hiện ....................................................................................................10 III.Chương trình mẫu....................................................................................................14 IV.Bài tập .....................................................................................................................16 PHẦN 2: ĐIỀU KHIỂN LED 7 ĐOẠN...............................................................................17 BÀI 2.1 HIỂN THỊ SỐ ĐẾM TRÊN LED 7 ĐOẠN...................................................18 I. Mục đích yêu cầu.....................................................................................................18 II. Trình tự thực hiện ....................................................................................................18 III.Chương trình mẫu....................................................................................................20 IV.Bài tập .....................................................................................................................21 BÀI 2.2 ĐIỀU KHIỂN LED 7 ĐOẠN BẰNG PHƯƠNG PHÁP QUÉT ....................22 I. Mục đích yêu cầu.....................................................................................................22 II. Trình tự thực hiện ....................................................................................................22 III.Chương trình mẫu....................................................................................................23 IV.Bài tập .....................................................................................................................25 PHẦN 3: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC .........................................................26 BÀI 3.1 ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC QUAY LIÊN TỤC..................................27
  • 3. XỬ LÝ I. Mục đích yêu cầu.....................................................................................................27 II. Trình tự thực hiện ....................................................................................................27 III.Chương trình mẫu....................................................................................................29 IV.Bài tập .....................................................................................................................30 BÀI 3.2 ĐIỀU KHIỂN GÓC QUAY, CHIỀU QUAY, TỐC ĐỘ ĐỘNG CƠ BƯỚC 31 I. Mục đích yêu cầu.....................................................................................................31 II. Trình tự thực hiện ....................................................................................................31 III.Chương trình mẫu....................................................................................................32 IV.Bài tập .....................................................................................................................33 PHẦN 4: TIMER VÀ NGẮT ...............................................................................34 BÀI 4.1 CHƯƠNG TRÌNH DELAY SỬ DỤNG TIMER ..........................................35 I. Mục đích cầu ...........................................................................................................35 II. Trình tự thực hiện ....................................................................................................35 III.Chương trình mẫu....................................................................................................36 IV.Bài tập .....................................................................................................................37 BÀI 4.2 CHƯƠNG TRÌNH ĐẾM GIỜ SỬ DỤNG NGẮT CỦA TIMER ..................38 I. Mục đích yêu cầu.....................................................................................................38 II. Trình tự thực hiện ....................................................................................................38 III.Chương trình mẫu....................................................................................................42 IV.Bài tập .....................................................................................................................45 BÀI 4.3 QUÉT PHÍM MA TRẬN VÀ HIỂN THỊ TRÊN LED 7 ĐOẠN...................46 I. Mục đích yêu cầu.....................................................................................................46 II. Trình tự thực hiện ....................................................................................................46 III.Chương trình mẫu....................................................................................................48 IV.Bài tập .....................................................................................................................51 BÀI 4.4 ĐIỀU KHIỂN ĐÈN GIAO THÔNG .............................................................52 I. Mục đích yêu cầu.....................................................................................................52 II. Trình tự thực hiện ....................................................................................................52 III.Chương trình mẫu....................................................................................................55 IV.Bài tập .....................................................................................................................59 BÀI 4.5 CHƯƠNG TRÌNH HIỂN THỊ KÝ TỰ TRÊN LED MA TRẬN...................60 I. Mục đích yêu cầu.....................................................................................................60 II. Trình tự thực hiện ....................................................................................................60 III.Chương trình mẫu....................................................................................................64
  • 4. XỬ LÝ IV.Bài tập .....................................................................................................................67 PHẦN 5: THI CÔNG MẠCH ỨNG DỤNG .........................................................68 BÀI 5.1 MẠCH ĐIỀU KHIỂN LED ĐƠN.................................................................69 I. Mục đích yêu cầu.....................................................................................................69 II. Sơ đồ nguyên lý.......................................................................................................69 III.Danh mục linh kiện vật tư cần .................................................................................69 BÀI 5.2 MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN...........................................................70 I. Mục đích yêu cầu.....................................................................................................70 II. Sơ đồ nguyên lý.......................................................................................................70 III.Danh mục linh kiện vật tư cần .................................................................................70 BÀI 5.3 MẠCH ĐIỀU KHIỂN LED MA TRẬN .......................................................71 I. Mục đích yêu cầu.....................................................................................................71 II. Sơ đồ nguyên lý.......................................................................................................71 III.Danh mục linh kiện vật tư cần .................................................................................71 BÀI 5.4 MẠCH QUÉT PHÍM MA TRẬN HIỂN THỊ TRÊN LED 7 ĐOẠN.............72 I. Mục đích yêu cầu.....................................................................................................72 II. Sơ đồ nguyên lý.......................................................................................................72 III.Danh mục linh kiện vật tư cần .................................................................................72 BÀI 5.5 MẠCH ĐIỀU KHIỂN ĐÈN GIAO THÔNG.................................................73 I. Mục đích yêu cầu.....................................................................................................73 II. Sơ đồ nguyên lý.......................................................................................................73 III.Danh mục linh kiện vật tư cần .................................................................................73 Phụ lục 1: HƯỚNG DẪN MÔ PHỎNG BẰNG PROTEUS........................................74 Phụ lục 2: HƯỚNG DẪN NẠP CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN...............78 TÀI LIỆU THAM KHẢO ...........................................................................................81
  • 5. XỬ LÝ LỜI MỞ ĐẦU Vi xử lý là môn học cần thiết cho tất cả các sinh viên khối kỹ thuật. Giúp cho người học có cái nhìn tổng quan về Vi xử lý và khả năng ứng dụng của chúng. Đặc biệt trong thời đại công nghiệp 4.0, Vi xử lý là nền tảng để xây dựng nên các hệ thống thông minh. Song song đó, môn học Thực hành Vi xử lý đưa người học lại gần hơn với Vi xử lý bằng các ứng dụng cụ thể như cách để điều khiển các đèn led, cách điều khiển một mô hình đèn giao thông… Từ đó sinh viên có thể tự học và nâng cao kiến thức, tự xây dựng các ứng dụng theo yêu cầu của riêng mình. Tài liệu Thực hành Vi xử lý được xây dựng với lượng kiến thức vừa đủ để sinh viên dễ dàng tiếp cận. Nội dung cũng được điều chỉnh để phù hợp hơn với việc học song song giữa lý thuyết và thực hành. Bổ trợ cho nhau để người học có thể dễ tiếp thu hơn đối với môn học mang tính trừu tượng này. Tài liệu gồm 5 phần:  Phần 1: Điều khiển Led đơn  Phần 2: Điều khiển led 7 đoạn  Phần 3: Điều khiển động cơ bước  Phần 4: Timer và ngắt  Phần 5: Thi công mạch ứng dụng Trong đó từ phần 1 đến phần 3 là các bài tập cơ bản để người học làm quen với tập lệnh và phương pháp lập trình. Phần 4 là phần nâng cao bằng việc lập trình kết hợp với timer và ngắt. Phần cuối là hướng dẫn người học tự thực hiện một ứng dụng vi xử lý với những kiến thức đã học. Trong mỗi bài được chia làm các bước: mục tiêu của bài, trình tự thực hiện, chương trình mẫu và các bài tập cuối bài. Người học thực hiện theo trình tự để cuối cùng giải quyết được các bài tập theo yêu cầu. Việc hoàn thành các bài tập là cơ sở để đánh giá khả năng tiếp thu của người học.
  • 6. XỬ LÝ MỘT SỐ QUY ĐỊNH VÀ CÁC LỖI THƯỜNG GẶP I. Một số qui định về kết nối  Trên hệ thống có 4 port 0, 1, 2, 3 và các port có ghi trên hệ thống.  Port 0, 1, 3 với các bit thứ 0 [LSB] đến bit thứ 7 [MSB] theo thứ tự từ trên xuống.  Riêng port 2 thì ngược lại từ dưới lên. Trên bộ KIT thực hành đã có tên cho từng ngõ ra.  Khi kết nối chú ý phải theo thứ tự bit 0 của port với bit 0 của đối tượng điều khiển.  Khi bit 0 đúng thì các bit còn lại sẽ đúng.  Tất cả các chương trình trong hệ thống này đều được kiểm tra rất kỹ và viết đúng theo thứ tự kết nối trên.  Nếu 1 yêu cầu nào đó không đúng thì hãy xem lại phần kết nối và chương trình. II. Các lỗi thường gặp Khi viết chương trình cần chú ý các lỗi thường xảy ra như sau:  Số không “0” thường được đánh nhầm bằng chữ o.  Sau lệnh end thì không có hàng hay một ký tự nào nếu không thì khi biên dịch chương trình sẽ thông báo có lỗi. Lỗi này có thể bỏ qua.  Các nhãn trong chương trình phải đánh đúng như trong sách hướng dẫn.  Các chú thích cho các lệnh thì phải nằm sau dấu chấm phẩy “;”. Có phần chú thích hay không có cũng được.  Giữa lệnh và các toán hạng phải có khoảng trắng, giữa “org “ và địa chỉ phải có khoảng trắng.  Hãy dùng nút tab để viết chương trình cho thẳng hàng để dễ xem và tìm lỗi nhanh chóng.  Nếu viết 1 chương trình nào đó trong tài liệu hướng dẫn mà chương trình chạy không đúng thì hãy xem kỹ lại có viết đầy đủ tất các lệnh của chương trình hay chưa? Tất cả các chương trình trong tài liệu hướng dẫn đã được chạy thử và luôn luôn đúng.  Khi bạn tự viết một chương trình thì sẽ có 1 số trường hợp chương trình không nạp được có thể do IC vi điều khiển hỏng thì bạn có thể nạp một chương trình nào đó đã chạy tốt, nếu vẫn không nạp được thì IC chắc chắn đã hỏng. Còn nếu nạp được và chạy tốt thì lỗi nằm ở chương trình mới viết và nguyên nhân có thể là chương trình bị xếp chồng bộ nhớ.  Một trong những lý do làm cho chương trình nhưng không chạy là do bạn viết chương trình không bắt đầu tại địa chỉ 0000H.  Hãy đọc kỹ các yêu cầu trước khi thực hành.
  • 7. XỬ LÝ 1 | P a g e PHẦN 1: ĐIỀU KHIỂN LED ĐƠN (MỨC 0 LED SÁNG, MỨC 1 LED TẮT) P3.[0..7] P0.[0..7] P2.[0..7] P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 330R +5V
  • 8. XỬ LÝ 2 | P a g e BÀI 1.1 ĐIỀU KHIỂN LED CHỚP TẮT I. Mục đích yêu cầu  Nắm vững lệnh điều khiển xuất dữ liệu ra các port, biết cách viết chương trình con delay.  Làm quen với phần mềm soạn thảo chương trình, cách hiệu chỉnh lỗi. II. Trình tự thực hiện 1. Giải thuật: 2. Kết nối mạch theo trình tự: - Dùng bus dây (8 sợi) kết nối port 0 với một trong 3 PINHD của dãy 24 led đơn. 3. Khởi động phần mềm, tạo File mới, biên soạn chương trình sau: ;-------- ;chuong trinh dieu khien 8 led chop tat ket noi voi port 0 ;-------- Org 0000h ;khai bao dia chi bat dau cua chuong trinh rep: mov p0,

    0ffh ;nap FF vao port0 de tat 8 led lcall delay ;goi chuong trinh con delay mov p0,

    0h ;nap 00 vao port0 de sang 8 led lcall delay ;goi chuong trinh con delay sjmp rep ;nhay den de lam lai tu dau

  • 9. XỬ LÝ 3 | P a g e ;----- ;chuong trinh con delay ;----- delay: mov r6,

    0ffh ;nap hang so FFH vao thanh ghi r6 del: mov r7,

    0ffh ;nap hang so FFH vao thanh ghi r7 djnz r7,$ ;giam r7 di 1 va nhay khi r7 khac 00 djnz r6,del ;giam r6 di 1 va nhay khi r6 khac 00 ret ;thoat khoi chuong trinh con end 4. Lưu chương trình và biên dịch chương trình. Kiểm tra lỗi và hiệu chỉnh rồi biên dịch lại. 5. Nạp chương trình vào vi điều khiển. 6. Quan sát kết quả hiển thị của chương trình, nếu kết quả hiển thị không đúng yêu cầu đề bài thì phải quay lại chương trình chỉnh sửa và làm lại. III. Chương trình mẫu ;------- ;chuong trinh dieu khien port 16 led chop tat dung port0, 2 ;------- org 0000h rep: mov p0,

    0ffh ;tat port0 mov p2,

    0ffh ;tat port2 lcall delay ;delay mov p0,

    0h ;sang 8 led mov p2,

    0h ;sang 8 led lcall delay ;delay sjmp rep ;lam lai tu dau ;----- ;chuong trinh con delay ;----- delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end

  • 10. XỬ LÝ 4 | P a g e IV. Bài tập 1. Hãy xem chương trình mẫu điều khiển 16 led chớp tắt dùng 2 port 0 và 2 và hãy viết chương trình sáng tắt 3 port 0, 2 và 3. 2. Hãy viết chương trình sáng tắt xen cẽ 2 port: port0, port2. 3. Hãy viết chương trình sáng tuần tự: port 0, 2 và 3. 4. Hãy viết chương trình sáng xen cẽ từng led trên 3 port 0, 2 và 3. 5. Tìm hiểu thuật toán của chương trình DELAY. Từ chương trình mẫu, hãy tính toán để có chương trình delay với thời gian mong muốn. 6. Hãy cho biết ý nghĩa của lệnh: DJNZ, SJMP và LCALL.
  • 11. XỬ LÝ 5 | P a g e BÀI 1.2 ĐIỀU KHIỂN LED SÁNG VÀ TẮT DẦN I. Mục đích yêu cầu Hiểu cách sử dụng lệnh xoay 8 bit, lệnh nhảy có điều kiện để thực hiện chương trình điều khiển led sáng dần, tắt dần. II. Trình tự thực hiện 1. Giải thuật: Sáng dần và tắt hết Sáng dần và tắt dần 2. Kết nối mạch theo trình tự : - Dùng bus dây (8 sợi) kết nối port 0 với một trong 3 PINHD của dãy 24 led đơn. 3. Khởi động phần mềm, tạo File mới, biên soạn chương trình sau: ;--------- ;chuong trinh dieu khien port 0 sang dan len va tat het - cach 1 ;ket noi port 0 den 8 led bang cap 8 soi ;--------- org 0000h rep: mov p0,

    11111111b ;tat port 0 lcall delay ;goi chuong trinh con delay mov p0,

    11111110b ;sang 1 led lcall delay ;goi chuong trinh con delay mov p0,

    11111100b ;sang 2 led

  • 12. XỬ LÝ 6 | P a g e lcall delay ;goi chuong trinh con delay mov p0,

    11111000b ;sang 3 led lcall delay ;goi chuong trinh con delay mov p0,

    11110000b ;sang 4 led lcall delay ;goi chuong trinh con delay mov p0,

    11100000b ;sang 5 led lcall delay ;goi chuong trinh con delay mov p0,

    11000000b ;sang 6 led lcall delay ;goi chuong trinh con delay mov p0,

    10000000b ;sang 7 led lcall delay ;goi chuong trinh con delay mov p0,

    00000000b ;sang 8 led lcall delay ;goi chuong trinh con delay sjmp rep ;sang het 8 led, lap lai tu dau ;----- ;chuong trinh con delay ;----- delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end Trong lập trình có nhiều cách viết chương trình từ đơn giản dễ hiểu nhưng dài dòng đến chương trình phức tạp khó hiểu nhưng ngắn gọn tùy thuộc vào đối tượng nghiên cứu và đối tượng học. Ở đây trình bày luôn cả 2 cách viết. Trong cách viết trên ta thấy chương trình dễ hiểu nhưng khá dài. Hãy cho chạy chương trình trên và xem cách viết thứ 2. ;------- ;chuong trinh dieu khien port 0 sang dan len va tat het – cach 2 ;ket noi port 0 den 8 led bang cap 8 soi ;---------- Org 0000h rep: mov p0,

    0ffh ;tat port 0 rep1: lcall delay ;goi chuong trinh con delay

  • 13. XỬ LÝ 7 | P a g e clr c ;lam cho bit C = 0 mov a,p0 ;chuyen noi dung port0 vao thanh ghi A rlc a ;xoay noi dung thanh ghi A sang trai mov p0,a ;tra lai cho port0 jc rep1 ;nhay ve de thuc hien tiep sjmp rep ;quay lai tu dau ;----- ;chuong trinh con delay ;----- delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end Giải thích: Để led sáng dần lên ta phải dịch mức 0 vào thanh ghi A, mức 0 được chứa trong bit C, lệnh xoay thanh ghi A sang trái sẽ dịch mức 0 từ C vào bit A0 của thanh ghi A. Bit A7 sẽ dịch sang bit C. Trong 8 lần dịch đầu tiên thì sau khi dịch, bit C luôn bằng 1. Nên ta dùng lệnh nhảy có điều kiện khi C = 1 thì nhảy để quay lại tiếp tục thực hiện. Cho đến lần xoay thứ 9 thì C = 0 thì điều kiện không còn thõa mãn nên lệnh nhảy có điều kiện thì lệnh nhảy “sjmp ” mới được thực hiện để làm lại từ đầu. 4. Thực hiện các bước giống như các bài trước. III. Chương trình mẫu 1. Chương trình điều khiển port 0 sáng dần và tắt dần: ;---------- ;chuong trinh dieu khien port 0 sang dan len va tat dan ;ket noi port 0 den 8 led bang cap 8 soi ;---------- org 0000h rep: mov p0,

    0ffh ;tat port 0 rep1: lcall delay ;goi chuong trinh con delay clr c ;lam cho bit C = 0 mov a,p0 ;chuyen noi dung port0 vao thanh ghi A

  • 14. XỬ LÝ 8 | P a g e rlc a ;xoay noi dung thanh ghi A sang trai mov p0,a ;tra lai cho port0 jc rep1 ;nhay ve de thuc hien tiep khi C = 1 rep2: lcall delay ;goi chuong trinh con delay setb c ;lam cho bit C = 1 mov a,p0 ;chuyen noi dung port0 vao thanh ghi A rlc a ;xoay noi dung thanh ghi A sang trai mov p0,a ;tra lai cho port0 jnc rep2 ;nhay ve de thuc hien tiep khi C = 0 sjmp rep ;quay ve lam lai tu dau delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end 2. Chương trình điều khiển port 0 và port 2 sáng dần và tắt dần: ;-------- ;chuong trinh dieu khien port 0 va port 2 sang dan len va tat dan ;ket noi port 0 den 8 led bang cap 8 soi, ket noi tuong tu cho port 2 ;-------- Org 0000h rep: mov p0,

    0ffh ;tat port 0 mov p2,

    0ffh ;tat port 2 rep1: lcall delay ;goi chuong trinh con delay clr c ;lam cho bit C = 0 mov a,p0 ;chuyen noi dung port0 vao thanh ghi A rlc a ;xoay noi dung thanh ghi A sang trai mov p0,a ;tra lai cho port0 mov a,p2 ;chuyen noi dung port2 vao thanh ghi A rlc a ;xoay noi dung thanh ghi A sang trai mov p2,a ;tra lai cho port2 jc rep1 ;nhay ve de thuc hien tiep khi C = 1 rep2: lcall delay ;goi chuong trinh con delay

  • 15. XỬ LÝ 9 | P a g e setb c ;lam cho bit C = 1 mov a,p0 ;chuyen noi dung port0 vao thanh ghi A rlc a ;xoay noi dung thanh ghi A sang trai mov p0,a ;tra lai cho port0 mov a,p2 ;chuyen noi dung port2 vao thanh ghi A rlc a ;xoay noi dung thanh ghi A sang trai mov p2,a ;tra lai cho port2 jnc rep2 ;nhay ve de thuc hien tiep khi C = 0 sjmp rep ;quay ve lam lai tu dau delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end IV. Bài tập 1. Dùng port 0 kết nối với 8 led, hãy viết chương trình điều khiển 1 led sáng và di chuyển từ trái sang phải. 2. Tương tự, hãy viết chương trình điều khiển 1 led sáng và di chuyển từ phải sang trái trên 3 port 0, 2 và 3. 3. Hãy viết chương trình điều khiển 3 port 0, 2, 3 sáng dần và tắt dần từ trái sang phải và từ phải sang trái. 4. Hãy viết chương trình điều khiển 3 port 0, 2, 3 sáng dần và tắt dần từ ngoài vào trong và từ trong ra ngoài. 5. Hãy cho biết ý nghĩa của các lệnh: RL, RLC, RR, RRC trong chương trình. 6. Cho biết ý nghĩa của các lệnh: JC, JNC, JB, và JNB.

  • 16. XỬ LÝ 10 | P a g e BÀI 1.3 ĐIỀU KHIỂN LED SÁNG DỒN I. Mục đích yêu cầu Hiểu cách sử dụng lệnh xoay kết hợp với lệnh logic để thực hiện chương trình điều khiển led sáng dồn. II. Trình tự thực hiện 1. Giải thuật: 2. Kết nối mạch theo trình tự : - Dùng bus dây (8 sợi ) kết nối port 0 với một trong 3 PINHD của dãy 24 led đơn. 3. Khởi động phần mềm, tạo File mới, biên soạn chương trình sau: ;---------- ;chuong trinh dieu khien port 0 sang don va tat het - cach 1 ;ket noi port 0 den 8 led bang cap 8 soi
  • 17. XỬ LÝ 11 | P a g e ;---------- org 0800h ;khai bao dia chi luu tru vung du lieu data: db 11111111b db 11111110b db 11111101b db 11111011b db 11110111b db 11101111b db 11011111b db 10111111b db 01111111b ;lan thu hai la 7 byte db 01111110b db 01111101b db 01111011b db 01110111b db 01101111b db 01011111b db 00111111b ;lan thu 3 la 6 byte db 00111110b db 00111101b db 00111011b db 00110111b db 00101111b db 00011111b ;lan thu 4 la 5 byte db 00011110b db 00011101b db 00011011b db 00010111b db 00001111b ;lan thu 5 la 4 byte db 00001110b
  • 18. XỬ LÝ 12 | P a g e db 00001101b db 00001011b db 00000111b ;lan thu 6 la 3 byte db 00000110b db 00000101b db 00000011b ;lan thu 7 la 2 byte db 00000010b db 00000001b ;lan thu 8 la 1 byte db 00000000b ;byte du lieu cuoi cung = 00h ;----- ;bat dau chuong trinh chinh ;----- org 0000h ;khai bao dia chi chuong trinh chinh rep: mov dptr,

    0800h ;nap dia chi luu du lieu vao thghi dptr rep1: clr a movc a,@A+dptr ;lay du lieu tu bo nho dua vao A mov p0,a ;goi ra port 0 lcall delay ;goi chtr con delay inc dptr ;tang dptr len o nho ke cjne a,

    00h,rep1 ;ktra co phai la byte ket thuc hay chua sjmp rep ;quay tro lam lai khi da het du lieu ;---- delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end Giải thích: Theo cách viết 1 ta hãy quan sát dữ liệu trong chương trình đã được sắp xếp theo đúng trình tự và chương trình chỉ thực hiện nhiệm vụ là di chuyển lần lược các byte dữ liệu có trong bộ nhớ đem gởi vào A và sau đó gởi ra port 0.

  • 19. XỬ LÝ 13 | P a g e Lệnh “data: db dữ liệu “ có chức năng nạp các byte dữ liệu vào vùng nhớ ROM có địa chỉ 0800H. Byte cuối cùng là 00H là byte báo cho biết hết dữ liệu. Dữ liệu viết dưới dạng số nhị phân cho dễ nhìn thấy và có thể viết dưới dạng số hex – khi đó chương trình sẽ ngắn hơn rất nhiều. Phần khai báo dữ liệu dưới dạng số hex như sau: org 0800h ;khai bao dia chi luu tru vung du lieu data: db 0ffh db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,07fh db 7eh,7dh,7bh,77h,6fh,5fh,3fh db 3eh,3dh,3bh,37h,2fh,1fh db 1eh,1dh,1bh,17h,0fh db 0eh,0dh,0bh,07h db 06h,05h,03h db 02h,01h db 00h ;--------- ;chuong trinh dieu khien 8 led sang don va tat het dung port 0 – cách 2 ;ket noi port 0 den 8 led bang 1 soi cap 8 soi ;--------- ;dinh nghia cac bien biendem equ 30H ;biến đếm bientam equ 31h ;biến tạm x0 equ r0 y0 equ 20h led0 equ p0 ;----- ;bat dau chuong trinh chinh ;----- org 0000h mov led0,

    0ffh lcall delay rep: mov x0,

    11111111b ;X0 luu trang thai ban dau mov biendem,

    08 ;bien dem so lan dich chuyen LAN DAU = 8 rep2: mov bientam,biendem ;chuyen biendem sang bientam

  • 20. XỬ LÝ 14 | P a g e mov y0,

    11111110b rep1: mov a,y0 anl a,x0 ;lay x0 and voi y0 roi goi ra led0 mov led0,a ;xuat ra led lcall delay mov a,y0 rl a mov y0,a djnz bientam,rep1 ;giam bientam neu chua bang 0 thi quay ve lai mov x0,led0 ;cat noi dung sau cung khi da dich chuyen 1 led djnz biendem,rep2 ;giam bien dem de xu li lan ke sjmp rep ;nhay ve lam lai tu dau ;---- delay: mov r6,

    250 del: mov r7,

    250 djnz r7,$ djnz r6,del ret end III. Chương trình mẫu Chương trình điều khiển 16 led sáng dồn ;------- ;chuong trinh dieu khien 16 led sang don dung port 0, 2 ;ket noi port 0 va port 2 den 16 led bang 2 soi cap 8 soi ;------- ;dinh nghia cac bien biendem equ 30h bientam equ 31h x0 equ r0 x1 equ r1 y0 equ 20h y1 equ 21h led0 equ p0 led1 equ p2

  • 21. XỬ LÝ 15 | P a g e ;----- ;bat dau chuong trinh chinh ;----- org 0000h mov led0,

    0ffh mov led1,

    0ffh lcall delay rep: mov x0,

    11111111b ;X0 luu trang thai ban dau mov x1,

    11111111b ;X1 luu trang thai ban dau mov biendem,

    16 ;bien dem so lan dich chuyen lan dau = 16 rep2: mov bientam,biendem ;chuyen biendem sang bientam mov y0,

    11111110b mov y1,

    11111111b rep1: mov a,y0 anl a,x0 ;lay x0 anl voi y0 roi goi ra led0 mov led0,a ;xuat ra led0 mov a,y1 anl a,x1 ;lay x1 and voi y1 roi goi ra led1 mov led1,a ;xuat ra led1 lcall delay setb c mov a,y0 rlc a mov y0,a mov a,y1 rlc a mov y1,a djnz bientam,rep1 ;giam bientam neu chua bang 0 thi quay ve lai mov x0,led0 ;cat noi dung sau cung khi da dich chuyen 1 led mov x1,led1 ;cat noi dung sau cung khi da dich chuyen 1 led djnz biendem,rep2 ;giam bien dem de xu ly lan ke ljmp rep ;nhay ve lam lai tu dau ;----

  • 22. XỬ LÝ 16 | P a g e delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end IV. Bài tập 1. Hãy viết chương trình điều khiển 3 port: port0, port2, port3 sáng dồn. 2. Hãy viết chương trình sáng dồn 2 port 0 và 2 từ ngoài vào trong và từ trong ra ngoài. 3. Hãy viết chương trình sáng dồn 4 port 0, 1, 2 và 3 từ ngoài vào trong và từ trong ra ngoài. 4. Hãy cho biết ý nghĩa của lệnh: ANL, MOVC và CJNE; Các chỉ dẫn: DB, EQU.

  • 23. XỬ LÝ 17 | P a g e PHẦN 2: ĐIỀU KHIỂN LED 7 ĐOẠN (MỨC 0 LED SÁNG) P2.[0..7] P0.[0..7] P1.[0..7] P3.[0..7] P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.3 P2.0 P2.1 P2.2 P2.4 P2.5 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 330R +5V 330R +5V
  • 24. XỬ LÝ 18 | P a g e BÀI 2.1 HIỂN THỊ SỐ ĐẾM TRÊN LED 7 ĐOẠN I. Mục đích yêu cầu Biết cách xây dựng được mã điều khiển led 7 đoạn. Điều khiển led 7 đoạn hiển thị theo yêu cầu bằng nhiều cách khác nhau. II. Trình tự thực hiện 1. Kết nối mạch theo trình tự : - Dùng bus 8 dây kết nối port 3 với một trong led 7 đoạn bên phải trong nhóm 2 led. - Chú ý: P3.0 kết nối với chân a. 2. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;--------- ; chuong trinh hien thi tu 0 den 9 tren led 7 doan – cách 1 ;--------- org 0000h rep: mov p3,

    11000000b ;ma so 0 (C0h) lcall delay ;goi chuong trinh con delay mov p3,

    11111001b ; ma so 1 (F9h) lcall delay ;goi chuong trinh con delay mov p3,

    10100100b ; ma so 2 (A4h) lcall delay ;goi chuong trinh con delay mov p3,

    10110000b ; ma so 3 (B0h) lcall delay ;goi chuong trinh con delay mov p3,

    10011001b ; ma so 4 (99h) lcall delay ;goi chuong trinh con delay mov p3,

    10010010b ; ma so 5 (92h) lcall delay ;goi chuong trinh con delay mov p3,

    10000010b ; ma so 6 (82h) lcall delay ;goi chuong trinh con delay mov p3,

    11111000b ; ma so 7 (F8h) lcall delay ;goi chuong trinh con delay mov p3,

    10000000b ; ma so 8 (80h) lcall delay ;goi chuong trinh con delay

  • 25. XỬ LÝ 19 | P a g e mov p3,

    10010000b ; ma so 9 (90h) lcall delay ;goi chuong trinh con delay sjmp rep ;sang het 8 led, lap lai tu dau ;---- delay: mov r5,

    4 del1: mov r6,

    0ffh del2: mov r7,

    0ffh djnz r7,$ djnz r6,del2 djnz r5,del1 ret end 3. Thực hiện các bước giống như trên và xem kết quả. Giải thích : Chương trình này lần lượt xuất các mã từ 0 đến 9 ra port 0 để hiển thị trên led 7 đoạn. Từ p3.0 đến p3.6 lần lượt điều khiển các đoạn từ a đến f, p3.7 điều khiển dấu chấm (p). Ở đây ta sử dụng led 7 đoạn loại anode chung nên muốn điều khiển đoạn nào sáng bit điều khiển phải bằng 0. Chương trình trên dễ hiểu nhưng khá dài, ta có thể tạo một vùng mã của led 7 đoạn trên ROM và lần lượt xuất ra hiển thị như chương trình dưới đây. ;--------- ; chuong trinh hien thi tu 0 den 9 tren led 7 doan – cách 2 ;--------- org 0500h ;khoi tao vung ma led 7 doan tai dia chi 0500h tren ROM db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h org 0000h mov dptr,

    0500h ;nap dia chi vung nho luu ma vao dptr begin: mov r2,

    0 ;nap bien dem vao r2 rep: mov a,r2 movc a,@a+dptr ;lay ma cua so dem vao a mov p3,a ;xuat ma cua so dem ra hien thi lcall delay ;goi chuong trinh con delay

  • 26. XỬ LÝ 20 | P a g e inc r2 ;tăng biến đếm cjne r2,

    10,rep ;kiem tra bien dem,chua bang10 thi lap lai sjmp begin ;hien thi den 9, lap lai tu dau ;--- delay: mov r5,

    4 del1: mov r6,

    250 del2: mov r7,

    250 djnz r7,$ djnz r6,del2 djnz r5,del1 ret end Giải thích : Ở chương trình trên, các mã của led 7 đoạn được lưu vào vùng ROM ở địa chỉ từ 0500h đến 0509h. Các mã này được lần lượt lấy ra và hiển thị trên led 7 đoạn thông qua lệnh: MOVC. Phương pháp này có thể tận dụng được chính bộ nhớ Flash của vi điều khiển để lưu dữ liệu. III. Chương trình mẫu ;---------- ; chuong trinh hien thi tu 00 den 99 tren 2 led 7 doan ; dung bus 8 day ket noi them port 1 voi led 7 doan ben trai de hien thi hang chuc ;---------- org 0000h mov dptr,

    ledcode ;nap dia chi vung nho luu ma vao dptr begin: mov r2,

    0 ;nap bien dem hang don vi vao r2 mov r3,

    0 ;nap bien dem hang chuc vao r3 rep: mov a,r2 ;nap bien dem don vi vao a movc a,@a+dptr ;lay ma cua so dem vao a mov p3,a ;xuat ma cua so dem ra hien thi hang don vi mov a,r3 ;nap bien dem chuc vao a movc a,@a+dptr ;lay ma cua so dem vao a mov p1,a ;xuat ma cua so dem ra hien thi hang chuc lcall delay ;goi chuong trinh con delay inc r2 ;tăng biến đếm don vi cjne r2,

    10,rep ;kiem tra bien dem don vi,chua bang10 thi lap lai

  • 27. XỬ LÝ 21 | P a g e mov r2,

    0 ;bang 10 thi nap lai gia tri 0 inc r3 ;tăng biến đếm chuc cjne r3,

    10,rep ;kiem tra bien dem,chua bang10 thi lap lai sjmp begin ;bang 10 thi tro lai tu dau ;---- delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret ;--------- ;khoi tao vung ma led 7 doan tren ROM khong can xac dinh dia chi ;--------- ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h end IV. Bài tập 1. Hãy viết chương trình hiển thị theo số hex từ 0 đến F trên port 3. 2. Viết chương trình hiển thị từ 00 đến 36 rồi lặp lại. 3. Viết chương trình hiển thị từ 99 về 00.

  • 28. XỬ LÝ 22 | P a g e BÀI 2.2 ĐIỀU KHIỂN LED 7 ĐOẠN BẰNG PHƯƠNG PHÁP QUÉT I. Mục đích yêu cầu Biết cách điều khiển hiển thị được nhiều led 7 đoạn bằng phương pháp quét. II. Trình tự thực hiện 1. Kết nối mạch theo trình tự : - Dùng bus 8 dây kết nối port 0 với ngõ vào dữ liệu của nhóm 6 led 7 đoạn. Chú ý: P0.0 kết nối với chân a. - Dùng bus 8 dây kết nối port 2 với ngõ và chọn led. Led được chọn khi bit điều khiển bằng 0. 2. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;---------- ; chuong trinh hien thi so 0 tren led 7 doan thứ 3 của nhóm 6 led. ;---------- org 0000h mov p2,

    11111011b ;chon led 7 doan thu 3 mov p0,

    0c0h ;xuat ma so 0 ra port 0 sjmp $ ;nhay tai cho end 3. Thực hiện các bước giống như trên và xem kết quả. Giải thích : Để hiển thị số 0 trên led 7 đoạn thứ 3, trước hết cần chọn led muốn hiển thị bằng cách cho bit điều khiển chọn led đó bằng 0 và xuất ra port điều khiển là port 2. Tiếp theo ta xuất dữ liệu cần hiển thị là mã của số 0 ra port 0. Tương tự, các bạn hãy viết chương trình hiển thị cho các led còn lại. Để hiển thị đồng thời trên 6 led, ta phải sử dụng phương pháp quét như ví dụ sau: ;--------- ; chuong trinh hien thi chu HELLO- tren 6 led 7 doạn. ; port 0 xuat du lieu, port 2 xuat tin hieu chon led. ;--------- org 0000h rep: mov p2,

    11111110b ;chon led thu 1 mov p0,

    0bfh ;xuat ma hien thi chu ‘-’

  • 29. XỬ LÝ 23 | P a g e lcall delay ;goi chuong trinh con delay mov p2,

    11111101b ;chon led thu 2 mov p0,

    0c0h ;xuat ma hien thi chu ‘O’ lcall delay ;goi chuong trinh con delay mov p2,

    11111011b ;chon led thu 3 mov p0,

    0c7h ;xuat ma hien thi chu ‘L’ lcall delay ;goi chuong trinh con delay mov p2,

    11110111b ;chon led thu 4 mov p0,

    0c7h ;xuat ma hien thi chu ‘L’ lcall delay ;goi chuong trinh con delay mov p2,

    11101111b ;chon led thu 5 mov p0,

    86h ;xuat ma hien thi chu ‘E’ lcall delay ;goi chuong trinh con delay mov p2,

    11011111b ;chon led thu 6 mov p0,

    89h ;xuat ma hien thi chu ‘H’ lcall delay ;goi chuong trinh con delay sjmp rep ;lap lai tu dau ;--- delay: mov r6,

    6 del: mov r7,

    250 djnz r7,$ djnz r6,del ret end Giải thích : Ở chương trình trên, để các led cùng hiển thị thì tất cả các led phải được quét lần lượt với tần số khoảng 50Hz thì mới không bị nhấp nháy. Như vậy thời gian để quét hết các led là: 1/50 = 20ms. Thời gian này phải được chia đều cho 6 led, do đó thời gian để hiển thị mỗi led là: 20/6 = 3,34ms. Ta chọn thời gian delay là 3ms. III. Chương trình mẫu ;------------ ; chuong trinh hien thi chu HELLO chay tu phai sang trai trên led 7 doan ; port 0 xuat du lieu, port 2 xuat tin hieu chon led. ;------------ biendem equ r2 ;biến đếm

  • 30. XỬ LÝ 24 | P a g e tocdo equ r3 ;tốc độ org 0500h ;khoi tao vung du lieu tai dia chi 0500h tren ROM db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ;vung ma de tat led db 89h,86h,0c7h,0c7h,0c0h ;vung ma chu HELLO db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh org 0000h begin: mov dptr,

    0500h ;nap dia chi vung nho luu ma vao dptr repeat:mov tocdo,

    50 ;nap gia tri cho bien toc do rep1: mov biendem,

    0 ;nap 0 vao bien dem mov p2,

    0dfh ;chon hien thi led 6 rep2: mov a,biendem ;nap bien dem vao a movc a,@a+dptr ;lay du lieu tren rom vao a mov p0,a ;xuat du lieu ra port 0 lcall delay ;goi chuong trinh con delay mov p0,

    0ffh ;xoa hien thi de chong lem mov a,p2 ;lay p2 vao a rr a ;xoay phai de chon led tiep theo mov p2,a ;tra lai p2 inc biendem ;tăng biến đếm cjne biendem,

    6,rep2 ;kiem tra bien dem,chua bang 6 thi lap lai djnz tocdo,rep1 ;bien toc do chua bang 0, quet lai tu dau inc dptr ;dich vung du lieu sang phai mov a,dpl cjne a,

    12,repeat sjmp begin ;lap lai tu dau ;------ ;chuong trinh con delay 3ms ;------ delay: mov r6,

    6 del: mov r7,

    250 djnz r7,$ djnz r6,del ret end

  • 31. XỬ LÝ 25 | P a g e IV. Bài tập 1. Hãy viết chương trình hiển thị từ 0 đến 5 trên 6 led 7 đoạn. 2. Viết chương trình hiển thị một chuỗi số từ 0 đến 9 chạy từ trái sang phải. 3. Viết chương trình hiển thị từ 00 đến 99 trên 2 led 7 đoạn ở giữa.
  • 32. XỬ LÝ 26 | P a g e PHẦN 3: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC P2.0 P2.1 P2.2 P2.3 P2.0 P2.1 P2.2 P2.3 1B 1 2B 2 3B 3 4B 4 5B 5 6B 6 7B 7 8B 8 1C 18 2C 17 3C 16 4C 15 5C 14 6C 13 7C 12 8C 11 COM 10 U1 ULN2803 +88.8 Vcc XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U2 AT89C52 2 3 4 5 6 7 8 9 1 RESPACK-8
  • 33. XỬ LÝ 27 | P a g e BÀI 3.1 ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC QUAY LIÊN TỤC I. Mục đích yêu cầu Biết cách điều khiển động cơ bước ở chế độ full step và half step. Điều khiển quay thuận và quay nghịch. Nắm được nguyên tắc hoạt động của động cơ. Động cơ sử dụng trong bài này có 4 phase, 25 cực. II. Trình tự thực hiện 1. Nguyên tắc hoạt động: - Điều khiển full step cách 1 STEP L4 L3 L2 L1 1 L L L H 2 L L H L 3 L H L L 4 H L L L Điều khiển full step cách 2 STEP L4 L3 L2 L1 1 L L H H 2 L H H L 3 H H L L 4 H L L H
  • 34. XỬ LÝ 28 | P a g e - Điều khiển half step: STEP L4 L3 L2 L1 1 L L L H 2 L L H H 3 L L H L 4 L H H L 5 L H L L 6 H H L L 7 H L L L 8 H L L H 2. Kết nối mạch theo trình tự : - Dùng bus 4 dây kết nối port 2 với A,B,C,D của khối động cơ bước. - Chú ý: P2.0 kết nối với chân A. 3. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;----------- ;chuong trinh dieu khien dong co buoc quay thuan lien tuc full step ;dung bus 4 soi ket noi port 2 khoi dieu khien dong co buoc ;----------- Org 0000h begin: Mov p2,

    01h ;00000001b Lcall delay Mov p2,

    02h ;00000010b Lcall delay Mov p2,

    04h ;00000100b Lcall delay Mov p2,

    08h ;00001000b Lcall delay Sjmp begin delay: mov r6,

    200 del: mov r7,

    250 Djnz r7,$ Djnz r6,del Ret

  • 35. XỬ LÝ 29 | P a g e End ;----------- ;chuong trinh dieu khien dong co buoc quay thuan lien tuc half step ;dung bus 4 soi ket noi port 2 khoi dieu khien dong co buoc ;----------- Org 0000h begin: Mov p2,

    01h Lcall delay Mov p2,

    03h Lcall delay Mov p2,

    02h Lcall delay Mov p2,

    06h Lcall delay Mov p2,

    04h Lcall delay Mov p2,

    0ch Lcall delay Mov p2,

    08h Lcall delay Mov p2,

    09h Lcall delay Sjmp begin delay: Mov r6,

    100 del: Mov r7,

    250 Djnz r7,$ Djnz r6,del Ret End III. Chương trình mẫu Chương trình điều khiển động cơ bước quay thuận nghịch bằng 1 nút nhấn. ;--------- ;chuong trinh dieu khien dong co buoc quay thuan, nghich lien tuc full step ;dung bus 4 soi ket noi port 2 khoi dieu khien dong co buoc

  • 36. XỬ LÝ 30 | P a g e ;dung bus 2 soi ket noi p3.0 va p3.1 voi 2 nut nhan ;--------- Org 0000h thuan: mov p2,

    01h Lcall delay Mov p2,

    02h Lcall delay Mov p2,

    04h Lcall delay Mov p2,

    08h Lcall delay Jb p3.0,thuan ;kien tra nut nhan nghich:Mov p2,

    08h Lcall delay Mov p2,

    04h Lcall delay Mov p2,

    02h Lcall delay Mov p2,

    01h Lcall delay Jnb p3.0,nghich Sjmp thuan Delay:mov r6,

    100 Del: mov r7,

    250 Djnz r7,$ Djnz r6,del Ret End IV. Bài tập 1. Tìm hiểu nguyên tắc hoạt động và các phương pháp điều khiển động cơ bước. 2. Viết chương trình điều khiển động cơ bước quay nghịch full step. 3. Viết chương trình điều khiển động cơ bước quay nghịch half step. 4. Viết chương trình điều khiển động cơ bước full step với 2 nút nhấn điều khiển chiều quay kết nối với P3.0 và P3.1.

  • 37. XỬ LÝ 31 | P a g e BÀI 3.2 ĐIỀU KHIỂN GÓC QUAY, CHIỀU QUAY, TỐC ĐỘ ĐỘNG CƠ BƯỚC I. Mục đích yêu cầu Biết cách điều khiển động cơ bước chính xác về góc quay, chiều quay và tốc độ. Điều khiển start/stop và chiều quay bằng nút nhấn. Điều khiển tốc độ quay hiển thị trên led 7 đoạn. II. Trình tự thực hiện 1. Kết nối mạch theo trình tự : - Dùng bus 4 dây kết nối port 2 với A,B,C,D của khối động cơ bước. - Chú ý: P2.0 kết nối với chân A. 2. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;--------- ;chuong trinh dieu khien dong co buoc quay thuan, nghich lien tuc half step ;dung bus 4 soi ket noi port 2 khoi dieu khien dong co buoc ;dung bus 2 soi ket noi p3.0 va p3.1 voi 2 nut nhan ;--------- biendem equ r0 ;biến đếm chieuquay bit 00h ;chiều quay quaythuan bit p3.0 ;nút nhấn quay thuận quaynghich bit p3.1 ;nút nhấn quay nghịch Org 0000h mov dptr,

    step_data mov biendem,

    0 repeat:jb quaythuan,next setb chieuquay next: jb quaynghich,next2 clr chieuquay next2: mov a,biendem movc a,@a+dptr mov p2,a lcall delay jnb chieuquay,nghich

  • 38. XỬ LÝ 32 | P a g e inc biendem cjne biendem,

    8,repeat mov biendem,

    0 sjmp repeat nghich: dec biendem cjne biendem,

    0ffh,repeat mov biendem,

    7 sjmp repeat Delay:mov r6,

    20 Del: mov r7,

    250 Djnz r7,$ Djnz r6,del Ret Step_data: db 01h,03h,02h,06h,04h,0ch,08h,09h End III. Chương trình mẫu ;--------- ;chuong trinh dieu khien dong co buoc quay thuan, nghich lien tuc half step ;voi 2 nut dieu khien start/stop ;dung bus 4 soi ket noi port 2 khoi dieu khien dong co buoc ;dung bus 4 soi ket noi p3.0 den 3.3 voi 4 nut nhan ;--------- biendem equ r0 chieuquay bit 00h quaythuan bit p3.0 quaynghich bit p3.1 start bit p3.2 stop bit p3.3 Org 0000h mov dptr,

    step_data mov biendem,

    0 repeat:jb stop,over jb start,$ over: jb quaythuan,next

  • 39. XỬ LÝ 33 | P a g e setb chieuquay next: jb quaynghich,next2 clr chieuquay next2: mov a,biendem movc a,@a+dptr mov p2,a lcall delay jnb chieuquay,nghich inc biendem cjne biendem,

    8,repeat mov biendem,

    0 sjmp repeat nghich:dec biendem cjne biendem,

    0ffh,repeat mov biendem,

    7 sjmp repeat Delay:mov r6,

    20 Del: mov r7,

    250 Djnz r7,$ Djnz r6,del Ret Step_data: db 01h,03h,02h,06h,04h,0ch,08h,09h End IV. Bài tập 1. Viết chương trình điều khiển động cơ bước quay thuận 450 sau đó quay nghịch 900 và lặp lại. 2. Viết chương trình điều khiển động cơ bước quay thuận với tốc độ tăng dần sau mỗi vòng. 3. Viết chương trình điều khiển động cơ bước quay thuận nghịch với nút điều khiển start/stop và 2 nút điều khiển tốc độ hiển thị bằng led 7 đoạn.

  • 40. XỬ LÝ 34 | P a g e PHẦN 4: TIMER VÀ NGẮT
  • 41. XỬ LÝ 35 | P a g e BÀI 4.1 CHƯƠNG TRÌNH DELAY SỬ DỤNG TIMER I. Mục đích cầu Biết cách tính toán các thông số delay của timer để viết các chương trình delay chính xác. II. Trình tự thực hiện 1. Kết nối mạch theo trình tự : - Dùng bus 8 dây kết nối port 0 với một trong 3 PINHD của dãy 24 led. 2. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;------------- ; chuong trinh sang tat port0 su dung timer lam bo dinh thoi delay 65536 micro giay ;------------- org 0000h mov tmod,

    01 ; khoi tao timer T0 mode 1 dem 16 bit setb tr0 ; cho phep timer 0 bat dau dem xung rep: mov p0,

    00h lcall delay ; delay 65536 micro giay mov p0,

    0ffh lcall delay jmp rep ;------- ; chuong trinh con delay 65535 micro giay ;------- delay: clr tf0 ; xoa co ngat cua timer 0 mov tl0,

    0 ; nap 0 vao TL0 mov th0,

    0 ; nap 0 vao TH0 jnb tf0,$ ; kiem tra co tran ret end 3. Thực hiện các bước giống như trên và xem kết quả.

  • 42. XỬ LÝ 36 | P a g e Giải thích : Bài sáng tắt port0 trên giống như bài đã làm trước đây chỉ khác là thay chương trình delay bằng một chương trình sử dụng timer để việc tính toán thời gian dễ dàng hơn. Hàng lệnh đầu tiên trong chương trình chính là chọn mode làm việc cho timer T0 – hãy xem chương timer (timer T1 chưa sử dụng nên không cần quan tâm). Với chương trình trên thì timer T0 sẽ đếm từ giá trị nạp ban đầu 0000H đến FFFFH và khi có thêm 1 xung nữa thì giá trị đếm sẽ là 10000H. Một cách đơn giản ta có thể xem con số 10000H được chia ra làm 2: số “1” được lưu trong cờ tràn TF0 và số “0000H” được lưu trong 2 thanh ghi TH0,TL0. Số xung đếm được là 10000H –0000H = 10000 (65536) xung và mỗi xung có chu kỳ 1 micro giây nên lượng thời gian mà timer T0 đếm được là 65536 micro giây. Trong chương trình con có 2 lệnh nạp lại giá trị cho TH0 và TL0 của bài này là dư vì khi timer bị tràn thì nó tự động là cho 2 thanh ghi trên mang giá trị 0. III. Chương trình mẫu Để đếm lượng thời gian nhỏ hơn ta hãy tham khảo bài mẫu dưới đây: ;------------- ; chuong trinh sang tat port0 su dung timer lam bo dinh thoi delay 250 micro giay ;------------- org 0000h mov tmod,

    01 ; khoi tao timer T0 mode 1 dem 16 bit setb tr0 ; cho phep timer 0 bat dau dem xung rep: mov p0,

    00h lcall delay ; delay 250 micro giay mov p0,

    0ffh lcall delay sjmp rep ;-------- ; chuong trinh con delay 250 micro giay ;-------- delay: clr tf0 mov tl0,

    low(-250) ; nap 05 vao TL0 mov th0,

    high(-250) ; nap FF vao TH0 del1 : jnb tf0,del1 ret end

  • 43. XỬ LÝ 37 | P a g e Giải thích : Lượng thời gian của bài này chỉ có 250 micro giây, vì giá trị ban đầu nạp cho timer là FF05H nên khi đếm đến 10000H kết quả xung đếm được 10000H – FF06H = 00FA (250) và mỗi xung có chu kỳ 1 micro giây nên lượng thời gian mà timer T0 đếm đượclà 250 micro giây. Để khỏi phải tính toán phức tạp ta có thể viết bằng hai lệnh như sau: mov tl0,

    low(-250) ; nap 05 vao TL0 mov th0,

    high(-250) ; nap FF vao TH0 Khi biên dịch thì trình biên dịch tự động tính toán cho chúng ta. Chú ý với các chương trình điều khiển led sáng với thời gian trễ nhỏ thì led sáng mờ nhưng không chớp tắt như các bài ta đã viết ở trên. Trong phần tính toán chúng ta chưa tính toán các lệnh trong chương trình con delay. Muốn viết chương trình với các khoảng thời gian lớn hơn thì phải thêm thanh ghi ví dụ muốn viết delay 5 giây thì ta viết chương trình trình con delay 50.000 µs = 50ms và cho chúng thực hiện 100 lần – sau này chúng ta sẽ dùng timer để tạo ra các xung chính xác về thời gian cho các bài sau. IV. Bài tập 1. Hãy viết chương trình sáng tắt port 2 sử dụng timer làm bộ định thời delay 5 giây. 2. Hãy viết chương trình giống trên nhưng delay 10 giây. 3. Tương tự hãy viết chương trình delay 1 giờ. 4. Tìm hiểu nguyên tắc hoạt động của timer. 5. Lệnh nào cho phép timer chạy? Khi nào bit TF0 bằng 1? 6. Muốn khởi tạo timer0 ở mode 2, timer1 ở mode 1 ta thay đổi thanh ghi nào? Với giá trị bằng bao nhiêu?

  • 44. XỬ LÝ 38 | P a g e BÀI 4.2 CHƯƠNG TRÌNH ĐẾM GIỜ SỬ DỤNG NGẮT CỦA TIMER I. Mục đích yêu cầu Làm quen với cách viết chương trình đếm và sử dụng ngắt của timer để đếm chính xác về thời gian. II. Trình tự thực hiện 1. Kết nối mạch theo trình tự : - Dùng bus 8 dây kết nối port 3 với led bên phải của nhóm 2 led 7 đoạn để hiển thị hàng đơn vị, port 1 với led bên trái để hiển thị hàng chục. 2. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;---------- ;chuong trinh hien thi dem giay tu 00 den 59 tren 2 led 7 doan cua nhom 2 led. ;su dung ngat cua timer0 de dem chinh xac thoi gian ;---------- biendem equ 20h ;dinh nghia cac bien giay_dvi equ 21h giay_chuc equ 22h org 0000h sjmp start ;nhay den chuong trinh chinh org 000bh ;dia chi vecto ngat timer0 ljmp clock ;nhay den chuong trinh phuc vu ngat timer0 start:mov tmod,

    01h ;khoi tao timer0 mode1 mov th0,

    high(-50000) mov tl0,

    low(-50000) setb et0 ;cho phep ngat timer0 setb ea ;cho phep ngat toan bo setb tr0 ;chay timer0 begin: mov dptr,

    ledcode ;nap dia chi vung ma led vao dptr mov a,giay_dvi ;lay o nho chua giay don vi vao a movc a,@a+dptr ;lay ma led 7 doan tuong ung

  • 45. XỬ LÝ 39 | P a g e mov p3,a ;xuat ra hien thi don vi mov a,giay_chuc ;lay o nho giay chuc vao a movc a,@a+dptr ;lay ma led 7 doan tuong ung mov p1,a ;xuat ra hien thi hang chuc sjmp begin ;------- ;chuong trinh con ngat timer0 de dem giay ;------- clock:push acc ;cat thanh ghi a mov tl0,

    low(-50000) ;nap lai gia tri cho timer mov th0,

    high(-50000) inc biendem ;tang bien dem mov a,biendem cjne a,

    20,finish mov 20h,

    0 inc giay_dvi ;tang giay dv mov a,giay_dvi cjne a,

    0ah,finish mov giay_dvi,

    0 inc giay_chuc ;tang giay chuc mov a,giay_chuc cjne a,

    6,finish mov giay_chuc,

    0 finish:pop acc reti ;------ ;khoi tao vung ma led 7 tren ROM ;------ ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h end Giải thích : Để đếm giây chính xác ta sử dụng timer 0 ở mode1 hoạt động với 16 bit. Như vậy, nếu chu kỳ máy là 1us thì timer sẽ tràn sau 216 us = 65536us. Để đếm được 1 giây ta

  • 46. XỬ LÝ 40 | P a g e chọn tốc độ tràn của timer là 50000 và sử dụng một biến đếm để xác định số lần tràn. Với 20 lần timer tràn thì được 1 giây. Hai biến giay_chuc và giay_dvi để đếm thời gian. Sau đó được giải mã sang mã led 7 đoạn và xuất ra hiển thi trên port 1 và port 3. Tương tự, các bạn hãy viết chương trình đếm phút và giây trên 4 led 7 đoạn. Để hiển thị đồng thời trên led, ta phải sử dụng phương pháp quét như ví dụ sau: ;------ ; chuong trinh hien thi phut, giay tren 4 led 7 doạn. ; port 0 xuat du lieu, port 2 xuat tin hieu chon led. ;------ biendem equ 20h ;dinh nghia cac bien giay_dvi equ 21h giay_chuc equ 22h phut_dvi equ 23h phut_chuc equ 24h org 0000h sjmp start ;nhay den chuong trinh chinh org 000bh ;dia chi vecto ngat timer0 ljmp clock ;nhay den chuong trinh phuc vu ngat timer0 start:mov tmod,

    01h ;khoi tao timer0 mode1 mov th0,

    high(-50000) mov tl0,

    low(-50000) setb et0 ;cho phep ngat timer0 setb ea ;cho phep ngat toan bo setb tr0 ;chay timer0 begin:mov r0,

    40h ;lay dia chi dau cua ram hien thi mov r2,

    11111110b ;chon led dau tien rep: mov p2,r2 mov a,@r0 mov p0,a lcall delay mov p0,

    0ffh inc r0 mov a,r2 rl a

  • 47. XỬ LÝ 41 | P a g e mov r2,a jb acc.4,rep sjmp begin ;-------- ;chuong trinh con giai ma gio phut thanh ma led 7 doan de hien thi ;-------- decode: mov dptr,

    ledcode ;nap dia chi vung ma led vao dptr mov r0,

    21h ;nap dia chi cua vung du lieu gio phut giay mov r1,

    40h ;nap dia chi vung ma hien thi dec1: mov a,@r0 movc a,@a+dptr mov @r1,a inc r0 inc r1 cjne r0,

    25h,dec1 ret ;------ ;chuong trinh con ngat timer0 de dem gio phut giay ;------ clock: push 00h ;cat thanh ghi r0 push acc ;cat thanh ghi a mov tl0,

    low(-50000) ;nap lai gia tri cho timer mov th0,

    high(-50000) inc biendem ;tang bien dem mov a,biendem cjne a,

    20,finish mov 20h,

    0 inc giay_dvi ;tang giay dv mov a,giay_dvi cjne a,

    0ah,finish mov giay_dvi,

    0 inc giay_chuc ;tang giay chuc mov a,giay_chuc cjne a,

    6,finish

  • 48. XỬ LÝ 42 | P a g e mov giay_chuc,

    0 inc phut_dvi ;tang phut dv mov a,phut_dvi cjne a,

    0ah,finish mov phut_dvi,

    0 inc phut_chuc ;tang phut chuc mov a,phut_chuc cjne a,

    6,finish mov phut_chuc,

    0 finish: lcall decode ;goi chuong trinh con giai ma hien thi pop acc pop 00h reti delay:mov r6,

    6 del: mov r7,

    250 djnz r7,$ djnz r6,del ret ;------ ;khoi tao vung ma led 7 tren ROM ;------ ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h end III. Chương trình mẫu ;---------- ; chuong trinh hien thi gio, phut, giay trên 6 led 7 doan ; port 0 xuat du lieu, port 2 xuat tin hieu chon led. ;---------- biendem equ 20h ;dinh nghia cac bien giay_dvi equ 21h giay_chuc equ 22h phut_dvi equ 23h

  • 49. XỬ LÝ 43 | P a g e phut_chuc equ 24h gio_dvi equ 25h gio_chuc equ 26h org 0000h sjmp start ;nhay den chuong trinh chinh org 000bh ;dia chi vecto ngat timer0 ljmp clock ;nhay den chuong trinh phuc vu ngat timer0 start:mov tmod,

    01h ;khoi tao timer0 mode1 mov th0,

    high(-50000) mov tl0,

    low(-50000) setb et0 ;cho phep ngat timer0 setb ea ;cho phep ngat toan bo setb tr0 ;chay timer0 begin: mov r0,

    40h ;lay dia chi dau cua ram hien thi mov r2,

    11111110b ;chon led dau tien rep: mov p2,r2 mov a,@r0 mov p0,a lcall delay mov p0,

    0ffh inc r0 mov a,r2 rl a mov r2,a jb acc.6,rep sjmp begin ;---------- ;chuong trinh con giai ma gio phut giay thanh ma led 7 doan de hien thi ;---------- decode: mov dptr,

    ledcode ;nap dia chi vung ma led vao dptr mov r0,

    21h ;nap dia chi cua vung du lieu gio phut giay mov r1,

    40h ;nap dia chi vung ma hien thi dec1:mov a,@r0 movc a,@a+dptr

  • 50. XỬ LÝ 44 | P a g e mov @r1,a inc r0 inc r1 cjne r0,

    27h,dec1 ret ;------ ;chuong trinh con ngat timer0 de dem gio phut giay ;------ clock: push 00h ;cat thanh ghi r0 push acc ;cat thanh ghi a mov tl0,

    low(-50000) ;nap lai gia tri cho timer mov th0,

    high(-50000) inc biendem ;tang bien dem mov a,biendem cjne a,

    20,finish mov 20h,

    0 inc giay_dvi ;tang giay dv mov a,giay_dvi cjne a,

    0ah,finish mov giay_dvi,

    0 inc giay_chuc ;tang giay chuc mov a,giay_chuc cjne a,

    6,finish mov giay_chuc,

    0 inc phut_dvi ;tang phut dv mov a,phut_dvi cjne a,

    0ah,finish mov phut_dvi,

    0 inc phut_chuc ;tang phut chuc mov a,phut_chuc cjne a,

    6,finish mov phut_chuc,

    0 inc gio_dvi ;tang gio dv mov a,gio_chuc

  • 51. XỬ LÝ 45 | P a g e cjne a,

    2,next mov a,gio_dvi cjne a,

    4,finish mov gio_dvi,

    0 mov gio_chuc,

    0 sjmp finish next:mov a,gio_dvi cjne a,

    0ah,finish mov gio_dvi,

    0 inc gio_chuc ;tang gio chuc finish: lcall decode ;goi chuong trinh con giai ma hien thi pop acc pop 00h reti delay:mov r6,

    6 del: mov r7,

    250 djnz r7,$ djnz r6,del ret ;------ ;khoi tao vung ma led 7 tren ROM ;------ ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h end IV. Bài tập 1. Tìm hiểu hoạt động ngắt của timer. 2. Hãy viết chương trình đếm phút giây hiển thị trên led 7 đoạn số 1,2,5 và 6. Led 3,4 tắt. 3. Viết chương đồng hồ thể thao hiển thị phút, giây và phần trăm của giây hiển thị trên 6 led . 4. Tương tự bài trên, kết hợp với 2 nút nhấn kết nối với P1.0 và P1.1 để điều khiển Start/Stop và Reset. 5. Viết chương trình đồng hồ với các nút nhấn để chỉnh giờ, phút, giây.

  • 52. XỬ LÝ 46 | P a g e BÀI 4.3 QUÉT PHÍM MA TRẬN VÀ HIỂN THỊ TRÊN LED 7 ĐOẠN I. Mục đích yêu cầu Biết cách viết chương trình điều khiển quét phím, tạo mã phím và hiển thị mã phím. Khi nhấn một phím nào thì mã của phím đó hiển thị trên led. II. Trình tự thực hiện 1. Chức năng của phím hay nút nhấn hay contact: Dùng để giao tiếp điều khiển giữa con người và thiết bị ví dụ như contact tắt mở bóng đèn và người sử dụng tác động đến contact để tắt mở thiết bị. Máy tính cộng trừ nhân chia thì chức năng của bàn phím là nhập các thông số vào máy và yêu cầu máy thực hiện các phím tính, tương tự bàn phím máy tính cũng vậy dùng để giao tiếp con người và máy. Trong thực tế các thiết bị điều khiển lập trình đều có sử dụng nút nhấn, có thiết bị sử dụng ít nút nhấn như tivi, máy giặt, …, có thiết bị sử dụng nhiều nút nhấn như bàn phím vi máy tính, điện thoại, bàn phím máy tính cộng trừ nhân chia,… P2.[0..7] P0.[0..7] P3.[0..7] P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.3 P2.0 P2.1 P2.2 P2.4 P2.5 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 330R +5V C0 C1 C2 C3 H0 H1 H2 H3 C0 C1 C2 C3 H3 H2 H1 H0
  • 53. XỬ LÝ 47 | P a g e 2. Nguyên lý: Với nút nhấn thường hở thì khi ta nhấn thì sẽ ngắn mạch cho tín hiệu hay dòng điện chạy qua và khi không nhấn thì hở mạch sẽ ngắt tín hiệu hay ngắt dòng điện, còn nút nhấn thường đóng thì ngược lại. Đối với tín hiệu số ta có thể xem “khi contact hở làm cho 1 ngõ vào ở mức logic 1 và khi contact nhấn làm thay đổi sang trạng thái mức logic 0 hoặc ngược lại”. Với cách kết nối kiểu như đã trình bày thì một contact phải sử dụng một đường tín hiệu giao tiếp. Nếu ứng dụng dùng vài chục phím thì theo cách này là không khả thi vì số lượng tín hiệu không đủ, nếu muốn thì phải dùng thêm IC giao tiếp. Khi ứng dụng sử dụng nhiều phím thì ta nên kết nối theo dạng ma trận phím, với ma trận [m hàng, n cột ] thì số phím bằng [n x m]. Ma trận 4 x 4 sẽ có 16 phím thì chỉ cần dùng 8 đường tín hiệu giao tiếp, ma trận 4 x 5 sẽ có 20 phím thì chỉ cần dùng 9 đường tín hiệu giao tiếp, ma trận 8 x 8 thì sẽ có 64 phím thì chỉ cần dùng 16 đường tín hiệu giao tiếp. 3. Giải thuật cho chương trình con quét phím dùng ma trận: Với ma trận 4x4 thì phải có 4 ngõ vào và 4 ngõ ra, 4 ngõ vào thường đặt ở mức 1. 4 ngõ còn lại là 4 ngõ ra thường để xuất tín hiệu quét hay mã quét có 1 bit ở mức 0 các bit còn lại ở mức 1. Chương trình quét phím thường là chương trình con, chương trình chính sẽ gọi chương trình con quét phím để kiểm tra xem có phím nào bị nhấn hay không: nếu không có phím nào bị nhấn thì chương trình con quét phím kết thúc với 1 mã do người lập trình qui định, nếu có phím nhấn thì phải tiến hành thiết lập mã phím của phím đó (mỗi phím có 1 mã duy nhất) rồi tiến hành chống dội phím, sau đó có thể kết thúc quá trình chống dội bằng cách chờ buông phím hay hết thời gian qui định. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;------------ ; chuong trinh quet phim ma tran 4x4 va hien thi ma phim tren led 7 doan ;dung bus 8 soi ket noi port 1 voi ma tran phim. P1.0 ket noi voi cot 0 ;------------ maphim equ 20h ;mã phím, su dung o nho 20h luu org 0000h mov p3,

    0bfh ;hien thi dau gach ngang khi moi reset begin: mov maphim,

    0 ; ma phim nhan = 0 mov p1,

    11111110 ;chon cot 0 rep: mov a,p1 ;lay p1 vao a anl a,

    0f0h ;lay 4 bit cao cjne a,

    0f0h,next ;kiem tra co phim nhan khong mov a,p1 ;khong co phim nhan, lay p1 vao a rl a ;xoay a de chon cot tiep theo jnb acc.4,begin ;neu qua cot thu 4, lap lai tu dau

  • 54. XỬ LÝ 48 | P a g e mov p1,a ;neu k, tra lai p1 de chon cot tiep theo mov a,maphim ;lay ma phim vao a add a,

    4 ;cong 4 de qua ma phim cua cot tiep theo mov maphim,a ;tra du lieu cho ma phim sjmp rep ;nhay tro lai kiem tra phim cot tiep theo next: rr a jnb acc.3,over inc maphim sjmp next over: mov dptr,

    ledcode ;nap dia chi vung nho luu ma vao dptr mov a,maphim movc a,@a+dptr ;lay ma cua so dem vao a mov p3,a ;xuat ma cua so dem ra hien thi sjmp begin ;--- ;khoi tao vung ma led 7 doan ;--- ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h db 88h,83h,0c6h,0a1h,86h,8eh end III. Chương trình mẫu Chương trình quét phím ma trận và hiển thị mã của phím nhấn trên 6 led 7 đoạn dịch chuyển từ phải sang trái ;--------- ;ket noi port 1 voi ma tran phim, P1.0 voi cot 0 ;ket noi port 0 voi ngo vao du lieu led 7 đoan, port 2 với ngo vao chon led ;--------- Ram_hien_thi equ 30h Maphim equ 20h org 0000h sjmp start ;nhay den chuong trinh chinh org 000bh ;dia chi vecto ngat timer0

  • 55. XỬ LÝ 49 | P a g e ljmp quet_phim ;nhay den chuong trinh con quet phim start: mov tmod,

    01h ;khoi tao timer0 mode1 mov th0,

    high(-5000) mov tl0,

    low(-5000) setb et0 ;cho phep ngat timer0 setb ea ;cho phep ngat toan bo setb tr0 ;chay timer0 mov 35h,

    0f7h ;hien thi dau gach ngang khi moi khoi dong mov 34h,

    0f7h mov 33h,

    0f7h mov 32h,

    0f7h mov 31h,

    0f7h mov 30h,

    0f7h que t_hien_thi: mov r0,

    ram_hien_thi ;lay dia chi dau cua ram hien thi mov r2,

    11111110b ;chon led dau tien qht: mov p2,r2 mov a,@r0 mov p0,a lcall delay mov p0,

    0ffh inc r0 mov a,r2 rl a mov r2,a jb acc.6,qht sjmp quet_hien_thi ;------ ;chuong trinh con quet phim ;------ quet_phim: push acc ;cat thanh ghi a push 00h ;cat thanh ghi r0 mov maphim,

    0 ;ma phim nhan = 0

  • 56. XỬ LÝ 50 | P a g e mov p1,

    0feh ;chon cot 0 rep: mov a,p1 ;lay p1 vao a anl a,

    0f0h ;lay 4 bit cao cjne a,

    0f0h,next ;kiem tra co phim nhan khong mov a,p1 ;khong co phim nhan, lay p1 vao a rl a ;xoay a de chon cot tiep theo jnb acc.4,exit ;neu qua cot thu 4, thoat mov p1,a ;neu k, tra lai p1 de chon cot tiep theo mov a,maphim ;lay ma phim vao a add a,

    4 ;cong 4 de qua ma phim cua cot tiep theo mov maphim,a ;tra du lieu cho ma phim sjmp rep ;nhay tro lai kiem tra phim cot tiep theo next: rr a jnb acc.3,wait inc maphim ;tang ma phim sjmp next wait: mov p1,

    0f0h mov a,p1 ;lay p1 vao a cjne a,

    0f0h,wait ;kiem tra phim con nhan khong mov dptr,

    ledcode ;nap dia chi vung nho luu ma vao dptr mov a,maphim movc a,@a+dptr ;lay ma cua so dem vao a mov 35h,34h ;dich du lieu qua trai mov 34h,33h mov 33h,32h mov 32h,31h mov 31h,30h mov 30h,a exit: pop 00h pop acc reti delay: mov r6,

    6 del: mov r7,

    250 djnz r7,$

  • 57. XỬ LÝ 51 | P a g e djnz r6,del ret ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h db 88h,83h,0c6h,0a1h,86h,8eh end IV. Bài tập 1. Tìm hiểu nguyên tắc quét phím. 2. Tại sao ở bài mẫu, khi nhấn 1 phím thì led tắt. Hãy khắc phục tình trạng trên. 3. Kết hợp với các bài tập trước để viết chương trình đếm thời gian giờ, phút, giây và được hiệu chỉnh giờ bằng các phím nhấn ma trận.
  • 58. XỬ LÝ 52 | P a g e BÀI 4.4 ĐIỀU KHIỂN ĐÈN GIAO THÔNG I. Mục đích yêu cầu Biết cách viết chương trình điều khiển đèn giao thông, tính toán thời gian cho các đèn và hiển thị thời gian đếm ngược trên led 7 đoạn. II. Trình tự thực hiện 1. Yêu cầu: Viết chương trình điều khiển đèn giao thông cho 1 ngã tư gồm Xanh1, Vàng1, Đỏ1, Xanh2, Vàng2, Đỏ2. Cho thời gian xanh sáng 25 giây, thời gian vàng sáng 5 giây, thời gian đỏ bằng thời gian xanh cộng thời gian vàng. Các đèn xanh vàng đỏ dùng led đơn để hiển thị và được điều khiển bằng port 1. Led sáng khi bit điều khiển bằng 1. Đèn Bit điều khiển Thời gian Xanh 1 P1.0 25s Vàng 1 P1.1 5s Đỏ 1 P1.2 Xanh 2 P1.3 15s Vàng 2 P1.4 3s Đỏ 2 P1.5 P2.[0..7] P0.[0..7] P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.3 P2.0 P2.1 P2.2 P2.4 P2.5 P2.6 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.5 P2.4 P2.3 P2.0 P2.1 P2.2 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 A0 2 B0 18 A1 3 B1 17 A2 4 B2 16 A3 5 B3 15 A4 6 B4 14 A5 7 B5 13 A6 8 B6 12 A7 9 B7 11 CE 19 AB/BA 1 U2 74HC245 X1 V1 D1 X2 V2 D2 QD1 QD2
  • 59. XỬ LÝ 53 | P a g e 2. Giải thuật: Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;--------- ;chuong trinh dieu khien den giao thong hien thi bang led don – cach 1 ;dung bus 8 soi ket noi port 1 voi day led mo phong den giao thong ;--------- Org 0000h Begin:Mov p1,

    21h ;xanh 1 đo 2 Mov r4,

    25 ;nap thoi gian delay vao bien dem Rep1: Lcall delay1s Djnz r4,rep1 Mov p1,

    22h ;vang 1 đo 2 Mov r4,

    5 ;nap thoi gian delay vao bien dem Rep2: Lcall delay1s Djnz r4,rep2 Mov p1,

    0ch ;xanh 2 đo 1 Mov r4,

    25 ;nap thoi gian delay vao bien dem

  • 60. XỬ LÝ 54 | P a g e Rep3: Lcall delay1s Djnz r4,rep3 Mov p1,

    14h ;vang 2 đo 1 Mov r4,

    5 ;nap thoi gian delay vao bien dem Rep4: Lcall delay1s Djnz r4,rep4 Sjmp begin Delay1s: ;chuong trinh con delay1s Mov r5,

    8 Del1: mov r6,

    250 Del2: mov r7,

    250 Djnz r7,$ Djnz r6,del2 Djnz r5,del1 Ret End 3. Thực hiện các bước giống như trên và xem kết quả. Ở chương trình trên, ta thấy có 4 đoạn chương trình gần như nhau. Chỉ khác dữ liệu xuất ra port 1 và thời gian delay nạp vào biến đếm. Ta có thể rút gọn chương trình bằng vòng lặp và viết lại theo cách 2 như sau: ;--------- ;chuong trinh dieu khien den giao thong hien thi bang led don – cach 2 ;dung bus 8 soi ket noi port 1 voi dãy led mo phong den giao thong ;--------- Org 0000h Mov 20h,

    21h ;xanh 1 đỏ 2 Mov 21h,

    25 ;thời gian delay Mov 22h,

    22h ;vàng 1 đỏ 2 Mov 23h,

    5 Mov 24h,

    0ch ;xanh 2 đỏ 1 Mov 25h,

    25 Mov 26h,

    14h ;vàng 2 đỏ 1 Mov 27h,

    5 Begin:

  • 61. XỬ LÝ 55 | P a g e Mov r0,

    20h Repeat:Mov a,@r0 Mov p1,a ;xuất ra điều khiển đèn Inc r0 Mov a,@r0 ;lấy thời gian delay Mov r4,a ;nạp vào biến đếm Rep: Lcall delay1s Djnz r4,rep Inc r0 Cjne r0,

    28h,repeat Sjmp begin Delay1s: ;chương trình con delay1s Mov r5,

    8 Del1: mov r6,

    250 Del2: mov r7,

    250 Djnz r7,$ Djnz r6,del2 Djnz r5,del1 Ret End III. Chương trình mẫu Chương trình điều khiển đèn giao thông kết hợp với led 7 đoạn để hiển thị thời gian đếm ngược trên led 1,2 và 5,6 của nhóm 6 led. Led 3,4 tắt. ;--------- ;chuong trinh den giao thong co hien thi thoi gian dem nguoc ;ket noi port 1 voi dãy led mo phong den giao thong ;ket noi port 0 voi ngo vao du lieu led 7 đoan, port 2 với ngo vao chon led ;--------- biendem equ 20h ;dinh nghia cac bien bientrangthai equ 21h ;trang thai hien tai cua he thong thoigian1 equ 22h ;thoi gian hien thi o huong 1 thoigian2 equ 23h ;thoi gian hien thi o huong 2 xanh1 equ 15

  • 62. XỬ LÝ 56 | P a g e vang1 equ 5 xanh2 equ 10 vang2 equ 3 org 0000h sjmp start ;nhay den chuong trinh chinh org 000bh ;dia chi vecto ngat timer0 ljmp dengiaothong ;nhay den chuong trinh phuc vu ngat timer0 ;-----;khoi tao timer 0 dem thoi gian start: mov tmod,

    01h ;khoi tao timer0 mode1 mov th0,

    high(-50000) mov tl0,

    low(-50000) setb et0 ;cho phep ngat timer0 setb ea ;cho phep ngat toan bo setb tr0 ;chay timer0 ;-----;khoi tao cac gia tri ban dau mov biendem,

    0 mov bientrangthai,

    0 mov thoigian1,

    1 ;-----;chuong trinh chinh thuc hien quet hien thi begin: mov r0,

    45h ;lay dia chi cuoi cua ram hien thi mov r2,

    11111110b ;chon led dau tien rep: mov p2,r2 mov a,@r0 mov p0,a lcall delay mov p0,

    0ffh dec r0 mov a,r2 rl a mov r2,a jb acc.6,rep sjmp begin ;-----;chuong trinh ngat dieu khien den giao thong

  • 63. XỬ LÝ 57 | P a g e dengiaothong: push 00h push acc mov tl0,

    low(-50000) mov th0,

    high(-50000) inc biendem ;tang bien dem mov a,biendem cjne a,

    20,finish mov biendem,

    0 dec thoigian1 dec thoigian2 mov a,thoigian1 cjne a,

    0,dgt1 sjmp dgt2 dgt1: mov a,thoigian2 cjne a,

    0,giaima dgt2: inc bientrangthai mov a,bientrangthai cjne a,

    1,dgt3 mov p1,

    00100001b mov thoigian1,

    xanh1 mov thoigian2,

    xanh1+vang1 sjmp giaima dgt3: cjne a,

    2,dgt4 mov p1,

    00100010b mov thoigian1,

    vang1 sjmp giaima dgt4: cjne a,

    3,dgt5 mov p1,

    00001100b mov thoigian1,

    xanh2+vang2 mov thoigian2,

    xanh2 sjmp giaima dgt5: mov p1,

    00010100b

  • 64. XỬ LÝ 58 | P a g e mov thoigian2,

    vang2 mov bientrangthai,

    0 giaima: mov dptr,

    ledcode mov r0,

    40h mov a,thoigian1 mov b,

    10 div ab movc a,@a+dptr mov @r0,a inc r0 mov a,b movc a,@a+dptr mov @r0,a inc r0 mov @r0,

    0ffh inc r0 mov @r0,

    0ffh inc r0 mov a,thoigian2 mov b,

    10 div ab movc a,@a+dptr mov @r0,a inc r0 mov a,b movc a,@a+dptr mov @r0,a finish: pop acc pop 00h reti delay: mov r6,

    6 del: mov r7,

    250 djnz r7,$

  • 65. XỬ LÝ 59 | P a g e djnz r6,del ret ledcode: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h end IV. Bài tập 1. Tìm hiểu nguyên tắc hoạt động của đèn giao thông. 2. Thay đổi thời gian khác nhau giữa hai hướng của giao lộ. 3. Từ bài mẫu, kết hợp với phím nhấn để chỉnh thời gian cho từng hướng của giao lộ.
  • 66. XỬ LÝ 60 | P a g e BÀI 4.5 CHƯƠNG TRÌNH HIỂN THỊ KÝ TỰ TRÊN LED MA TRẬN I. Mục đích yêu cầu Nắm được nguyên tắc quét hiển thị trên led ma trận. Điều khiển hiển thị từng màu khác nhau trên led. II. Trình tự thực hiện 1. Sơ đồ nguyên lý led ma trận 8x8 2 màu: 2. Kết nối mạch theo trình tự : - Dùng bus 8 dây kết nối port 0 với hang của ma trận. - Kết nối port 2 với conector điều khiển cột. 3. Khởi động phần mềm, tạo File mới và biên soạn chương trình sau: ;------------- ;chuong trinh dieu khien led ma tran hien thi chu A mau do ;ket noi p0 voi hang cua ma tran ;ket noi p2 cung chieu voi connects dieu khien cot (ben phai-phia duoi ma tran)
  • 67. XỬ LÝ 61 | P a g e ;phan cung: quet led dung ic ghi dich 6b595 ;ma chu xuat ra port 0 ;---------- dind bit p2.0 dinx bit p2.1 clk bit p2.2 oe bit p2.4 st bit p2.5 clr_ bit p2.6 ;-------;chương trình chính org 0h ;-------;khoi tao 6b595 clr dind clr dinx clr clk setb oe clr st clr clr_ setb clr_ ;---- main: mov dptr,

    matranchua setb dind mov r2,

    0h rep: mov a,r2 movc a,@a+dptr mov p0,a setb clk clr dind clr clk setb st clr st clr oe

  • 68. XỬ LÝ 62 | P a g e lcall delay setb oe inc r2 cjne r2,

    8,rep clr clr_ setb clr_ sjmp main ;------- ;chương trình delay delay: mov r6,

    5 del: mov r5,

    250 djnz r5,$ djnz r6,del ret ;----;dữ liệu của chữ A để hiển thị matranchua: db 0f8h,24h,22h,21h,22h,24h,0f8h,00h end ;----------- ;chuong trinh dieu khien led ma tran hien thi chu A mau do + xanh ;ket noi p0 voi hang cua ma tran ;ket noi p2 cung chieu voi connects dieu khien cot ;ma chu xuat ra port 0 ;----------- dind bit p2.0 dinx bit p2.1 clk bit p2.2 oe bit p2.4 st bit p2.5 clr_ bit p2.6 ;----;bắt đầu chương trình chính org 0h ;---- ;khoi tao 6b595

  • 69. XỬ LÝ 63 | P a g e clr dind clr dinx clr clk setb oe clr st clr clr_ setb clr_ ;---- main: mov dptr,

    matranchua setb dind setb dinx mov r2,

    0h rep: mov a,r2 movc a,@a+dptr mov p0,a setb clk clr dind clr dinx clr clk setb st clr st clr oe lcall delay setb oe inc r2 cjne r2,

    8,rep clr clr_ setb clr_ sjmp main ;---- ;chương trình delay delay: mov r6,

    5 del: mov r5,

    250

  • 70. XỬ LÝ 64 | P a g e djnz r5,$ djnz r6,del ret ;---- ;dữ liệu ma trận chữ A matranchua: db 0f8h,24h,22h,21h,22h,24h,0f8h,00h end III. Chương trình mẫu Chương trình điều khiển điều khiển led ma trận chạy chữ A màu đỏ + xanh. ;------- ;ket noi p0 voi hang cua ma tran ;ket noi p2 cung chieu voi connects dieu khien cot ;------- dind bit p2.0 dinx bit p2.1 clk bit p2.2 oe bit p2.4 st bit p2.5 clr_ bit p2.6 tocdo equ 20h bd_cotequ 21h goc equ 40h dich equ 4dh ;------- ;bắt đầu chương trình chính org 0000h ;---- ;khởi tạo mã chữ trên Ram mov 40h,

    00h mov 41h,

    00h mov 42h,

    00h mov 43h,

    00h mov 44h,

    00h mov 45h,

    00h mov 46h,

    00h

  • 71. XỬ LÝ 65 | P a g e mov 47h,

    00h mov 48h,

    0f8h mov 49h,

    24h mov 4ah,

    22h mov 4bh,

    24h mov 4ch,

    0f8h mov 4dh,

    00h ;dich mov 4eh,

    00h mov 4fh,

    00h mov 50h,

    00h mov 51h,

    00h mov 52h,

    00h mov 53h,

    00h mov 54h,

    00h ;---- ;khoi tao 6b595 clr dind clr dinx clr clk setb oe clr st clr clr_ setb clr_ ;------ main: mov r1,

    goc ;khoi tao goc ht3: mov tocdo,

    200 ;khoi tao toc do ht2: mov r0,01h ;nhan goc mov bd_cot,

    8 ;khoi tao bien dem so cot setb dind ;serial_data=1 do setb dinx ;serial_data=1 xanh ht1: mov a,@r0

  • 72. XỬ LÝ 66 | P a g e mov p0,a ;--- setb clk clr dind ;chon cot do clr dinx ;chon cot xanh clr clk setb st clr st ;------ clr oe lcall delay ;hien thi cot ;------ setb oe ;chong lem mov p0,

    0h ;------ inc r0 ;chon dia chi ke djnz bd_cot,ht1 ;quet chua du 8 cot=> quet tiep ;------ clr clr_ ;quet du => xoa thanh ghi dich setb clr_ djnz tocdo,ht2 ;bien tocdo # 0 =>quet lai ;------ inc r1 ;tang goc cjne r1,

    dich,ht3 ;goc=dich sjmp main ;ket thuc (lap lai tu dau) ;------ delay: mov r6,

    5 del: mov r5,

    250 djnz r5,$ djnz r6,del ret end

  • 73. XỬ LÝ 67 | P a g e IV. Bài tập 1. Tìm hiểu phương pháp quét led ma trận và thanh ghi dịch . 2. Viết chương trình điều khiển led ma trận hiển thị các ký tự khác màu xanh. 3. Viết chương trình hiển thị hình trái tim đổi màu theo trình tự xanh, đỏ, xanh+đỏ. 4. Viết chương trình chạy chữ ‘DH BRVT’ bằng màu bất kỳ.
  • 74. XỬ LÝ 68 | P a g e PHẦN 5: THI CÔNG MẠCH ỨNG DỤNG
  • 75. XỬ LÝ 69 | P a g e BÀI 5.1 MẠCH ĐIỀU KHIỂN LED ĐƠN I. Mục đích yêu cầu - Ứng dụng được vi điều khiển để điều khiển 16 led đơn theo các hiệu ứng đã học. - Mở rộng sáng tạo thêm các hiệu ứng theo tư duy cá nhân. - Thiết kế và thi công thành mạch ứng dụng hoàn chỉnh. II. Sơ đồ nguyên lý III. Danh mục linh kiện vật tư cần - Mạch in hoặc testboard hàn 6 x 10 cm: 1 miếng - Chip 89S52: 1 con - Thạch anh 12MHz: 1 con - Tụ điện 33p: 2 con - Tụ điện 104: 1 con - Dây bus 8: 1 sợi - Pinhead: 0.5 cây - Chì hàn: 0.5 m - Điện trở 330: 16 con - Led 5 ly: 16 cái P3.[0..7] P0.[0..7] P2.[0..7] P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 330R +5V
  • 76. XỬ LÝ 70 | P a g e BÀI 5.2 MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN I. Mục đích yêu cầu - Ứng dụng được vi điều khiển để điều khiển 2 led 7 đoạn theo các bài đã học. - Mở rộng sáng tạo thêm các ứng dụng khác theo tư duy cá nhân. - Thiết kế và thi công thành mạch ứng dụng hoàn chỉnh. II. Sơ đồ nguyên lý III. Danh mục linh kiện vật tư cần - Mạch in hoặc testboard hàn 6 x 10 cm: 1 miếng - Chip 89S52: 1 con - Thạch anh 12MHz: 1 con - Tụ điện 33p: 2 con - Tụ điện 104: 1 con - Dây bus 8: 1 sợi - Pinhead: 0.5 cây - Chì hàn: 0.5 m - Điện trở 330: 16 con - Led 7 đoạn AC: 2 cái P2.[0..7] P0.[0..7] P1.[0..7] P3.[0..7] P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.3 P2.0 P2.1 P2.2 P2.4 P2.5 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 330R +5V 330R +5V
  • 77. XỬ LÝ 71 | P a g e BÀI 5.3 MẠCH ĐIỀU KHIỂN LED MA TRẬN I. Mục đích yêu cầu - Ứng dụng được vi điều khiển để điều khiển 1 led ma trận 8x8 theo các bài đã học. - Mở rộng sáng tạo thêm các ứng dụng khác theo tư duy cá nhân. - Thiết kế và thi công thành mạch ứng dụng hoàn chỉnh. II. Sơ đồ nguyên lý III. Danh mục linh kiện vật tư cần - Mạch in hoặc testboard hàn 6 x 10 cm: 1 miếng - Chip 89S52: 1 con - Thạch anh 12MHz: 1 con - Tụ điện 33p: 2 con - Tụ điện 104: 1 con - Dây bus 8: 1 sợi - Pinhead: 0.5 cây - Chì hàn: 0.5 m - Điện trở 150: 16 con - Led ma trận 8x8 2 màu: 1 cái - IC 5B595: 2 con - IC TD 62783: 2 con AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 Q0 15 Q1 1 Q2 2 Q3 3 Q4 4 Q5 5 Q6 6 Q7 7 Q7' 9 SH_CP 11 ST_CP 12 DS 14 MR 10 OE 13 Clk Din_D ST CLR OE Q0 15 Q1 1 Q2 2 Q3 3 Q4 4 Q5 5 Q6 6 Q7 7 Q7' 9 SH_CP 11 ST_CP 12 DS 14 MR 10 OE 13 OE CLR CLK DIN_X ST XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 Din_D Din_X Clk OE ST CLR
  • 78. XỬ LÝ 72 | P a g e BÀI 5.4 MẠCH QUÉT PHÍM MA TRẬN HIỂN THỊ TRÊN LED 7 ĐOẠN I. Mục đích yêu cầu - Ứng dụng được vi điều khiển để điều khiển quét phím ma trận hiển thị trên 1 led 7 đoạn theo các bài đã học. - Mở rộng sáng tạo thêm các ứng dụng khác theo tư duy cá nhân. - Thiết kế và thi công thành mạch ứng dụng hoàn chỉnh. II. Sơ đồ nguyên lý III. Danh mục linh kiện vật tư cần - Mạch in hoặc testboard hàn 6 x 10 cm: 1 miếng - Chip 89S52: 1 con - Thạch anh 12MHz: 1 con - Tụ điện 33p: 2 con - Tụ điện 104: 1 con - Dây bus 8: 1 sợi - Pinhead: 0.5 cây - Chì hàn: 0.5 m - Điện trở 330: 8 con - Led 7 đoạn AC: 1 cái - Nút nhấn 5x5x6: 8 cái P2.[0..7] P0.[0..7] P3.[0..7] P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.3 P2.0 P2.1 P2.2 P2.4 P2.5 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 330R +5V C0 C1 C2 C3 H0 H1 H2 H3 C0 C1 C2 C3 H3 H2 H1 H0
  • 79. XỬ LÝ 73 | P a g e BÀI 5.5 MẠCH ĐIỀU KHIỂN ĐÈN GIAO THÔNG I. Mục đích yêu cầu - Ứng dụng được vi điều khiển để điều khiển đèn giao thông có số đếm ngược theo các bài đã học. - Mở rộng sáng tạo thêm các ứng dụng khác theo tư duy cá nhân. - Thiết kế và thi công thành mạch ứng dụng hoàn chỉnh. II. Sơ đồ nguyên lý III. Danh mục linh kiện vật tư cần - Mạch in hoặc testboard hàn 6 x 10 cm: 1 miếng - Chip 89S52: 1 con - Thạch anh 12MHz: 1 con - Tụ điện 33p: 2 con - Tụ điện 104: 1 con - Dây bus 8: 1 sợi - Pinhead: 0.5 cây - Chì hàn: 0.5 m - Điện trở 330: 22 con - Led 7 đoạn AC: 2 cái - Led đơn 5 mm: 6 cái P2.[0..7] P0.[0..7] P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.3 P2.0 P2.1 P2.2 P2.4 P2.5 P2.6 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.5 P2.4 P2.3 P2.0 P2.1 P2.2 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 A0 2 B0 18 A1 3 B1 17 A2 4 B2 16 A3 5 B3 15 A4 6 B4 14 A5 7 B5 13 A6 8 B6 12 A7 9 B7 11 CE 19 AB/BA 1 U2 74HC245 X1 V1 D1 X2 V2 D2 QD1 QD2
  • 80. XỬ LÝ 74 | P a g e Phụ lục 1: HƯỚNG DẪN MÔ PHỎNG BẰNG PROTEUS 1. Tạo file ASM mới 1.1. Mở file mô phỏng trong thư mục TN VI XU LY 1.2. Vào Menu > Source > Add/Remove Source files… 1.3. Trong mục Source Code Filename nhấn Remove để xoá những source code cũ. 1.4. Trong mục Code Generation Tool chọn ASEM51 là công cụ để biên dịch từ file .ASM sang file .HEX 1.5. Trong mục Source Code Filename nhấn Open để mở file .ASM có sẵn hoặc tạo file mới.
  • 81. XỬ LÝ 75 | P a g e 1.6. Đầu tiên, các bạn tạo file mới tên Vidu1 và lưu trong thư mục của nhóm . Thư mục này các bạn đặt trong ổ đĩa D, tên thư mục là tên lớp và tên nhóm. Ví dụ tên thư mục: D:DH14DD_NHOM1. 1.7. Nhấn OK để thoát ra. 2. Soạn thảo chương trình 2.1. Vào Menu > Source chọn file Vidu1.ASM cửa sổ soạn thảo chương trình sẽ mở ra. 2.2. Nhập vào đoạn chương trình như sau: org 0000h ;bat dau chuong trinh rep: mov p0,

    00000000b lcall delay mov p0,

    11111111b lcall delay sjmp rep delay: mov r6,

    0ffh del: mov r7,

    0ffh djnz r7,$ djnz r6,del ret end ;ket thuc chuong trinh 2.3. Chương trình được viết thành 4 cột, mỗi cột cách nhau bởi khoảng cách Tab. - Cột thứ 1 để ghi các nhãn. Ví dụ : rep, delay, del, … - Cột 2 để ghi lệnh. Ví dụ: mov, lcall, sjmp, … - Cột 3 để ghi toán hạng . Ví dụ: p0,

    0000000b …

  • 82. XỬ LÝ 76 | P a g e - Cột 4 để ghi chú nếu cần. Tất cả các phần ghi sau dấu chấm phẩy được xem là ghi chú và trình biên dịch sẽ bỏ qua. 2.4. Sau khi viết chương trình xong, bấn Ctrl + S hoặc nhấn nút SAVE để lưu lại. 3. Biên dịch 3.1. Vào Menu > Build All để biên dịch chương trình sang file .HEX 3.2. Khi biên dịch thành công sẽ xuất hiện thông báo sau: 3.3. Nếu chương trình bị lỗi sẽ xuất hiện thông báo ở những dòng bị lỗi, cần sửa và biên dịch lại. 3.4. Sauk hi biên dịch thành công sẽ xuất hiện file Vidu1.HEX trong cùng thư mục với file Vidu1.ASM. File này dùng để nạp xuống vi điều khiển hoặc dùng để mô phỏng. 4. Mô phỏng 4.1. Nhấp đúp vào ic 89C52 trong cửa sổ của Proteus, cửa sổ Edit Component xuất hiện. 4.2. Trong mục Program File mở file Vidu1.HEX để mô phỏng.
  • 83. XỬ LÝ 77 | P a g e 4.3. Mục Clock Frequency đặt 12MHz. 4.4. Nhấn OK để thoát ra. 4.5. Nhấn nút PLAY để chạy mô phỏng. 4.6. Có thể mô phỏng từng bước bằng cách nhấn vào nút STEP. Cửa sổ mô phòng theo step xuất hiện. 4.7. Có thể kết hợp với cửa sổ CPU Register và CPU SFR Memory trong Menu Debug để có thể quan sát trạng thái từng thanh ghi hoặc ô nhớ trong bộ nhớ khi chương trình chạy. 4.8. Nút STOP để dừng mô phỏng.
  • 84. XỬ LÝ 78 | P a g e Phụ lục 2: HƯỚNG DẪN NẠP CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN Có nhiều phần mềm nạp cho Vi điều khiển họ 8051 ứng với từng mạch nạp khác nhau. Ở đây chúng ta sử dụng 2 loại mạch nạp sau: 1. Mạch nạp 89S ISP PRO 1.1Mở phần mềm nạp ISP_PROG v1.4 trên destop. 1.2Vào Menu Option > Setting. Trong cửa sổ Setting chọn PORT đang kết nối mạch nạp. Nhấn OK để thoát. (Phần này chỉ cài đặt lần đầu hoặc khi cắm mạch nạp qua cổng USB khác). Chú ý: khi không kết nối được cần tắt chương trình nạp, rút dây usb rồi cắm lại và chạy lại chương trình. 1.3Vào Menu Option > Devive. Trong cửa sổ Select Device chọn AT89S51 hoặc AT89S51 theo chip lắp đặt trên Kit. Nhấn OK để thoát. (Phần này chỉ cài đặt lần đầu hoặc khi đổi chip loại khác). 1.4Chọn mục CHIP ERASE và WRITE FLASH như hình.
  • 85. XỬ LÝ 79 | P a g e 1.5 Vào Menu File > Load Flash để chọn file HEX cần nạp. 1.6 Sau khi đã load file HEX, chỉ cần nhấn để nạp xuống vi điều khiển. Chú ý là nguồn của Kit phải bật và đã kết nối cáp giữa mạch nạp và Kit. Sau khi nạp xong, chương trình sẽ được chạy ngay trên Kit. 2. Mạch nạp SP200S Enhanced Programmer 2.1Mở phần mềm nạp WLPRO V2.20 trên destop. 2.2Vào Menu Device > Select Device để mở cửa sổ Select Device. 2.3Chọn chip AT89S51@ISP hoặc AT89S52@ISP tùy theo chip đang được lắp trên kit. Sau đó nhấn OK để thoát (Phần này chỉ cài đặt lần đầu hoặc khi đổi chip loại khác).