《基于单片机的红外遥控风扇.doc》由会员分享,可在线阅读,更多相关《基于单片机的红外遥控风扇.doc(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流基于单片机的红外遥控风扇.精品文档.基于单片机的红外风扇遥控市场上销售的带遥控的风扇价格普遍比较昂贵,如果能用普通的电视红外线遥控器来遥控风扇调档转速,对于DIY们来说,不但可以节约金钱,还可以提高自己的动手能力,何乐而不为呢?本电路采用价格低廉的AT89C2051单片机为主控CPU,一体化接受头接受遥控器SSA3010T发出的编码,送CPU解码后,CPU控制相应的单片机动作!具体的原理图如下:为叙述方便起见,上图只画出了P3_3引脚的相应连接电路,还有2个可接在P3_0和P3_5上。分别控制风扇的高、中、低档。7段共阳数码管显示相应的档数,
2、当按下遥控器的1、2、3键,分别显示1、2、3。按下遥控器OFF键不显示并关闭风扇的运行!红外线一体化接受头引脚如下:1为GND 2为VCC 3为DATASAA3010T电视遥控器的数据码值表如下: *开关55D2 静音55D3 *155AB 255AC 355AD 455B2 *555B3 655B4 755B5 855CA *955CB 055AA 单/双55CC 调谐5554 *节目+56AA 节目-56AB 微调+56CD 微调-56D2 *音量+552A 存储56CB 召回55D5 *音量-552B 爱好55D4 定时56B4 *对比+5552 色彩+5532 亮度+5526 录像5
3、64A *对比-5553 色彩-5533 亮度-55D2 电视5655 C51控制程序具体如下:本程序采用SAA3010T电视遥控器若没有SAA3010T的遥控器,读者可获知相应的编码,更改CASE语句里的相应的数据,即可!这里不在叙述如何获知编码,望读者谅解!#include static unsigned char data IRCode3,IRCON,IRCON2;static unsigned char data DT;void main(void)unsigned int de;TMOD = 0x01; /定时器0方式1EA = 1; /允许CPU中断IT0 = 1; /INT0下降
4、沿有效EX0 = 1; /开INT0中断P3_3=0x00;P3_0=0x00;P3_5=0x00; P1=0Xc0; /上电复位显示“0”dofor (de=0; de8000; de+)P3_6 = 1; /LED点亮for (de=0; de8000; de+)P3_6 = 0; /LED熄灭if (DT)EX0=0; /关闭外中断for (de=0; de30000; de+) /按键值正确后会有一个延时,防止重复按键P3_6 = 1;for (de=0; de30000; de+)P3_6 = 0;DT = 0;EX0 = 1;while(1);/定时器0中断处理void timei
5、nt(void) interrupt 1 using 2TH0=0xFC; /TH0=0XFC;TL0=0XE0TL0=0xE0; /设定时值为800usif (IRCON3)if (IRCON28) /中断一次读一次遥控接收头的状态,每二次为遥控编码中的一个位IRCON2+;IRCodeIRCON=IRCodeIRCON1;/每读一次放入变量中的二进制的一个位,每次左移一位IRCodeIRCON=IRCodeIRCON | P3_2; /每八次填满一个字节,一个字节存放遥控编码4个位elseIRCON+; /填满一个字节,指向下一个变量IRCON2=0; /计数清零elseTR0 = 0;
6、/关闭定时器ET0 = 0; /定时器0中断关闭if (IRCode1 != 0xFF) & (IRCode2 != 0xFF)if (IRCode1 = 0x55)switch (IRCode2)case 0xAB:P1=0Xf9;P3_3=0x01;P3_0=0x00;P3_5=0x00;DT = 1;break;case 0xAC:P1=0Xa4;P3_0=0x01;P3_5=0x00;P3_3=0x00;DT = 1;break;case 0xAD:P1=0Xb0;P3_5=0x01;P3_3=0x00;P3_0=0x00;DT = 1;break;case 0xD2:P1=0xff;
7、P3_3=0x00;P3_0=0x00;P3_5=0x00;DT = 1;break;default :break;/switch/INT0中断void INT0Fun(void) interrupt 0 using 2EX0 = 0; /外部中断0关闭ET0 = 1; /定时器0中断打开TH0=0xFC;TL0=0xE0; /设定时值为800usfor (IRCON=0; IRCON3; IRCON+)IRCodeIRCON = 0;IRCON = 0;IRCON2 = 0; /计数清零TR0 = 1;/开始计数实物图片如下:聪明的读者可以再增加几个键来设定风扇运行的时间,最后提醒大家一点:因涉及了220V的高压,所以一定要注意人身安全!单片机C51控制程序参考鉴戒了磁动力明浩站长的,再此深表感谢!作者联系方式: 411201 湖南科技大学20#信箱 李海群 MP :13789305264E-mail:haiqun_li版面:单片机应用技术 责任编辑:李巍
限制150内