社区
单片机/工控
帖子详情
单片机按键控制数码管显示,求代码
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
打赏
收藏
单片机按键控制数码管显示,求代码
按键控制数码管显示 要求: 1.绘制仿真图,包含四个按键和一个四位的数码管。(20分) 2.按键1按下数码管显示数值加1。(20分) 3.按键2按下数码管显示数值减1。(20分) 4.按键3按下数码管显示数值清0。(20分) 5.按键4按下数码管自动开始/暂停自加1。(20分)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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币?
19-
按键控制
单个
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)
19-
按键控制
单个
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)19-
按键控制
单个
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)19-
按键控制
单个
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)19-
按键控制
单个...
单片机
八个
按键控制
数码管显示
对应序号
代码
及仿真
单片机
八个
按键控制
数码管显示
对应序号
按键控制
数码管实现显示数值加减
基于普中51
单片机
开发板,运用定时器/计数器0。
按键控制
数码管,实现60秒计时,数值加减清零。
单片机
C语言程序设计
数码管显示
4×4键盘矩阵按键(有源码)
单片机
C语言程序设计
数码管显示
4×4键盘矩阵按键(有源码)
单片机
C语言程序设计
数码管显示
4×4键盘矩阵按键(有源码)
单片机
C语言程序设计
数码管显示
4×4键盘矩阵按键(有源码)
单片机
C语言程序设计
数码管显示
4×4...
54-多位数按键加减(闪烁)
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)
54-多位数按键加减(闪烁)
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)54-多位数按键加减(闪烁)
数码管显示
(51
单片机
C语言实例Proteus仿真和
代码
)54-多位数按键加减(闪烁)
数码管显示
(51
单片机
C语言实例...
单片机/工控
27,375
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章