基于AT89C51的数字万年历设计
基于51单片机的万年历设计说明

中文摘要本设计万年历以AT89C51为控制中心,与温度传感器DS18B20,时钟芯片DS1302综合应用为一体,不仅能够准确显示时间、日期,闹钟设置,环境温度测量及温度高低温报警等功能。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。
单片机与数字万年历相结合,用于时间显示,温度测试等不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被检测数值的技术指标,从而能够大大提高产品的质量和数量。
关键词:单片机,温度传感器,C语言,液晶显示ABSTRACTThis design USES AT89C51 as calendar control center, and the temperature sensor DS18B20, the clock DS1302 chip integrated application as a whole, and not only be able to accurately display the time, date, alarm, the environment temperature measurement and high temperature, low temperature alarm functions.SCM is a collection of CPU, RAM, ROM, I/O interface and interrupt system is one of the devices, only require additional power can be used for vibration and grain is the process of digital information and control. Single-chip microcomputer and digital calendar, combining for time to show, temperature testing has not only control convenient, simple and flexible configuration advantages, and which could increase the technical index of the tested value, which can greatly improve the quality of the products and quantity.Key words:Single-chip microcomputer, Temperature Sensor, C language,Liquid crystal displ目录第一章前言 (5)1.1 系统开发背景及现状 (5)1.2 系统开发的目的 (5)第二章总体设计 (6)2.1 本设计实现的功能和要求 (6)2.2 设计的选择方案和论证 (6)2.2.1 单片机芯片的选择方案和论证 (6)2.2.2 显示模块选择方案和论证 (6)2.2.3 时钟芯片的选择方案和论证 (7)2.3.4 温度传感器的选择方案与论证 (7)2.3总体设计框图 (7)第三章硬件设计 (8)3.1 主要元器件介绍 (8)3.1.1 单片机简介 (8)3.1.2 传感器DS18B20介绍 (9)3.1.3 LCD1602液晶显示介绍 (10)3.2 各模块设计 (11)3.2.1 主控制电路 (11)3.2.2 LCD1602显示模块设计 (12)3.2.3 DS18B20温度传感器模块 (12)3.2.4 键盘输入模块设计 (13)3.2.5 蜂鸣器模块设计 (13)3.2.6 DS1302时钟电路模块 (14)第四章软件设计 (15)第五章安装与调试 (17)5.1 安装制作 (17)5.2 硬件调试 (17)5.2.1 布线的原则与焊接 (17)5.2.2 硬件调试与测试 (18)5.3 软件调试 (18)5.3.1 软件测试仪器 (18)5.3.2 软件调试与测试 (18)5.4 联调 (19)5.5测试结果分析与结论 (20)第六章总结 (21)参考文献 (22)附录A (23)附录B (25)致 (27)第一章前言1.1系统开发背景及现状当今世界,知识更新的速度越来越快。
基于单片机的万年历设计

