📄 main.c
字号:
/******************************************************************/
//#作者
// BLF。
//#功能
// 1.电子日历,显示年月日、时分秒、星期和温度
// 2.利用4个按键调整,set键按下一次调解年月日星期时分秒,并闪烁,加减键调节闪烁的量
//#编写时间
// 2011年5月31日。
/******************************************************************/
#include<reg51.h>
#include"ds1302.c"
#include"1602.c"
#include"ds18b20.c"
#include"key.c"
#define uchar unsigned char
#define uint unsigned int
uchar cp,flash,Temp;
/*******************************显示函数***************************/
void display(void)
{
//F1602_clear();
gotoxy(1,0); //第一行
display_string("20");//显示20
if(key_set_flag == 1)//显示年的调整值并闪烁
{
if(flash)display_num(time_tmp[0]);
else display_string(" ");
}
else display_num(year);
display_string("/");
if(key_set_flag == 2)//显示月的调整值并闪烁
{
if(flash)display_num(time_tmp[1]);
else display_string(" ");
}
else display_num(moon);
display_string("/");
if(key_set_flag == 3)//显示日的调整值并闪烁
{
if(flash)display_num(time_tmp[2]);
else display_string(" ");
}
else display_num(date);
display_string(" WEEK");
if(key_set_flag == 4)//显示星期的调整值并闪烁
{
if(flash)write_data(num[time_tmp[3]]);
else display_string(" ");
}
else write_data(num[week]);
gotoxy(2,0); //第二行
if(key_set_flag == 5)//显示小时的调整值并闪烁
{
if(flash)display_num(time_tmp[4]);
else display_string(" ");
}
else display_num(hour);
if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
if(key_set_flag == 6)//显示分的调整值并闪烁
{
if(flash)display_num(time_tmp[5]);
else display_string(" ");
}
else display_num(min);
if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
if(key_set_flag == 7)//显示秒的调整值并闪烁
{
if(flash)display_num(time_tmp[6]);
else display_string(" ");
}
else display_num(sec);
display_string(" T ");display_num(Temp);display_string("C");
}
/*****************************中断服务函数**************************/
void timer0_isr(void) interrupt 1
{
TMOD = 0x01;
TH0 = (65536 - 4000)/256;
TL0 = (65536 - 4000)%256;
cp++;
if(cp >= 100) //半秒
{
cp = 0;
flash = ~flash;
display();
}
}
/*****************************中断初始化函数***********************/
void timer0_init(void)
{
TMOD = 0x01;
TH0 = (65536 - 4000)/256;
TL0 = (65536 - 4000)%256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
/********************************主函数函数***********************/
void main(void)
{
timer0_init();
F1602_init();
F1602_clear();
while(1)
{
key();
get_ds1302_time();
Temp = Read_Temperature();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -