intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Điện từ - Chương trình điều khiển LED

Chia sẻ: Adikiet Kiet | Ngày: | Loại File: DOC | Số trang:38

986
lượt xem
448
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đầu tiên bài học sẽ thực hành điều khiển 1 led sáng tối thật đơn giản. Mạch điện điều khiển bao gồm 1 led và 1 điện trở nối tiếp nhau. Bài học này sẽ áp dụng cho vi điều khiển 89S51 tuy nhiên hoàn toàn có thể áp dụng cho các vi điều khiển khác thuộc họ 8051. Bài thực hành này sẽ điều khiển việc cho phép dòng điện chạy qua led làm led sáng hoặc tối.

Chủ đề:
Lưu

Nội dung Text: Điện từ - Chương trình điều khiển LED

  1. nhờ các bác giúp đỡ với mình viết chươngg trình diều khiển led đơn dùng 2 port p1 và p3 cua Ic 89c2051 với port 1 chay 8 led va port 3 điều khiển 4 led với 2 kiểu chay khác nhau $mod51 org 0000h main: mov p1,#0ffh mov p3,#01h call delay mov p1,#11111110b mov p3,#00000010b call delay mov p1,#11111101b mov p3,#00000100b call delay mov p1,#11111011b
  2. mov p3,#00001000b call delay mov p1,#11110111b mov p3,#00000001b call delay mov p1,#11101111b mov p3,#00000010b call delay mov p1,#11011111b mov p3,#00000100b call delay mov p1,#10111111b mov p3,#00001000b call delay mov p1,#01111111b mov p3,#01h call delay
  3. mov p1,#0ffh mov p3,#02h call delay mov p1,#11111110b mov p3,#04h call delay mov p1,#11111101b mov p3,#08h call delay mov p1,#11111011b mov p3,#01h call delay mov p1,#11110111b mov p3,#02h call delay mov p1,#11101111b mov p3,#04h
  4. call delay mov p1,#11011111b mov p3,#08h call delay mov p1,#10111111b mov p3,#01h call delay mov p1,#01111111b mov p3,#02h call delay mov p1,#0ffh mov p3,#04h call delay mov p1,#0ffh mov p3,#01h call delay mov p1,#01111111b
  5. mov p3,#00000010b call delay mov p1,#10111111b mov p3,#00000100b call delay mov p1,#11011111b mov p3,#00001000b call delay mov p1,#11101111b mov p3,#00000001b call delay mov p1,#11110111b mov p3,#00000010b call delay mov p1,#11111011b mov p3,#00000100b call delay
  6. mov p1,#11111101b mov p3,#00001000b call delay mov p1,#11111110b mov p3,#01h call delay mov p1,#0ffh mov p3,#02h call delay mov p1,#01111111b mov p3,#04h call delay mov p1,#10111111b mov p3,#08h call delay mov p1,#11011111b mov p3,#01h
  7. call delay mov p1,#11101111b mov p3,#02h call delay mov p1,#11110111b mov p3,#04h call delay mov p1,#11111011b mov p3,#08h call delay mov p1,#11111101b mov p3,#01h call delay mov p1,#11111110b mov p3,#02h call delay mov p1,#0ffh
  8. mov p3,#04h call delay jmp main delay: mov r3,#8 v_r4: mov r4,#200 v_r5: mov r5,#250 djnz r5,$ djnz r4,v_r5 djnz r3,v_r4 ret end Read more: http://www.ant7.com/forum/forum_posts.asp? TID=6734&get=last#ixzz15dpiFDuK
  9. 2.1 Điều khiển LED 2.1.1 Điều khiển bật tắt 1 led Đầu tiên bài học sẽ thực hành điều khiển 1 led sáng tối thật đơn giản. Mạch điện điều khiển bao gồm 1 led và 1 điện trở nối tiếp nhau. Bài học này sẽ áp dụng cho vi điều khiển 89S51 tuy nhiên hoàn toàn có thể áp dụng cho các vi điều khiển khác thuộc họ 8051. Bài thực hành này sẽ điều khiển việc cho phép dòng điện chạy qua led làm led sáng hoặc tối. Bước 1: Thiết kế mạch ứng dụng cho vi điều khiển như hình 2.1.1. Trong đó chân P0.0 được nối với Ka-tốt của led. Nếu P0.0 = 1 thì led sẽ không sáng, P0.0 = 0 led sẽ sáng. Hình 2.1.1 Sơ đồ nguyên lý mạch điều khiển led Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h ; không sử dụng ngắt start: Clr P0.0 ; Bật led sáng call delay; Gọi hàm trễ Setb P0.0 ; Tắt led call delay; Gọi hàm trễ sjmp start; Quay trở về ban đầu ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 Chờ đến khi R2 giảm về 0 djnz R1,del1 Chờ đến khi R1 giảm về 0
  10. ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học.
  11. 2. Thực hành điều khiển các thiết bị vào ra  2.1 Điều khiển LED 2.1.2 Điều khiển bật tắt nhiều led Phần trước đã giới thiệu cách điều khiển bật tắt 1 led, phần này sẽ hướng dẫn cách điều khiển nhiều led (8 led). Step 1st Build the circuit as shown in figure 2.1.2. As you seen on figure 2.1.2. P0.0 trough P0.7 is connected to LED's katode each. Remember, that all we want to do with this lesson is make four LED blink change reversed. Bước 1: Thiết kế mạch ứng dụng cho vi điều khiển như hình 2.1.2. Trong đó các chân P0.0 đến P0.7 được nối với Ka-tốt của led. Hình 2.1.2 Sơ đồ nguyên lý mạch điều khiển led Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h start: mov P0,#11110000b; Bật các led nối với P0.0-P0.3 call delay ; Gọi hàm trễ mov P0,#00001111b; Bật các led nối với P3.4-P0.7
  12. call delay; Gọi hàm trễ sjmp start; Trở lại từ đầu ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 ; Cho R1 = 255 del1: mov R2,#255 ; Cho R2 = 255 del2: djnz R2,del2 ; Chờ đến khi R2 = 0 djnz R1,del1 ; Chờ đến khi R1 = 0 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học.
  13. 2. Thực hành điều khiển các thiết bị vào ra  2.1 Điều khiển LED 2.1.3 Điều khiển bật tắt lần lượt các led Phần trước đã giới thiệu cách điều khiển bật tắt nhiều led cùng lúc, phần này sẽ hướng dẫn cách điều khiển bật tắt lần lượt các led (8 led). Bước 1: Thiết kế mạch ứng dụng cho vi điều khiển như hình 2.1.3. Trong đó các chân P0.0 đến P0.7 được nối với Ka-tốt của led. Hình 2.1.3 Sơ đồ nguyên lý mạch điều khiển lần lượt các led Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h start: mov P0,#11111110b; Bật led nối với P0.0 call delay ; Tạo trễ mov P0,#11111101b; Bật led nối với P0.1 call delay ; Tạo trễ mov P0,#11111011b; Bật led nối với P0.2 call delay ; Tạo trễ mov P0,#11110111b; Bật led nối với P0.3 call delay ; Tạo trễ mov P0,#11101111b; Bật led nối với P0.4 call delay ; Tạo trễ mov P0,#11011111b; Bật led nối với P0.5
  14. call delay ; Tạo trễ mov P0,#10111111b; Bật led nối với P0.6 call delay ; Tạo trễ mov P0,#01111111b; Bật led nối với P3.7 call delay ; Tạo trễ sjmp start ; loooooop forever to start ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học.
  15. 2. Thực hành điều khiển các thiết bị vào ra  2.2 Giao tiếp công tắc 2.2.1 Điều khiển bật tắt led khi nhấn công tắc Trong công nghiệp khi nhấn phím điều khiển hệ thống, nhu cầu hiển thị tác động của người vận hành xem đã tác động chưa rất quan trọng. Giải pháp dùng led để hiển thị được sử dụng rất nhiều. Phần này sẽ mô tả giải pháp dùng vi điều khiển để điều khiển việc hiển thị tác động nhấn công tắc. Bước 1: Xây dựng mạch điều khiển mô tả như hình 2.2.1. Trong ví dụ này, các chân P2.0 đến chân P2.7 của vi điều khiển được nối với phím bấm nháy và các chân P0.0 đến P0.7 được nối với Ka- tốt của led. Nhiệm vụ là khi nhấn phím tại chân P2.x thì led nối với chân P0.x tương ứng sẽ sáng. Hình 2.2.1 Sơ đồ nguyên lý hoạt động giao tiếp với công tắc Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình:
  16. =============================================================== org 0h start: mov A,P2 ; Đọc dữ liệu từ cổng P2, lưu vào thanh ghi ACC mov P0,A ; Đưa dữ liệu ra cổng P0 sjmp start; Quay về ban đầu end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR
  17. 2. Thực hành điều khiển các thiết bị vào ra  2.2 Giao tiếp công tắc 2.2.2 Điều khiển led chạy khi nhấn công tắc Trong phần này, nội dung bài học là điều khiển led sáng dịch chuyển khi nhấn công tắc. Cụ thể là led sáng sẽ chuyển động sang trái khi nhấn phím nối với chân P2.0 và chuyển động sang phải khi nhấn phím nối với chân P2.1. Bước 1: Xây dựng mạch điều khiển mô tả như hình 2.2.2. Trong ví dụ này, các chân P2.0 đến chân P2.7 của vi điều khiển được nối với phím bấm nháy và các chân P0.0 đến P0.7 được nối với Ka- tốt của led. Nhiệm vụ là khi nhấn phím tại chân P2.0 thì led sáng chuyển động sang trái, nhấn phím nối với chân P2.1 led sáng sẽ chuyển động sang phải. Hình 2.2.2 Sơ đồ nguyên lý hoạt động giao tiếp với công tắc Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51)
  18. Nội dung chương trình: =============================================================== org 0h CekP20: JB P2.0,CekP21 ; kiểm tra P2.0 call RLeft ; gọi hàm điều khiển led -> trái sjmp CekP20 ; trở về CekP20 CekP21: JB P2.1,CekP20 ; kiểm tra P2.1 call RRight ; gọi hàm điều khiển led -> trái sjmp CekP20 ; trở về CekP2.0 ;=============================================== ;this subroutine is used to move LED to the left. ;================================================ RLeft: mov A,#11111110b;Khởi tạo cho led tại P0.0 sáng RLeft1: mov P0,A ;P0.0 sáng call delay ;gọi hàm trễ JB P2.0,RLeft2 ;kiểm tra P2.0 sjmp EndRLeft ;không nhấn phím P2.0, kết thúc RLeft2: RL A ; dịch thanh ghi A -> trái sjmp RLeft1 EndRLeft: ret ; ;================================================= ;this subroutine is used to move LED to the right. ;================================================= RRight: mov A,#01111111b RRight1:mov P0,A call delay JB P2.0,RRight2 sjmp EndRRight RRight2:RL A sjmp RRight1 EndRRight: ret ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt.
  19. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR
  20. 2. Thực hành điều khiển các thiết bị vào ra  2.3 Điều khiển led 7 thanh Led 7 thanh được ứng dụng khá phổ biến khi cần hiển thị số tự nhiên hoặc vài chữ cái nhất định. Led 7 thanh có thể có kích thước lớn nhỏ khác nhau, màu sắc khác nhau nhưng về hình dáng cơ bản như hình 2.3 Led 7 thanh bao gồm nhiều led tích hợp bên trong, các led được nối chung nhau 1 chân. Trong thực tế có 2 loại led 7 thanh là led 7 thanh A-nốt chung và led 7 thanh Ka-tốt chung. Led loại A-nốt chung, các led sẽ có chung nhau chân nguồn (chân dương), chân còn lại của led nào được nối đất thì led đó sẽ sáng. Led loại Ka-tốt chung, các led sẽ nối chung nhau chân đất (chân âm), chân còn lại của led nào được nối nguồn thì led đó sẽ sáng. Hình 2.3.1 Led 7 thanh 2.3.1 Cách hiển thị led 7 thanh Trong phần này, led 7 thanh sử dụng là loại led A-nốt chung, chân A-nốt chung sẽ được nối nguồn 5V thông qua transistor. Chú ý, cần phải nối trở hạn chế dòng cho led 7 thanh để tránh cháy led. Bước 1: Xây dựng mạch điều khiển mô tả như hình 2.3.2. Trong ví dụ này, các chân P2.0 điều khiển việc cấp nguồn cho led 7 thanh. Các chân P0.0 đến P0.6 được nối với các chân của led 7 thanh để điều khiển việc cấp đất cho các thanh led
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2