使用51單片機模擬紅外遙控器源碼(附件里面可以下載完整源碼): |
單片機源程序如下:
- //#################################################################################################
- //文件:51單片機的紅外遙控解碼程序
- //屬性:使用外部中斷0連接遙控頭,接收紅外遙控鍵值送P2口顯示,12MHz外部晶振
- //作者:新思科電子
- //資源:P3.2=接收頭輸入,P2=8LED
- //#################################################################################################
- #include"reg52.h"
- #define uint unsigned int
- #define uchar unsigned char
- uchar led=0x00;
- void io_init(void);
- void int_init(void);
- void main(void)
- {
- io_init();
- int_init();
- while(1);
- }
- void io_init(void)
- {
- P0=0xff;
- P1=0xff;
- P2=0xff;
- P3=0xff;
- }
- void int_init(void)
- {
- EX0=1;
- EA=1;
- }
- void interrupt0()interrupt 0
- {
- uchar i=0,j=0,k=0,us=0;
- uchar addr[4]={0};
- EX0=0;
- for(i=0;i<255;i++) //9ms內有高電平認為是干擾
- {
- if(P3&0x04) //255的值實際時間為800us
- {
- EX0=1;
- return;
- }
- }
- while(!(P3&0x04)); //等待9ms低電平過去
- for(i=0;i<4;i++)
- {
- for(j=0;j<8;j++)
- {
- while(P3&0x04); //等待4.5ms高電平過去
- while(!(P3&0x04)); //等待0.56ms低電平后面的高電平
- while(P3&0x04) //計算這個高電平的時間
- {
- for(us=0;us<=32;us++); //100us的延時語句
- if((k++)>=30) //高電平時間過長退出程序
- {
- EX0=1;
- return;
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
___38K小型紅外遙控器源碼.rar
(111.3 KB, 下載次數: 60)
2018-2-8 16:04 上傳
點擊文件名下載附件
|