📄 text1.c
字号:
clock_out(ord);
clock_out(dd);
clock_Rst=0;
clock_clk=1;
}
//设置1302的初始时间
void Init_1302(){//(2008年1月1日00时00分00秒星期二)
if(read_clock(0xc1) != 0xf0)
{
write_clock(0x8e,0x00);//允许写操作
write_clock(0x8c,0x08);//年
write_clock(0x8a,0x03);//星期
write_clock(0x88,0x05);//月
write_clock(0x86,0x28);//日
write_clock(0x84,0x00);//小时
write_clock(0x82,0x33);//分钟
write_clock(0x80,0x40);//秒
write_clock(0x90,0xa5);//充电
write_clock(0xc0,0xf0); //判断是否初始化一次标识写入
write_clock(0x8e,0x80);//禁止写操作
}
}
//常用时钟数据读取
void read_clocks()
{
timedata[0] = read_clock(0x81);//读取秒数据
timedata[1] = read_clock(0x83);//读取分钟数据
timedata[2] = read_clock(0x85);//小时
timedata[3] = read_clock(0x87);//日
timedata[4] = read_clock(0x89);//月
timedata[5] = read_clock(0x8b);//星期
timedata[6] = read_clock(0x8d);//年
}
void set_display(uchar com, uchar dat) //调整时间时显示函数
{
lcd_wcom(com);
lcd_wdat(dat/16+0x30);
lcd_wdat(dat%16+0x30);
}
set_selfdisplay(uchar com, uchar dat) //调整星期时自定义字符显示函数
{
lcd_wcom(com);
lcd_wdat(dat);
}
void int_checkbutton() //初始化按键
{
k1=1;
k2=1;
k3=1;
k4=1;
}
void int_t0() interrupt 1 using 1 //定时中断
{
TH0=0x3c;
TL0=0xb0;
i++;
if(i==10)
{
i=0;
//更新显示数据
display();
}
}
//********************************************//
//**************主程序************************//
void main()
{
TMOD=0x01; //设置定时中断
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
int_display(); //初始化显示
int_checkbutton(); //按键初始化
Init_1302(); //1302初始化
while(1)
{
if(k1==0) //调整模式键按下
{
delay(30);
if(k1==0)
{
while(!k1); //确定按下
sett++;
TR0=0;
beeper(1);
if(sett==1) //按下的次数不同,光标移动到不同的调整位置处
{
lcd_wcom(0x0f);
lcd_wcom(0x83);
}
if(sett==2)
{
lcd_wcom(0x86);
}
if(sett==3)
{
lcd_wcom(0x89);
}
if(sett==4)
{
lcd_wcom(0x8c);
}
if(sett==5)
{
lcd_wcom(0xc1);
}
if(sett==6)
{
lcd_wcom(0xc4);
}
if(sett==7)
{
lcd_wcom(0xc7);
}
if(sett==8) //第八次按下模式键,退出调整,恢复走时显示
{
sett=0;
lcd_wcom(0x0c);
TR0=1;
}
}
}if(sett!=0)
{
if(k2==0) //增加键按下
{
delay(30); //延时消抖
if(k2==0)
{
while(!k2);
beeper(1); //按键放开之后蜂鸣器叫一下,表示确定
if(sett==1) //根据按下的次数调整相应的项目
{ uchar item ;
item=timedata[6];
item=(item/16)*10+item%16;
item++; //年份加一
if(item==100)item=0;
item=(item/10)*16+item%10;
set_display(0x82,item); //调整时显示
write_clock(0x8e,0x00);//允许写操作
write_clock(0x8c,item);
lcd_wcom(0x83);
}
if(sett==2)
{ uchar item ;
item=timedata[4];
item=(item/16)*10+item%16;
item++; //月份加一
if(item==13)item=0;
item=(item/10)*16+item%10;
set_display(0x85,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x88,item);
lcd_wcom(0x86);
}
if(sett==3)
{ uchar item ;
item=timedata[3];
item=(item/16)*10+item%16;
item++; //日加一
if(item==32)item=0;
item=(item/10)*16+item%10;
set_display(0x88,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x86,item);
lcd_wcom(0x89);
}
if(sett==4)
{ uchar item ;
item=timedata[5];
item=(item/16)*10+item%16;
item++; //星期加一
if(item==8)item=1;
item=(item/10)*16+item%10;
set_selfdisplay(0x8c,disp_self(item%16));
write_clock(0x8e,0x00);//允许写操作
write_clock(0x8a,item);
lcd_wcom(0x8c);
}
if(sett==5)
{ uchar item ;
item=timedata[2];
item=(item/16)*10+item%16;
item++; //小时加一
if(item==24)item=0;
item=(item/10)*16+item%10;
set_display(0xc0,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x84,item);
lcd_wcom(0xc1);
}
if(sett==6)
{ uchar item ;
item=timedata[1];
item=(item/16)*10+item%16;
item++; //分加一
if(item==60)item=0;
item=(item/10)*16+item%10;
set_display(0xc3,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x82,item);
lcd_wcom(0xc4);
}
if(sett==7)
{ uchar item ;
item=timedata[0];
item=(item/16)*10+item%16;
item++; //秒加一
if(item==60)item=0;
item=(item/10)*16+item%10;
set_display(0xc6,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x80,item);
lcd_wcom(0xc7);
}
}
}
if(k3==0) //下面这段是减按钮的程序,和加按钮程序差不多
{ //唯一不同就是++变成--,还有就是上限变成了下限
delay(30);
if(k3==0)
{
while(!k3);
beeper(1);
if(sett==1)
{ uchar item ;
item=timedata[6];
item=(item/16)*10+item%16;
item--;
if(item==0)item=99;
item=(item/10)*16+item%10;
set_display(0x82,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x8c,item);
lcd_wcom(0x83);
}
if(sett==2)
{ uchar item ;
item=timedata[4];
item=(item/16)*10+item%16;
item--;
if(item==-1)item=12;
item=(item/10)*16+item%10;
set_display(0x85,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x88,item);
lcd_wcom(0x86);
}
if(sett==3)
{ uchar item ;
item=timedata[3];
item=(item/16)*10+item%16;
item--;
if(item==-1)item=31;
item=(item/10)*16+item%10;
set_display(0x88,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x86,item);
lcd_wcom(0x89);
}
if(sett==4)
{ uchar item ;
item=timedata[5];
item=(item/16)*10+item%16;
item--;
if(item==0)item=7;
item=(item/10)*16+item%10;
set_selfdisplay(0x8c,disp_self(item%16));
write_clock(0x8e,0x00);//允许写操作
write_clock(0x8a,item);
lcd_wcom(0x8c);
}
if(sett==5)
{ uchar item ;
item=timedata[2];
item=(item/16)*10+item%16;
item--;
if(item==-1)item=23;
item=(item/10)*16+item%10;
set_display(0xc0,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x84,item);
lcd_wcom(0xc1);
}
if(sett==6)
{ uchar item ;
item=timedata[1];
item=(item/16)*10+item%16;
item--;
if(item==-1)item=59;
item=(item/10)*16+item%10;
set_display(0xc3,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x82,item);
lcd_wcom(0xc4);
}
if(sett==7)
{ uchar item ;
item=timedata[0];
item=(item/16)*10+item%16;
item--;
if(item==-1)item=59;
item=(item/10)*16+item%10;
set_display(0xc6,item);
write_clock(0x8e,0x00);//允许写操作
write_clock(0x80,item);
lcd_wcom(0xc7);
}
}
}
}
tdat=rd_temperature(); //读温度值
tem_conv(); //转化温度
read_clocks(); //读时钟数据
updata_disp(); //数据送入显示缓冲区
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -