51单片机红外控制.docx

上传人:scccc 文档编号:12607086 上传时间:2021-12-05 格式:DOCX 页数:7 大小:14.09KB
返回 下载 相关 举报
51单片机红外控制.docx_第1页
第1页 / 共7页
51单片机红外控制.docx_第2页
第2页 / 共7页
51单片机红外控制.docx_第3页
第3页 / 共7页
51单片机红外控制.docx_第4页
第4页 / 共7页
51单片机红外控制.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《51单片机红外控制.docx》由会员分享,可在线阅读,更多相关《51单片机红外控制.docx(7页珍藏版)》请在三一文库上搜索。

1、单片机与红外接收模块的接线说明:P32->J11注意事项:根据自己使用的LCD1602是否带有转接板,如果带有转接板的即为4位,需在LCD.H头文件 中将宏#define LCD1602_4PINS打开,我们这里使用的LCD1602是8位,所以默认将该宏注释。实验现象:按下红外遥控器键,在LCD1602上即可显示对应的键值码(注意:需要将红外遥控器的电 池绝缘片抽下)#in clude<reg51.h>#include,lcd.h" sbit IRIN=P3A2;unsigned char code CDIS113=H Red ControlH; unsigned

2、char code CDIS213=H IR-CODE:-H " unsigned char lrValue6;unsigned char Time;void lrlnit();void DelayMs(unsigned int);*函数名*函数功能*输入*输出:main:主函数:无:无void main()unsigned char i; lrlnit();Lcdlnit();LcdWriteCom(0x80);for(i=0;i<13;i+)LcdWriteData(CDISli);LcdWriteCom(0x80+0x40);for(i=0;i<13;i+)LcdW

3、riteData(CDIS2i);while(l)高位低位lrValue4=lrValue2»4; lrValue5=lrValue2 &OxOf; if(lrValue4>9)LcdWriteCom(0xc0+0x09);LcdWriteData(0x37+lrValue4);设置显示位置将数值转换为该显示的ASCII码 elseLcdWriteCom(0xc0+0x09);LcdWriteData(lrValue4+0x30);将数值转换为该显示的ASCII码 if(lrValue5>9) elseLcdWriteCom(OxcO+OxOa);LcdWrite

4、Data(lrValue5+0x37);将数值转换为该显示的ASCII码LcdWriteCom(OxcO+OxOa);LcdWriteData(lrValue5+0x30);将数值转换为该显示的ASCII码*函数名*函数功能*输入*输出:DelayMs():延时void DelayMs(unsigned int x) /0.14ms 误差 Ousunsigned char i;while(x-)for (i = 0; i<13; i+) *函数名:lrlnit()*函数功能:初始化红外线接收*输入:无*输出:无void lrlnit()ITO=1;/下降沿触发EXO=1;/打开中断0允许

5、EA=1;打开总中断IRIN=1;/初始化端I 1*函数名:Readlr()*函数功能:读取红外数值的中断函数*输入:无*输出:无void Readlr() interrupt 0unsigned char j,k;unsigned int err;Time=0;DelayMs(70);if(IRIN=O)确认是否真的接收到正确的信号err=1000;/1000*10us=10mS/超过说明接收到错误的信号/*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时侯,程序死在这里*/ while(IRIN=0)&&(err>0) 等待前面9ms的低电平

6、过去DelayMs(l);err-;if(IRIN=l)如果正确等到9ms低电平err=500;while(IRIN=l)&&(err>0)等待 4.5ms 的起始高电平过去DelayMs(l);err-;for(k=0;k<4;k+)共有 4 组数据for(j=0;j<8;j+)接收一组数据err=60;while(IRIN=0)&&(err>0)/等待信号前面的560us低电平过去 /while (!IRIN)DelayMs(l);err-;err=500;while(IRIN=l)&&(err>0) 计算高电平的时间长度。DelayMs(l);/0.14msTime+;err-;if(Time>30)EXO=1;return;lrValuek»=l;k表示第几组数据if(Time>=8)如果高电平出现大于565us,那么是1lrValuek |=0x80;Time=O;用完时间要重新赋值if(lrValue2 !=lrValue )return;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1