




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的日历时钟系统的设计 第 20 页 共 20 页单片机原理及应用 课程设计说明书设计题目:基于单片机的电子日历时钟的设计学 院:工学院专 业:电气工程及其自动化(4)班设 计 者:汤涛 黄旭学 号:09106016 09106007指导老师:吴敏设计时间:2012年5月21日2012年6月2日目 录摘要11 引言12总体设计方案12.1设计原理及相关说明12.2总体设计框图13各芯片设计及对其的调用23.1 STC12C5A60S2单片机主控模块23.2 DS1302时钟模块33.2.1 DS1302的结构及工作原理43.2.2 引脚功能及结构43.2.3 DS1302的控制字节53.2.4 数据输入输出(I/O)53.2.5 DS1302的寄存器53.3 LCD1602 液晶显示模块6 3.3.1 1602的基本特性6 3.3.2 引脚及接口说明63.4 键盘接口74 系统软件设计7 4.1 阳历程序7 4.2 时间调整程序75 调试8 5.1 调试步骤8 5.2 性能分析8结论8致谢9参考文献10附录110附录211附录311附录416基于单片机的日历时钟系统的设计作者:汤涛 黄旭 指导老师:吴敏(安徽农业大学工学院 电气工程及自动化4班 )摘要:该设计是基于STC12C5A60S2单片机的日历时钟系统,采用1602LCD液晶显示屏显示。显示日历时间等,双行显示。显示年、月、日、星期、时间,可设置,掉电后保持走时。开机可进行时间校对。综上所述此时钟具有读取方便、显示直观、功能多样、电路简洁、等优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:日历时钟系统 单片机 时钟电路 液晶显示模块1 引言 本设计实现一个日历时钟,可以利用DS1302读取日期及时间并传至STC12C5A60S2,使之显示于LCD1602液晶显示屏上。LCD602可以显示年月日、星期及时间。设有四个按键,可以对时钟进行设置,按键可以控制的内容包括年月日的修改,星期的修改,时间的设定。2 总体设计方案2.1设计原理及相关说明设计原理:利用DS1302读取系统中的日期以及时间信息,并用P1端口将相关信息传送至STC12C5A60S2主芯片之中,利用P0端口使之显示于LCD12864液晶显示屏上,四个按键分别置于P3口的4、5、6、7端口可以对时间进行控制修改。详细请参阅第三节的芯片介绍。2.2总体设计框图日历时钟系统设计框图如图1所示:DS1302AT89C52LCD 1602键扫描电路图1 日历时钟系统设计框图3 各芯片的设计及其调用3.1 STC12C5A60S2单片机主控模块单片机的主控模块如图2,它以单片机STC12C5A60S2为核心,STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051系列单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。其主要性能特点如下:增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;工作电压:5.5V-3.5V;工作频率范围:0-35MHz,相当于普通8051的0-420MHz;用户应用程序空间60K字节;片上集成1280字节RAM;通用I/O口(36个),复位后为:准双向口/弱上拉(普通8051传统I/O口);可设置成4种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均能达到20mA,但整个芯片最大不要超过120mA;ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(P3.0/P3.1)直接下载应用程序,数秒即可完成一片;有EEPROM功能;看门狗;内部集成MAX810专用复位电路(外部晶振12M以下时,复位脚可直接1K电阻到地);A/D转换,10位精度ADC,共8路,转换速度可达250K/S;具备双串口;工作温度范围:-40 - +85oC(工业级),0 75oC(商业级);40管脚封装由图2可知,单片机的18和19管脚接时钟电路,19管脚接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,18管脚接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,9引脚是复位输入端,接上电容、电阻及开关后构成上电复位电路。图2 主控制器 AT89C523.2 DS1302时钟模块图3 DS1302 时钟模块现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。3.2.1 DS1302的结构及工作原理DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。3.2.2 引脚功能及结构图4示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK始终是输入端。 图4 DS1302的管脚图3.2.3 DS1302的控制字节DS1302 的控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。3.2.4 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。3.2.5 DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。表1 日历、时间寄存器及其控制字寄存器名称命令字取值范围各位内容写操作读操作7 6 5 4 3 2 1 0秒寄存器80H81H00-59CH 10SEC SEC分寄存器82H83H00-590 10MIN MIN时寄存器84H85H01-1212/24 0 10HR HR日寄存器86H87H00-230 0 10DATE DATE月寄存器88H89H01-28.290 0 0 10M MONTH周寄存器8AH8BH30.310 0 0 0 0 DAY年寄存器8CH8DH01-12 10YEAR YEAR3.3 LCD 1602 液晶显示模块3.3.1 LCD 1602基本特性1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。3.3.2 引脚及接口说明1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.4 键盘接口键盘接口电路如图5,本次设计中,按键有4个,每个按键各占用一根I/O线,各按键相互独立,彼此的工作状态互不影响,STC单片机自带上拉电阻因此无需外接上拉电阻,用查询法完成按键功能。图5 键盘接口电路4 系统软件设计4.1 阳历程序 因为使用了时钟芯片DS1302,阳历程序只需从DS1302各个寄存器中读出年、月、日、时、分、秒等数据,在处理即可。在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,在经过处理后,送给显示单元,阳历程序流程图如图6:4.2 时间调整程序调整时间用3个调整按钮,一个作为移位、控制用,另外2个作为加减调整用,分别定义为控制按钮、加、减按钮。在调整时间过程中,要调整的位与其它位应该有区别,所以增加了闪烁功能,即调整的位会在LCD右下角方框内显示。开始初始化1302开始振荡读出的数据都为BCD码,将其高低位分离,送显示单元从1302中读取年、月、周、月、日、时、分、秒图6 阳历程序流程图5 调试5.1 调试步骤调试分为硬件调试和软件调试。硬件调试主要是检查硬件电路是否有短路、断路和虚焊等,首先接上电源,电源的指示灯亮了之后,检测一下单片机的电源脚有没有电源输入,如果有这说明焊接无误,然后可以用万用表检查各个元器件的管脚之间的焊接,检查过程中需要细心和耐心。硬件调试无误后,进行软件调试。软件调试可以针对子程序调试,测试其是否正常工作,例如DS1302的计时/写程序、显示程序等,然后调试时间调整程序,最后把所有的程序作为一个整体来测试。5.2 性能分析将程序烧入单片机后,在proteus软件中进行仿真。在这次电子万年历的设计中,DS1302上最好选用专用的晶振。经过测试制作完成后的电子日历时钟,只有部分功能实现,它能显示年、月、日等,但数码管显示不稳定,设计中硬件或软件有待修正。结 论在做这次课程设计的整个过程中,我明白了很多东西。也许我们理论知识学的还不错,但真正的动起手来,却常常力不从心,这就是我们常犯的眼高手低的毛病,但还是需要良好的理论知识做基础。从刚开始的搜集资料,我就有点慌了,总觉得自己准备的不够好,无法顺利完成任务,但在老师和同学的帮助下,慢慢的步入轨道。虽然课程设计将要接近尾声,我也尽力的想要去做好这次实践课,但由于某些原因,有些元器件没能通过正常工作,这次设计的电子日历时钟没能达到我们预想的效果,只能显示部分功能。这也证明了我以后要学习的东西还有很多,要继续努力,不断地汲取新的知识并运用到实际中,在实践中锻炼自己,全方位的提高自己。致 谢这次毕业设计的完成,首先感谢学校和吴敏老师,感谢学校给了我们这样一个学习的机会,在我们丰富了自身的同时不仅使我学到了很多新的知识,更使我认识到了自己的不足。从这次设计的开始到完成整个过程中,我遇到了很多意想不到的困难,但在吴敏老师的指导和帮助下,我也基本完成了任务,同时也受益非浅。老师给了我很多关于设计方面的资料和建议,并指出了我的错误和不足,她平易近人但有严肃认真的工作态度,她不拘小节却有细致严谨的敬业精神,我们的每一步成果都是和老师的心血分不开的。虽然课程设计即将完成,但我学到了很多新的东西和道理,相信在我以后的人生道路上都会受用的。其中,我的一些同学也给了我很多帮助,借此机会向老师和帮助我的每一个人表示真挚的谢意。参 考 文 献1 张俊漠.单片机中级教程.北京航空航天大学.2006.032 全国大学生电子设计竞赛获奖作品选编.北京理工大学出版社.2005.033 李鹏,等.计算机通信技术及其程序设计.西安电子科技大学出版社.19984 姚彬.电子元器件与电子实习实训教程.机械工业出版社.19965 宋贤法,韩晶等编著.电路设计实力指导教程.机械工业出版社.20036 范红刚,魏学海,任思璟编著.51单片机自学笔记. 北京航空航天大学.2001.017 黄友锐,编著.单片机原理及应用.合肥工业大学出版社.2006.108 Donald A. Neamen. Electronic Circuits Analysis and Design. 2nd ed. McGrawhill Companies, Inc.2001.9 Sergio Franco. Design With Operational Amplifiers and Analog Integrated Circuits. McGraw-Hill Company.2002.10 Allan R.Hambley. Electronics. 2nd ed.Prentice Hall Inc.2000.附录1 元件清单STC12C5A60S2 1个LCD1602 1个DS1302 1个74LS21 1个32768Hz晶振 1个12MHz晶振 1个22pF电容 2个10vF电容 1个10K电阻 9个按钮 4个附录2 系统电路原理图附录3 系统程序清单/*#include #include #define uchar unsigned char#define uint unsigned intsbit SDA = P10; /DS1302 数据线sbit CLK = P11; /DS1302 时钟线sbit RST = P12; /DS1302 复位线sbit RS = P20; /LCD 寄存器选择sbit RW = P21; /LCD 读/写控制sbit EN = P22; /LCD启用sbit K1 = P34; /选择sbit K2 = P35; /加sbit K3 = P36; /减sbit K4 = P37; /确定uchar tCount = 0;/一年中每个月的天数,二月的天数由年份决定uchar MonthsDays = 0,31,0,31,30,31,30,31,31,30,31,30,31;/周日,周一到周六(0,1-6)uchar *WEEK = SUN,MON,TUS,WEN,THU,FRI,SAT;/LCD显示缓冲uchar LCD_DSY_BUFFER1 = DATE 00-00-00 ;uchar LCD_DSY_BUFFER2 = TIME 00:00:00 ;uchar DateTime7; /所读取的日期时间char Adjust_Index = -1; /当前调节的时间对象:秒,分,时,日,月,年(0,1,2,3,4,6)uchar Change_Flag = -MHDM-Y; /(分,时,日,月,年)(不调节秒与周)/-/延时/-void DelayMS(uint x) uchar i; while (x-) for (i = 0; i 120; i+);/-/向DS1302写入一字节/-void Write_A_Byte_TO_DS1302(uchar x) uchar i; for(i = 0; i = 1; /-/从DS1302读取一字节/-uchar Get_A_Byte_FROM_DS1302() uchar i,b,t; for(i = 0; i = 1; t = SDA; b |= t7 ; CLK = 1; CLK = 0;return b / 16 * 10 + b % 16;/-/从1302指定位置读数据/-uchar Read_Data(uchar addr) uchar dat; RST = 0; CLK = 0; RST = 1; Write_A_Byte_TO_DS1302(addr); dat = Get_A_Byte_FROM_DS1302(); CLK = 1;RST = 0; return dat;/-/向DS1302某地址写入数据/-void Write_DS1302(uchar addr,uchar dat) CLK = 0; RST = 1; Write_A_Byte_TO_DS1302(addr); Write_A_Byte_TO_DS1302(dat); CLK = 0; RST = 0;/-/设置时间/-void SET_DS3102() uchar i; Write_DS1302(0*8E,0*00); for (i = 1; i 7; i+) Writ_DS1602(0*80 + 2*i, (DateTimei/104) | (DateTimei%10); Write_DS1302 (0*8E,0*80);/-/读取 当前时间(秒,分,时)/-void GetTime() uchar i; for (i = 0; i 7; i+) DateTimei = Read_Data(0*81 + 2*i); /-/读LCD状态/-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() & 0*80) = 0*80; DelayMS(5);/-/向LCD写数据/-void Write_LCD_Data (uchar dat) LCD_Busy_Wait(); RS = 1; RW = 0; EN = 0; P0 = dat; EN = 1; DelayMS(1); EN = 0;/-/写LCD指令/-void Write_LCD_Command(uchar cmd) LCD_Busy_Wait(); RS = 0; RW = 0; EN = 0; P0 = cmd; EN = 1; DelayMS(1); EN = 0;/-/LCD初始化/-void Init_LCD() Write_LCD_Command(0*38); DelayMS(1); Write_LCD_Command(0*01); DelayMS(1); Write_LCD_Command(0*06); DelayMS(1); Write_LCD_Command(0*0C); DelayMS(1);/-/设置液晶显示位置/-void Set_LCD_POS(uchar p) Write_LCD_Command(p | 0*80);/-/在LCD上显示字符串/-void Display_LCD_String(uchar p,uchar *s) uchar i; Set_LCD_POS(p); for (i = 0; i 16; i+) Write_LCD_Data(si); DelayMS(1);/-/日期与时间转换为数字字符/-void Format_DateTime(uchar d, uchar *a) a0 = d / 10 + 0; a1 = d % 10 + 0;uchar isLeapYear (uint y) return (y % 4 = 0 & y % 100 !=0) | (y % 400 = 0);/-/求自2000.1.1开始的任何一天是星期几/函数没有通过,求出总天数后再求星期几,/因为求总天数可能会月初uint的范围。/-void RefreshWeekDay() uint i, d, w = 5; for (i = 2000; i 2000 + DateTime6; i+) d = isLeapYear(i) ? 366:365; w = (w + d) % 7 ; d = 0; for (i =1; i DateTime4 ; i+) d += MonthsDaysi; d += DateTime 3;/保存星期,06表示星期日,星期一,二,六,为了与DS1302的星期格式匹配,返回值需要加1 DateTime5 = (w + d) % 7 + 1;/-/年月日时分+/-/-void DateTime_Adjust(char x) switch ( Adjust_Index ) case 6; /年00-99 if (x = 1 & DateTime6 0) DateTime6-; /获取2月天数 MonthDays2 = isLeapYear (2000 + DateTime6) ? 29 : 28; /如果年份变化后当前月份的天数大于上限则设为上限 if ( DateTime3 MonthsDaysDateTime 4 ) DateTime3 = MonthsDaysDateTime4; RefreshWeedDay();/刷新星期 break; case 4: /月01-12 if (x = 1 & DateTime4 1) DateTime4-; /获取2月天数 MonthsDays2 = isLeapYear(2000 + DateTime6) ? 29 : 28; /如果年份变化后当前月份的天数大于上限则设为上限 if ( DateTime3 MonthsDays DateTime4 ) DateTime3 = MonthsDays DateTime4; RefreshWeekDay(); break; case 3: /日00-28/29/30/31;调节之前首先根据年份得出该年中2月的天数 MonthsDays2 = isLeapYear(200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年生物制药专利技术合作研发及全球市场战略实施合同
- 2025年新能源汽车租赁及自动驾驶技术合作开发合同
- 2025年可再生能源并网工程土石方整治与运输服务合同
- 水彩花课件教学课件
- 2025年国际供应链合作伙伴隐私保护保密协议
- 2025宅基地房屋租赁合同书含房屋日常维护及修缮服务条款
- 2025年高端定制布艺产品研发与市场推广合作协议
- 2025年网络安全技术研发与定制化解决方案外包合同
- 2025年度环卫车辆租赁与综合环境清洁保养合同
- 2025年绿色食品专卖店租赁合同专设环保与食品安全保障条款
- 三级教育卡、培训记录和花名册
- 拜复乐-产品基础知识
- 生物制品生产工艺过程变更管理技术指导原则
- 建筑施工现场签证单(模板)
- GBZ(卫生) 49-2014职业性噪声聋的诊断
- GB/T 9729-2007化学试剂氯化物测定通用方法
- GB/T 7588.2-2020电梯制造与安装安全规范第2部分:电梯部件的设计原则、计算和检验
- GB/T 13560-2017烧结钕铁硼永磁材料
- 三视图及尺寸标注课件
- 混凝土配合比验证检验委托书模板
- 住房公积金投诉申请书
评论
0/150
提交评论