单片机按键控制数码管显示,求代码

weixin_45341716 2019-10-18 05:02:55
按键控制数码管显示 要求: 1.绘制仿真图,包含四个按键和一个四位的数码管。(20分) 2.按键1按下数码管显示数值加1。(20分) 3.按键2按下数码管显示数值减1。(20分) 4.按键3按下数码管显示数值清0。(20分) 5.按键4按下数码管自动开始/暂停自加1。(20分)
...全文
2192 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
风雨之歌 2019-10-28
  • 打赏
  • 举报
回复 1
在proteus模式过程中数码管超过9后显示异常,可能跟电脑刷新频率有关,所以程序是否可行还需要实际检验,这两天没时间没弄,有时间我在验证一下,新手如果有不对的地方请大家指教

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示0-9
uchar flag,temp; //标记
uint index;
void delay(uint t){ //延时函数
uint n;
while(t--){
for(n=0;n<6245;n++);
}
}
void show(uint m){ //数码管显示函数,根据不同位数显示
if(index<10){ //当m<10时,只显示一位
P3=0xf7;
P2=led[m];
}else if(m>=10 && m<100){ //当m>=19并且m<100时,显示2位
P3=0xf7;
P2=led[m%10];
P3=0xfb;
P2=led[m/10];
}else if(m >=100 && m <1000){ //当m>=100并且m<1000时,显示3位
P3=0xf7;
P2=led[m%10];
P3=0xfb;
P2=led[m%100/10];
P3=0xfd;
P2=led[m/100];
}else if(m >1000 && m<10000){ //当m>=1000并且m<10000时,显示4位
P3=0xf7;
P2=led[m%10];
P3=0xfb;
P2=led[m%100/10];
P3=0xfd;
P2=led[m%1000/100];
P3=0xfe;
P2=led[m/1000];
}
}
void main(){
P3=0xf7;
P2=led[0];
while(1){
if(P1 != 0xff){ //当4个按键任意一个按下时,进行如下判断
if(P1 == 0xfe && flag==0){ //第一个按键按下,index数值+1
flag=1;
index++;
if(index <0 || index >9999){index=0;} //index的上限和下限
}
if(P1 == 0xfd && flag==0){ //第二个按键按下,index数值-1
flag=1;
index--;
if(index <0 || index >9999){index=0;}
}
if(P1 == 0xfb && flag==0){ //第三个按键按下,index数值=0
index=0;
}
if(P1 == 0xf7 && flag==0 && temp==0){ //第四个按键第一次按下,对temp标记进行更改,同时index自增+1
flag=1;
temp=1;
while(1){ //index循环自增+1
delay(5);
index++;
if(index <0 || index >9999){index=0;}
show(index); //显示
if(P1 != 0xff){ //在index自增的过程中如果有按键被按下则终止自增
break;
}
}
}
if(P1 == 0xf7 && flag==0 && temp==1){ //同上部,只是index自增变成自减
flag=1;
temp=0;
while(1){
delay(5);
index--;
if(index <0 || index >9999){index=0;}
show(index);
if(P1 != 0xff){
break;
}
}
}
}else{
flag=0;
}
show(index); //显示
}
}
1234老五 2019-10-25
  • 打赏
  • 举报
回复
这种代码应该很容易找到吧
瞭望 灯塔 2019-10-19
  • 打赏
  • 举报
回复
奖励的是C币?

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