完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
新手求助51达人 红外遥控数码管显示的问题,我用红外遥控控制数码管显示0-9
红外解码的程序没有问题,可以成功解码,数码管显示的程序是从之前的程序贴过来的,原程序也能正常显示,但用遥控器控制点亮时,按了按键却没有反应,求达人指教!!!! #include #define uchar unsigned char #define uint unsigned int uchar code seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //unsigned char code seg_we[]={0x10,0x20,0x40,0x80}; //11111110 11111101 11111011 11110111 uchar irtime,startflag,bitnum,irreceok; //11101111 11011111 10111111 01111111 uchar irdata[33]; uchar irprosok; uchar display[4]; uchar ircode[8] ; /*********************************************************************** 函数功能:延时函数,在数码管显示时使用,不需要很精确 ************************************************************************/ void delay_50us(uint t) { uchar j; for(;t>0;t--) for(j=19;j>0;j--); } /***************************************************** 函数功能:延时1ms ***************************************************/ void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++); } void delaynms(unsigned int n) //nms延时函数,用n的数值设定延时的毫秒数 { unsigned int i; for(i=0;i delay1ms(); } } /************************************************************************** 函数的功能:定时器0的初始化 **************************************************************************/ void timer0init() { TMOD=0x02; TH0=0x00; TL0=0x00; ET0=1; TR0=1; EA=1; } /************************************************************************ 外部中断0的初始化 ***********************************************************************/ void int0init() { IT0=1; EX0=1; EA=1; } /********************************************************************** 定时器0的功能函数,每中断一次irtime++,用于计时 ***********************************************************************/ void timer0() interrupt 1 { irtime++; } /*********************************************************************** 外部中断0的处理函数,每当有低电平数据过来时,中断一次,(使用次中 断的前提是,信号线必需接在外部中断0上面,也就是P3^2口),函数功能 是,把信号从高低电平变成时间的代码放入irdata【】中 ************************************************************************/ void int0() interrupt 0 { if(startflag) { if(irtime>40) { bitnum=0; } irdata[bitnum]=irtime; irtime=0; bitnum++; if(bitnum==33) { bitnum=0; irreceok=1; } } else { startflag=1; irtime=0; irreceok=1; } } /************************************************************************* 函数功能:把irdata【】中的时间代码转换成二进制代码存放在ircode【】中 **************************************************************************/ void irpros() { uchar k=17,value,j,i; for(j=0;j<2;j++) { for(i=0;i<8;i++) { value=value>>1; if(irdata[k]>6) { value=value|0x80; } k++; } ircode[j]=value; } irprosok=1; } /**************************************************************************** 函数的功能是:将ircode【】中的二进制代码转换成为16进制代码便于在数码管上显示 ***************************************************************************/ void irwork() { display[0]=ircode[0]/16; display[1]=ircode[0]%16; display[2]=ircode[1]/16; display[3]=ircode[1]%16; } /************************************************************************* 函数功能:数码管显示程序 **************************************************************************/ void dis8(uchar a) { P2&=0x0F; P0=seg_du[a]; P2|=0x80; delaynms(1); } /************************************************************************ 主函数功能:用解码的按键控制数码管点亮 ************************************************************************/ void main() { timer0init(); int0init(); irpros(); irwork(); while(1) { uchar i; i=0; if (display[4]==0x08) { dis8(i++); if(i==0x10) i=0; delaynms(500); } } } |
|
相关推荐
1个回答
|
|
求高手指教!! 等待高人出现!!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
195 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
172 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
453 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
697 浏览 2 评论
602 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11977 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 17:15 , Processed in 0.562790 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号