温度万年历附电路图和程序.docx
- 文档编号:30245055
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:62
- 大小:167.43KB
温度万年历附电路图和程序.docx
《温度万年历附电路图和程序.docx》由会员分享,可在线阅读,更多相关《温度万年历附电路图和程序.docx(62页珍藏版)》请在冰豆网上搜索。
温度万年历附电路图和程序
240x128温度万年历
主界面:
MCU方面电路图,单片机用的是STC89S52不是图上的C55
显示界面和开机界面:
附带程序
为了方便大家,程序文件复制出来就可以使用了!
仿真文件:
也可以参考下面,程序都是模块化程序!
如下图:
//main.c
#include
#include"LM4229.h"
#include"ds18b20.h"
#include"delay.h"
#include"ds1302.h"
unsignedintTempH,TempL,temp;//温度相关参数
unsignedchartab_wendu[5];
////////////////////显示日期时间////////////////////////////////////////////////
voiddisplay_time(void)
{
//年
Display8x16(0,8,time_buf1[1]/10+0x30);
Display8x16(0,9,time_buf1[1]%10+0x30);
//月
Display8x16(0,12,time_buf1[2]/10+0x30);
Display8x16(0,13,time_buf1[2]%10+0x30);
//日
Display8x16(0,16,time_buf1[3]/10+0x30);
Display8x16(0,17,time_buf1[3]%10+0x30);
//时
Display8x16(20,6,time_buf1[4]/10+0x30);
Display8x16(20,7,time_buf1[4]%10+0x30);
//分
Display8x16(20,9,time_buf1[5]/10+0x30);
Display8x16(20,10,time_buf1[5]%10+0x30);
//秒
Display8x16(20,12,time_buf1[6]/10+0x30);
Display8x16(20,13,time_buf1[6]%10+0x30);
switch(time_buf1[7]%10)
{
case2:
LcdPrint(0,26,"一");break;
case3:
LcdPrint(0,26,"二");break;
case4:
LcdPrint(0,26,"三");break;
case5:
LcdPrint(0,26,"四");break;
case6:
LcdPrint(0,26,"五");break;
case7:
LcdPrint(0,26,"六");break;
case1:
LcdPrint(0,26,"日");break;
default:
break;
}
}
/*----------------------------------------------------------------------
主函数
----------------------------------------------------------------------*/
voidmain()
{
unsignedchari;
Lcd_Init();//屏幕初始化
ClrScr();//清屏
ds1302_init();//时钟芯片初始化
//ds1302_write_time();//初次使用写入初次设定值
Show128x240(kiss);
LcdPrint(90,9,"Startting...");
LcdPrint(112,0,"------------------------------");
for(i=0;i<30;i++)
{
LcdPrint(112,i,">");
delay_us(600);
}
ClrScr();//清屏
LcdPrint(54,4,"WelcomeToRealTime!
");
delay_us(60000);
ClrScr();//清屏
LcdPrint(0,0,"日期:
20年月日星期");
LcdPrint(20,0,"时间:
:
:
");
LcdPrint(40,0,"温度:
℃");
LcdPrint(80,0,"人生格言:
");
LcdPrint(100,0,"当今世界,舍我其谁!
");
while
(1)
{
////////////////时间显示////////////////////////
ds1302_read_time();//读取时钟信息
display_time();//显示时间
////////////////温度显示////////////////////////
temp=ReadTemperature();//读取温度
if(temp&0x8000)
{
tab_wendu[0]='-';//负号标志到时候加上
temp=~temp;//取反加1
temp+=1;
}
elsetab_wendu[0]=TempH/100+0x30;
TempH=temp>>4;
TempL=temp&0x0F;
TempL=TempL*6/10;//小数近似处理
tab_wendu[1]=TempH/10%10+0x30;
tab_wendu[2]=TempH%10+0x30;
tab_wendu[3]='.';
tab_wendu[4]=TempL+0x30;
LcdPrint(40,6,tab_wendu);//显示温度
delay_ms(100);
}
}
//delay.h
#ifndef__DELAY_H__
#define__DELAY_H__
/*------------------------------------------------
uS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下T=tx2+5uS
------------------------------------------------*/
voiddelay_us(unsignedchart);
/*------------------------------------------------
mS延时函数,含有输入参数unsignedchart,无返回值
unsignedchar是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
voiddelay_ms(unsignedchart);
voiddelay_us(unsignedchart)
{
while(--t);
}
voiddelay_ms(unsignedchart)
{
while(t--)
{
//大致延时1mS
delay_us(245);
delay_us(245);
}
}
#endif
//ds18b20.h
#ifndef__DS18B20_H__
#define__DS18B20_H__
#include
#include"delay.h"
/*------------------------------------------------
端口定义
------------------------------------------------*/
sbitDQ=P3^6;//ds18b20端口
/*------------------------------------------------
函数声明
------------------------------------------------*/
unsignedintReadTemperature(void);
bitInit_DS18B20(void);
unsignedcharReadOneChar(void);
voidWriteOneChar(unsignedchardat);
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
bitInit_DS18B20(void)
{
bitdat=0;
DQ=1;//DQ复位
delay_us(5);//稍做延时
DQ=0;//单片机将DQ拉低
delay_us(200);//精确延时大于480us小于960us
delay_us(200);
DQ=1;//拉高总线
delay_us(50);//15~60us后接收60-240us的存在脉冲
dat=DQ;//如果x=0则初始化成功,x=1则初始化失败
delay_us(25);//稍作延时返回
returndat;
}
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay_us(25);
}
return(dat);
}
/*------------------------------------------------
写入一个字节
------------------------------------------------*/
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_us(25);
DQ=1;
dat>>=1;
}
delay_us(25);
}
/*------------------------------------------------
读取温度
------------------------------------------------*/
unsignedintReadTemperature(void)
{
unsignedchara=0;
unsignedintb=0;
unsignedintt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0x44);//启动温度转换
delay_ms(10);
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();//低位
b=ReadOneChar();//高位
b<<=8;
t=a+b;
return(t);
}
#endif
//eng.h
#ifndefdata_h
#definedata_h
charcodeASC_MSK[96*16]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*----*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,/*--!
--*/
0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00,/*--"--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,/*--#--*/
0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x18,0x18,0x3C,0x66,0x60,0x30,0x18,/*--$--*/
0x0C,0x06,0x66,0x3C,0x18,0x18,0x00,0x00,
0x00,0x00,0x70,0xD8,0xDA,0x76,0x0C,0x18,/*--%--*/
0x30,0x6E,0x5B,0x1B,0x0E,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x60,/*--&--*/
0x6F,0x66,0x66,0x3B,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,/*--'--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x18,0x18,0x30,0x30,/*--(--*/
0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,
0x00,0x00,0x00,0x30,0x18,0x18,0x0C,0x0C,/*--)--*/
0x0C,0x0C,0x0C,0x18,0x18,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x36,0x1C,0x7F,/*--*--*/
0x1C,0x36,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,/*--+--*/
0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--,--*/
0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,/*-----*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--.--*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18,/*--/--*/
0x18,0x30,0x30,0x60,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x33,0x37,0x37,0x33,/*--0--*/
0x3B,0x3B,0x33,0x1E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x1C,0x7C,0x0C,0x0C,/*--1--*/
0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x0C,/*--2--*/
0x18,0x30,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x1C,/*--3--*/
0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x30,0x30,0x36,0x36,0x36,/*--4--*/
0x66,0x7F,0x06,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,/*--5--*/
0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x18,0x30,0x7C,0x66,/*--6--*/
0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x06,0x0C,0x0C,0x18,/*--7--*/
0x18,0x30,0x30,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x76,0x3C,/*--8--*/
0x6E,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,/*--9--*/
0x3E,0x0C,0x18,0x38,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,/*--:
--*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,/*--;--*/
0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00,
0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,/*--<--*/
0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,/*--=--*/
0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,/*-->--*/
0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x0C,0x18,/*--?
--*/
0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0xC3,0xC3,0xCF,0xDB,/*--@--*/
0xDB,0xCF,0xC0,0x7F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x3C,0x66,0x66,0x66,/*--A--*/
0x7E,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7C,0x66,0x66,0x66,0x7C,/*--B--*/
0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x60,/*--C--*/
0x60,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x78,0x6C,0x66,0x66,0x66,/*--D--*/
0x66,0x66,0x6C,0x78,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,/*--E--*/
0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C,/*--F--*/
0x60,0x60,0x60,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x60,0x60,/*--G--*/
0x6E,0x66,0x66,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x7E,/*--H--*/
0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x18,0x18,0x18,0x18,/*--I--*/
0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,/*--J--*/
0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x6C,0x6C,0x78,/*--K--*/
0x6C,0x6C,0x66,0x66,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,/*--L--*/
0x60,0x60,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x63,0x63,0x77,0x6B,0x6B,/*--M--*/
0x6B,0x63,0x63,0x63,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x63,0x63,0x73,0x7B,0x6F,/*--N--*/
0x67,0x63,0x63,0x63,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,/*--O--*/
0x66,0x66,0x66,0x3C,0x00,0x00,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 万年历 电路图 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)