Ứng dụng ic lập trình AT89C51: Dùng bàn phím điều khiển motor, relay, đèn... pdf

37 785 4
Ứng dụng ic lập trình AT89C51: Dùng bàn phím điều khiển motor, relay, đèn... pdf

Đ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

Ứng dụng ic lập trình AT89C51: Dùng bàn phím điều khiển motor, relay, đèn Chúng ta biết, "vật thể tự động hồn chỉnh" phải gồm có: Ngả vào - Bộ nhớ - Ngả Ngả vào tác động bên vào vật thể, người, cómắt để ghi nhận thực thể xuất dạng quang năng, có tai để nghe biết sóng âm,có mũi để nhận mùi,có lưỡi để nhận biết vị có lớp da bao bọc tồn thân để cảm nhận nóng lạnh, cứng mềm, nặng nhẹ Đó ngủ quan người Bộ nhớ dùng đề lưu giữ chương trình, chương trình "trí tuệ" mà thực thể truy cập, lấy thao tác gặp đối ứng cần giải Ngả tạo thể trang bị vật thể chấp hành theo chương trình, thể thực thể thấy tứ chi hai tay hai chân, tim, phổi, gan, ruột tạo thể vận hành theo chương trình có nhớ Khi người đứng gần chổ nóng, biết nóng kịp xa chổ nóng, phản ứng vật thể tự động hồn chỉnh.Con người sinh vật thơng minh có khả học hỏi chứng vật diện chung quanh thiên nhiên chung quanh người muốn tự tạo "vật thể tự động hồn chỉnh" Ước muốn có bước tiến vượt bậc từ người ta chế tạo ic lập trình, hoạt động theo chương trình có nhớ Trong lần nói đến tính nhập thơng tin từ bên ngồi vào bên ic lập trình, dùng phím nhấn, sau mở rộng qua cách lấy thông tin qua cảm biến, như: quang trở, nhiệt trở, vị trở, từ trở, ẩm trở, áp trở, phong trở, động trở, Với cảm biến này, mô nhiều chức giống ngủ quan sinh vật Trước nói đến điều cao siêu, tìm hiểu hệ vận hành đơn giản Các phím nhấn dùng với ic lập trình AT89C51Chúng ta biết ic lập trình AT89C51 có cảng bit nên tổng cộng có 32 chân xuất nhập liệu dạng bit Cách nhập liệu đơn giản dùng phím nhấn Phím nhấn làm việc theo logic nhị giá, nghĩa đóng hở Với phím nhấn, người ta dùng đơn lẻ hay tổ hợp theo dạng matrix Hình vẽ cho thấy: Các phím gắn ma trận 4x4, người ta nói matrix 4x4 có hàng cột Trên ma trận 4x4 dùng có dây mà gắn đấn 16 phím, ưu điểm loại bàn phím matrix, dùng số chân mà gắn nhiều phím Với phím đơn lập phím thường gắn chân IC, cảng chân gắn phím.Các phím nhấn phân làm kiểu: Kiểu phím nhấn thường hở kiểu phím nhấn thường đóng Khi sử dụng phím nhấn, thường gặp vấn đề sau: Sự rung phím.Vậy rung phím gì? Hình vẽ cho thấy: Khi phím hở cho mức áp cao, phím nhấn xuống, kéo mức áp xuống mức thấp, tượng rung phím, lúc có rung động tiếp xúc điểm, khiến cho tiếp điểm lúc dính lúc hở mức áp dao động lúc lên lúc xuống phải sau lúc ổn định mức thấp Khi bỏ phím nhấn ra, gặp tượng tương tự tác hại Khi dùng phím nhấn với ic lập trình có phản ứng cực nhanh tượng rung phím gây điều khiển sai Khi viết chương trình cho phím nhấn, phải ý đến ảnh hưởng tượng rung phím, phím đóng lại.Trong thực hành, người ta thường dùng đoạn chương trình làm chậm khoảng 3ms đến 10ms cho dị lại lần trạng thái phím để tránh sai lầm xẩy tượng rung phím.* Mạch AT89C51 dùng phím nhấn đơn lập Khi dùng sơ đồ mạch điện này, trạng thái bit chân cảng p1 xem nhấn phím, có nhấn phím chân có phím nhấn xuất bit Khi chân cảng p1 có chân bit 0, biết có nhấn phím, viết câu lệnh tìm xem cảng p1 có xuất bit hay khơng? Nếu khơng có bit p1 tiếp tục dị tìm, có chân có bit hiểu có phím bị nhấn xuống, lúc chuyển qua tìm xem phím nhấn cho chạy chương trình tương ứng với phím nhấn Sau đoạn chương trình dùng dị xem có phím nhấn khơng?loop: ; đặt tên nhãn cho lệnh nhẩy call do_key ; cho gọi chương trình dị phím, tên nhãn do_key jnb f0, ttuc ; nhẩy theo bit f0, f0=0, tiếp tục dị phím call tim_phim ; cho gọi trình xác định phím nhấnttuc: ; tên nhãn cho lệnh nhẩy jmp loop ; nhẩy tên nhãn loop, bắt đầu lại công việc dị phím do_key: ; tên nhãn dùng cho lệnh nhẩy clr f0 ; cho xóa bit f0, bit kiểm tra có phím nhấn hay khơng? mov a, p1 ; chuyển trạng thái bit p1 vào ghi a orl a, #00000000b ; lấy logic OR trị a với 00000000b, để tìm bit p1 cpl a ; đảo trị ghi a jz key_ret ; trị a 0, nhẩy đến key_ret, khơng có phím nhấn call del ; gọi chương trình trể mov a, p1 ; lại chuyển trạng thái p1 vào a, kiểm tra lần orl a, #00000000b ; lại cho lấy logic OR trị a với 00000000b cpl a ; đảo trị a để dị xem có phím nhấn khơng jz key_ret ; nhẩy đến tên nhãn key_ret khơng có phím nhấn setb f0 ; có phím nhấn, cho set bit kiểm tra f0 mov b,a ; cho chuyển trị a cho cất vào b để dùng xác định phím nhấnkey_ret: ; tên nhãn dùng cho lệnh nhẩy mov a, p1 ; cho chuyển trạng thái cảng p1 vào a orl a, #00000000b ; lấy logic OR trị a với 00000000b cpl a ; đảo trị ghi a jz key_ret1 ; nhẩy đến tên nhãn key_ret1, a jmp key_ret ; nhẩy đến tên nhãn key_ret, tiếp tục kiểm tra p1key_ret1: ret ; quay lại sau lệnh: call do_keytim_phim: ; chương trình xác định phím nhấn Hình động cho thấy cách viết câu lệnh dùng dò xem có phím nhấn hay khơng?* Mạch AT89C51 dùng 16 phím gắn ma trận 4x4 Hình vẽ cho thấy, 16 phím nhấn gắn ma trận 4x4 Ở hàng cho nối vào p2.0, p2.1, p2.2, p2.3, gọi hàng ngả OUTPUT cột cho nối vào p2.4, p2.5, p2.6, p2.7 gọi cột ngả vào INPUT Có thể thấy:Trên cảng p1 cho gắn Led cảng p3 cho gắn Led Từ sơ đồ mạch điện này, lập trình để dùng phím bảng ma trận điều khiển Led Cách viết chương trình vận hành phím ráp theo kiểu ma trận 4x4:Trước hết người ta đặt hàng làm ngả OUTPUT đặt cột làm ngả vào INPUT.Khởi đầu cho ngả vào bit cho ngả bit 0, chạy trình dị phím, để xem có phím nhấn xuống khơng?* Khi xác nhận có nhấn phím cho chạy chương trình tìm phím nhấn Lúc lần cho chân INPUT bit 0, khởi đầu cho cột bit tìm xem hàng, xem ngả OUTPUT bit 0, làm xác định phím cột 1.* Khi cho cột bit 0, tìm xem hàng bit 0, làm xác định phím cột * Khi cho cột bit 0, tìm xem hàng bit 0, làm xác định phím cột 3.* Khi cho cột bit 0, tìm xem hàng bit 0, làm xác định phím cột Sau chương trình mẫu:org 0000b start: ; đặt tên nhãn dùng cho lệnh nhẩy clr p2.0 ; cho Led thị chân p2.0 sáng ; vào chương trình dị phím do_phim: ; đoạn chương trình dùng để dị phím mov p1, #00001111b ; đặt chân Input lên chân Output xuống mov a, p1 ; cho chuyển trạng cảng p1 vào a orl a, #11110000b ; lấy logic OR a với trị 11110000b cpl a ; đảo trị ghi a jz do_phim ; a tiếp tục dị phím, a khác tìm phím nhấn jmp tim_phim ; nhẩy đến chương trình tìm phím nhấn ; vào chương trình tìm phín nhấn tim_phim: ; đoạn chương trình tìm phín nhấn mov a, p1 ; chuyển trạng cảng p1 vào ghi a cjne a, #11101110b, tt1 ; cho chân p1.0 0, tìm phím p1.4 jmp chtrinh1 ; phím cho chạy chương trình tt1: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11011110b, tt2 ; cho chân p1.0 0, tìm phím p1.5 jmp chtrinh2 tt2: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #10111110b, tt3 ; cho chân p1.0 0, tìm phím p1.6 jmp chtrinh3 tt3: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #01111110b, tt4 ; cho chân p1.0 0, tìm phím p1.7 jmp chtrinh4 ; tt4: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11101101b, tt5 ; cho chân p1.1 0, tìm phím p1.4 jmp chtrinh5 tt5: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11011101b, tt6 ; cho chân p1.1 0, tìm phím p1.5 jmp chtrinh6 tt6: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #10111101b, tt7 ; cho chân p1.1 0, tìm phím p1.6 jmp chtrinh7 tt7: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #01111101b, tt8 ; cho chân p1.1 0, tìm phím p1.7 jmp chtrinh8 ; tt8: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11101011b, tt9 ; cho chân p1.2 0, tìm phím p1.4 jmp chtrinh9 tt9: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11011011b, tt10 ; cho chân p1.2 0, tìm phím p1.5 jmp chtrinh10 tt10: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #10111011b, tt11 ; cho chân p1.2 0, tìm phím p1.6 jmp chtrinh11 tt11: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #01111011b, tt12 ; cho chân p1.2 0, tìm phím p1.7 jmp chtrinh12 ; tt12: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11100111b, tt13 ; cho chân p1.3 0, tìm phím p1.4 jmp chtrinh13 tt13: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #11010111b, tt14 ; cho chân p1.3 0, tìm phím p1.5 jmp chtrinh14 tt14: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #10110111b, tt15 ; cho chân p1.3 0, tìm phím p1.6 jmp chtrinh15 tt15: ; đặt tên nhãn dùng cho lệnh nhẩy cjne a, #01110111b, start ; cho chân p1.3 0, tìm phím p1.7 jmp chtrinh16 ; Các chương trình ứng với phím nhấn chtrinh1: chtrinh2: chtrinh3: chtrinh4: chtrinh5: chtrinh6: chtrinh7: chtrinh8: chtrinh9: chtrinh10: chtrinh11: chtrinh12: chtrinh13: chtrinh14: chtrinh15: chtrinh16: end Các thí dụ cho thấy cách dùng bàn phím điều khiển1 Cách dùng phím kiểu đơn lậpMột thí dụ cách dùng phím nhấn đơn lập Phâ n tích mạch:Sơ đồ cho thấy, cấp điện cho ic lập trình AT89C51 với chân 20 cho nối masse chân 40 cho nối vào đường nguồn 5V Trên chân gắn tụ C1 (10uF) điện trở R1 (10K) dùng tạo tính reset mạch cấp nguồn Trên chân 18, 19 gắn thạch anh định tần, dùng thạch anh 12MHz Để mạch làm việc với nhớ cho chân 31 nối vào đường nguồn 5V.Đề làm thực hành với phím nhấn đơn lập, dùng phím nhấn, gắn chân p1.2, p1.3, p1.4, p1.5 cảng p1 gắn Led cảng p3 để hiển thị tác dụng phím nhấn.Ở tạo tính cho phím nhấn sau: phím S1 cho mở phím, phím S4 cho tắt phím, phím S2 cho Led p3 dời qua phải phím S3 cho Led p3 dời qua trái.Tóm lại cơng dụng phím sau: * Nhấn nút S1 vào mode khởi động, cho mở phím.* Nhấn nút S2, Led cảng p3 dời bit qua phải* Nhất nút S3, Led cảng p3 dời bit qua trái* Nhấn nút S4 vào mode tắt phím Chương trình nguồn:UpDown EQU 00H ; đặt tên bit 00h updownStartEnd EQU 01H ; đặt tên bit 01h startendLAMPCODE EQU 21H ; đặt tên ghi 21h lampcodeORG 0000H ; địa ghi khởi đầuJMP MAIN ; nhẩy đến tên nhãnORG 30H ; vùng địa bên chức ngắtMAIN: ; đặt tên nhãn dùng cho lệnh nhẩyMOV SP,#5FH ; chọn địa làm ngăn xếpMOV P3,#0FFH ; đặt trị 11111111b vào cảng p3 để tắt led; điều kiện khởi đầuCLR UpDown ; đặt bit vào bit updownCLR StartEnd ; đặt bit vào bit startendMOV LAMPCODE,#0FEH ; chuyển trị 11111110b vào lampcodeLOOP: ; đặt tên nhãn dùng cho lệnh nhẩyCALL KEY ; gọi chương trình dị phím, tên nhãn keyJNB F0,LNEXT ; cho nhẩy theo bit f0CALL KEYPROC ; gọi chương trình xử lý phímLNEXT: ; đặt tên nhãn dùng cho lệnh nhẩyCALL LAMP ; gọi chương trình điều khiển Led cảng p3JMP LOOP ; quay lại tên nhãn loopDELAY: ;chương trình tạo trểMOV R7,#100 ; đặt trị 100 vào ghi r7D1: ; đặt tên nhãn dùng cho lệnh nhẩyMOV R6,#100 ; đặt trị 100 vào ghi r6DJNZ R6,$ ; nhẩy chổ, chờ trị r6 0DJNZ R7,D1 ; giảm trị r7 theo bước -1, r7=0?, định hướng nhẩyRET ; qua lại sau lệnh call delay; -KEYPROC: ; chương trình xử lý phímMOV A,B ; chuyển trị b vào ghi aJB ACC.2,KeyStart ; xét bit acc.2 để định hướng nhẩy JB ACC.3,KeyOver ; xét bit acc.3 để định hướng nhẩyJB ACC.4,KeyUp ; xét bit acc.4 để định hướng nhẩyJB ACC.5,KeyDown ; xét bit acc.5 để định hướng nhẩyJMP KEY_RET ; nhẩy tên nhãn key_retKeyStart: ; trình vào mode khởi độngSETB StartEnd ; đặt bit startend lên 1, cho khởi độngJMP KEY_RET ; nhẩy đến tên nhãn key_retKeyOver: ; trình cho tắt, kết thúcCLR StartEnd ; đặt bit startend xuống 0, kết thúcJMP KEY_RET ; nhẩy đến tên nhãn key_retKeyUp: ; trình cho Led dời qua phảiSETB UpDown ; đặt bit updown lên 1, dời qua phảiJMP KEY_RET ; nhẩy đến tên nhãn key_retKeyDown: ; trình cho Led dời qua tráiCLR UpDown ; đặt bit updown xuống 0, dời qua tráiKEY_RET: ; đặt tên nhãn dùng cho lệnh nhẩyRET ; quay lại sau lệnh call keyprocKEY: ; đặt tên nhãn dùng cho lệnh nhẩy, trình dùng dị phímCLR F0 ; xóa bit f0ORL P1,#00111100B ; lấy logic OR trị 00111100b cảng p1MOV A,P1 ; chuyển trị có p1 vào ghi aORL A,#11000011B ;lấy logic OR a 11000011b, xét trạng thái phímCPL A ; lấy bù a, đảo bit ghi aJZ K_RET ; xét trị a, có khơng? để nhẩyCALL DELAY ; cho gọi chương trình trểOR P1,#00111100B ; lại lấy logia OR trị 00111100b cho cảng p1MOV A,P1 ; lại chuyển trị có cảng p1 vào ghi aORL A,#11000011B ; cho lấy logic OR trị a trị 11000011bCPL A ; lại cho bù a, đảo bit ghi aJZ K_RET ; lại xét trị a, có 0? để nhẩyMOV B,A ; chuyển trị a vào bSETB F0 ; đặt bit kiểm tra f0 lên 1, báo có phím nhấnK_RET: ; đặt tên nhãn dùng cho lệnh nhẩyORL P1,#00111100B ;Lấy logic OR trị có p1 00111100bMOV A,P1 ; chuyển trị có cảng p1 vào ghi aORL A,#11000011B ; lấy logic OR trị a 11000011bCPL A ; lấy bù a, đảo bit ghi aJZ K_RET1 ; xét trị a có không? để nhẩyJMP K_RET ; nhẩy đến tên nhãn k_retK_RET1: ; đặt tên nhãn dùng cho lệnh nhẩyRET ; quay lại sau lệnh call keyD500MS: ;chương trình làm trểPUSH PSW ; tạm cho cất trị ghi psw vào ngăn xếpSETB RS0 ; đặt trị rs0 ghi trạng thái psw lên 1MOV R7,#200 ; chuyển trị 200 vào ghi r7D51: ; đặt tên nhãn dùng cho lệnh nhẩyMOV R6,#250 ; đặt trị 250 vào ghi r6D52: ; đặt tên nhãn dùng cho lệnh nhẩyNOP ; dịng khơng tác vụNOP ; dịng khơng tác vụNOP ; dịng khơng tác vụNOP ;dịng khơng tác vụDJNZ R6,D52 ; giảm trị r6 theo bước -1, r6=0?, chọn hướng nhẩyDJNZ R7,D51 ; giảm trị r7 theo bước -1, r7=0?, chọn hướng nhẩyPOP PSW ; lấy lại trị trước cho ghi pswRET ; quay lại sau lệnh gọi call d500msLAMP: ; chương trình điều khiển Led cảng p3JB StartEnd,LampStart ; chọn hướng nhẩy theo bit startendMOV P3,#0FFH ; đặt trị 11111111b vào cảng p3, tắt hết LedJMP LAMPRET ; nhẩy tên nhãn lampretLampStart: ; đặt tên nhãn cho lệnh nhẩy, trình dời bit a qua tráiJB UpDown,LAMPUP ; nhẩy theo bit updownMOV A,LAMPCODE ; chuyển trị lampcode cho ghiRL A ; cho quay vòng bit ghi aqua hướng tráiMOV LAMPCODE,A ; chuyển trị a vào lampcodeMOV P3,A ; cho xuất trị a cảng p3CALL D500MS ; gọi chương trình làm chậm d500msJMP LAMPRET ; nhẩy tên nhãn lampretLAMPUP: ; đặt tên nhãn cho lệnh nhẩy, trình cho dời bit qua phảiMOV A,LAMPCODE ; chuyển trị lampcode vào ghi aRR A ; cho quay vòng bit a qua hướng phảiMOV LAMPCODE,A ; chuyển trị a vào lampcodeMOV P3,A ; xuất trị a cảng p3CALL D500MS ;cho gọi chương trình trể d500msLAMPRET: ; đặt tên nhãn cho lệnh nhẩyRET ; quay lại sau lệnh callEND ; dừng biên dịch dịng Phân tích cách viết câu lệnh chương trình nguồn trên:Tìm hiểu thêm cách viết khác Bạn xem thí dụ sau: Trong thí dụ này, gắn phím cảng p3 dùng phím điều khiển trạng thái nhấp nháy Led đặt cảng p1 end ; dừng biên dịch dịng Giải thích cách dùng câu lệnh trên: Bước 1: viết trình dị xem có phím nhấn xuống khơng Bước 2: Dị có phím nhấn khơng, tránh ảnh hưởng rung phím Bước 3: Tìm xem phím hàng nhấn xuống Bước Bước 5: Tìm xem phím nhấn xuống xuất kết Nhắn Bạn: Mã xuất theo phím nhấn đặt bảng: m_hang_0, m_hang_1, m_hang_2 m_hang_3 Vậy Bạn muốn dùng mã để điều khiển thiết bị theo bảng 16 phím nhấn này, mã điều khiển Bạn tạo cho cất bảng theo vị trí Vậy, Bạn nhấn phím có mã xuất cảng p3, nhấn phím có mã xuất cảng p3, nhấn phím có mã xuất cảng p3 Bạn có 16 mã điều khiển ứng với 16 phím nhấn Nếu Bạn dùng ma trận chân cảng p1 làm hàng dùng chân cảng p2 làm cột Bạn có ma trận 8x8, ma trận Bạn gắn đến 64 phím nhấn Bạn có đến 64 mã lệnh dùng để điều khiển thiết bị Phải khơng? Mở rộng: Nhập tín hiệu vào ic lập trình lấy từ cảm biến Chúng ta biết thiên nhiên có nhiều "thực thể" không thuộc điện, muốn đưa "thực thể" vào ic lập trình, phải dùng đến sensor, quen gọi cảm biến Phần tìm hiểu vài cảm biến thường dùng, dễ tìm, việc biến đổi đại lượng không thuộc điện điện tìm cách chuyển đại lượng vào ic lập trình để xử lý Trước hết, nói đến cảm biến quang Chúng ta biết, ánh sáng thực thể phổ biến, nhận biết ánh sáng tế bào thị giác đặt mắt Trong kỹ thuật điện tử, người ta chế tạo nhiều cảm biến chuyển đổi ánh sáng dạng tín hiệu điện, như: quang trở, quang diode, pin quang điện Ở thử dùng quang cảm biến để tạo tín hiệu cho nhập vài ic lập trình viết chương trình nguồn dùng để điều khiển thiết bị theo quang Quang trở điện trở, nghĩa cho dịng điện chảy qua theo hai chiều nhau, Bạn dùng quang trở kết hợp với điện trở khác làm thành cầu chia áp Quang trở bị chiếu sáng giảm ohm, làm thay đổi cường độ dịng điện chảy qua Trong máy ảnh người ta thường dùng quang trở máy đo dòng để làm thiết bị đo cường độ ánh sáng Trong TV đời mới, người ta dùng quang trở làm thiết bị tự động điều chỉnh mức sáng hình tùy theo mức sáng phịng Trong đầu dò PIR, người ta dùng quang trở mở mạch tắt mở sáng trời tối, người ta dùng quang trở với kính lọc màu để làm cảm biến dị tìm màu Bạn dùng Ohm kế thơng thường để kiểm tra quang trở Khi đo ohm, cho chiếu sáng, quang trở giảm ohm bị che sáng quang trở tăng ohm Photo diode, hay diode hồng ngoại vốn mối nối bán dẫn PN, có đặc tính làm thay đổi cường độ dịng điện mối nối PN bị kích sáng Trong mạch, photo diode thường cho ghép với điện trở lớn ohm, đặt trạng thái phân cực nghịch Khi bị che sáng, photo diode dẫn điện yếu bị chiếu sáng, dẫn điện mạnh Ở trạng thái phân cực thuận, có tính ghim áp diode thông thường khác Photo diode có hốn tính nhỏ, cho thay đổi nhanh, nên người ta thích dùng photo diode thiết bị điều khiển hồng ngoại, dùng thiết bị điều khiển tốc độ quay motor, dùng mạch đo tốc Bạn dùng ohm kế thơng thường để kiểm tra photo diode, dùng thang đo Rx10K, lúc điện áp có dây đo 12V, đặt photo diode vào dây đo theo kiểu phân cực nghịch, dùng hộp điều khiển Remote thông dụng, cho phát lệnh điều khiển, chiếu remote vào photo diode, Bạn thấy kim máy đo rung theo xung lệnh, dấu hiệu cho biết photo diode tốt Photo diode có nhiều đầu máy hát băng hình Diode Laser, vốn mối nối bán dẫn PN, bị kích thích, cấp dịng, phát thứ ánh sáng Laser Ánh sáng Laser khác với ánh sáng thường tia sáng phát có tính đồng pha, nghĩa tác kích vào vật cản với pha giống nhau, nhờ Bạn cho hội tụ chùm tia sáng Laser điểm nhỏ, điểm cường độ sáng mạnh nóng (Điều khơng làm với loại ánh sáng thường), nên điểm hội tụ gọi tiêu điểm (tiêu 焦 có nghĩa điểm nóng) Ngày người ta dùng điểm sáng Laser để đọc lại điểm tín hiệu lồi lõm nhỏ đặt vòng quay nằm mặt đĩa CD hay DVD Tia sáng Laser dùng làm tia chiếu định vị cho máy ngắm, với chùm tia laser có cường độ mạnh, cịn dùng làm vũ khí cơng đốt cháy vật bay Bạn dùng Ohm kế thơng thường để đo diode Laser Lấy thang đo Rx1 để có dịng chảy dây đo lớn, 100mA, đo, diode Laser cho phân cực thuận, bên ánh lên điểm sáng màu đỏ nhỏ Khi xử dụng diode Laser, Bạn tránh nhìn thẳng vào tia sáng Laser mức sáng mạnh làm hư mắt Opto ghép quang điện Người ta cho tổ hợp bên diode phát quang, phát tia sáng hồng ngoại bên quang transistor dùng thâu nhận tia sáng hồng ngoại Hai thành phần đặt hai mạch điện riêng biệt cách ly nhau, trao đổi thông tin với qua tia sáng bên phát bên nhận Opto có dạng: dạng đóng kín dạng để hở Dạng đóng kín thường dùng để trao đổi thơng tin bo mạch, dạng để hở thường dùng để phát vật thể, như: dị tìm vật quay, dị tìm chuyển động, dị tìm đường kẻ, dùng để đo tốc Bạn tìm thấy loại opto có mạch điều khiển dĩ nhiên, Bạn dùng Ohm kế để đo kiểm tra opto Dùng tính thuận (kim lên) nghịch (kim không lên) để kiểm tra quang diode opto, tìm cách cho cấp dịng qua quang diode, dùng ohm kế đo thuận nghịch quang transistor để kiểm tra bên nhận Solar Cell hay pin mặt trời, chuyển đổi lượng, chuyển đổi quang dạng điện Khi mặt pin solar cell chiếu sáng, dây cực âm dương xuất điện áp, mức áp thường biến đổi theo cường độ sáng tùy theo nội trở tải Trong ứng dụng người ta thường dùng pin mặt trời phát điện để nạp tích trữ vào nguồn pin charge, dùng nguồn pin để thắp sáng hay làm quay motor Chúng ta thường thấy máy tính số (calculator) có trang bị pin mặt trời để vận hành nguồn sáng phòng Ngày nay, người ta có nhiều nghiên cứu cách khai thác dùng lượng sạch, nắng gió, với nắng pin mặt trời thiếu Ngày mai, với pin hiệu suất cao, người ta dùng điện lấy từ nguồn sáng tự nhiên, ánh nắng vơ tận thái dương Bạn dùng Volt kế thông thường để đo kiểm tra Solar Cell, dùng Led để kiểm tra khả cấp tải pin mặt trời Khảo sát: Cách dùng cảm biến quang điện để tạo xung nhịp đưa vào ic lập trình Trong sơ đồ dùng đếm timer chạy mode để đếm xung nhịp đưa vào chân p3.4, tức chân T0, để đơn giản thực hành dùng số đếm tl0, nghĩa đếm tối đa 255 nhịp quay lại Kết đếm cho hiển thị bảng đèn số dùng mã đoạn Mạch dùng cảm biến quang điện, dùng Led hồng ngoại cho chiếu sáng vào quang transistor, bình thường quang transistor dẫn điện, kích dẫn Q1 tạo mức áp cao chân T0, có người qua, tia sáng bị che làm cho quang transistor ngưng dẫn, Q1 tắt mức áp chân p3.4 giảm xuống mức áp 0V lúc xung nhịp vào ghi tl0, ghi tl0 tiếp tục tích cất số liệu cho hiển thị kết số có tl0 bảng đèn số Chương trình nguồn đơn giản, dùng cho thực hành, tìm hiểu cách viết câu lệnh bản: ; ; ; ; ; ; ; ; ; Chú thích a,b,c,d,e,f,g -> Đèn số đoạn Port P3.0 -> đèn LED1 hàng đơn vị P3.1 -> đèn LED2 hàng chục P3.2 -> đèn LED3 hàng trăm P3.4(T0) -> cảm biến quang điện 30h ; ghi giữ số hàng đơn vi 31h : ghi giữ số hàng chục 32h : ghi giữ số hàng trăm ; Chỉ đếm với tl0, hàng đơn vị đếm đến 10, hàng chục đến hàng trăm đến ORG 0000h SJMP MAIN ORG 0030H MAIN: MOV DPTR,#LED7SEG ; vào bảng lấy mã số đèn đoạn MOV TMOD,#06h ; counter 0, mode 2, đếm xung vào chân T0 MOV TH0,#0C4H ; nạp trị vào th0 SETB P3.0 ; tắt đèn số hàng đơn vị SETB P3.1 ; tắt đèn số hàng chục SETB P3.2 ; tắt đèn số hàng trăm SETB P3.4 ; xung đếm vào chân này, T0 SETB TR0 ; mở mạch cho xung đếm vào ghi tl0 BEGIN: MOV A,TL0 ; cho chuyển trị tl0 vào ghi a CALL BIN2BCD ; gọi chương trình đổi số dạng thập phân MOV A,30h ; chuyển trị có 30h vào ghi a CJNE A, #10,qua1 ; so sánh trị a với số 10, để định hướng nhẩy MOV A,#00H ; trả trị a qua1: ; đặt tên nhãn cho lệnh nhẩy MOVC A,@A+DPTR ; lấy trị bảng cho vào ghi a MOV 30h,A ; cất trị a vào 30h MOV A,31h ; chuyển trị có 31h vào ghi a CJNE A,#6,qua2 ; so sánh trị a với số 6, để chọn hướng nhẩy MOV A,#00 ; trả trị a qua2: ; đặt tên nhãn cho lệnh nhẩy MOVC A,@A+DPTR ; lấy trị bảng cho vào ghi a MOV 31h,A ; cất trị a vào 31h MOV A,32h ; chuyển trị có 32h vào ghi a CJNE A,#1, qua3 ; so sánh trị a với số 1, để chọn hướng nhẩy MOV A,#00H ; trả trị a qua3: ; đặt tên nhãn cho lệnh nhẩy MOVC A,@A+DPTR ; lấy trị bảng cho vào ghi a MOV 32h,A ; cất trị a vào 32h KET_THUC: ; đặt tên nhãn CALL DISPLAY ; cho gọi chương trình hiển thị số JMP BEGIN ; trở lại tên nhãn begin DISPLAY: ; trình hiển thị số bảng đèn MOV P1,30H ; xuất trị 30h cảng p1 CLR P3.0 ; mở đèn hàng đơn vị CALL DELAY ; gọi delay SETB P3.0 ; tắt đèn tránh lem MOV P1,31H ; xuất trị 31h cảng p1 CLR P3.1 ; mở đèn Led hàng chục CALL DELAY ; gọi delay SETB P3.1 ; tắt đèn tránh lem MOV P1,32H ; xuất trị 32h cảng p1 CLR P3.2 ; mở đèn Led hàng trăm CALL DELAY ; gọi delay SETB P3.2 ; tắt đèn tránh lem RET BIN2BCD: ; trình làm phép tốn đổi trị nhị phân dạng số thập phân MOV B,#10 ; đặt trị 10 vào b, để làm phép toán chia 10 DIV AB ; chia trị a cho 10 MOV 30h,B ; cất kết b vào 30h MOV B,#10 ; đặt trị 10 vào b, để làm phép toán chia 10 DIV AB ; chia trị a cho 10 MOV 31H,B ; cất kết b vào 31h MOV 32h,A ; cất kết a vào 32h RET ; quay lại sau lệnh gọi call bin2bcd DELAY: ; đặt tên nhãn cho lệnh nhẩy MOV R6,#10 ; nạp trị 10 vào ghi r6 v_r7: MOV R7,#0FFh ; nạp trị 0ffh vào ghi r7 DJNZ R7, $ ; cho trị r7 giảm theo bước -1 đến lúc DJNZ R6, v_r7 ; cho trị r6 giảm theo bước -1, r6=0?, định hướng nhẩy RET ; quay lại sau lệnh call delay ; Bảng tạo mã số đèn Led đoạn LED7SEG: ; mã đoạn cho số 0, 1, 2, 3, 4, 5, 6, 7, 8, DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END ; dừng biên dịch dịng Phân tích ý nghĩa câu lệnh chương trình nguồn trên: ... Các thí dụ cho thấy cách dùng bàn phím điều khiển1 Cách dùng phím kiểu đơn lậpMột thí dụ cách dùng phím nhấn đơn lập Phâ n tích mạch:Sơ đồ cho thấy, cấp điện cho ic lập trình AT89C51 với chân 20... 4x4 dùng có dây mà gắn đấn 16 phím, ưu điểm loại bàn phím matrix, dùng số chân mà gắn nhiều phím Với phím đơn lập phím thường gắn chân IC, cảng chân gắn phím. Các phím nhấn phân làm kiểu: Kiểu phím. .. tác hại Khi dùng phím nhấn với ic lập trình có phản ứng cực nhanh tượng rung phím gây điều khiển sai Khi viết chương trình cho phím nhấn, phải ý đến ảnh hưởng tượng rung phím, phím đóng lại.Trong

Ngày đăng: 18/03/2014, 18:20

Từ khóa liên quan

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

Tài liệu liên quan