📄 main.c
字号:
#include "CONFIG.H"
sbit Bell_Out = P1 ^ 5;//闹钟管脚输出
sbit Mcs = P3 ^ 5; //
sbit Scs = P3 ^ 4; //
sbit Add_Key = P1 ^ 0;//加1键
sbit Dec_Key = P1 ^ 1;//减1键
sbit OK_Key = P1 ^ 2;//确定键
sbit RST=P1^3;
bit flag, Bell_Swh,Hourb,Minb,Secb,Kgb;//闪烁标志位
bit sec=0,min=0,hour=0,year=0,mon=0,day=0,weekk=0; //闪烁标志位
unsigned char id,id2,d,e,S_8563,H_8563,H_2402,S_2402; //
void Disp(void);
void id_case1_key(void);
void id_case2_key(void);
void Set_time(unsigned char sel,bit sel_1);
void Timer0_Init(void);
void Set_Bell(unsigned char sel, bit sel_1);
void Disp(void)//显示和闪烁函数
{
unsigned int i=0;
unsigned char a=0,b=0,c=0,f=0;
i=ReadTemperature();//读温度并送显 如果加了这一温度程序,那么时间相差走得很慢,那位高手给小弟指导一下
a=i/100;
Mcs=1;
Scs=0;
Disp_Digit(6,40,zero+a*16);
b=i/10-a*10;
Mcs=1;Scs=0;
Disp_Digit(6,48,zero+b*16);
c=i-a*100-b*10;
Mcs=0;Scs=1;
Disp1_Digit(6,0,zero+c*16);
if((((read_clock(0x08))&0x80)>>7)==0)
{
d=2;e=0;
}
else
{
d=1;e=9;
}
Disp_Digit(0,0,zero+d*16);
Disp_Digit(0,8,zero+e*16);
Conversion(((read_clock(0x08))&0x80)>>7,read_clock(0x08),read_clock(0x07)&0x1F,read_clock(0x05)&0x3F);
Disp_Chinese(4,0,nong);
Disp_Chinese(4,16,li);
d=year_moon;//读年
e=d;
d=d>>4;
e=e&0x0f;
Disp_Digit(4,32,zero+d*16);
Disp_Digit(4,40,zero+e*16);
Disp_Chinese(4,48,nian);
d=month_moon;//读月
e=d;
d=d>>4;
e=e&0x0f;
Disp1_Digit(4,0,zero+d*16);
Disp1_Digit(4,8,zero+e*16);
Disp1_Chinese(4,16,yue);
d=day_moon;//读日
e=d;
d=d>>4;
e=e&0x0f;
Disp1_Digit(4,32,zero+d*16);
Disp1_Digit(4,40,zero+e*16);
Disp1_Chinese(4,48,ri);
if(sec==1) //秒闪烁标志位
{
if(flag==1)
{
d=read_clock(0x02);//读秒
d=d&0x7f;
d=((d&0x70)>>4)*10+(d&0x0f);
e=d;
d=d/10;
e=e%10;
Mcs=0;Scs=1;
Disp1_Digit(2,40,zero+d*16);//送显示
Disp1_Digit(2,48,zero+e*16);
}
else
{
Mcs=0;Scs=1;
Disp1_Digit(2,40,space); //显示空格
Disp1_Digit(2,48,space);
}
}
else
{
d=read_clock(0x02);//读秒
d=d&0x7f;
d=((d&0x70)>>4)*10+(d&0x0f);
e=d;
d=d/10;
e=e%10;
Mcs=0;Scs=1;
Disp1_Digit(2,40,zero+d*16);
Disp1_Digit(2,48,zero+e*16);
}
if(min==1) //分钟闪烁标志位
{
if(flag==1)
{
d=read_clock(0x03);//读分钟
d=d&0x7f;
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp1_Digit(2,16,zero+d*16);
Disp1_Digit(2,24,zero+e*16);
}
else
{
Mcs=0;Scs=1;
Disp1_Digit(2,16,space); //显示空格
Disp1_Digit(2,24,space);
}
}
else
{
d=read_clock(0x03);//读分钟
d=d&0x7f;
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp1_Digit(2,16,zero+d*16);
Disp1_Digit(2,24,zero+e*16);
}
if(hour==1) //小时闪烁标志位
{
if(flag==1)
{
d=read_clock(0x04);//读小时
d=d&0x3f;
if(d>0x12)
{
Disp1_Digit(0,48,p);
d=d-0x12;
}
else
{
Disp1_Digit(0,48,A);
}
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(2,56,zero+d*16);
Mcs=0;Scs=1;
Disp1_Digit(2,0,zero+e*16);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(2,56,space); //显示空格
Mcs=0;Scs=1;
Disp1_Digit(2,0,space);
}
}
else
{
d=read_clock(0x04);//读小时
d=d&0x3f;
if(d>0x12)
{
Disp1_Digit(0,48,p);
d=d-0x12;
}
else
{
Disp1_Digit(0,48,A);
}
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(2,56,zero+d*16);
Mcs=0;Scs=1;
Disp1_Digit(2,0,zero+e*16);
}
if(year==1) //年闪烁标志位
{
if(flag==1)
{
d=read_clock(0x08);//读年
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(0,16,zero+d*16);
Disp_Digit(0,24,zero+e*16);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(0,16,space); //显示空格
Disp_Digit(0,24,space);
}
}
else
{
d=read_clock(0x08);//读年
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(0,16,zero+d*16);
Disp_Digit(0,24,zero+e*16);
}
if(mon==1) //月闪烁标志位
{
if(flag==1)
{
d=read_clock(0x07);
d=d&0x1f;//读月
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(0,48,zero+d*16);
Mcs=0;Scs=1;
Disp_Digit(0,56,zero+e*16);
Disp1_Chinese(0,0,yue);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(0,48,space); //显示空格
Mcs=0;Scs=1;
Disp_Digit(0,56,space);
}
}
else
{
d=read_clock(0x07);//读月
d=d&0x1f;
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(0,48,zero+d*16);
Mcs=0;Scs=1;
Disp_Digit(0,56,zero+e*16);
Disp1_Chinese(0,0,yue);
}
if(day==1) //日闪烁标志位
{
if(flag==1)
{
d=read_clock(0x05);//读日
d=d&0x3f;
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp1_Digit(0,16,zero+d*16);
Disp1_Digit(0,24,zero+e*16);
Disp1_Chinese(0,32,ri);
}
else
{
Mcs=0;Scs=1;
Disp1_Digit(0,16,space); //显示空格
Disp1_Digit(0,24,space);
}
}
else
{
d=read_clock(0x05);//读日
d=d&0x3f;
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp1_Digit(0,16,zero+d*16);
Disp1_Digit(0,24,zero+e*16);
Disp1_Chinese(0,32,ri);
}
Conver_week(((read_clock(0x08))&0x80)>>7,read_clock(0x08),read_clock(0x07)&0x1F,read_clock(0x05)&0x3F);
if(weekk==1) //星期闪烁标志位
{
if(flag==1)
{
d=week;
// d=read_clock(0x06);//读星期
Mcs=1;Scs=0;
Disp_Chinese(2,40,cone+(d-1)*32);//写入星期的汉字
}
else
{
Mcs=1;Scs=0;
Disp_Chinese(2,40,spaces); //显示空格
}
}
else
{
d=week;
// d=read_clock(0x06);//读星期
Mcs=1;Scs=0;
Disp_Chinese(2,40,cone+(d-1)*32);//写入星期的汉字
}
}
/******************************************************************************/
void Disp2(void)//显示和闪烁函数
{
if(Kgb==1) //开关闪烁标志位
{
if(flag==1)
{
if(Bell_Swh == 0)//0为关
{
Mcs=0;Scs=1;
Disp1_Chinese(2,32,guan);//显示关
}
else
{
Mcs=0;Scs=1;
Disp1_Chinese(2,32,kai);//显示开
}
}
else
{
Mcs=0;Scs=1;
Disp1_Chinese(2,32,spaces); //显示空格
}
}
else
{
if(Bell_Swh == 0)//关
{
Mcs=0;Scs=1;
Disp1_Chinese(2,32,guan);
}
else
{
Mcs=0;Scs=1;
Disp1_Chinese(2,32,kai);
}
}
if(Hourb==1)
{
if(flag==1) //时闪烁标志位
{
d = Read_One_Byte(0x01);//读取2408的小时的数值
Mcs=1;Scs=0;
Disp_Digit(4,48,zero+(d/10)*16);
Disp_Digit(4,56,zero+(d%10)*16);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(4,48,space); //显示空格
Disp_Digit(4,56,space);
}
}
else
{
d = Read_One_Byte(0x01);//读取24的小时的数值
Mcs=1;Scs=0;
Disp_Digit(4,48,zero+(d/10)*16);
Disp_Digit(4,56,zero+(d%10)*16);
}
if(Minb==1) //分钟闪烁标志位
{
if(flag==1)
{
d = Read_One_Byte(0x02);//读取24的分的数值
Mcs=0;Scs=1;
Disp1_Digit(4,8,zero+(d/10)*16);
Disp1_Digit(4,16,zero+(d%10)*16);
}
else
{
Mcs=0;Scs=1;
Disp1_Digit(4,8,space); //显示空格
Disp1_Digit(4,16,space);
}
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -