完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是一个用1602解码遥控器的程序。运行结果是 成功显示但同一个键按多次的数值不同,且用户码会变。 请大家帮忙看看。
#include #define uchar unsigned char #define uint unsigned int uchar irtime; uchar startflag; uchar irdata[33]; uchar bitnum; uchar irreceok; uchar ircode[4]; uchar irprosok; uchar disp[8]; //++++++++++++++++++++++++++++++++++++++++++++++++++ //1602 ***it rs=P2^6; ***it rw=P2^5; ***it e=P2^7; char i,j,k; void delay(char a)//延时 { for(k=0;k for(i=0;i<=110;i++); } void write(char r,char com)//1602写控制码和数据 { rw=0; rs=r; P0=com; delay(1); e=1; delay(1); e=0; } void init()//1602初始化 { e=0; write(0,0x38); write(0,0x0c); write(0,0x06); write(0,0x01); } //+++++++++++++++++++++++++++++++++++ void timer0init(void)//定时器0初始化 { TMOD=0x02; TH0=0x00; TL0=0x00; ET0=1; EA=1; TR0=1; } void int0init(void)//外部中断初始化 { IT0=1; EX0=1; EA=1; } void irwork(void)//将2进制转化为16进制 并把高位和地位分开转化为ASCII码 { char i; disp[0]=ircode[0]/16; disp[1]=ircode[0]%16; disp[2]=ircode[1]/16; disp[3]=ircode[1]%16; disp[4]=ircode[2]/16; disp[5]=ircode[2]%16; disp[6]=ircode[3]/16; disp[7]=ircode[3]%16; for(i=0;i<8;i++) { if(disp>9) disp=disp+0x37; else disp=disp+0x30; } } void irpros(void) //通过检测时间长度 判断电平 并存在数组里 { uchar k,i,j; uchar value; k=1; for(j=0;j<4;j++) { for(i=0;i<8;i++) { value=value>>1; //7 if(irdata[k]>6) //8 { value=value | 0x80; } k++; } ircode[j]=value; } irprosok=1;//完成标志物 } void main() { char i; timer0init(); int0init(); while(1) { if(irreceok)//电平提取完 { irpros(); irreceok=0; } if(irprosok)//数据转化完成 { irwork(); irprosok=0; } init(); write(0,0x80); for(i=0;i<8;i++) { write(1,disp); } } } void timer0 () interrupt 1//定时器0中断 { irtime++; //检测电平持续时间 } void int0 () interrupt 0//外部中断 下降沿促发 { if(startflag)//开始标志物(不重要) { if(irtime>52) //检测引导码 { bitnum=0; } irdata[bitnum]=irtime;//存储各电平时间 irtime=0; bitnum++; if(bitnum==33)//全部数据接受完 { bitnum=0; irreceok=1;//完成标志物 } } else { startflag=1; irtime=0; } } |
|
相关推荐
1个回答
|
|
别沉底 顶上去
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11764 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 02:12 , Processed in 0.498231 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号