嵌入式系统概述题目:基于单片机的万年历设计班级:自动化1304班一、系统功能概述此设计以AT89C51为控制芯片,用RTC定时器实现万年历的控制与设计。
所进行控制的语句是通过C语言实现的,并且用串口助手显示能动态地显示当前时间信息,包括年、月、日、时、分、秒。
二、硬件设计原理图:1.万年历电路图设计如下:三、软件设计:1.设计思路:本设计主要由3大部分电路组成:单片机最小系统电路、时钟显示电路和参数修改电路。
其中单片机最小系统主要由复位电路和时钟电路组成。
设计中,当接收到修改参数的指令,将停止时钟的继续,转而进行指令程序,在指令结束后转回断点处继续进行计时。
2.流程图:四、基于单片机万年历的源代码:#include <reg52.h>#include <intrins.h>#include <string.h>#define uint unsigned int#define uchar unsigned charsbit IO = P1^0;sbit SCLK = P1^1;sbit RST = P1^2;sbit RS = P2^0;sbit RW = P2^1;sbit EN = P2^2;sbit KEY1=P3^4;sbit KEY2=P3^5;sbit KEY3=P3^6;uchar*WEEK[]={"SUN","***","MON","TUS","WEN"," THU","FRI","SAT"};uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "};uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "};uchar DateTime[7]; //秒,分,时,日,月,周,年ucharflag,flag_1,i,miao,fen,shi,ri,yue,zhou,nian; void DelayMS(uint ms){uchar i;while(ms--){for(i=0;i<120;i++);}}/*********************************************** ******/ //函数名称:Write_A_Byte_TO_DS1302(uchar x)//函数功能: 向1302写入一个字节//入口参数: x//出口参数: 无//调用子程序: 无/*********************************************** ******/void Write_A_Byte_TO_DS1302(uchar x){uchar i;for(i=0;i<8;i++){IO=x&0x01;SCLK=1;SCLK=0;x>>=1;}}void Write_DS1302(uchar add,uchar num) {SCLK=0;RST=0;RST=1;Write_A_Byte_TO_DS1302(add);Write_A_Byte_TO_DS1302(num);RST=0;SCLK=1;}/*********************************************** ******///函数名称:Get_A_Byte_FROM_DS1302()//函数功能: 从1302读一个字节//入口参数: 无//出口参数: b/16*10+b%16 //调用子程序: 无/*********************************************** ******/uchar Get_A_Byte_FROM_DS1302(){uchar i,b=0x00;for(i=0;i<8;i++){b |= _crol_((uchar)IO,i);SCLK=1;SCLK=0;}return b/16*10+b%16;}/*********************************************** ******///函数名称: Read_Data(uchar addr)//函数功能: 指定位置读数据//入口参数: addr//出口参数: dat//调用子程序: Write_Abyte_1302(addr) /*********************************************** ******/uchar Read_Data(uchar addr){uchar dat;RST = 0;SCLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);dat = Get_A_Byte_FROM_DS1302();SCLK=1;RST=0;return dat;}/*********************************************** ******///函数名称: GetTime()//函数功能: 读取时间//入口参数: 无//出口参数: 无//调用子程序: 无/*********************************************** ******/void GetTime(){uchar i,addr = 0x81;for(i=0;i<7;i++){DateTime[i]=Read_Data(addr);addr+=2; }}uchar Read_LCD_State(){uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN = 0;DelayMS(1);return state;}void LCD_Busy_Wait(){while((Read_LCD_State()&0x80)==0x80); DelayMS(5);}void Write_LCD_Data(uchar dat) //写数据到1602{LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1); EN=0;}void Write_LCD_Command(uchar cmd) //写命令{LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1); EN=0;}void Init_LCD() //1602 初始化{Write_LCD_Command(0x38);DelayMS(1);Write_LCD_Command(0x01);DelayMS(1);Write_LCD_Command(0x06);DelayMS(1);Write_LCD_Command(0x0c);DelayMS(1);}void Set_LCD_POS(uchar p){Write_LCD_Command(p|0x80);}void Display_LCD_String(uchar p,uchar *s) //1602显示{uchar i;Set_LCD_POS(p);for(i=0;i<16;i++){Write_LCD_Data(s[i]);DelayMS(1);}}void write_com(uchar com){RS=0;P0=com;DelayMS(5);EN=1;DelayMS(5);EN=0;}void write_date(uchar date){RS=1;P0=date;DelayMS(5);EN=1;DelayMS(5);EN=0;}void display(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void display1(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);}void Format_DateTime(uchar d,uchar *a) {a[0]=d/10+'0';a[1]=d%10+'0';}uchar ZH(uchar dat){uchar tmp;tmp=dat/10;dat=dat%10;dat=dat+tmp*16;return dat;}void Keyscan(){flag_1=1;while(flag_1){if(KEY1==0){DelayMS(5);while(!KEY1);flag=(flag+1)%8;switch(flag){case(1): Write_LCD_Command(0x0f);Write_LCD_Command(0x80+0x40+11);break;case(2):Write_LCD_Command(0x80+0x40+8);break;case(3):Write_LCD_Command(0x80+0x40+5);break;case(4):Write_LCD_Command(0x80+13);break;case(5):Write_LCD_Command(0x80+11);break;case(6):Write_LCD_Command(0x80+8);break;case(7):Write_LCD_Command(0x80+5);break;case(0): flag_1=0;Write_LCD_Command(0x0c);//miaoWrite_DS1302(0x8e,0x00);Write_DS1302(0x80,ZH(DateTime[0]));Write_DS1302(0x8e,0x80);//fenWrite_DS1302(0x8e,0x00);Write_DS1302(0x82,ZH(DateTime[1]));Write_DS1302(0x8e,0x80);//shiWrite_DS1302(0x8e,0x00);Write_DS1302(0x84,ZH(DateTime[2]));Write_DS1302(0x8e,0x80);//riWrite_DS1302(0x8e,0x00);Write_DS1302(0x86,ZH(DateTime[3]));Write_DS1302(0x8e,0x80);// yueWrite_DS1302(0x8e,0x00);Write_DS1302(0x88,ZH(DateTime[4]));Write_DS1302(0x8e,0x80);//nianWrite_DS1302(0x8e,0x00);Write_DS1302(0x8c,ZH(DateTime[6]));Write_DS1302(0x8e,0x80);break;}}if(flag!=0){if(KEY2==0){DelayMS(5);if(KEY2==0)while(!KEY2);if(flag==1) //miao{DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);}if(flag==2) //fen{DateTime[1]++;if(DateTime[1]==60)DateTime[1]=0;write_com(0x80+0x40+8);display(8,DateTime[1]);}if(flag==3) //shi{DateTime[2]++;if(DateTime[2]==24)DateTime[2]=0;write_com(0x80+0x40+5);display(5,DateTime[2]);}/* if(flag==4) //zhou {DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);} */if(flag==5) // ri{DateTime[3]++;if(DateTime[3]==30)DateTime[3]=0;write_com(0x80+11);display1(11,DateTime[3]); }if(flag==6) //yue{DateTime[4]++;if(DateTime[4]==13)DateTime[4]=0;write_com(0x80+8);display1(8,DateTime[4]);}if(flag==7) //nian{DateTime[6]++;if(DateTime[6]==100)DateTime[6]=0;write_com(0x80+5);display1(5,DateTime[6]);}}}if(flag!=0){if(KEY3==0){DelayMS(5);if(KEY3==0)while(!KEY3);if(flag==1) //miao{DateTime[0]--;if(DateTime[0]==-1)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);}if(flag==2) //fen{DateTime[1]--;if(DateTime[1]==-1)DateTime[1]=0;write_com(0x80+0x40+8);display(8,DateTime[1]);}if(flag==3) //shi{DateTime[2]--;if(DateTime[2]==-1)DateTime[2]=0;write_com(0x80+0x40+5);display(5,DateTime[2]);}/* if(flag==4) //zhou {DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);} */if(flag==5) // ri{DateTime[3]--;if(DateTime[3]==-1)DateTime[3]=0;write_com(0x80+11);display1(11,DateTime[3]); }if(flag==6) //yue{DateTime[4]--;if(DateTime[4]==-1)DateTime[4]=0;write_com(0x80+8);display1(8,DateTime[4]);}if(flag==7) //nian{DateTime[6]--;if(DateTime[6]==-1)DateTime[6]=0;write_com(0x80+5);display1(5,DateTime[6]);}}}}}void main() {Init_LCD(); while(1) {EA=1;EX0=1;GetTime();Format_DateTime(DateTime[6],LCD_DSY_BUF FER1+5); //年Format_DateTime(DateTime[4],LCD_DSY_BUF FER1+8); //月Format_DateTime(DateTime[3],LCD_DSY_BUF FER1+11); //日strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTim e[5]]); //周Format_DateTime(DateTime[2],LCD_DSY_BUF FER2+5); //时Format_DateTime(DateTime[1],LCD_DSY_BUF FER2+8); //分Format_DateTime(DateTime[0],LCD_DSY_BUF FER2+11); //秒Display_LCD_String(0x00,LCD_DSY_BUFFER1);Display_LCD_String(0x40,LCD_DSY_BUFFER2); }}void int0() interrupt 0{Keyscan();}五、运行结果:。
基于AT89C51单片机的多功能电子万年历的设计

