51单片机利用矩阵按键控制矩阵键盘数码管显示示0-9数字。。。救救我吧,我快疯了。

51单片机静态数码管显示数字程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机静态数码管显示数字程序
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢基于51单片机状态机矩阵键盘扫描数码管动态显示的时钟系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机状态机矩阵键盘扫描数码管动态显示的时钟系统
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩5页未读,
定制HR最喜欢的简历
你可能喜欢51单片机利用矩阵按键控制数码管显示0-9数字。。。救救我吧,我快疯了。_百度知道
51单片机利用矩阵按键控制数码管显示0-9数字。。。救救我吧,我快疯了。
我有更好的答案
#includeunsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x10};unsigned char t=0;unsigned char i=0;void Delay(unsigned char i){for(; i&0; i--)for(j=110; j&0; j--);}void DisplayLED(unsigned char n){P0=table[n];}void Keycan() //判断 矩阵键盘是否被按下{unsigned char tmp,P2=0
//第四列tmp=P2;tmp=tmp&0xf0;if(tmp!=0xf0){Delay(10);
//tmp=P2;tmp=tmp&0xf0; if(tmp!=0xf0){tmp=P2;switch(tmp){case 0xee: TR0=1;
// 启动定时器T0case 0xde: key=8;
// case 0xbe: key=4;
/ }while(tmp!=0xf0){tmp=P2;tmp=tmp&0xf0; }if(tmp!=0xee){DisplayLED(key);}}
}P2=0 //第三列tmp=P2;tmp=tmp&0xf0;if(tmp!=0xf0){Delay(10);
//tmp=P2;tmp=tmp&0xf0; if(tmp!=0xf0){tmp=P2;switch(tmp){case 0xed: TR0=0, key=i;
// 停止定时器T0case 0xdd: key=7;
// case 0xbd: key=3;
// }while(tmp!=0xf0){tmp=P2;tmp=tmp&0xf0; }DisplayLED(key);}
//第二列tmp=P2;tmp=tmp&0xf0;if(tmp!=0xf0){Delay(10);
//tmp=P2;tmp=tmp&0xf0; if(tmp!=0xf0){tmp=P2;switch(tmp){case 0xeb: key=0 ;
// case 0xdb: key=6;
// case 0xbb: key=2;
// }while(tmp!=0xf0){tmp=P2;tmp=tmp&0xf0; }DisplayLED(key);}
//第一列tmp=P2;tmp=tmp&0xf0;if(tmp!=0xf0){Delay(10);
//tmp=P2;tmp=tmp&0xf0; if(tmp!=0xf0){tmp=P2;switch(tmp){case 0xe7: key=9 ;
// case 0xd7: key=5;
/ case 0xb7: key=1;
// }while(tmp!=0xf0){tmp=P2;tmp=tmp&0xf0; }DisplayLED(key);}
} void main(){TMOD=0x01; EA=1;ET0=1;TR0=1;TH0=()/256;TL0=()%256;while(1){Keycan();if(t==20){t=0;P0=table[i];Delay(1000);i++;if(i==10){i=0;}}}}void TimerLED() interrupt 1 using 1{TH0=()/256;TL0=()%256;t++;}
采纳率:60%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机数码管怎样才能同时在两个数码管上面显示不同的数字??_百度知道
51单片机数码管怎样才能同时在两个数码管上面显示不同的数字??
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
void main()
//我直接把单片机P0口接到位端
//把P1口接到数码管段处理端
这个程序为什么只显示...
我有更好的答案
如果是2个及以上的smg,是不会用你的放法的。使用数码管都是用动态显示实现的。人能方便的频率是50HZ,你只要保证单个现实的时间在20ms一下就可以了。你要现实2个数码管,线点亮第一个数码管,然后点亮第二个数码管。
采纳率:41%
利用人眼的视觉暂留,先写第一个数码管的数字,再写第二个数码管, 只要两个数码管动态显示快,人眼就可以看成同时显示。
动态扫描。
为您推荐:
其他类似问题
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何用单片机AT89C51控制六位数码管,可以显示出不同的六个数字(123456)急需相关Proteus仿真图和源程序_百度知道
如何用单片机AT89C51控制六位数码管,可以显示出不同的六个数字(123456)急需相关Proteus仿真图和源程序
我有更好的答案
#include&reg51.h&#define uchar unsigned charuchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};uchar number=0;void t0isr() interrupt 1{ TH0=0xf4; TL0=0x48; switch(number) { case 0:P2=0x01;P0=distab[1]; case 1:P2=0x02;P0=distab[2]; case 2:P2=0x04;P0=distab[3]; case 3:P2=0x08;P0=distab[4]; case 4:P2=0x10;P0=distab[5]; case 5:P2=0x20;P0=distab[6]; default: } number++; if(number&5)number=0;}main(){ TMOD = 0x01; number = 0; TH0=0xf4; TL0=0x48; TR0=1; ET0=1; EA=1; while(1);}
为您推荐:
其他类似问题
at89c51的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 单片机矩阵按键 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信