展示代码
需要看仿真图的
可以到微信公众号“伊斯电子编程”去查看仿真图。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define KEY_MENU 0x01
#define KEY_UP 0x02
#define KEY_DOWN 0x03
#define KEY_CLK 0x04
#define KEY_OK 0x05
#define KEY_CANCLE 0x06
uint hour,minute,sec,t;
uchar code tabdu[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};/*共阳极数码管编码从0到F*/
uchar code tabwe[]={
0x01,0x02,0x04,0x08};/*数码管位选编码,当P0为tablewe[0]时表示第一位数码管亮,其他五个不亮*/
uint n[4];
uchar tiao,ctiao; //分别控制调时的时候时分秒跳动,跳动的频率,闹钟控制位
uchar clkh=24,clkm,clks;//闹钟的定时时间 时、分、秒
uchar hour1,min1,sec1;
bit CLK,STOPCLK;
bit CONTIME;
bit flag;
//sbit dula=P2^6; //段选控制位
//sbit wela=P2^7; //位选控制位
sbit key_menu=P1^1;
sbit key_up=P1^2;
sbit key_down=P1^3;
sbit key_clk=P1^4;
sbit feng=P3^1;
sbit led=P3^0;
void delay(uint n) //延时函数
{
uint i,j;
for(i=n;i>0;i--)
for(j=40;j>0;j--);
}
void getval() //将时分秒的各位数据存放到数组n中
{
if(CLK) //如果在设置闹钟,则数码管显示相应数字而不是去显示时间
{
n[0]=clkh/10;
n[1]=clkh%10;
n[2]=clkm/10;
n[3]=clkm%10;
return;
}
if(CONTIME)
{
n[0]=hour1/10;
n[1]=hour1%10;
n[2]=min1/10;
n[3]=min1%10;