diengiadung
Chủ Nhật, 23 tháng 8, 2015
Thứ Bảy, 22 tháng 8, 2015
123
1 số ứng dụng
http://dinhbas.blogspot.com/2012_10_01_archive.html
http://hocdungphim.vn/khai-niem-ve-3-dai-tan-so-am-thanh.html
http://www.otofun.net/threads/nho-cac-cu-day-vai-duong-co-ban-ve-loa-amply-va-subwoofer.496189/
http://dinhbas.blogspot.com/2012_10_01_archive.html
http://hocdungphim.vn/khai-niem-ve-3-dai-tan-so-am-thanh.html
http://www.otofun.net/threads/nho-cac-cu-day-vai-duong-co-ban-ve-loa-amply-va-subwoofer.496189/
Hiển thị mã remote hồng ngoại
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 }
GIAO TIEP UART
Chào các bạn!!
Hôm nay mình sẽ hướng dẫn các bạn cách giao tiếp UART sử dụng 8051.
Sau khi đọc xong bài viết này bạn có thể:
- Biết cách truyền dữ liệu lên PC.
- Nhận dữ liệu từ PC.
1. UART trong 8051.
- Trong các chip 8051 có hỗ trợ 1 kênh giao tiếp UART với 4 chế độ. Chế độ hay được sử dụng đó là chế độ 1,ở chế độ này mỗi khung UART gồm 10 bit : 1bit start + 8 bit data + 1 bit stop.
- Sơ đồ kết nối UART:
2. Lập trình UART.
- Để có thể giao tiếp UART điều đầu tiên và quan trọng nhất là ta cần cấu hình tốc độ baud rate. Baud rat thông thường sử dụng là 9600. Để cấu hình tốc độ buad rate ta cần cấu hình timer1 hoặc timer 2 cho phù hợp.( xem thêm tại….)
- Sau khi đã có nguồn tạo tốc độ baud cho UART ta đi xây dựng những hàm cơ bản để điều khiển UART:
Hàm khởi tạo UART:
Hàm truyền một kí tự ra UART:HTML:void UART_Init(void) { #ifdef UART_USE_TIMER1 TMOD&=0x0f; TMOD |= 0x20; //Timer 1 mode 2. TL1 = 0xFD; TH1 = 0xFD; // baud rate =9600 TR1 = 1; #endif #ifdef UART_USE_TIMER2 RCLK=1; TCLK=1; //Timer 2: Baud Rate Generator RCAP2L = 0xDC; //Baud Rate 9600 RCAP2H = 0xFF; //Baud Rate 9600 TR2=1; #endif ES = 1; // Kich hoat ngat UART. IP = 0x10; // Thiet lap muc uu tien cho ngat UART. SCON = 0x50; // Chon che do UART mode 1. PCON=PCON&(~(0x80));//khong nhan doi toc do baud. }
Hàm nhận một kí tự UART:HTML:void UART_PutChar(unsigned char c) { tran_busy = 1; SBUF = c; while(tran_busy); }
- Hàm gửi một chuỗi kí tự ra UART:HTML:unsigned char UART_GetChar(void) { unsigned char temp=0; if(RI==1) { RI=0; temp=SBUF; } return temp; }
3. Bài toán ví dụ:HTML:void UART_Puts(unsigned char *s) { while (*s) { UART_PutChar(*s); s++; } }
Để hiểu hơn về cách sử dụng UART trong 8051 tôi đưa ra một bài toán thực hành sau: - Gửi chuỗi kí tự “DEMO UART” và “BanLinhKien.Vn” lên PC, sau đó nhận kí tự được gửi từ PC rồi hiển thị kí tự nhận được lên PC.
Code bài toán như sau:
Để hiểu rõ hơn các bạn có thể download code và mô phỏng bên dưới.HTML:int main(void) { unsigned char key; unsigned char str[25]; UART_Init(); LCD_Init(); delay_ms(10); LCD_Puts("DEMO UART"); delay_ms(1000); LCD_Clear(); EA=1; UART_Puts("DEMO UART"); LCD_Puts("BanLinhKien.Vn"); UART_Puts("BanLinhKien.Vn"); while(1) { key=UART_GetChar(); if(key) { sprintf(str,"Ki Tu VDK nhan duoc : %c",key); UART_Puts(str); LCD_Gotoxy(0,1); sprintf(str,"Ki Tu: %c",key); LCD_Puts(str); } } return 1; }
Chúc các bạn thành công!
Các file đính kèm:
Thứ Sáu, 21 tháng 8, 2015
OMEGA STI5518
http://50.112.106.113/omega%20STI5518-datasheet.html
http://pdf.datasheetarchive.com/indexerfiles/Datasheet-068/DSA00293939.pdf
http://pdf.datasheetarchive.com/indexerfiles/Datasheet-068/DSA00293939.pdf
Đăng ký:
Bài đăng (Atom)