⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 万年日历.c

📁 万年日历设计
💻 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 + -