cách ứng dụng vi điều khiển

16 646 2
cách ứng dụng vi điều khiển

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

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

Thông tin tài liệu

các bài toán ứng dụng vi điều khiển

Rất vui khi thấy Bạn vào xem Phần dẫn nhập. Có một Bạn viết e-mail cho tôi với câu hỏi như sau: Kinh chao thay Hung ! Em la giao sinh moi ra truong, hien dang di day hoc cho cac em hoc sinh Tieu hoc, trong qua trinh day hoc em rat thich cho cac em choi tro choi do em co su dung mach nhan chuong uu tien nhung mach chuong hien tai chi co the su dung duoc cho toi da la 4 doi nhung lop hoc cua em lai can den 8 doi hoac nhieu hon nua. Thay co the tang em chuong trình hoac huong dan em cach viet chuong trinh nay duoc khong ? Em dang su dung bi vi dieu khien AT89C2951. Cam on thay rat nhieu ! Đặc tính của một mạch điện “Đố vui để học”, là: * Theo giả định của tôi là: Trên mỗi bàn có một nút nhấn (có thể mắc song song 3 nút nhấn cho 3 người cùng bàn). * Khi nghe xong câu hỏi thì người điều khiển chương trình sẽ nhấn nút “Bắt đầu”. * Lúc này, các em sẽ suy nghĩ và khi ai có câu trả lời thì nhấn nút “Trả lời”. * Ở đây có 8 nút nhấn chính. Khi một nút đã nhấn thì tất cả các nút còn lại sẽ không còn tác dụng. * Trên bảng đèn sẽ có đèn báo “Bắt đầu”, nó sáng ngay khi người điều khiển chương trình nhấn nút Reset. Và khi đã có nút nhấn trả lời thì đèn báo “Bắt đầu” sẽ tắt và lúc này một đèn báo “Đang trả lời sẽ nhấp nháy (có thể cho kèm tiếng nhịp)”. Và lúc đang trả lời sẽ có một đèn sáng liên tục xác nhận mạch đang ở “trạng thái trả lời”. * Muốn trở lại trạng thái đầu cho câu hỏi kế tiếp, người điều khiển chỉ cần nhấn nút Reset. Dĩ nhiên phần trên đây là các đặc tính mà tôi tự đặt ra và vựa vào đó để thiết kế phần cứng và rồi sẽ viết chương trình nguồn cho mạch điện này. Tôi nghĩ sau khi Bạn đã hiểu rõ công việc thiết kế loại mạch này rồi, Bạn sẽ tự có thể viết các chương trình nguồn khác, nó sẽ thực hiện theo đúng các ý muốn của Bạn. Sơ đồ mạch điện mẫu (tôi vẽ trong OrCAD và tô màu trong trình Paint). Phân tích sơ đồ mạch điện: Khi dùng ic vi điều khiển AT89C2051, mạch điện cơ bản sẽ gồm các phần sau: * Phần cấp nguồn: Dùng ic ổn áp 3 chân 7805 để có nguồn 5V ổn định cấp cho chân số 20 và chân số 10 cho nối masse để lấy dòng (Dòng điện tử chảy vào ic qua chân số 10 và ra trên chân số 20). Ở đây dùng Led D1 làm Led báo nguồn. mạch làm việc với mức nguồn ngả vào là 12V. Nguồn 12V còn được dùng để cấp điện cho các relay. Chúng ta dùng 3 relay và dùng các tiếp điểm lá kim K1, K2, K3 của các relay này để điều khiển các bóng đèn điện hay chuông báo. * Phần mạch Reset. Tác dụng Reset khi chân số 1 ở mức áp cao. Khi mạch được cấp nguồn, tụ C5 (10uF) sẽ nạp điện, dòng nạo chảy qua điện trở R1 (10K), nó kéo chân số 1 lên mức áp cao và chương trình sẽ quay về thanh nhớ 0000h (đó là vị trí khỏi đầu của tác dụng reset). Chỉ sau một lúc tụ C5 sẽ nạp đầy mức nguồn, chân 1 được trả về mức áp thấp và ic vi điều khiển bắt đầu chạy chương trình có trong bộ nhớ EEP-ROM. Trong mạch chúng ta dùng nút nhấn reset để đưa chương trình trở lại trạng thái khởi đầu. * Phần định tần cho mạch dao động tạo xung nhịp. Xung nhịp được định tần theo thạch anh gắn trên chân 4 và chân 5. Với thạch anh 12MHz, tần số xung nhịp sẽ là 1MHz và chu kỳ lệnh sẽ là 1us. Các tụ nhỏ C6, C7 có tác dụng bù nhiệt ổn tần. * 8 Nút nhấn gắn trên port 1 và chúng ta dùng chân p3.0 điều khiển relay 3, chân p3.1 điều khiển relay 2 và chân p3.2 điều khiển relay 1. Cách viết chương trình nguồn: org 0000h mov p3, #00000001b ; Đặt 7 chân của p3 xuống mức áp thấp, chân p3.0 ở mức 1, relay 3 đóng. call del ; Chờ một lúc cho ổn định. q1: ; Viết cho phím S1 jb p1.0, q2 ; Chờ phím S1 nhấn xuống, chưa nhấn thì qua kiểm tra phím S2 call del ; tránh hiện tượng rung phím làm kết quả sai jb p1.0, $ ; kiểm tra lần nữa phím S1cho chắc chắn jmp ctr_1 ; Vào chương trình điều khiển các đèn báo q2: ; Viết cho phím S2 jb p1.1, q3 call del jb p1.1, $ jmp ctr_1 q3: ; Viết cho phím S3 jb p1.2, q4 call del jb p1.2, $ jmp ctr_1 q4: ; Viết cho phím S4 jb p1.3, q5 call del jb p1.3, $ jmp ctr_1 q5: ; Viết cho phím S5 jb p1.4, q6 call del jb p1.4, $ jmp ctr_1 q6: ; Viết cho phím S6 jb p1.5, q7 call del jb p1.5, $ jmp ctr_1 q7: ; Viết cho phím S7 jb p1.6, q8 call del jb p1.6, $ jmp ctr_1 q8: ; Viết cho phím S8 jb p1.7, q1 call del jb p1.7, $ jmp ctr_1 ctr_1: mov p3, #00000110b ; Tắt relay 3, mở relay 2 và mở relay 1 call delay ; Chương trình làm chậm mov p3, #00000100b ; Tắt relay 3, tắt relay 2 và mở relay 1 call delay ; Chương trình làm chậm jmp ctr_1 ; Tiếp tục chương trình 1 del: ; Chương trình trể dùng tánh hiện tượng rung phím. mov r7, #30 v6: mov r6, #100 djnz r6, $ djnz r7, v6 ret delay: ; Chương trình trễ tạo nhịp nhấp nháy. mov r5, #250 tt: call del djnz r5, tt ret end Sau khi đã có file nguồn, lấy họ là .asm, Bạn cho chuyển vào trình M-IDE để biên dịch ra file có họ là .hex. Bạn xem, tôi cắt các câu lệnh trên và dán vào cửa sổ của trình MIDE, rồi chọn mục Build và trong cửa sổ Build lại chọn mục Build lần nữa để cho biên dịch ra file .hex (Khi có file nguồn trong MIDE, Bạn nhấn phím F9 để cho dịch ra file .hex cũng được). Kết quả trong thư mục của file 8-nut.asm (file nguồn), Bạn thấy xuất hiện file 8-nut.hex (file mã). Bây giờ Bạn dùng hộp nạp cho nạp file này vào ic vi điều khiển AT89C2051 là xong chuyện. Đây là file văn bản của file 8-nut.hex (Nếu như Bạn không có trình biên dịch MIDE, Bạn có thể dùng các mã này bằng cách cắt lấy, rồi tạo ra file lấy họ là .hex và dùng hộp nạp cho nạp vào ic AT89C2051 cũng được). :1000000075B0011200742090091200742090FD0256 :1000100000662091091200742091FD020066209272 :10002000091200742092FD020066209309120074E8 :100030002093FD0200662094091200742094FD02B2 :1000400000662095091200742095FD020066209636 :10005000091200742096FD0200662097A912007410 :100060002097FD02006675B00612007D75B004127F :10007000007D80F27F1E7E64DEFEDFFA227DFA11B3 :0400800074DDFC220D :00000001FF Về cách dùng hộp nạp các file .hex cho các bộ nhớ EEP- ROM trong các ic vi điều khiển, Bạn tham khảo bài viết sau: http://phuclanshop.com/TraoDoiHocTap-ChiTiet.aspx?NewsId=80 Phân tích các câu lệnh trong chường trình nguồn: Mới vào Bạn phải dùng câu lệnh: mov p3, #00000001b Với câu lệnh này, chỉ có chân p3.0 (tức chân số 2 của ic) là ở mức áp cao, vậy transistor Q3 sẽ bão hòa , nó cấp dòng cho relay 3 và relay này đóng tiếp điểm lá kim K3. Trên tiếp điểm này Bạn gắn một bóng điện, bóng điện sẽ phát sáng, nó cho biết là lúc này 8 nút nhấn đã được kích hoạt, tứ cho quyền nhấn. Khi relay 3 được cấp nguồn, Led chỉ thị D4 cũng sẽ phát sáng. Do các chân p3.1 (chúng ta dùng đóng mở relay 2), và chân p3.2 (chúng ta dùng đóng mở relay 1) đều cho ở mức áp thấp nên các transistor Q2, Q1 đều ngưng dẫn. Trong mạch các điện trở 2.2K dùng hạn dòng chân B. các Led D2, D3, D4 dùng chỉ thị trạng thái của relay. Ở mỗi Led phải có điện trở hạn dòng 560 ohm. Chúng ta không cần dùng câu lệnh: mov p1, #11111111b hay: mov p1, #0ffh để đặt 8 chân của port1 lên mức áp cao, sau lệnh reset, các chân port1 đều đã cho ở mức áp cao. Vậy khi mới vào chúng ta sẽ viết: org 0000h ; Cho khởi đầu từ thanh nhớ có địa chỉ là 0000h mov p3, #00000001b ; Đặt 7 chân của p3 xuống mức áp thấp, chân p3.0 ở mức 1, relay 3 đóng. call del ; Chờ một lúc cho ổn định. (Trên đây là các câu lệnh mở đầu) [...]... Mở rộng: Muốn tăng số phím nhấn và vi t chương trình điều khiển phức tạp hơn Bạn có thể dùng ic vi điều khiển AT89C51 Với 4 port 32 chân, vi c gắn các nút nhấn tất nhiên sẽ nhiều hơn và cách hiển thị sẽ hấp dẫn hơn Sau đây là một sơ đồ phát thảo dùng ic vi điều khiển AT89C51, chỉ là một gợi ý: Giải thích sơ đồ mạch điện: Sơ đồ mạch điện cho thấy cách dùng ic vi điều khiển AT89C51 làm mạch “Đố vui để... mới Cho đến hôm nay thì các kiểu mạch điện tử ráp theo cách xưa rất khó đáp ứng được với cách yêu cầu thực tế luôn cần phải nâng cấp, do đó Bạn phải làm quen với các kiểu mạch điện vi điều khiển, đặc điểm của loại mạch dùng ic vi điểu khiển là cấu trúc phần cứng đơn giản, ít thay đổi, nhưng công năng của nó có thể thay đổi dễ dàng, mở rộng ứng dụng bằng các phần mềm, tức thay đổi hay thêm vào các chức... lệnh nhẩy theo bit cao trên các chân của port1 Các câu lệnh được vi t như sau: q1: ; Vi t cho phím S1 jb p1.0, q2 ; Chờ phím S1 nhấn xuống, chưa nhấn thì qua kiểm tra phím S2 call del jb p1.0, $ mức áp thấp jmp ctr_1 ; tránh hiện tượng rung phím làm kết quả sai ; kiểm tra lần nữa phím S1cho chắc chắn, nó phải ở ; Vào chương trình điều khiển các đèn báo Giải thích các câu lệnh trên: q1: ; Đây là tên... chương trình ctr_1, thì Bạn thêm vào câu lệnh: jnb p1.0, $ ; lúc này người chơi phải bỏ phím nhấn mới vào cuộc chơi jmp ctr_1 ; Đến đây chương trình sẽ nhẩy vào đoạn điều khiển các đèn báo, có tên nhãn là ctr_1 Giải thích đoạn chương trình điều khiển các đèn báo: ctr_1: mov p3, #00000110b call delay mov p3, #00000100b call delay ; Tắt relay 3, mở relay 2 và mở relay 1 ; Chương trình làm chậm ; Tắt relay... (mà không phải đụng đến phần cứng) Trong các bài vi t sau này, tôi sẽ thường xuyên trình bày cách thiết kế và lắp ráp các kiểu mạch điện này, mong Bạn vào đọc Nhắn với các Bạn gửi e-mail về cho Vương Khánh Hưng Người soạn rất vui khi nhận và xem các thư e-mail của nhiều Bạn, qua các điện thư này, biết được các yêu cầu, ý muốn của Bạn qua đó để định hướng cho các bài vi t trong trang web phuclanshop.com... hay jnb (jump nobit) để vi t chương trình dò phím, dùng để phát hiện ra vị trí của các phím đã nhấn Trên port 0 và port 2 dùng làm bảng đèn số để hiển thị con số thứ tự mà phím đã nhấn Thí dụ: như khi phím 5 nhấn thì trên bảng đèn sẽ hiện ra con số 5… Sau đó bảng đèn sẽ chuyển qua làm nhiệm vụ của một đồng hồ đếm thời gian Chúng ta dùng các chân còn lại của port 2 để điều khiển các relay (relay 1... nhấp nháy sẽ chuyển qua sáng liên tục, mạch chuông sẽ báo nhịp và bảng đèn Led 7 đoạn chuyển qua làm công vi c đếm thời gian Khi nào trả lời xong, muốn trở lại trạng thái khởi đầu thì nhấn nút Start Trên đây là một mạch điện gợi ý mà tôi phát thảo ra để các Bạn góp ý và nếu thấy thích thì thử vi t chương trình nguồn cho mạch điện này Khi có thời gian rảnh tôi sẽ trở lại chuyên đề này Chào Bạn nhé!... đang muốn biết để trả lời bằng các bài vi t trên trang web này, mong Bạn thông cảm khi không nhận được các thư hồi âm riêng biệt Sau cùng, cũng thật tình tâm sự với Bạn, người soạn trình độ có hạn, hiểu biết có khi cũ kỷ nên còn nhiều vấn đề còn rất mù mờ, như vậy rất khó tránh "là khi nói nhiều dễ sai, nói thiếu", rất mong được các Bạn thông cảm và chân tình vi t thư chỉ bảo Đa tạ, xin đa tạ N ... câu lệnh trên: q1: ; Đây là tên nhãn của phím S1 jb p1.0, q2 ; Nếu phím S1 trên chân p1.0 ở mức áp cao (chưa nhấn) thì nhẩy qua tên nhãn q2 dò phím S2 call del ; cho trễ một chút để tránh ảnh hưởng của vi c rung phím Khi Bạn nhấn phím xuống, mặt tiếp xúc sẽ rung và ạo ra hiện tượng lúc dính lúc không, phải chờ sau một thời gian mới chắc chắn là nó đã dính jb p1.0, $ ; Đến đây nếu phím S1 còn ở mức áp . điều khiển, Bạn tham khảo bài viết sau: http://phuclanshop.com/TraoDoiHocTap-ChiTiet.aspx?NewsId=80 Phân tích các câu lệnh trong chường trình nguồn:

Ngày đăng: 13/03/2014, 23:57

Hình ảnh liên quan

* Trên bảng đèn sẽ có đèn báo “Bắt đầu”, nó sáng ngay khi người điều khiển chương trình nhấn nút Reset - cách ứng dụng vi điều khiển

r.

ên bảng đèn sẽ có đèn báo “Bắt đầu”, nó sáng ngay khi người điều khiển chương trình nhấn nút Reset Xem tại trang 1 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan