资源简介
本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。系统以AT89S52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、星期、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar amiaoshifenriyueniankeynumtemp/*时间分段标志*/year1month1day1;
#define h1 0x80 //LCD第一行的初始化位置
#define h2 0x80+0x40 //LCD第二行初始化位置
//定义1602相关管脚
sbit rs=P1^2;
sbit en=P1^0;
sbit rw=P1^1;
//DS1302芯片的管脚定义
sbit IO=P1^5;
sbit SCLK=P1^4;
sbit RST=P1^6;
sbit ACC0=ACC^0;//设置累加器
sbit ACC7=ACC^7;
//按键
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
void delay2(uint s)//延时,用于温度程序部分
{
while(s--);//区分i,用s表示
}
void delay(uint z)//延时函数
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void writecom(uchar com)//写入指令函数
{
rs=0;
rw=0;
P0=com;
delay2(1);
en=1;
delay2(1);
en=0;
}
void writedata(uchar dat)//写入数据函数
{
rs=1;
rw=0;
P0=dat;
delay2(1);
en=1;
delay2(1);
en=0;
}
void print(uchar a3uchar *str)//写字符串函数(没有延时)
{
writecom(a3|0x80);
while(*str!=‘\0‘)
{
//delay(100);//延时一下
writedata(*str++);
}
*str=0;
}
void print2(uchar a2uchar *str)//用于头字条的显示延时
{
writecom(a2|0x80);
while(*str!=‘\0‘)
{
delay(130);//延时一下
writedata(*str++);
}
*str=0;
}
void lcdinit()//1602初始化函数
{
writecom(0x38);//设置为两行显示,8位显示
writecom(0x0c);//开显示,不显示光标
writecom(0x06);//光标右移
writecom(0x01);//清屏
}
/*和DS1302时钟芯片有关的函数*/
void write_byte(uchar dat)//写一个字节函数
{
ACC=dat;
RST=1;
for(a=8;a>0;a--)
{
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC>>1;
}
}
uchar read_byte()//读一个字节函数
{
RST=1;
for(a=8;a>0;a--)
{
ACC7=IO;
SCLK=1;
SCLK=0;
ACC=ACC>>1;
}
return (ACC);
}
void write_1302(uchar adduchar dat)//向时钟芯片写入函数,指定地址,数据
{
RST=0;
SCLK=0;
RST=1;
write_byte(add);
write_byte(dat);
SCLK=1;
RST=0;
}
uchar read_1302(uchar add)//从芯片读出数据,指定地址
{
uchar temp;
RST=0;
SCLK=0;
RST=1;
write_byte(add);
temp=read_byte();
SCLK=1;
RST=0;
return(temp);
}
uchar turnBCD(uchar bcd)//BCD码转换为十进制函数
{
uchar shijin;
shijin=bcd>>4;
return(shijin=shijin*10+(bcd&=0x0f));//返回十进制数
}
void ds1302_init()//1302时钟芯片初始化函数
{
RST=0;
SCLK=0;
write_1302(0x8e0x00);//允许写
write_1302(0x8e0x80);//打开保护
}
/*下面是相关数据的显示函数*/
//时分秒显示函数
void writetime(uchar adduchar dat)//写入时分秒
{
uchar gwsw;
gw=dat%10;//取得个位数
sw=dat/10;//取得十位数
writecom(h2+add);//第二行显示
writedata(0x30+sw);//显示该数字
writedata(0x30+gw);
}
//年月日显示函数
void writeday(uchar adduchar dat)//写入年月日函数
{
uchar gwsw;
gw=dat%10;//取得个位数字
sw=dat/10;//取得十位数字
writecom(h1+add);//在第一行显示
writedata(0x30+sw);
writedata(0x30+gw);//显示
}
//按键扫描函数
void keyscan()
{
if(key1==0)//设置键按下
{
delay(5);//延时
if(key1==0)
{
while(!key1);
keynum++;
if(keynum==8)
keynum=1;//返回
switch(keynum)
{
case 1:TR0=0;//关闭定时器
writecom(h2+0x0b);//秒的位置
writecom(0x0f);//设置为光标闪烁
temp=(miao)/10*16+(miao)%10;//秒化为bcd码
write_1302(0x8e0x00);
write_1302(0x800x80|temp);//秒数据写入
write_1302(0x8e0x80);
bre
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-01 20:42 51单片机液晶万年历(LCD1602)万用板制作\
目录 0 2018-06-01 20:42 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\
文件 6204 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\bitong
文件 4684 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\bitong.hex
文件 25 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\bitong.lnp
文件 25182 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\bitong.M51
文件 190 2018-05-02 20:16 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\bitong.plg
文件 9626 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.c
文件 23633 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.LST
文件 10064 2014-07-03 15:48 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.OBJ
文件 830 2014-05-25 19:29 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.opt.bak
文件 2086 2014-03-18 17:05 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.Uv2.bak
文件 55324 2018-05-02 20:16 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.uvopt
文件 13177 2014-05-25 21:13 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg.uvproj
文件 818 2014-03-18 17:05 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg_Opt.Bak
文件 1648 2013-06-14 14:15 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg_Uv2.Bak
文件 55332 2014-12-21 22:02 51单片机液晶万年历(LCD1602)万用板制作\1-源程序\dg_uvopt.bak
目录 0 2018-06-01 20:42 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\
目录 0 2018-06-01 20:42 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\1602资料\
文件 262017 2005-12-14 04:18 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\1602资料\1602液晶说明.pdf
文件 268206 2011-06-21 11:47 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\1602资料\1602液晶资料[1].pdf
文件 1205196 2007-01-28 21:05 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\1602资料\EN_TC1602.pdf
文件 1347951 2010-08-18 09:54 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\1602资料\字符手册.pdf
文件 473904 2014-05-26 21:24 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\at89c52.docx
文件 52224 2014-05-26 23:08 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\AT89S52的中文资料.doc
文件 324643 2010-01-14 19:33 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\DS1302.pdf
文件 154112 2011-06-15 20:13 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\DS18B20使用手册.doc
文件 1396755 2014-04-09 23:18 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\STC89C52中文资料.pdf
文件 201216 2014-05-26 21:22 51单片机液晶万年历(LCD1602)万用板制作\10-芯片资料\STC89C52单片机.doc
目录 0 2018-06-01 20:42 51单片机液晶万年历(LCD1602)万用板制作\11-参考论文\
文件 549888 2012-10-11 16:41 51单片机液晶万年历(LCD1602)万用板制作\11-参考论文\1602万年历设计论文.doc
............此处省略92个文件信息
相关资源
- 康华光 模拟电路 教材第5版
- 学习opencv中文版+英文版PDF电子书+原书
- Hspice2005安装包以及教程
- 成都电子科技大学831通信与信号系统
- 模拟电子技术基础系统方法2015-06 托马
- 高频电子线路电子书(第三版
- 51单片机的8*8点阵制作的贪吃蛇游戏
- 现代通信网-电子书.rar
- 全国大学生电子设计大赛培训教程(
- 全面的电子Flash动画课件162个
- EMC标准2020.zip
- 阎石主编,数字电子技术基础,经典
- 《模拟电子技术基础》第2版学习指导
- ANSYS参数化编程与命令手册 pdf电子书
- 电子设计指南 孙肖子.pdf
- 1504240620+刘文豪+软件11503+基于框架的
- Candence教程IC,,包括电路设计仿真
- 普中51单片机开发软件
- STC15单片机实战指南(带书签含原理图
- 南京理工大学 电子与通信工程(085
- 动手学深度学习中文电子版
- learning opencv3英文原版电子版学习ope
- [C51单片机开发工具Keil.UV4].Keil.C51.V9
- 电子科技大学 - 詹惠琴 - 电子测量原
- Optoelectronics and Photonics Principles and P
- 全国大学生电子设计竞赛常用电路模
- GY-85集成加速度传感器、陀螺仪、电子
- 计算机图形学第4版高清电子书.pdf
- Non-electronic Parts Reliability Data 非电子产
- 模拟电子技术_第三版_江晓安_课后答
评论
共有 条评论