📄 万年日历.c
字号:
#include"init.h"
#include"delay.h"
#include"12864.h"
#include"ds1302.h"
#include"ds18b20.h"
uchar code weektable[14]="一二叁四五六日";
uchar code table1[]="2012年12月31日";
uchar code table2[]="23时59分45秒";
uchar code table3[]="星期:叁 ";
uchar code table4[]="温度:+25.8 ℃";
/**********************************************************
//BCD编码转换成十进制
**********************************************************/
uchar transform0(uchar time)
{
return((time/16)*10+(time%16));
}
/**********************************************************
ds1302时钟读取的值分离后写入数组中
**********************************************************/
void time_in()
{
clock_reda();
clock[0]=transform0(year)/10; //年十位
clock[1]=transform0(year)%10; //年个位
clock[2]=transform0(mouth)/10;//月个位
clock[3]=transform0(mouth)%10;//月个位
clock[4]=transform0(day)/10; //日个位
clock[5]=transform0(day)%10; //日个位
clock[6]=weektable[(week-1)*2];//星期位
clock[7]=weektable[(week)*2-1];
clock[8]=transform0(hour)/10; //时个位
clock[9]=transform0(hour)%10; //时个位
clock[10]=transform0(minute)/10;//分个位
clock[11]=transform0(minute)%10;//分个位
clock[12]=transform0(sec)/10; //秒个位
clock[13]=transform0(sec)%10; //秒个位
}
/**********************************************************
ds18b20读取温度值存入数组中
**********************************************************/
void temperture()
{
int temp;
uint TempH,TempL;
delay_nms(1);
temp =readtemperture();
if(temp&0x8000)
{
TempData[0]='-';//负号标志
temp=~temp; // 取反加1
temp +=1;
}
else
TempData[0]='+';
TempH=temp>>4;
TempL=temp&0x0F;
TempL=TempL*6; //小数近似处理
if((TempH/100==0)&&((TempH%100)/10==0)) //消隐
TempData[1]='H';
else
TempData[1]=(TempH%100)/10+0x30; //十位温度
TempData[2]=(TempH%100)%10+0x30; //个位温度
TempData[3]='.';
TempData[4]=TempL/10+0x30; //小数十位温度
TempData[5]=TempL%10+0x30; //小数个位温度
}
/**********************************************************
ds1302时钟显示
**********************************************************/
void display()
{
time_in(); //ds1302时钟读取的值分离后写入数组中
temperture(); //ds18b20读取温度值存入数组中
char2_12864(1,2,0); //年
char2_12864(1,4,2); //月
char2_12864(1,6,4); //日
char2_12864(2,1,8); //时
char2_12864(2,3,10); //分
char2_12864(2,5,12); //秒
char2_12864(3,5,6); //星期
char2_12864(4,4,0); //温度
}
void main(void)
{
init_ds1302(); //ds1302初始化
init_12864(); //12864初始化
char_12864(1,0,0x02); //笑脸
string_12864(1,1,table1);
string_12864(2,1,table2);
string_12864(3,2,table3);
string_12864(4,1,table4);
while(1)
{
display(); //显示
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -