标题:
单片机按键控制时分秒动态显示(时钟)+仿真
[打印本页]
作者:
戎马半生恋
时间:
2019-7-23 16:50
标题:
单片机按键控制时分秒动态显示(时钟)+仿真
仿真.PNG
(22.89 KB, 下载次数: 59)
下载附件
2019-7-23 16:47 上传
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
uchar hour,min,sec,ok;
uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //0~9 共阴 shuzu
0x77,0x7c,0x39,0x5e,0x79,0x71,0x09,0x38,0x40}; //a~f -
uchar disp[8]={0,0,18,0,0,18,0,0};
void display()
{
uchar i,j,k=0x80;
for(i=0;i<8;i++)
{
P0=dispcode[disp[i]];
P2=k;
k=k>>1;
for(j=250;j>0;j--);
P2=0;
}
}
uchar inkey()
{
uchar k;
static uint cnt=0;
k=P3;
if(k!=0xff)
{
cnt++;
if(cnt==10){return k;}
else if(cnt>200){cnt=180;return k;}
else return 0xff;
}
else {cnt=0;return 0xff;}
}
void keyaction()//按键功能
{
uchar k;
k=inkey();
switch(k)
{
case 0xf7://加秒
sec++;if(sec>60)sec=0;break;
case 0xfb://加分
min++;if(min>60)min=0;break;
case 0xfd://加时
hour++;if(hour>24)hour=0;break;
case 0xef://开始运行
ok=!ok;break;
default: break;
}
disp[0]=sec%10;
disp[1]=sec/10;
disp[3]=min%10;
disp[4]=min/10;
disp[6]=hour%10;
disp[7]=hour/10;
}
void calc()
{
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
min=0;
hour++;
if(hour>23)hour=0;
}
}
disp[0]=sec%10;
disp[1]=sec/10;
disp[3]=min%10;
disp[4]=min/10;
disp[6]=hour%10;
disp[7]=hour/10;
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<250;i++)
{
display();
keyaction();
}
if(ok)calc();
}
}
复制代码
全部资料51hei下载地址:
按键动态显示(时钟).zip
(64.41 KB, 下载次数: 34)
2019-7-23 16:49 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1