1. 前言1.1 课题研究背景伴随着科技的快速发展,时间的流逝,从观察太阳、摆钟到现在电子钟,人类不断的研究,不断的创新纪录。
随着人们的生活水平的提高和生活节奏加快,对时间的要求也越来越高,精准数字计时的消费需求也就越来越多。
二十一世纪的今天,最具有代表性的计时产品就是电子数字万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对较稳定的机械振荡频率源使钟表的走时差从分级缩小至秒级,代表性的产品是带有摆或摆轮游丝的机械钟或者表。
第二次革命则是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,也使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子数字万年历),使计时产品的走时日差从分级缩小至1/600万秒,从原有的传统指针计时的方式发展成为人们日常更为熟悉的夜光数字显示方式,直观明了,并且增加了全自动日期、星期、温度以及其他日常附属带来了钟表计时业界跨跃性的进步。
国产的电子万年历有很多种,总体上来说以研究多功能电子数字万年历为主,使万年历除了原有的显示时间,日期等基本功能之外,还具有闹铃,报警等功能。
商家生产的电子数字万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。
本设计为软硬件相结合的一组设计。
在软件设计过程中,应对硬件部分有相关了解,有助于对设计题目的更深了解和软件设计。
要了解一些主要器件的基本功能和作用。
除了采用集成化的时钟芯片之外,利用AT89系列单片机制成万年历电路,采用软硬件结合的方法,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。
AT89C51单片机是由ATMEL公司推出的一种小型单片机。
95年出现在中国市场。
主要特点为采用了Flash存贮器技术,降低了制造成本,其软硬件与MCS-51完全兼容,可以很快被中国广大用户接受。
1 / 331.2课题研究目的与意义二十一世纪是数字化技术高速发展的时期,同时单片机在数字化高速发展的时期扮演着非常重要的地位。
基于AT89C51电子万年历的设计

本文提出了一种基于AT89C51单片机的万年历设计方案,该方案以AT89C51单片机作为主控核心,与时钟芯片DS1302、DS18B20温度传感器、按键、LCD显示等模块组成硬件系统。
在硬件系统中设有5个独立按键和一个LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势 具有广阔的市场前景。
AbstractIn this paper, a calendar is designed based on AT89C51 MCU.The proposal uses a single-chip microcomputer AT89C51 as the Master Control chip. The hardware system makes up of the clock chip DS1302,temperature sensor DS18B20, buttons, LCD display modules. Hardware system has five independent buttons and a LCD display, which can display a wealth of information. In accordance with the needs of users, time can be calibrated at any time, chosen the time and so on. To sum up this calendar has some advantages, for example easy to read, showing intuitive, feature-rich, circuit simplicity, low cost. In line with the electronic instrumentation of the development trend, the calendar has the broad market prospects.摘要.............................................................................................................................. I Abstract .......................................................................................................................... I 目录........................................................................................................................... I I 第一章绪论.. (1)1.1 课题的背景 (1)1.2 电子万年历的应用 (1)1.3 技术指标和要求 (1)第二章总体方案 (2)2.1 系统基本方案选择和论证 (2)2.2 系统设计结构图 (4)第三章硬件设计 (5)3.1 系统硬件概述 (5)3.2 系统的模块电路设计 (5)3.3 总硬件设计 (13)第四章软件设计 (14)4.1 软件设计方案 (14)4.2 各模块分析 (14)第五章系统调试 (20)5.1 硬件调试 (20)5.2 软件仿真联调 (26)5.3 功能仿真效果 (28)5.4 调试心得 (31)第六章结论与展望 (32)致谢 (33)参考资料 (34)附录Ⅰ:电子万年历原理图仿真图 (35)附录Ⅱ:电子万年历原理图 (36)附录Ⅲ:元件清单 (37)附录Ⅳ:源程序清单 (38)第一章绪论1.1 课题的背景在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。
基于单片机的万年历设计

电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间技术,还能够对日期、温度、湿度等进行显示,所以在现代社会受到广泛应用。
本设计是一个基于AT89C51单片机的多功能日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还具有日期调整、时间校准以及温度采集等功能。
系统所用的时钟日历芯片DS1302和数字式温度传感器DS18B20具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。
采用AT89C51单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。
本文设计是用单片机为主控制,通过电路仿真而实现的。
在Proteus7软件绘制硬件电路原理图,用Keil软件进行编程与调试,最终生成hex文件,载入单片机,从而实现仿真效果。
本文设计经过最终调试,能够正确显示年、月、日、周、时、分、秒以及温度等所需信息,并能正常使用对日期与时间的调整与校正功能。
系统使用1602LCD 液晶屏显示信息,界面简洁、直观、易于操作。
关键词:万年历;单片机;AT89C51;DS1302;DS18B201 引言 (1)1.1研究的目的和意义 (1)1.2本系统主要研究的内容 (1)2 系统方案论证 (2)2.1控制部分的选择方案与论证 (2)2.2显示部分的选择方案与论证 (2)2.3时钟芯片的选择方案与论证 (2)2.4温度传感器的选择方案与论证 (3)2.5电路设计最终方案系统原理及总体结构图 (3)3 系统设计 (4)3.1 系统硬件仿真原理图 (4)3.2 单片机89C51控制模块的设计 (4)3.3 LCD液晶显示模块设计 (7)3.4 DS1302时钟模块的设计 (9)3.5 DS18B20温度采集模块的设计 (12)4 系统调试 (15)4.1硬件调试 (15)4.2软件调试 (15)5 结论 (15)参考文献 (16)物理与电子工程学院2011级本科课程设计附录 (17)物理与电子工程学院2011级本科课程设计1 引言人类的日常生活离不开时间,任何具有周期变化的自然现象都可用来测量时间。
基于AT89C51单片机的多功能电子万年历的设计论文

基于AT89C51单片机的多功能电子万年历的设计AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR毕业论文学院名称泸州职业技术学院系部名称电子工程系专业名称应用电子技术2012年12月10日摘要本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。
系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,利用proteus仿真,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。
万年历采用直观的数字显示,可以在1602上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。
此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
关键字:AT89C51;电子万年历; DS1302;1602目录摘要 (01)第一章绪论 (03)1.1 课题研究的背景 (03)1.2课题解决的主要容 (03)第二章系统的总体设计 (04)2.1系统硬件电路设计 (04)2.1.1系统硬件结构 (04)2.2单片机及其附属电路 (05)2.2.1 MCS-51系列单片机 (05)2.1.2 MCS-51系列单片机的工作条件电路 (08)2.1.3 DS1302 (09)2.1.4 LCD1602显示电路 (10)2.1.5调节电路 (12)第三章系统的软件设计 (12)3.1主程序 (12)3.2 LCD1602的驱动程序 (13)3.3 DS1302的驱动程序 (14)第四章万年历的设计结论 (14)4.1 万年历工作原理 (14)4.2 万年历结构原理图 (15)致 (16)参考文献 (16)附录 (17)附录【1】仿真图片 (17)附录【2】程序代码................................. 17-25第一章绪论1.1 课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
基于AT89C51单片机的多功能电子万年历的设计_毕业设计

本科毕业设计(论文)基于AT89C51单片机的多功能电子万年历的设计AT89C51 SCM-BASED ELCTRONICDESIGN CALENDAR学生姓名学院名称信电工程学院专业名称电子信息工程技术指导教师年月日摘要本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。
系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。
万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。
此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。
关键字AT89C51;电子万年历; DS1302目录第一章引言................................................................................................. 错误!未定义书签。
1.1课题研究的背景 (1)1.2课题的研究目的与意义 (1)1.3课题解决的主要内容 (1)第二章系统的总体设计 (2)2.1系统方案的构想与确定 (2)2.2 器件的选用 (2)2.2.1单片机的选择 (2)第三章系统硬件的设计 (4)3.1系统硬件电路设计 (4)3.1.1系统硬件框图 (4)3.1.2 AT89C51单片机 (4)3.1.3 8位移位寄存器74LS164(串行输入,并行输出) (8)3.1.4 ds1302 (12)第四章系统的软件设计 (15)4.1 主程序 (15)4.2 从1302读取日期和时间程序 (16)4.3系统源代码 (16)第五章 PROTEUS使用 (29)5.1编程环境PROTEUS (29)5.2用PROTEUS ISIS对电子万年历的硬件电路设计 (29)5.3用PROTEUS ISIS进行电子万年历的仿真测试 (33)结论 (36)致谢 (37)参考文献 (38)附录............................................................................................................... 错误!未定义书签。
基于单片机的万年历设计

