Nguồn :http://mcu.banlinhkien.vn/threads/bai-7-doc-ma-remote-hong-ngoai-su-dung-kit-avr-v4.2418/
TLiệu :
1. http://hoc8051.blogspot.com/2012/08/dientu686comung-dung-vi-xu-li-trong-ieu.html
2. http://suamayhandientukhanhhoa.blogspot.com/2014/05/hieu-ve-remode-sony-va-code-oc-ma-hong.html
3. http://www.dientuvietnam.net/forums/forum/vi-%C4%91i%E1%BB%81u-khi%E1%BB%83n-mcu-b%E1%BB%99-%C4%91i%E1%BB%81u-khi%E1%BB%83n-t%C3%ADn-hi%E1%BB%87u-s%E1%BB%91-dsc/vi-%C4%91i%E1%BB%81u-khi%E1%BB%83n-h%E1%BB%8D-8051/192130-h%C6%B0%E1%BB%9Bng-d%E1%BA%ABn-gi%E1%BA%A3i-m%C3%A3-remote-h%E1%BB%93ng-ngo%E1%BA%A1i-v%E1%BB%9Bi-8051
=======================================================================
Xin chào các bạn!
Trong bài viết này mình xin hướng dẫn lập trình giao tiếp hiển thị mã các loại remote hồng ngoại: remote sony, remote 3 kênh, 8 kênh, 20 kênh… qua mắt thu hồng ngoại 1838T lên màn hình LCD16x2 sử dụng Atmega16. Project chạy trên KIT AVR V4.
I.MÔ TẢ PHẦN CỨNG
Kit AVR V4 cung cấp cho các bạn khối mắt thu hồng ngoại 1838T có sơ đồ nguyên lý như sau:
Remote hồng ngoại loại 3 phím(8 phím, 20 phím…):
-Bit 0: là xung ở mức cao trong 500us và xuống mức thấp trong 700us.
-Bit 1: là xung ở mức cao trong 1600us và xuống mức thấp trong 700us.
Dựa vào quy định trên, một khung dữ liệu gồm có:
-1 xung START: xung ở mức thấp trong 9ms và lên mức cao trong 4ms.
-8 bit 0 + 8 bit 1 nối tiếp nhau.
-Xung mã lệnh tương ứng với các phím.
Remote hồng ngoại SONY:
-BIT 0: xung ở mức thấp trong 1200us và lên mức cao trong 800us.
-BIT 1: xung ở mức thấp trong 600us và lên mức cao trong 600us.
Dựa vào quy định trên, một khung dữ liệu gồm có:
-1 xung START: xung ở mức thấp trong 2.6ms và lên mức cao trong 600us.
-Xung mã lệnh tương ứng với các phím.
II.LẬP TRÌNH PHẦN MỀM
Để lấy mã các phím trên remote, ta làm như sau:
Remote hồng ngoại 3 phím:
Thư viện code driver hồng ngoại cung cấp cho các bạn 2 hàm:
-uint8_t INFR_CheckStart(): Sử dụng để kiểm tra xung START.
-uint16_t INFR_GetCode(): Sử dụng để nhận mã của phím bấm.
Biên dịch chương trình và nạp chạy demo trên KIT AVR V4:
Link dowload File Code của chương trình:
TLiệu :
1. http://hoc8051.blogspot.com/2012/08/dientu686comung-dung-vi-xu-li-trong-ieu.html
2. http://suamayhandientukhanhhoa.blogspot.com/2014/05/hieu-ve-remode-sony-va-code-oc-ma-hong.html
3. http://www.dientuvietnam.net/forums/forum/vi-%C4%91i%E1%BB%81u-khi%E1%BB%83n-mcu-b%E1%BB%99-%C4%91i%E1%BB%81u-khi%E1%BB%83n-t%C3%ADn-hi%E1%BB%87u-s%E1%BB%91-dsc/vi-%C4%91i%E1%BB%81u-khi%E1%BB%83n-h%E1%BB%8D-8051/192130-h%C6%B0%E1%BB%9Bng-d%E1%BA%ABn-gi%E1%BA%A3i-m%C3%A3-remote-h%E1%BB%93ng-ngo%E1%BA%A1i-v%E1%BB%9Bi-8051
=======================================================================
Xin chào các bạn!
Trong bài viết này mình xin hướng dẫn lập trình giao tiếp hiển thị mã các loại remote hồng ngoại: remote sony, remote 3 kênh, 8 kênh, 20 kênh… qua mắt thu hồng ngoại 1838T lên màn hình LCD16x2 sử dụng Atmega16. Project chạy trên KIT AVR V4.
I.MÔ TẢ PHẦN CỨNG
Kit AVR V4 cung cấp cho các bạn khối mắt thu hồng ngoại 1838T có sơ đồ nguyên lý như sau:
Remote là 1 thiết bị phát sóng hồng ngoại, sử dụng trong các ứng dụng với mục đích điều khiển từ xa. Đặc điểm của remote:
-Một phím chỉ có duy nhất 1 mã lệnh.
-Các phím khác nhau thì có mã lệnh tương ứng khác nhau.
Trong tài liệu nói đến 2 loại remote:Remote hồng ngoại loại 3 phím(8 phím, 20 phím…):
Khi 1 phím được ấn, khung dữ liệu bên mắt thu hồng ngoại nhận được có dạng:
Dựa vào khung dữ liệu, ta quy định:-Bit 0: là xung ở mức cao trong 500us và xuống mức thấp trong 700us.
-Bit 1: là xung ở mức cao trong 1600us và xuống mức thấp trong 700us.
Dựa vào quy định trên, một khung dữ liệu gồm có:
-1 xung START: xung ở mức thấp trong 9ms và lên mức cao trong 4ms.
-8 bit 0 + 8 bit 1 nối tiếp nhau.
-Xung mã lệnh tương ứng với các phím.
Remote hồng ngoại SONY:
Khi 1 phím được ấn, khung dữ liệu bên mắt thu hồng ngoại nhận được có dạng:
Dựa vào khung dữ liệu, ta quy định:-BIT 0: xung ở mức thấp trong 1200us và lên mức cao trong 800us.
-BIT 1: xung ở mức thấp trong 600us và lên mức cao trong 600us.
Dựa vào quy định trên, một khung dữ liệu gồm có:
-1 xung START: xung ở mức thấp trong 2.6ms và lên mức cao trong 600us.
-Xung mã lệnh tương ứng với các phím.
II.LẬP TRÌNH PHẦN MỀM
Để lấy mã các phím trên remote, ta làm như sau:
Remote hồng ngoại 3 phím:
Remote hồng ngoại SONY:
Code driver nhận mã hồng ngoại:Thư viện code driver hồng ngoại cung cấp cho các bạn 2 hàm:
-uint8_t INFR_CheckStart(): Sử dụng để kiểm tra xung START.
HTML:
uint8_t INFR_CheckStart() { uint8_t i; #ifdef USE_REMOTE_MH if(INFR_DATA==0) { delay_us(500); if(INFR_DATA==0) { for(i=0;i<40;i++) { delay_us(200); if(INFR_DATA==1) return 0; } while(INFR_DATA==1); return 1; } } #endif #ifdef USE_REMOTE_SONY if(INFR_DATA==0) { delay_us(10); if(INFR_DATA==0) { for(i=0;i<7;i++) { delay_us(300); if(INFR_DATA==1) return 0; } while(INFR_DATA==0); return 1; } } #endif return 0; }
HTML:
uint16_t INFR_GetCode(void) { #ifdef USE_REMOTE_MH uint8_t i; uint16_t data_infr=0; if(INFR_CheckStart()) // Neu dung xung START { while(INFR_DATA==0); // Cho het bit 0 tiep theo for(i=0;i<24;i++) // Lay 24 bit du lieu (bao gom 8 bit 0 va 8 bit 1 dau tien sau xung start) { delay_us(750); // Delay 750us de kiem tra bit data_infr=data_infr<<1; if(INFR_DATA==0) data_infr|=1; while(INFR_DATA==1); // cho canh len while(INFR_DATA==0); } delay_ms(600); // Cho het tin hieu (chong nhieu) } #endif #ifdef USE_REMOTE_SONY uint8_t i; uint16_t data_infr=0; if(INFR_CheckStart()) { while(INFR_DATA==1); for(i=0;i<12;i++) { delay_us(1000); data_infr=data_infr<<1; if(INFR_DATA==0) data_infr|=1; while(INFR_DATA==0); while(INFR_DATA==1); } delay_ms(400); } #endif return data_infr; // Gia tri ma kenh tra ve }
Không có nhận xét nào:
Đăng nhận xét