基于STC89C52单片机的多功能电子万年历

合集下载

基于89C52的电子万年历

基于89C52的电子万年历

目录1设计要求 (2)2方案论证与对比 (2)2.1液晶显示器控制方式选择 (2)2.2并行接口动态显示电路选择 (2)2.3LCD液晶显示器的接口方法选择 (3)2.4液晶显示器限流电阻选择 (4)3系统硬件电路的设计 (5)3.1主控模块AT89C52 (5)3.2显示模块电路设计 (6)4系统软件设计 (7)4.1系统软件概述 (7)4.2主要子程序设计 (8)4.2.1 时钟中断服务子程序设计 (8)4.2.2时间调整子程序设计 (9)4.2.3 判断闰年子程序设计 (9)4.2.4 精度分析分析与计算 (10)4.2.5 第一次初值的设置 (10)4.2.6 重载初值的方法 (10)5系统仿真与测试 (11)5.1系统仿真 (11)5.2功能测试 (11)6总结 (12)参考文献 (13)1设计要求本课题以AT89C52单片机为核心,设计并制作出智能LCD电子钟,具有以下基本功能:能进行时间、年份、日期、星期显示;能区分是否闰年;能检测室温并显示。

扩展功能部分可以通过控制按键使时间暂停、可以调整校正时间并通过按键切换轮流显示时间、年份、日期、星期。

2方案论证与对比2.1液晶显示器控制方式选择采用LCD液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能源等优点,但按控制方式不同,LCD可分为被动矩阵式LCD及主动矩阵式LCD两种。

可根据不同需要采用不同的方式。

方案一被动矩阵式LCD被动矩阵式LCD在亮度及可视角方面受到较大的限制,反应速度也较慢。

由于画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。

方案二主动矩阵式LCD目前应用比较广泛的主动矩阵式LCD,也称TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD)。

TFT液晶显示器是在画面中的每个像素内建晶体管,可使亮度更明亮、色彩更丰富及更宽广的可视面积。

与CRT显示器相比,LCD显示器的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但CRT技术较为稳定成熟。

基于89C52单片机和DS1302的万年历设计

基于89C52单片机和DS1302的万年历设计

基于89C52单片机和DS1302的万年历设计摘要古人依靠日冕、漏刻记录时间,而随着现代科技的发展,电子万年历已经成为日渐流行的日常计时工具。

本文研究的万年历系统拟用STC89C52单片机控制,以DS1302时钟芯片计时、1602液晶屏显示。

系统主要由单片机控制电路,显示电路以及校正电路三个模块组成。

本文阐述了系统的硬件工作原理,所应用的各个接口模块的功能以及其工作过程,论证了设计方案理论的可行性。

系统程序采用C语言编写,经Keil软件进行调试后在Proteus软件中进行仿真测试,可以显示年、月、日、星期、时、分、秒,并具有校准功能和与即时时间同步的功能。

实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

关键词:万年历单片机DS1302 lcd1602目录第一章前言............................................................................................. 错误!未定义书签。

1.1引言(课题研究的意义) (1)1.2本课题主要的研究工作 (1)1.2.1研究内容 (1)1.2.2论文章节安排 (2)1.3本章小结 (2)第二章单片机的概述 (3)2.1单片机的定义和特点 (3)2.1.1单片机的定义 (3)2.1.2单片机的特点 (3)2.2单片机的发展现状和趋势 (3)2.3编程语言的选择 (4)2.4本章小结 (4)第三章设计要求和方案论证 (5)3.1设计要求 (5)3.2单片机芯片的选择方案和论证 (5)3.3显示模块选择方案和论证 (5)3.4时钟芯片的选择方案和论证 (6)3.5电路设计最终方案决定 (6)3.6本章小结 (6)第四章系统的硬件设计与实现 (7)4.1电路设计框图 (7)4.2系统硬件概述 (7)4.3主要单元电路的设计 (7)4.3.1 STC89C52单片机简介 (7)4.3.2单片机主控制模块的设计 (10)4.3.3时钟电路模块的设计 (11)4.3.4独立式键盘设计 (13)4.3.5显示模块的设计 (13)4.4本章小结 (15)第五章系统的软件设计 (16)5.1程序流程图 (16)5.1.1系统总流程图 (16)5.1.2时钟程序流程图 (16)5.1.3液晶显示程序流程图 (17)5.2程序的设计 (18)5.2.1读写DS1302程序 (18)5.2.2液晶显示程序 (19)5.3本章小结 (19)第六章结束语 (20)致谢词 (21)参考文献 (22)附录一:系统电路图 (23)附录二:系统程序 (24)第一章前言1.1引言(课题研究的意义)万年历是我国古代传说中最古老的一部太阳历。

基于STC89C52液晶显示数字万年历设计报告

基于STC89C52液晶显示数字万年历设计报告

西安邮电学院开放实验设计报告系部名称电子与信息工程系学生姓名专业名称电子与信息工程班级实习时间基于STC89C52液晶显示数字万年历1.引言在51单片机应用系统中,常常需要记录实时的时间信息。

比如,在数据采集时,对默写重要的事件常常需要记录下准确的发生事件;又比如在银行营业大厅中使用的利率或汇率显示屏,上面除了显示利率或者汇率等数据外,还需要显示实时的时间信息,其中包括年,月,日,星期,时间等。

下面我们利用STC89C52和液晶显示器LCD1602和实时时钟芯片DS1302来实现实时时钟并利用液晶显示器进行显示。

1. 单片机STC89C52STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,STC89C52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8 位微控制器8K字节在系统可编程Flash。

2. 实时时钟芯片DS1302DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

基于STC89C52的闹铃万年历设计

基于STC89C52的闹铃万年历设计

