单片机数字钟C程序2——51单片机的Proteus实验
void disp(uchar a1,uchar a2,uchar a3,uchar a4,uchar a5,uchar a6) //显示函数
{
dula=0;
P0=table[a1]; //段码送P0口
dula=1; //选定段选
dula=0; //关段选
wela=0;
P0=0x01; //位选(第1个数码管)送P0
wela=1; //选定位选
wela=0; //关位选
delay(1); //延时一小会
dula=0;
P0=table[a2]; //第2个数码管显示,带小数点
dula=1;
dula=0;
P0=0x02;
wela=1;
wela=0;
delay(1);
dula=0;
P0=table[a3]; //第3个数码管显示
dula=1;
dula=0;
wela=0;
P0=0x04;
wela=1;
wela=0;
delay(1);
P0=table[a4]; //第4个数码管显示,带小数点
dula=1;
dula=0;
P0=0x08;
wela=1;
wela=0;
delay(1);
dula=0; //第5个数码管显示
P0=table[a5];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(1);
P0=table[a6]; //第6个数码管显示
dula=1;
dula=0;
P0=0x20;
wela=1;
wela=0;
delay(1);
}
void zd_clock() //整点报时函数
{
if(minu==59&&(sec==53||sec==55||sec==57))
{
fm=0;
delay(1);
fm=1;
delay(1);
}
if(minu==59&&sec==59)
{
fm=0;
delay(1);
fm=1;
delay(1);
}
}
void nz_clock() //闹钟函数
{
if(hour==n_hour&&minu==n_minu&&sec==n_sec)
if((sec%2==0)&&sec<30)
{
fm=0;
delay(20);
fm=1;
delay(20);
}
}
void set_time() //设置时间函数
{
if(set_5==2)
{
if(set_2==1)
{
hour=incone(hour);
if(hour==24)
{hour=0;}
// if(hour<0)
// {hour=23;}
hour=decone(hour);
}
if(set_2==2)
{
minu=incone(minu);
if(minu==60)
{minu=0;}
// if(minu<0)
// {minu=59;}
minu=decone(minu);
}
}
}
void set_mdw() //设置月日星期函数
{
if(set_5==4)
{
if(set_2==1)
{
mon=incone(mon);
if(mon==13)
{mon=1;}
mon=decone(mon);
// if(mon==0)
// {mon=12;}
}
if(set_2==2)
{
day=incone(day);
if(day==32)
{day=0;}
day=decone(day);
// if(day==0)
// {day=0;}
}
if(set_2==3)
{
week=incone(week);
if(week==8)
{week=0;}
week=decone(week);
// if(week==0)
// {week=7;}
}
}
}
void set_clock() //设置闹钟函数
{
if(set_5==6)
{
if(set_2==1)
{
n_hour=incone(n_hour);
if(n_hour==24)
{n_hour=0;}
n_hour=decone(n_hour);
// if(n_hour==0)
// {n_hour=0;}
}
if(set_2==2)
{
n_minu=incone(n_minu);
if(n_minu==60)
{n_minu=0;}
n_minu=decone(n_minu);
// if(n_minu==0)
// {n_minu=0;}
}
}
}
uchar incone(uchar n) //加1函数
{
if(s3==0)
{ delay(200);
if(s3==0)
{
n++;
while(!s3);
}
}
return(n);
}
uchar decone(uchar m) //减1函数
{
if(s4==0)
{
delay(200);
if(s4==0)
{
m--;
while(!s4);
if(m<0)
{m=0;}
}
}
return(m);
}
void delay(uint k) //延时函数
{
uint i,j;
for(i=k;i>0;i--)
for(j=80;j>0;j--);
}
- 按钮控制LED——51单片机的Proteus实验
- 流水灯——51单片机的Proteus实验
- 数码显示管——51单片机的Proteus实验
- 蜂鸣器——51单片机的Proteus实验
- 蜂鸣器演奏祝你平安——51单片机的Proteus实验
- 蜂鸣器演奏兰花草——51单片机的Proteus实验
- 蜂鸣器演奏老鼠爱大米——51单片机的Proteus实验
- ADC0808模数转换——51单片机的Proteus实验
- 开关控制流水灯2——51单片机的Proteus实验
- 单片机数字钟C程序——51单片机的Proteus实验1 2
- 8951+1602显示字符——51单片机的Proteus实验
- LCD1602显示程序头文件——51单片机的Proteus实验
- 8951+1602数字钟——51单片机的Proteus实验
- 4X4矩阵键盘+1602——51单片机的Proteus实验
- 8952+1602测单片机内部时钟频率——51单片机的Proteus实验