物理与电子工程学院2011级本科课程设计摘要电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间技术,还能够对日期、温度、湿度等进行显示,所以在现代社会受到广泛应用。
本设计是一个基于AT89C51单片机的多功能日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还具有日期调整、时间校准以及温度采集等功能。
系统所用的时钟日历芯片DS13O2和数字式温度传感器DS18B2O具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。
釆用AT89C51单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。
本文设计是用单片机为主控制,通过电路仿真而实现的。
在Proteus7软件绘制硬件电路原理图,用Keil软件进行编程与调试,最终生成hex文件,载入单片机,从而实现仿真效果。
本文设计经过最终调试,能够正确显示年、月、日、周、时、分、秒以及温度等所需信息,并能正常使用对日期与时间的调整与校正功能。
系统使用16O2LCD 液晶屏显示信息,界面简洁、直观、易于操作。
关键词:万年历;单片机:AT89C51; DS1302: DS18B20目录1引言 (1)1.1研究的目的和意义 (1)1.2本系统主要研究的内容 (1)2系统方案论证 (2)2. 1控制部分的选择方案与论证 (2)2. 2显示部分的选择方案与论证 (2)2. 3时钟芯片的选择方案与论证 (2)2.4温度传感器的选择方案与论证 (3)2.5电路设计最终方案系统原理及总体结构图 (3)3系统设计 (4)3.1系统硬件仿真原理图 (4)3.2单片机89C51控制模块的设计 (4)3.3 LCD液晶显示模块设计 (7)3. 4 DS1302时钟模块的设计 (9)3.5 DS18B20温度采集模块的设计 (12)4系统调试 (15)4.1硬件调试 (15)4.2软件调试 (15)5结论 (15)参考文献 (16)物理与电子工程学院2011级本科课程设讣17物理与电子工程学院2011级本科课程设计1引言人类的日常生活离不开时间,任何具有周期变化的自然现象都可用来测量时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江西理工大学南昌校区毕业设计(论文)题目:基于AT89C51的数字万年历设计系别:信息工程系专业:电气自动化班级:09电子自动化1班学生:学号:09321131指导教师:职称:助教摘要电子万年历是一种日常广泛应用的计时工具,在现代社会中越来越流行。
数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒、温度等信息,还具有时间校准等功能。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。
本文中万年历的设计过程在硬件与软件方面进行同步设计,硬件部分主要由AT89C51单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路等组成。
在单片机的选择上使用了AT89C51单片机,该单片机适合于许多较为复杂控制应用场合,显示器使用液晶LCD1602。
软件方面主要包括日历程序、液晶驱动程序、显示程序等,这些程序采用C语言编写。
所有程序编写完成后,在Keil C51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
并且利用Protel软件进行制图,画出PCB图并且制作出实物。
关键词: 时钟电钟;液晶LCD1602;单片机ABSTRACTE-calendar is a very extensive daily timing tool, more popular in modern society. For digital electronic calendar using intuitive digital display, simultaneously displays year, month, day, day, hour, minute, second, temperatures and other information, also with a time calibration capabilities. The third revolution is a single-chip digital timing technology ( electronic calendar ), so that the timing product walk time difference from graded narrowing to 1/ 6000000 of a second, from the original traditional pointer timing for the development of people's daily more familiar luminous digital display, intuitive and clear, and the increase of the full automatic date, week, temperature and other daily auxiliary information display function, which is more in line with consumer needs. Therefore, the electronic calendar brings a watch industry a big progress.Synchronizing design of calendar is based on hardware and software design. Hardware part by AT89C51 microcontroller, circuit for LCD, reset circuit, clock circuits, voltage-stabilizing circuit and serial download circuits and other components of the circuit. On the choice of using single-chip microcomputer AT89C51 microcontroller, the microcontroller is suitable for a host of complex control applications. Monitor LCD LCD1602. Software includes calendar, LCD drivers, display program. Programs using a language. All the programming is completed, Kiel C51 debugging software, sure no problem, in Proteus software embedded in single-chip microcomputer in the simulation. And the use of Portal software for drawing and draw the PCB.Keywords : clock electric clockII目录第一章绪言 (1)第二章设计方案论证 (2)2.1系统的基本方案选择、论证和设计 (2)2.1.1显示部分的方案选择 (2)2.1.2单片机型号方案选择与论证 (2)2.1.3时钟芯片方案的选择与论证 (2)2.1.4温度传感器方案选择与论证 (3)2.2数字万年历设计原理 (3)第三章系统的硬件设计与实现 (4)3.1系统硬件概述 (4)3.1.1AT89C51功能及其应用 (4)3.1.2时钟模块功能与原理 (7)3.1.3温度模块功能与原理 (7)3.1.4液晶显示器功能与原理 (8)3.2 主要单元电路设计 (8)3.2.1单片机主控模块设计 (8)3.2.2时钟电路模块的设计 (9)3.2.3温度采集模块设计 (9)3.2.4 显示电路模块的设计 (10)3.3 系统仿真电路 (10)第四章系统软件的设计与测试 (12)4.1程序流程图 (12)4.2 硬件与软件的调试与测试 (14)结束语 (15)致谢 (16)参考文献: (17)附录一程序 (18)附录二 PCB制板图: (21)第一章绪言二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求。
因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。
电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。
因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。
而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。
数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。
LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。
随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。
单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。
本设计硬件电路较简单,所用器件较少,电路中使用了AT89S52单片机、DS1302时钟芯片、24C02FLASH存储器和HY-12864液晶显示器等主要芯片,实现了预计功能。
在对芯片的管脚功能和用法有充分的了解后,根据设计要求设计硬件电路,包括单片机控制电路、时钟电路、存储电路、键盘扫描电路、显示电路和闹铃电路。
然后通过软件编程,实现了对年、月、日、时、分、秒、星期、闰年和阴历的自动调整,用按键进行控制,用液晶模块进行显示,并具有闹铃功能。
万年历的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C51单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路以及串口下载电路等组成。
在单片机的选择上使用了AT89C51单片机,该单片机适合于许多较为复杂控制应用场合。
显示器使用液晶LCD1602。
软件方面主要包括日历程序、液晶驱动程序,显示程序等。
程序采用汇编语言编写。
所有程序编写完成后,在Keil C51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
电子万年历可以正常显示时间并进行时间调整,基本完成了预期要实现的目标。
1第二章设计方案论证2.1系统的基本方案选择、论证和设计系统方案包括控制部分的选型、时钟芯片的选择、单片机型号的选择和显示模块的确定,具体的要求如下:具有年、月、日、星期、时、分和秒,温度显示,闹钟等功能;具备年、月、日、星期、时、分和秒校准,定闹钟功能2.1.1显示部分的方案选择方案一:采用数码管显示,数码管是由八个发光二极管组成,对于显示数字字符比较适合,虽然价格便宜,但对于电子万年历需要显示的数码管位数多,编程麻烦,且不稳定,存在抖动现象,需要通过某些软件延时进行消抖,操作起来就比较的麻烦。
方案二:采用LCD1602液晶显示屏, 液晶显示效果出众,可以运用菜单项来方便操作,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,易于编程,稳定可靠,比较的人性化。
通过对比,本课程设计采用LCD1602作为显示模块2.1.2单片机型号方案选择与论证方案一:采用AT89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,对单片机程序的烧录、调试都有很好的作用,并且性价比很高,能满足本次毕业设计。