目录前言 (3)第1章概述 (4)第1.1节单片机设计电子时钟的背景 (4)第1.2节本设计任务及要求 (4)第2章系统功能及总体结构 (5)第2.1节工作原理 (5)第2.2节总体方框图 (5)第2.3节方案论证比较 (5)第3章硬件电路设计 (9)第3.1节系统所需的硬件介绍 (9)第3.2节系统硬件设计 (15)第4章软件设计 (16)第4.1节软件设计概述 (16)第4.2节显示程序设计 (16)第4.3节时钟程序设计 (16)第5章系统测试 (18)第5.1节系统的调试 (18)第5.2节数据测试 (18)第5.3节误差分析 (18)结论 (20)参考文献 (21)致谢............................................ 错误!未定义书签。

附录 (23)附录1:实物照片说明 (23)附录2:部分源程序 (23)【摘要】:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,在生活和生产的各领域中,凡是有时间显示和控制要求的地方都会有单片机的身影出现,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,因此本次设计则采用单片机为核心来实现对以时间显示和记录提示的闹铃万年历设计。

本次设计的闹铃万年历的电路,具有三大功能、分别表示小时时间显示,年月日时间显示,时间记录提示功能,试验中用数码管显示,蜂鸣器模拟语音提示。

基于题目基本要求,本系统对功能设置、数据装入和定时设定功能进行了重点设计。

此外,扩展了掉电记忆、万年历显示、LED状态指示等。

该系统设计采用以单片机AT89S52为核心,结合数码管显示以及必要的外围电路,通过功能设置和数据输入,完成不同功能下的显示。

在发挥部分,该系统还添加了万年历的功能,使得用户可以随时知道当前的时间;当设定时间达到时,会发出蜂鸣提示。

测试表明,该系统具有操作简单,控制精确,更加人性化等特点。

stc89c52 lcd1602 数字万年历

stc89c52 lcd1602 数字万年历

#include <REG52.H>#include <INTRINS.H> //库函数头文件,代码中引用了_nop_()函数// 定义控制信号端口sbit RS=P2^4; //P2.4sbit RW=P2^5; //P2.5sbit E=P2^6; //P2.6sbit set=P3^4; //设置键sbit enter=P3^5; //确认键sbit add1=P3^6; //加1键sbit sub1=P3^7; //减1键bit k=0,f=0;//k为0表示运行状态,k为1表示设置状态;f为0表示第一行显示,f为1表示第二行显示char sec,min,hour,week,day,month,year,n,m;unsigned char count,key;unsigned char lcdd[]="0123456789";/*声明调用函数*/void dispd(); //日期显示函数void dispt(); //时间显示函数unsigned char keys();//按键扫描函数void lcd_w_cmd(unsigned char com); //写命令字函数void lcd_w_dat(unsigned char dat); //写数据函数unsigned char lcd_r_start(); //读状态函数void int1(); //LCD初始化函数void delay(unsigned char t); //可控延时函数void delay1(); //软件实现延时函数,5个机器周期/*主函数*/void main(){TMOD=0x01; //设置为定时器模式1TH0=0x3c; //晶振6MHz,定时时间100msTL0=0xb0;IE=0x82; //开全局中断和定时中断TR0=1; //启动定时器sec=0; //秒min=0; //分hour=0; //时week=0; //星期day=1; //日month=1; //月year=0; //年count=0; //中断次数清0n=-3; //设置键按下次数,第一行日期m=-3; //设置键按下次数,第二行时间 P0=0xff; // 送全1到P0口int1(); // 初始化LCDdelay(255);while(1){key=keys(); //读取按键switch(key){case 0xe0: //按下设置键{TR0=0;k=1;if(f==0){n=n+3;if(n==9){n=0;m=0;f=1;}}else{m=m+3;if(m==12){m=0;n=0;f=0;}}if(f==0){lcd_w_cmd(0x0d);lcd_w_cmd(0x86+n);}else{lcd_w_cmd(0x0d);lcd_w_cmd(0xc4+m);}} break;case 0xd0: //按下确认键{k=0;TR0=1;n=-3;m=-3;f=0;} break;case 0xb0: //按下加1键{if(k==1){if(f==0){if(n==0){year++;if(year==100) year=0;}else if(n==3) {month++;if(month==13) month=1;}else {day++;if(day==32) day=1;}dispd(); //调用第一行显示函数lcd_w_cmd(0x0d); //光标闪烁lcd_w_cmd(0x86+n);//返回设置值显示地址 }else{if(m==0){hour++;if(hour==24) hour=0;}else if(m==3) {min++;if(min==60) min=0;}else if(m==6){sec++;if(sec==60) sec=0;}else {week++;if(week==7) week=0;}dispt(); //调用第二行显示函数lcd_w_cmd(0x0d); //光标闪烁lcd_w_cmd(0xc4+m);//返回设置值显示地址 }}} break;case 0x70: //按下减1键{if(k==1){if(f==0){if(n==0){year--;if(year<0) year=99;}else if(n==3) {month--;if(month==0) month=12;}else {day--;if(day==0) day=31;}dispd(); //调用第一行显示函数lcd_w_cmd(0x0d); //光标闪烁lcd_w_cmd(0x86+n);//返回设置值显示地址}else{if(m==0){hour--;if(hour<0) hour=23;}else if(m==3) {min--;if(min<0) min=59;}else if(m==6){sec--;if(sec<0) sec=59;}else {week--;if(week<0) week=6;}dispt(); //调用第二行显示函数lcd_w_cmd(0x0d); //光标闪烁lcd_w_cmd(0xc4+m);//返回设置值显示地址}}} break;}if(k==0) {dispd();dispt();} //调用LCD显示函数}}/*延时函数*/void delay(unsigned char t){unsigned char j,i;for(i=0;i<t;i++)for(j=0;j<20;j++);}/*延时函数1*/void delay1(){_nop_();_nop_();_nop_();}/*LCD初始化函数*/void int1(){lcd_w_cmd(0x3c); // 设置工作方式lcd_w_cmd(0x0c); // 设置光标lcd_w_cmd(0x01); // 清屏lcd_w_cmd(0x06); // 设置输入方式lcd_w_cmd(0x80); // 设置初始显示位置}/*LCD读状态函数*///返回值:返回状态字,最高位D7=0,LCD控制器空闲;D7=1,LCD控制器忙unsigned char lcd_r_start(){unsigned char s;RW=1; //RW=1,RS=0,读LCD状态delay1();RS=0;delay1();E=1; //E端时序delay1();s=P0; //从LCD的数据口读状态delay1();E=0;delay1();RW=0;delay1();return(s); //返回读取的LCD状态字}/*LCD写命令函数*/void lcd_w_cmd(unsigned char com){unsigned char i;do { // 查LCD忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);} while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=0; // RW=0,RS=0,写LCD命令字delay1();E=1; //E端时序delay1();P0=com; //将com中的命令字写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);}/*LCD写数据函数*/void lcd_w_dat(unsigned char dat){unsigned char i;do { // 查忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);} while(i!=0); // LCD忙,继续查询,否则退出循环 RW=0;delay1();RS=1; // RW=1,RS=0,写LCD数据delay1();E=1; // E端时序delay1();P0=dat; // 将dat中的显示数据写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);}/*****定时中断函数*****/void timer0() interrupt 1{TH0=0x3c;TL0=0xb0;count++;if(count==10){count=0;sec++;if(sec==60){sec=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;week++;day++;if(week==7) week=0;if(day==29&&month==2&&year%4!=0) {day=1;month++;}else if(day==30&&month==2&&year%4==0) {day=1;month++;}else if(day==31&&(month==4||month==6||month==9||month==11)) {day=1;month++;}elseif(day==32&&(month==1||month==3||month==5||month==7||month==8||month= =10||month==12)) {day=1;month++;}if(month==13){month=1;year++;if(year==100) year=0;}}}}}}/*按键扫描函数*/unsigned char keys(){unsigned char cod,del;P3=0xf0;cod=P3&0xf0; //读入P3口键值if(cod!=0xf0) //先检测有无按键按下{delay(100); //去抖if(cod!=0xf0){cod=P3&0xf0; //读入键值do //等待键释放{P3=0xf0;del=P3&0xf0;}while(del!=0xf0);return(cod);//返回键值}}return(0xf0); //返回该值}/*第一行显示日期函数*/void dispd(){lcd_w_cmd(0x0c); //设置光标不显示、不闪烁delay(20);lcd_w_cmd(0x83); //第一行起始显示地址0x80+0x03 delay(20);lcd_w_dat('2');delay(2);lcd_w_dat('0');delay(2);lcd_w_dat(lcdd[year/10]);delay(2);lcd_w_dat(lcdd[year%10]);delay(2);lcd_w_dat('-');delay(2);lcd_w_dat(lcdd[month/10]);delay(2);lcd_w_dat(lcdd[month%10]);delay(2);lcd_w_dat('-');delay(2);lcd_w_dat(lcdd[day/10]);delay(2);lcd_w_dat(lcdd[day%10]);delay(2);}/*第二行显示时间、星期函数*/void dispt(){lcd_w_cmd(0x0c); //设置光标不显示、不闪烁delay(20);lcd_w_cmd(0xc3); //第二行起始显示地址0x80+0x43 delay(20);lcd_w_dat(lcdd[hour/10]);delay(2);lcd_w_dat(lcdd[hour%10]);delay(2);lcd_w_dat(':');delay(2);lcd_w_dat(lcdd[min/10]); delay(2);lcd_w_dat(lcdd[min%10]); delay(2);lcd_w_dat(':');delay(2);lcd_w_dat(lcdd[sec/10]); delay(2);lcd_w_dat(lcdd[sec%10]); delay(2);lcd_w_dat(' ');delay(2);lcd_w_dat('W');delay(2);lcd_w_dat(lcdd[week]); delay(2);}。

