Tìm hiểu vi điều khiển

Viết cho các Bạn mới làm quen với ic vi điều khiển, họ AT89C51, ic làm việc theo câu lệnh.

IC vi điều khiển là gì?

Trước hết hãy làm quen với khái niệm điều khiển trong ngành điện tử. Điều khiển là dùng mức áp cao hay thấp để đóng mở một thiết bị. Bạn xem thí dụ sau:

 

docx59 trang | Chia sẻ: Mr Hưng | Lượt xem: 912 | Lượt tải: 2download
Bạn đang xem trước 20 trang nội dung tài liệu Tìm hiểu vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thấp thì lúc này cathode của 8 Led xanh ở cột 2 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 2.  Khi chân số 18 cho xuống mức áp thấp thì lúc này cathode của 8 Led đỏ ở cột 3 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led đỏ ở cột 3. Khi chân số 17 cho xuống mức áp thấp thì lúc này cathode của 8 Led xanh ở cột 3 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 3.  Khi chân số 16 cho xuống mức áp thấp thì lúc này cathode của 8 Led đỏ ở cột 4 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác đinh trạng thái sáng tắt của 8 Led đỏ ở cột 4. Khi chân số 15 cho xuống mức áp thấp thì lúc này cathode của 8 Led xanh ở cột 4 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 4.  Khi chân số 1 cho xuống mức áp thấp thì lúc này cathode của 8 Led đỏ ở cột 5 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led đỏ ở cột 5. Khi chân số 2 cho xuống mức áp thấp thì lúc này cathode của 8 Led xanh ở cột 5 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 5. Khi chân số 4 cho xuống mức áp thấp thì lúc này cathode của 8 Led đỏ ở cột 6 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led đỏ ở cột 6.  Khi chân số 5 cho xuống mức áp thấp thì lúc này cathode của 8 Led xanh ở cột 6 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 6. Khi chân số 7 cho xuống mức áp thấp thì lúc này cathode của 8 Led đỏ ở cột 7 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led đỏ ở cột 7. Khi chân số 8 cho xuống mức áp thấp thì lúc này cathode của 8 Led xanh ở cột 7 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 7.  Khi chân số 9 cho xuống mức áp thấp thì lúc này cathode của 8 Led đỏ ở cột 8 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led đỏ ở cột 8.  Khi chân số 10 cho xuống mức áp thấp thì lúc này cathode của 8 Led xanh ở cột 8 sẽ cho nối masse, lúc này 8 bit cho ra trên 8 chân 22, 19, 16, 13, 3, 6, 9, 12 sẽ xác định trạng thái sáng tắt của 8 Led xanh ở cột 8.   (4) Thực hành với bàn phím ma trận 4x4. Trên bo test đặt 16 phím nhấn dùng ma trận 4x4, như vậy mạch dùng 8 dây. trong đó có 4 dây cho treo lên mức áp cao với một thanh điện trở. Sơ đồ mạch điện như hình vẽ: mạch điện cho thấy, trên ma trận 4x4 có 16 phím nhấn. Ở đây Bạn có thể cho bộ kết nối J27 nối vào port 1. Bạn sẽ viết một chương trình để vận hành 16 phím này, Bạn có thể qui định một phím sẽ cho chạy một chương trình đã chọn định trước. Bạn xem sơ đồ mạch điện: Bạn dùng các đường trên các chân p1.0, p1.1, p1.2, p1.3 làm các hàng (row). Trong lập trình bàn phím, các hàng cho là ngả vào, vậy bình thường cho ở mức “0”. Dùng các chân p1.4, p1.5, p1.6 và p1.7 làm các cột (column). Trong lập trình bàn phím, các cột cho là ngả ra, vậy bình thường cho ở mức “1”. Mã quét bàn phím sẽ cho tìm bit “0” trên các cột, chúng ta biết, khi có một phím nhấn xuống thì lúc này sẽ xuất hiện bit “0” trên các cột. Chương trình sẽ chuyển qua cho quét tìm phím nhấn, sau đó nhẩy đến chương trình con của phím và cho chạy chương trình này. (5) Thực hành với khối biến đổi A/D. Chúng ta biết, tín hiệu trong thế giới tự nhiên thường ở dạng analog (tín hiệu analog lấy mức volt để chỉ trạng thái khác nhau của tín hiệu), như nhiệt độ, sức gió, âm thanhTrong khi đó, các ic vi điều khiển (cũng như các ic vi xử lý) chỉ làm việc với tín hiệu dạng số (digital, tín hiệu digital còn gọi là tín hiệu bit, nó lấy mức áp cao thấp để chỉ trạng thái khác nhau của tín hiệu). Bài thực hành này dùng chuyển đổi tín hiệu dạng analog (có trong thế giới tự nhiên) ra dạng digital (được dùng trong các mạch điện máy tính). Mạch  ADC dùng ic ADC0809. Bạn xem sơ đồ mạch điện: IC ADC0809 có 8 ngả vào trên các chân in0, in1, in2, in3, in4, in5, in6, in7. Việc xác định chân vào sẽ tùy theo cách đặt bit trên các chân a0, a1, a2.  Thí dụ: với a0=0, a1=0 và a2=0, Bạn đã chọn ngả vào là chân in0 (chân 26). Việc lấy mẫu chuyển mức áp dạng analog ở ngả vào ra dạng bit cho ra trên các chân d0, d1, d2, d3, d4, d5, d6, d7 (8 bit). Xung lấy mẫu đưa vào trên chân 10, nó được tạo ra với mạch dao động 7414 (IC05F), tần số xung lấy theo trị số R70 (1K) và tụ C4 (102), IC05E làm chức năng khuếch đại trigger. mức áp chuẩn dùng xác định độ phân giải sẽ tùy theo điện áp DC đưa vào trên chân 12 (+Reference) và trên chân 16 (-Reference). Chân 22 (ALE, address latch enable) dùng chốt dữ liệu trong thanh ghi. Chân 6 (Start) cho bắt đầu lấy mẫu. Chân 7 (EOC, end of conversion), tín hiệu báo kết thúc qui trình chuyển đổi. Chân 9 (OE, output enable), cho xuất dữ liệu 8 bit ra. (6) Thực hành với khối biến đổi D/A. Chúng ta biết các tín hiệu làm việc trong các ic vi điều khiển, vi xử lý đều để ở dạng bit, nghĩa là tín hiệu chỉ xác lập theo mức áp cao hay thấp, tín hiệu này được gọi là tín hiệu dạng digital. Trong khi đó, trong thế giới thật, chúng ta thường làm việc với các tín hiệu dạng analog. Do vậy, muốn sử dụng được các tín hiệu có trong các máy tính, chúng ta phải dùng mạch biến đổi tín hiệu, đổi dạng digital ra dạng analog. Ở đây, mạch thực hành gọi là mạch Analog output. Bạn xem sơ đồ mạch điện: Mạch dùng ic DAC0808. Tín hiệu vào dạng digital trên các chân a1, a2, a3, a4, a5, a6, a7, a8. Tín hiệu này sau khi chuyển xong sẽ cho ra trên hai đường. Đường 4 (IOUT) và đường 2 (IOUT đảo). Tín hiệu ra trên chân 4 cho qua một tầng khuếch đại op-amp với ic LM741, sau cùng tín hiệu dạng analog sẽ cho ra trên chân 6 của LM741. Mức áp chuẩn (Voltage reference) đưa vào trên chân 14 (Vr+) và chân 15 (Vr-). Chân số 16 mắc tụ bù 0.1uf. Loại mạch này cần nguồn nuôi hai dấu. V+ trên chân 13 và V- trên chân 3, Bạn cho cấp điện"5V trên chân cắm J32 và J31. Với ic LM741, Bạn cấp nguồn "5V trên chân JP29. (7) Thực hành với khối khuếch đại đệm với ULN2803A. Trên bo thực hành có trang bị mạch khuếch đại đệm dùng tăng công suất tín hiệu kết nối. Sơ đồ mạch điện như hình vẽ (Bạn xem hình chụp mạch khuếch đại đệm trên bo thực hành).  IC ULN2803A dùng khuếch đại tín hiệu ra cho các port của ic vi điều khiển AT89c51.  Sơ đồ đẳng hiệu của một tầng khuếch đại trong ic ULN2803Acho thấy: mạch dùng 2 transistor npn, ghép dạng phức hợp (còn gọi là ghép darlington). Tín hiệu lấy ra trên chân C của Q2, và chân C để hở nên ngả ra của tầng khuếch đại này có thể cho kết hợp với các loại tải Volt cao, như  relay 12V, motor  DC12Vngười ta dùng các diode zener để ghim mức áp ngả vào, ngả ra. Các điện trở trên chân B-E có công dụng làm tăng độ ổn định nhiệt. Điện trở 2.7K dùng hạn dòng cho chân B, diode nối vào đường nguồn Vcc có tác dụng hạn biên, giữ cho mức áp trên chân C không lên cao hơn mức áp của nguồn. Giới thiệu một phần mềm soạn thảo để gõ chương trình nguồn  và biên dịch file .asm ra file mã (file có họ .hex). Sau khi đã có bo thực hành (Xem phần trình bày trên), bây giờ Bạn phải làm quen với một phần mềm dùng soạn các chương trình nguồn, các file này lấy họ là .asm. Ở đây, chúng tôi giới thiệu Bạn dùng phần mềm miễm phí MIDE-51. Tiêu hình của MIDE-51 như hình sau. Khi kích chuột trên tiêu hình này, nó mở ra một giao diện như hình sau: Bây giờ Bạn sẽ gõ hay dán các câu lệnh vào vùng soạn thảo của nó. Tôi làm một thí dụ: Tôi sẽ cắt một chương trình đã có và cho dán vào MIDE-51 rồi cho chép lại với một tên file lấy họ là .asm và sau đó cho dịch file nguồn ra file mã 16 với họ là .hex. Chúng ta thử soạn một chương trình nguồn đơn giản, làm công việc tắt mở 8 Led trên cảng p1. Chương trình nguồn sẽ được viết như sau: org 0000h start:       mov p1, #00000000b       call delay       mov p1, #11111111b       call delay       jmp start delay:            mov r7, #20 v6: mov r6, #50 v5: mov r5, #200       djnz r5, $       djnz r6, v5       djnz r7, v6       ret end Đoạn chương trình nguồn trên đã được gõ trong vùng soạn thảo của MIDE-51 và nó được chép lại với tên file là thi-du-1.asm Khi gõ xong, Bạn mở cửa sổ Build và chọn mục Build (hay lúc nào cần biên dịch thì gõ phím nóng F9) chương trình nguồn thi-du-1.asm sẽ được biên dịch ra file mã Code. MIDE-51 dịch xong và báo không thầy lỗi. Bạn xem câu báo ở phần dưới "no errors". Lúc này trên thư mục của file thi-du-1.asm đã có file thi-du-1.hex. Đó chính là file mã Code của chương trình nguồn trên. File thi-du-1.hex có nội dung như sau: :1000000075900012000E7590FF12000E80F27F14A2 :0B0010007E327DC8DDFEDEFADFF62246 :00000001FF Phân tích file mã Code thi-du-1.hex, Bạn sẽ thấy: :10000000---759000---12000E---7590FF---12000E---80F2 ---7F14---A2 :0B001000---7E32---7DC8---DDFE---DEFA---DFF6---22---46 :00000001FF org 0000h start:       mov p1, #00000000b         Có mã Colde là: 759000       call delay                              Có mã Colde là: 12000E       mov p1, #11111111b         Có mã Colde là:  7590FF       call delay                               Có mã Colde là: 12000E       jmp start                                Có mã Colde là:  80F2 delay:             mov r7, #20                          Có mã Colde là:  7F14 v6: mov r6, #50                          Có mã Colde là:  7E32 v5: mov r5, #200                        Có mã Colde là:  7DC8       djnz r5, $                               Có mã Colde là:  DDFE       djnz r6, v5                             Có mã Colde là:  DEFA       djnz r7, v6                             Có mã Colde là:  DFF6       ret                                          Có mã Colde là:  22 end Nếu Bạn xem các câu lệnh ở phần phụ lục, Bạn sẽ thấy phần số ghi đậm trên chính là mã Code của các câu lệnh mà Bạn đã gõ trong chương trình nguồn. Các mã Code (dạng mã 16) này sẽ được cho đổi ra dạng nhị phân và rồi sẽ cho nạp vào bộ nhớ EEP-ROM của ic vi điều khiển AT89C51. Làm đến đây xem như công việc đã hoàn tất, Bạn gắn ic AT89C51 vào bo thực hành để thử, Bạn sẽ thấy 8 Led trên cảng p1 sẽ nhấp nháy (như hình). Dùng lệnh mov p1, #data, Bạn có thể điều khiển 8 Led trên port 1 sáng theo ý của Bạn. Bạn xem tác dụng của lệnh move trên cảng p1 như hình sau: Dùng lệnh quay trái: rl a (Rotate Left a), kết quả cho chuyển ra cảng p1.  Đến đây, chúng ta đã có thể viết các chương trình nguồn phức tạp hơn...Phải không? Vấn đề hộp nạp các mã Code vào bộ nhớ EEP-ROM của các ic vi điều khiển Bạn vào đọc bài: Giới thiệu cách dùng hộp nạp ic vi điều khiển TOP853 Bạn muốn dùng các câu lệnh để điều khiển các thiết bị tự động, các bảng đèn quảng cáo, hay các robot...Trước hết Bạn hãy viết ra các câu lệnh rồi cho chuyển đổi ra dạng mã và bây giờ dùng hộp nạp TOP853 để nạp các câu lệnh này vào bộ nhớ EEPROM. Sau khi đã làm xong các công việc trên, xem như Bạn đã có một ic luôn trung thành với các sai bảo của Bạn. Thích không? Hãy vào đọc bài này để biết cách làm nhé....(Click vào đây để xem) Cú pháp để viết 254 câu lệnh được liệt kê ra trong các bảng sau  (theo trình tự mã Code):

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

  • docxviet_cho_cac_ban_moi_lam_quen_voi_ic_vi_dieu_khien_568.docx