STC89C52单片机控制的数码万年历及温湿度计

STC89C52单片机控制的数码万年历及温湿度计
L D 数 码 显 示模 块 接 口 MAX 2 9 E 7 1 、时 钟 电路 接 口 DS 3 2 10 、数
字温湿度计模块 S 1、按键模块及闹铃 电路六大模块 。 HT0
图 2S C 9 5 T 8 C 2单 片机 主控 模 块
图 1 总 体 结 构
21 . 系统主控模 块 如图 2 ,系统主控模块主要 有上 电复位 电路、晶振 电路和 S C9 5 T 8 C 2单片机组成。S C 9 5 T 8 C 2单片机的 P . P . 1- 1 0 2分别用 做 时 钟 电路 DS 3 2的数 据 I 移 位 时钟 和 R E 10 / O、 ES T信 号 : 1 一 P. 4 P . 别用做 温湿 度传 感 器 S 1 1 5分 HT 0的数据 I / 移 位 日 钟 :3 、 O和 寸 P. 2 P _ P . 用做 L D 数 码 显示 接 口芯 片 MA 2 9的数 据 I 33和 37别 E X7 1 / O、 移 位 时 钟和 数据 锁 存 信 号 P . 做 整 点 报 时 或 闹铃 信 号 : 24用
采 用 级 连 方 式 驱 动 2 位 L D 数 码 管 , 三 组 电容 用 做 3 片 4 E MA 2 9的 电源 滤波 。ຫໍສະໝຸດ X7 1 DS1 0 32
图 4 DS 3 2时钟电路模块 I0

04 l 第3 期 21年 7 3一 9 01 第0期 8
环球市场信息导报 hp wes . r t: t . 8c m 6o n
湿度 显 示 系统 , 示 方 式 为 L D 数 码 显 示 ,可显 示 年 、月 、 显 E
日 、时 、分 、秒 、 温 度 、 湿 度 、漏 点 及 星期 , 能进 行 时 间

(完整word版)基于单片机的万年历设计

(完整word版)基于单片机的万年历设计

基于单片机的万年历设计二、实验要求设计一个万年历,将时钟显示在LCD1602的显示屏上并且可以进行年、月、日以及时、分、秒的设置。

此外还可以通过按键进行闹钟设置以及事件提醒功能,用蜂鸣器进行闹铃提醒。

最后附加一个温湿度检测的功能,用温湿度传感器检测室内的温湿度并将温湿度数据在显示屏上显示出来。

三、实验设备和仪器1.用STC89C52芯片作为系统板的主控芯片2.DHT11温湿度传感器3.DS1302时钟芯片4.LCD1602显示屏四、实验各模块原理介绍4.1 STC89C52单片机STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

(1)主要特性8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载;(2)器件参数1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4. 用户应用程序空间为8K字节5. 片上集成512字节RAM6. 通用I/O 口(32个),复位后为:P1/P2/P3 是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成一片。

基于单片机的多功能万年历的设计与制作

基于单片机的多功能万年历的设计与制作

基于单片机的多功能万年历的设计与制作摘要:万年历在人们的日常生活中随处可见,使用范围也很广。

本次多功能万年历的设计与制作要求采用STC89C52单片机和DS1302时钟芯片来实现年、月、日、星期、时、分、秒计时,用DS18B20温度传感器采集温度,用LCD1602液晶显示模块显示数据。

本文主要对硬件设计和软件设计这两个大的方面进行叙述。

其中硬件电路主要包括单片机最小系统、DS1302时钟电路、DS18B20温度采集电路、报警电路、按键电路,软件是用C语言来编写,主要包括主程序、时间设置子程序、报警子程序等模块。

电路基本能实现显示时间、调整时间功能、定时闹钟、温度显示,达到了设计的要求和目的。

操作简单,在按键当中,有设置、加1、减1三个按键,设置键用于选择需要调节的是年、月、日、时、分、秒、闹钟中的任何一项;加1键用于把所选数据加1;减1键用于把所选数据减1。

关键词:单片机,DS1302时钟芯片,DS18B20温度传感器,报警电路,LCD液晶显示模块中图分类号:TP368.1The design and manufacturing of multifunctional calendarbased on microcontrollersAbstract: Calendar can be seen everywhere in people's daily lives, and its using range is also very wide .The design and manufacturing of the multifunctional calendar request STC89C52microcont-rollers,the DS1302 clock chip to realize the year, month, day, week, time, minutes and seconds, and at the same time use DS18B20 temperature sensor to collect temperature and use LCD1602 module to display data.This article mainly discusses the hardware design and the software design.Hardware circuit mainly includes single chip microcomputer minimum system , DS1302 clockcircuit, DS18B20 temperature acquisition circuit, alarm circuit and key circuit. The software is written in C language, mainly including the main program, time setting, alarm subroutine subroutines module and so on.Basic circuit can realize the function of displaying time, adjusting the time function, timing, temperature displaying and alarm clock, having reached the requirement and purpose of thedesign.The operation is simple. There are buttons that are settings, add 1, minus 1 three keys. The settings key is used to select year, month, day, hours, minutes, seconds, that is any item of the alarm clock. Add 1 key is used to add the selected data with 1. Minus 1 key is used to minus the selected data with 1.Keywords: microcontroller,DS1302 clock chip,DS18B20 temperature sensor,1. 引言:随着现代电子科技的不断迅速发展,时代的进步。

基于STC89C52万年历的仿真与设计

基于STC89C52万年历的仿真与设计

基于STC89C52万年历的仿真与设计郭占苗【期刊名称】《微型电脑应用》【年(卷),期】2017(33)2【摘要】Based on STC89C52,the paper designs a permanent calendar system which can display time,date,week and temperature.DS1302 is a kind of permanent calendar chip that can reckon time,including of seconds,minutes,hours,year,month,day week and so on.Besides,theDS18B20 has the function of temperature acquisition.There are four buttons in the permanent calendar system besides the reset button,one could add or subtract time,set alarm and buzzer warning by operating the buttons.All the phenomena can be real-time displayed and achieved human-computer interaction function via the LCD 1602.The author has written the C program by using the Keil software,simulated circuit diagram to reduce the blindness of welding by Proteus,and made physical circuit realize the integration of design,simulation and production.The design realizes the combination of theory and practice of practical significance.%基于STC89C52设计一款具有时间、星期、年月日和温度显示的万年历,主要由DS1302实现时分秒、年月日和星期的计时功能,DS18B20实现温度采集功能,该万年历除复位按键外,还设置有4个按键,可以对时间进行“加"“减”设置,同时还具备定时功能,定时时间到则蜂鸣器报警,在LCD1602液晶屏上进行实时显示,实现人机交互.利用Keil软件编写C程序,通过Proteus仿真以减少焊接盲目性,最后进行实物电路制作,实现设计、仿真与制作的一体化,具有理论与实践结合的现实意义.【总页数】5页(P30-34)【作者】郭占苗【作者单位】西安航空职业技术学院电子工程学院,西安710089【正文语种】中文【中图分类】TP399【相关文献】1.Proteus仿真设计基于单片机AT89C51的电子万年历 [J], 王怀平;王仁波;胡开明2.基于单片机和12864LCD模块的万年历设计与仿真 [J], 陈红;李玮3.基于STC89C52多功能体育用计时器的仿真与设计 [J], 谭艳春;朱又敏4.基于STC89C52多功能体育用计时器的仿真与设计 [J], 谭艳春; 朱又敏5.基于AT89C51单片机的万年历设计与Proteus仿真 [J], 王来志; 王小平因版权原因,仅展示原文概要,查看原文内容请购买。

基于STC89C52单片机的多功能电子万年历

基于STC89C52单片机的多功能电子万年历

摘要本文介绍了基于STC89C52单片机的多功能电子万年历的硬件结构和软硬件设计方法。

本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。

系统以STC89C52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。

温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。

此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。

关键字:万年历温度计液晶显示ABSTRACTThis paper introduces the based on STC89C52 multi-function electronic calendar of the hardware structure and software and hardware design method. This design by data display module, temperature acquisition module, time processing module and set module four modules. With STC89C52 single-chip microcomputer system for the controller to serial clock calendar chip DS1302 record calendar and time, it can be to date and time, minutes and seconds for the time, also has a leap year compensation and other functions. Temperature gathering choose DS18B20 chip, calendar by using object digital display, data showed that the 1602 A liquid crystal display module, can be in the LCD shows at the same time year, month, day, Sunday, when, minutes and seconds, still have time calibration etc. Function. This calendar has read the convenient, direct display, functional diversity, simple circuit, low cost, and many other advantages, has a broad market prospect.Key words:Perpetual Calendar thermometer LCD display目录摘要 (I)ABSTRACT (II)前言....................................................................................................................... I V 1 绪论 .. 01.1 课题研究的背景 01.2课题的研究目的与意义 01.3课题解决的主要内容 02 系统的方案设计与论证 (1)2.1单片机芯片设计与论证 (2)2.2按键控制模块设计与论证 (2)2.3时钟模块设计与论证 (2)2.4温度采集模块设计与论证 (3)2.5显示模块模块设计与论证 (3)3 系统硬件的设计 (4)3.1 STC89C52单片机 (4)3.2时钟芯片DS1302接口设计与性能分析 (7)3.3温度芯片DS18B20接口设计与性能分析 (10)3.4 LCD显示模块 (15)3.5按键模块设计 (16)3.6复位电路的设计 (17)4 系统的软件设计 (19)4.1主程序流程图的设计 (19)4.2 程序设计 (21)5 系统的机体设计 (27)5.1系统的模块组成 (27)5.2 功能实现 (27)结论 (29)参考文献 (30)致谢 (31)附录 (32)前言随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

多功能电子万年历

多功能电子万年历

泉州师范学院毕业论文(设计)题目多功能电子万年历物理与信息工程学院电子信息科学与技术专业07 级1班学生姓名李竞佳学号070303031指导教师洪清泉职称教授完成日期2011年3月教务处制多功能电子万年历物信学院电子信息工程与技术 070303031 李竞佳指导教师:洪清泉教授【摘要】:该电子万年历,主要是对时间、温度、湿度的显示和语音播报,并能使用红外遥控器对时间进行修改。

电子万年历的硬件部分采用STC89C52单片机为主控制芯片,DHT11、DS1302、ISD1730、红外一体化接头、LCD12864等组成外围电路。

软件部分主要是基于51单片机的C语言程序,编程环境是keil。

【关键词】:电子万年历单片机LCD12864 DHT11 ISD1730Multifunctional electronic calendarCollege of Physics and Information Engineering Electronic Information Science and T echnology070303031,Li JingjiaInstructor:Hong Qingquan, Professor【Abstract】:The electronic calendar is mainly to the time, temperature, humidity display and speech broadcast and can be applied to infrared time modified. Electronic calendar hardware part adopts mainly STC89C52 single-chip microcomputer control chip, DHT11, DS1302, ISD1730, infrared integrated joint, LCD12864 etc buffer circuit. Software part mainly based on 51 SCM C programming language ,programming environment is KEIL .【Keywords】:Electronic calendar 、MCU、LCD12864 、DHT11、ISD1730一、绪论1.1课题的背景和意义随着电子技术的迅速发展,特别是大规模集成电路出现,给人类生活带来了根本性的改变,尤其是单片机技术的应用产品已经走进了千家万户。

基于STC89C52液晶显示数字万年历设计报告

基于STC89C52液晶显示数字万年历设计报告
器。日历、时间寄存器及控制字如表1所示:
寄存器名称
7
6
5
4
3
21Biblioteka 01RAM/CK
A4
A3
A2
A1
A0
RD/W
秒寄存器
1
0
0
0
0
0
0
分寄存器
1
0
0
0
0
0
1
小时寄存器
1
0
0
0
0
1
0
日寄存器
1
0
0
0
0
1
1
月寄存器
1
0
0
0
1
0
0
星期寄存器
1
0
0
0
1
0
1
年寄存器
1
0
0
0
1
1
0
写保护寄存器
1
0
0
0
1
1
1
慢充电寄存器
5.DS1302的读写
DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。
下面我们利用STC89C52和液晶显示器LCD1602和实时时钟芯片DS1302来实现实时时钟并利用液晶显示器进行显示。
1.单片机STC89C52
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K字节在系统可编程Flash。

基于STC89C52的多功能万年历课程设计

基于STC89C52的多功能万年历课程设计

信息与通信工程学院作品名称负责人:任霞专业班级:通信122成员:任霞马木提亚库普李宗卿指导教师:杨亚宁完成日期:2014年11 月7 日目录目录 (1)一、设计任务和要求 (1)1.1设计任务 (1)1.2性能指标 (1)二、设计方案及原理 (2)2.1方案一 ................................................................................. 错误!未定义书签。

2.2方案二 ................................................................................. 错误!未定义书签。

2.3本设计采用方案及原理 ..................................................... 错误!未定义书签。

三、系统硬件设计 (3)3.1单片机最小系统设计 (4)3.2温度电路 (4)3.3时钟电路 (5)3.4显示电路 (6)3.5按键电路 (6)3.6闹钟电路 (6)四.系统软件设计 (10)4.1主程序设计 (10)4.2温度部分程序设计 (11)4.3时钟部分程序设计 ............................................................. 错误!未定义书签。

4.4键盘部分程序设计.............................................................. 错误!未定义书签。

4.5显示部分程序设计.............................................................. 错误!未定义书签。

4.6闹钟部分程序设计.............................................................. 错误!未定义书签。

基于STC89C52RC万年历程序

基于STC89C52RC万年历程序

TICK_CNT EQU 40H ;T0溢出计数器SECOND EQU 41H ;存储数据用真值,未用BCD码MINUTE EQU 42HHOUR EQU 43HDAY EQU 44HMONTH EQU 45HYEAR EQU 46HYUSHU EQU 47H ;存放余数FLASH_FLAG EQU 27H ;时间日期调整标志;R7: 0-时间;1-日期;中断向量表ORG 0000HLJMP MAINORG 0003HLJMP EX0_INTORG 000BHLJMP T0_INTORG 0013HLJMP EX1_INT;主程序ORG 0030HMAIN: NOP;初始化堆栈MOV SP,#60H;初始化变量MOV SECOND,#0MOV MINUTE,#0MOV HOUR,#0MOV DAY,#21MOV MONTH,#1MOV YEAR,#96MOV FLASH_FLAG,#00HMOV R7,#00H;MOV TL0,#0B0H ; 定时50msMOV TH0,#3CHMOV TICK_CNT,#20 ;装计数初值(1s计数器)MOV TMOD,#01HSETB ET0SETB EX0SETB EX1SETB EA ;开中断SETB PX0SETB PX1 ;设置中断优先级SETB TR0 ; 启动定时器T0LOPP:LCALL DISPLAY ;调用显示子程序LJMP LOPP; ------------------------------------------------- ; 定时器0中断T0_INT: MOV TL0,#0B0HMOV TH0,#3CH ; 重装载DJNZ TICK_CNT,NOT_1S ;1秒到?AJMP IS_1SNOT_1S: LJMP T0_RET; 1秒时间到IS_1S: PUSH ACCMOV A,SECONDCJNE A,#59,IN3 ; 59s到?AJMP IN4IN3: LJMP SECOND_INC ; 秒加1IN4: MOV SECOND,#0 ; 秒进位MOV A,MINUTECJNE A,#59,IN5 ; 59分到?AJMP IN6IN5: LJMP MINUTE_INCIN6: MOV MINUTE,#0 ; 分进位MOV A,HOURCJNE A,#23,HOUR_INC ; 23h到?MOV HOUR,#0 ; "时"进位MOV A,MONTHCJNE A,#2,NOT_FEB ; 是否二月?;2月处理;--------------------------FEB: NOPACALL DIV4MOV A,YUSHUCJNE A,#0,NOT_LEAP_Y ;是否闰年?LEAP_Y: MOV A,DAY ;闰年CJNE A,#29,DAY_INCMOV DAY,#1MOV MONTH,#3LJMP RESET_CNT;非闰年NOT_LEAP_Y: MOV A,DAYCJNE A,#28,DAY_INC ;MOV DAY,#1MOV MONTH,#3LJMP RESET_CNT;---------------------------;非2月处理;30/31天?NOT_FEB:NOPCJNE A,#4,Y01AJMP MON_30DY01: CJNE A,#6,Y02 ;是否小月?AJMP MON_30DY02: CJNE A,#9,Y03AJMP MON_30DY03: CJNE A,#11,T11AJMP MON_30D;31天T11: MOV A,DAY ;大月CJNE A,#31,DAY_INCAJMP NEXT_MONTH;30天MON_30D:MOV A,DAY ;小月CJNE A,#30,DAY_INC;天进位NEXT_MONTH: MOV DAY,#1MOV A,MONTHCJNE A,#12,MONTH_INC; 月进位MOV MONTH,#1MOV A,YEARCJNE A,#99,YEAR_INCMOV YEAR,#0AJMP RESET_CNT;年加1YEAR_INC: M OV A,YEARINC AMOV YEAR,AAJMP RESET_CNTMONTH_INC: MOV A,MONTHINC AMOV MONTH,AAJMP RESET_CNTDAY_INC: MOV A,DAYINC AMOV DAY,AAJMP RESET_CNTHOUR_INC:MOV A,HOURINC AMOV HOUR,AAJMP RESET_CNTMINUTE_INC: MOV A,MINUTE INC AMOV MINUTE,AAJMP RESET_CNTSECOND_INC: MOV A,SECONDINC AMOV SECOND,ARESET_CNT: POP ACCMOV TICK_CNT,#20T0_RET: RETI;--------------------------------------------------------------------;-------------------------------------------------------------------; sub: LED Display;显示子程序DISPLAY:MOV DPTR,#TAB1 ; 装段选表MOV A,R7 ;CJNE A,#00H,DISP_DATE ; 显示时间?DISP_TIME: MOV R0,#SECOND ;AJMP TSADISP_DATE: MOV R0,#DAY ; ;显示日期;显示时间或日期TSA: MOV A,@R0MOV B,#10DIV AB ;取十位MOVC A,@A+DPTRMOV R2,A ;存段选MOV A,B ;取个位MOVC A,@A+DPTRMOV R1,A ;存段选;------------INC R0MOV DPTR,#TAB1MOV A,@R0MOV B,#10DIV ABMOVC A,@A+DPTRMOV R4,AMOV DPTR,#TAB2MOV A,BMOVC A,@A+DPTRMOV R3,A;-------------INC R0MOV DPTR,#TAB1MOV A,@R0MOV B,#10DIV ABMOVC A,@A+DPTRMOV R6,AMOV DPTR,#TAB2MOV A,BMOVC A,@A+DPTRMOV R5,A;---------------------;P1:位选线;P0:段选线TDP: MOV P0,R1MOV A,FLASH_FLAGCJNE A,#03H,A02 ;是否闪烁?AJMP A03A02: CJNE A,#06H,A04;A03: MOV A,TICK_CNTRRC AJNC A05A04: MOV P1,#0DFH ;开D6 A05: LCALL DELAYMOV P1,#0FFH ;关位选MOV P0,R2MOV A,FLASH_FLAGCJNE A,#03H,B02AJMP B03B02: CJNE A,#06H,B04B03: MOV A,TICK_CNTRRC AJNC B05B04: MOV P1,#0EFH ;开D5 B05: LCALL DELAYMOV P1,#0FFH ;关;Display DS4MOV P0,R3MOV A,FLASH_FLAGCJNE A,#02H,C02AJMP C03C02: CJNE A,#05H,C04C03: MOV A,TICK_CNTRRC AJNC C05C04: MOV P1,#0F7H ;开D4 C05: LCALL DELAYMOV P1,#0FFH ;关;Display DS3MOV P0,R4MOV A,FLASH_FLAGCJNE A,#02H,D02AJMP D03D02: CJNE A,#05H,D04D03: MOV A,TICK_CNTRRC AJNC D05D04: MOV P1,#0FBH ;开D3D05: LCALL DELAYMOV P1,#0FFH;Display DS2MOV P0,R5MOV A,FLASH_FLAGCJNE A,#01H,E02AJMP E03E02: CJNE A,#04H,E04E03: MOV A,TICK_CNTRRC AJNC E05E04: MOV P1,#0FDH ;开D2E05: LCALL DELAYMOV P1,#0FFHMOV P0,R6MOV A,FLASH_FLAGCJNE A,#01H,F02AJMP F03F02: CJNE A,#04H,F04F03: MOV A,TICK_CNTRRC AJNC F05F04: MOV P1,#0FEH ;开D1F05: LCALL DELAYMOV P1,#0FFHRET;-------------------------------------------------------------------D_CNT_2 EQU 28HD_CNT_1 EQU 29HD_CNT_4 EQU 30HD_CNT_3 EQU 31H; ---------------------------------------- ;短延时DELAY: MOV D_CNT_2,#2D_LOOP2: MOV D_CNT_1,#100 ;[1]D_LOOP1: DJNZ D_CNT_1,D_LOOP1 ;[2]DJNZ D_CNT_2,D_LOOP2 ;[2]RET;长延时(用于键盘去抖动)DELAY2: MOV D_CNT_4,#60D_LOOP4:MOV D_CNT_3,#100 ;[1]D_LOOP3:DJNZ D_CNT_3,D_LOOP3 ;[2]DJNZ D_CNT_2,D_LOOP4 ;[2]RET; ---------------------------------------- ;除法子程序,用于判断闰年DIV4: PUSH ACCPUSH BMOV A,YEARMOV B,#4DIV ABMOV YUSHU,BPOP ACCPOP BRET;--------------------------------------------------------- ;外部中断0; sub: INT0 interrupt; 处理按键K0,切换时间/日期显示或者调整时间EX0_INT:PUSH ACCLCALL DELAY2 ;长延时,去抖动JB P3.2,OUTMOV A,FLASH_FLAG ;装标志位CJNE A,#00H,JYY ;是否为零?MOV A,R7 ;R7取反XRL A,#0FFHMOV R7,AOUT: LJMP EX0_RET;-------------------------------------------------------JYY: CJNE A,#01H,JMM;调节年MOV A,YEARCJNE A,#99,YY0MOV YEAR,#0LJMP YYFYY0: INC AMOV YEAR,AYYF: LJMP EX0_RET;---------------------------------------JMM: CJNE A,#02H,JDD;调节月MOV A,MONTHCJNE A,#12,MM0MOV MONTH,#1LJMP MMFMM0: INC AMOV MONTH,AMMF: LJMP EX0_RET;****************************************************** *****JDD: CJNE A,#03H,ADH ;调节天MOV A,MONTHCJNE A,#2,NFBIFB: NOPLCALL DIV4MOV A,YUSHUCJNE A,#0,ANGARN: MOV A,DAYCJNE A,#29,D0ALJMP D0BD0A: LJMP DDAD0B: LJMP DD1ANG: MOV A,DAYCJNE A,#28,D0ALJMP DD1NFB: NOPCJNE A,#4,Y04LJMP AD1Y04: CJNE A,#6,Y05LJMP AD1Y05: CJNE A,#9,Y06LJMP AD1Y06: CJNE A,#11,Y07LJMP AD1Y07: NOPMOV A,DAYCJNE A,#31,D0ALJMP DD1AD1: NOPMOV A,DAYCJNE A,#30,D0ADD1: MOV DAY,#1LJMP DDFDDA: MOV A,DAYINC AMOV DAY,ADDF: LJMP EX0_RET;--------------------------------------------------- ADH: CJNE A,#04H,ADM ;调节时MOV A,HOURCJNE A,#23,JH0MOV HOUR,#0LJMP JHFJH0: MOV A,HOURMOV HOUR,AJHF: LJMP EX0_RET;----------------------------------------- ADM: CJNE A,#05H,ADS ;调节分MOV A,MINUTECJNE A,#59,JM0MOV MINUTE,#0LJMP JMFJM0: MOV A,MINUTEINC AMOV MINUTE,AJMF: LJMP EX0_RETADS: MOV A,SECOND ;调节秒CJNE A,#59,JS0MOV SECOND,#0LJMP EX0_RETJS0: MOV A,SECONDINC AMOV SECOND,AEX0_RET:NOPJNB P3.2,EX0_RET ;判断键盘是否释放RETI;---------------------------------------------------------; 处理按键K1EX1_INT:PUSH ACCLCALL DELAY2 ;长延时,去抖动JB P3.3,EX1_RETNOPMOV A,R7CJNE A,#00H,DIS_DATE;显示时间MOV A,FLASH_FLAGCJNE A,#00H,ED2MOV FLASH_FLAG,#04H ; 标志位置04AJMP EX1_RETED2: CJNE A,#06H,ED1;reach 06HMOV FLASH_FLAG,#00H ;重置为0AJMP EX1_RET;显示日期DIS_DATE:MOV A,FLASH_FLAGCJNE A,#03H,ED1;== 03HMOV FLASH_FLAG,#00H ;重置为0AJMP EX1_RET;标志加1,ED1: INC AMOV FLASH_FLAG,AEX1_RET: NOPJNB P3.3,EX1_RETPOP ACCRETI;----------------------------------------------; code tableTAB1: DB 0c0h,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H TAB2: DB 040H,79H,24H,30H,19H,12H,02H,78H,00H,10H END。

基于单片机的液晶显示“万年历”设计

基于单片机的液晶显示“万年历”设计

单片机液晶显示“万年历”一、设计任务利用STC89C52RC单片机设计一个具有如下功能的电子万年历:(一)、能够显示年、月、日、时、分、秒、星期(二)、能正确显示闰年日期(三)、用独立键盘进行校时二、硬件设计1、系统框图按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD显示模块、蜂鸣器电路、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。

主控模块采用STC89C52RC单片机,按键模块用5个按键,用于调整时间和设定闹钟,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。

图1 基于AT89C52RC单片机的电子万年历系统框图2、原理图基于STC89C52RC单片机的电子万年历硬件仿真电路图如图10所示,系统由STC89C52RC单片机、按键扫描电路、显示电路、时钟电路、晶振电路、复位电路、蜂鸣器电路组成。

图2 电子万年历仿真图3、各部分介绍(1)、主控模块控制芯片使用STC89C52,控制系统如下图:图3 STC89C52RC主控模块主控制芯片采用STC89C52,系统包括晶振电路、复位电路、下载接口。

(2)、时钟芯片时钟芯片使用DS1302,该模块电路原理图如下图:图4 DS1302时钟电路时钟电路采用的是ds1302芯片,DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

工作电压与单片机的输入电压比较适合。

上面是它的一些基本的应用介绍。

下面是它的引脚的描述:图5 DS1302引脚下面是DS1302的时钟寄存器。

我们要读取的时间数据就是从下面这些数据寄存器中读取出来的。

当我们要想调整时间时,可以把时间数据写入到相应的寄存器中就可以了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要本文介绍了基于STC89C52单片机的多功能电子万年历的硬件结构和软硬件设计方法。

本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。

系统以STC89C52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。

温度采集选用DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602A液晶显示模块,可以在LCD上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。

此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。

关键字:万年历温度计液晶显示ABSTRACTThis paper introduces the based on STC89C52 multi-function electronic calendar of the hardware structure and software and hardware design method. This design by data display module, temperature acquisition module, time processing module and set module four modules. With STC89C52 single-chip microcomputer system for the controller to serial clock calendar chip DS1302 record calendar and time, it can be to date and time, minutes and seconds for the time, also has a leap year compensation and other functions. Temperature gathering choose DS18B20 chip, calendar by using object digital display, data showed that the 1602 A liquid crystal display module, can be in the LCD shows at the same time year, month, day, Sunday, when, minutes and seconds, still have time calibration etc. Function. This calendar has read the convenient, direct display, functional diversity, simple circuit, low cost, and many other advantages, has a broad market prospect.Key words:Perpetual Calendar thermometer LCD display目录摘要 (I)ABSTRACT (II)前言 (V)1 绪论 (1)1.1 课题研究的背景 (1)1.2课题的研究目的与意义 (1)1.3课题解决的主要容 (1)2 系统的方案设计与论证 (2)2.1单片机芯片设计与论证 (3)2.2按键控制模块设计与论证 (3)2.3时钟模块设计与论证 (3)2.4温度采集模块设计与论证 (4)2.5显示模块模块设计与论证 (4)3 系统硬件的设计 (5)3.1 STC89C52单片机 (5)3.2时钟芯片DS1302接口设计与性能分析 (8)3.3温度芯片DS18B20接口设计与性能分析 (11)3.4 LCD显示模块 (15)3.5按键模块设计 (17)3.6复位电路的设计 (17)4 系统的软件设计 (19)4.1主程序流程图的设计 (19)4.2 程序设计 (20)5 系统的机体设计 (24)5.1系统的模块组成 (24)5.2 功能实现 (24)结论 (26)参考文献 (27)致 (28)附录 (29)前言随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

目前,单片机技术的应用产品已经走进了千家万户。

电子万年历的出现给人们的生活带来了诸多方便。

随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。

单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。

单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具,于是基于单片机的醒目而时尚的电子版万年历顺应而生。

基于单片机的电子万年历结合了时钟和日历的功能,将其二者融为一体,在显示时间的同时还能显示日期和年、月,它主要是通过单片机来读取时钟芯片的时间、日期,然后送给显示设备显示出来。

而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。

因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。

数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。

LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。

1 绪论1.1 课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。

该电路采用STC89C52单片机作为核心,功耗小,能在3V 的低压工作,电压可选用3~5V电压供电。

此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

1.2课题的研究目的与意义二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。

电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。

所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。

由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。

1.3课题解决的主要容本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究容包括以下几个方面:(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。

(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。

(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。

(4)根据硬件电路图,在开发板上完成器件的焊接。

(5)根据设计的硬件电路,编写控制STC89C52芯片的单片机程序。

(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。

(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。

2 系统的方案设计与论证单片机电子万年历的制作有多种方法,可供选择的器件和运用的技术也有很多种。

所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。

系统的功能往往决定了系统采用的结构,经过成本,性能,功耗等多方面的考虑决定用三个8位74LS164串行接口外接LED 显示器,RESPACK-8对单片机STC89C52进行供电,时间芯片DS1302连接单片机STC89C52。

从而实现电子万年历的功能。

按照系统设计的要求,初步确定系统由电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和闹钟模块共六个模块组成,电路系统构成框图如图1所示。

图1 硬件电路框图AT89S52电源模块温度模块独立按键时钟模块显示模块闹钟模块2.1单片机芯片设计与论证方案一:采用AT89C51芯片作为硬件核心,采用Flash ROM,部具有4KB ROM 存储空间,能用于3V的超低电压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。

方案二:采用STC89C52芯片作为硬件核心,采用Flash ROM,能以3V的超低电压工作,而且与MCS-51系列单片机完全兼容,该芯片部存储器为8KB ROM 存储空间。

同样具有STC89C52的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

由于STC89C52部具有8KBROM存储芯片并且支持ISP在线编程,因此采用STC89C52作为主控芯片。

2.2按键控制模块设计与论证方案一:采用矩阵键盘,由于按键多可实现数值的直接键入,但在系统中需要CPU不间断的对其端口扫描。

方案二:采用独立按键,查询简单,程序处理简单,可节省CPU资源。

因系统中所需按键不多,为了释放更多的CPU占有时间,操作方便,故采用方案二。

2.3时钟模块设计与论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V~5.5V围,2.5V时耗电小于300nA.由于DS1302时钟芯片计数时间精度高,而且具有闰年补偿功能等优点,故采用方案二。

相关文档
最新文档