本科毕业设计论文——多时区电子时钟日历软件设计06电子02班:宋香指导老师:王延年西安工程大学毕业设计2设计要求:此设计要求制作一个电子时钟日历,能够显示年、月、日、时、分、秒、星期。有时区设定功能且能实现各个时区年、月、日、时、分、秒、星期的相互转换。有时间调校功能,带掉电保持内部时钟继续运行。西安工程大学毕业设计3目录一,系统总体方案确定二,主程序流程图介绍三,各主要子程序介绍四,软件调试与仿真五,结论西安工程大学毕业设计4一,系统总体方案确定硬件总体原理:按照系统设计功能的要求,确定系统主要由主控模块AT89C51、时控模块DS1302、显示模块LCD1602和键盘接口模块共4个模块组成,电路系统构成框图如图1所示。图1硬件设计总框图时控模块DS1302键盘扫描模块主控模块AT89C51显示模块LCD1602西安工程大学毕业设计5(1)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正液晶上显示的时间。此外,键盘电路还要来进行时区的切换。(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。(3)实时时钟芯片引入一个内部充电电源在停止外部供电时,仍具有内部计时的功能。(4)液晶显示电路用来显示单片机发送的信号。西安工程大学毕业设计6时区切换的分析及时区显示全球共分为24个时区(中时区,东1--12区和西1--12区,其中东12区和西12区合为一时区)。因此相邻的两个时区区时相差一小时,整体两个时区之间,中间有几根时区界限,它们的区时之差就是几个小时,又因为太阳的周日运动是自西向东,其中较东的时区较早,而东12区比西12区早24小时,所以东12区比西12区的日期要快一天,但是鈡点一样。西安工程大学毕业设计7二,主程序流程图介绍主程序流程图如图2所示。流程图说明:(1)对液晶进行初始化,包括设置液晶工作模式,LCD1602工作模式为16*2行显示,8为数据。判断液晶模块是否处于忙的状态。设定日历星期显示固定字符从第一行第一个位置之后开始显示,时间时区显示从第二行第二个位置后开始显示,写入固定字符。开始初始化(包括对DS1302,LCD1602,定时计数器,时区的初始化)while(1)键盘扫描程序显示函数是否进行调校YYNN结束图2主程序流程图西安工程大学毕业设计8(2)对时钟日历芯片进行初始化,向DS1302内部年、月、日、时、分、秒以及星期的寄存器地址写入初始数据。(3)对定时器、计数器进行初始化设置,指定定时计数器的工作方式并允许有开放的中断,开启中断。(4)对时区的初始化设置当前时区为东8区-北京时间。(5)进行循环用液晶显示。(6)若要对年、月、日、时、分、秒以及星期各部分进行调校,对时区进行转换调用键盘扫描函数,达到预期值之后进行显示。西安工程大学毕业设计9三,主要子程序介绍•实时时钟程序实时时钟可提供秒、分、时、日、月、年和星期,一个月小与31天时可以自动调整,且具有闰年补偿功能。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式。西安工程大学毕业设计10DS1302寄存器特殊位介绍:小时寄存器的位7用于定义DS1302是运行于12小时模式还是24小时模式。秒寄存器的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。控制寄存器的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。西安工程大学毕业设计11DS1302实时时间驱动流程图如图4图4开始变量初始化使DS1302禁止写保护复位产生一个高电平写1302地址延时向该地址写入数据地址增加数据写完了吗?复位产生一个高电平读1302地址延时将该地址的数据读出地址增加数据读完了吗?显示数据YYYYNNNN西安工程大学毕业设计12流程图说明:在写操作之前应禁止写保护。复位产生高电平,SCLK=0到SCLK=1,所选地址被写入DS1302,然后再向该地址写数据,而地址自动加一。重新复位,依次读取地址,再将地址内数据读出,读完后送入显示系统。西安工程大学毕业设计13•液晶显示程序设计液晶显示模块是一个慢显示器件,要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。图5是1602的内部显示地址。图5西安工程大学毕业设计14例如:第二行第一个字符的地址是40H,那么不能直接写入40H就可以将光标定位在第二行第一个字符的位置,这是因为写入显示地址时要求最高位D7恒定为高电平所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)西安工程大学毕业设计15液晶初始化流程图如图6开始设置液晶工作模式设置开显示不显示光标日历写入位置显示从第一行第一个位置开始显示写入时间固定符号部分时间写入位置显示从第二行第二个位置开始显示进行显示写入日历固定符号部分图6西安工程大学毕业设计16流程图说明:设置液晶模式,本设计液晶模式选用为16*2行显示,8为数据。第一行从第一个位置开始显示年、月、日及星期。其显示按照固定符号的格式“20--”,总共有14位,循环将各个位置的地址内数据一次显示。第二行从第二个位置开始显示时、分、秒及时区标志。其显示也是按照固定符号的格式“::”总共有11位,循环将各个位置的地址内数据一次显示。西安工程大学毕业设计17•键盘扫描程序本系统设置4个按键来实现日历时钟调校以及时区的切换。(1)KEY1为功能设置键共有秒、分、时、星期、日、月、年、返回,8个功能循环,每按下一次后分别进行秒、分、时、星期、日、月、年7个位置下光标的闪烁。西安工程大学毕业设计18(2)KEY1键按下后哪位下光标闪烁则可对此位进行上调(KEY2)或下调(KEY3)。(3)KEY4键为时区切换键,按一下,在当前时区上加一时区,从西12到东12,相邻的两个时区间靠东比靠西早一小时,东12区比西12区早一天。每按一下KEY4,则24个时区时钟日历显示进行循环。西安工程大学毕业设计19秒校准流程图如图7所示对秒进行上调,按一下KEY1,秒下光标闪烁,每按一下KEY2,秒在当前数值上加1,直到显示为59时,再按一下,秒清零。下调原理相同。图7开始KEY1=0按一下KEY2键miao=0miao++miao59结束NY西安工程大学毕业设计20相邻时区时钟转化流程图如图8所示week+1ri=1shi=1week=1ri+1shi是否为24开始week是否为7ri是否为ri-maxyue+1yue是否为12yue=1nian是否为2099nian+1nian=2000结束YYYYYYYYYYshi+1NNNNNNNNNN图8西安工程大学毕业设计21•中断程序流程图如图9所示。流程图分析:由中断查询当有中断请求时,及进行现场保护,保护断点,读取1302中的日历时钟并转化为相应的BCD码,写入液晶中,调用年、月、日,时、分、秒显示子函数进行显示。读取1302中的日历时钟并转化为相应的BCD码开始将日历时钟写入液晶调用日历时钟显示子函数进行显示结束图9西安工程大学毕业设计22四,软件调试与仿真软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现仿真结果故障。西安工程大学毕业设计23•本程序的调试和仿真用到KEILuVision2软件和ProteusISIS仿真软件的联合,程序的调试一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调,最后在原理图液晶上读取显示。西安工程大学毕业设计24联合调试结果:西安工程大学毕业设计25仿真结果:西安工程大学毕业设计26西安工程大学毕业设计27西安工程大学毕业设计28五,结论本论文设计的多时区电子时钟日历是基于AT89C51单片机在LCD1602上显示年、月、日、时、分、秒、星期以及时区标志。用键盘电路实现了各个时区年、月、日、时、分、秒、星期的相互转换以及时间调校功能。实时时钟芯片DS1302引入一个内部充电电源在停止外部供电时,仍具有内部计时的功能因此实现了带掉电保持内部时钟继续运行。西安工程大学毕业设计29在软件调试中用到了学过的uVision2集成开发环境,仿真时用了ProteusISIS仿真软件,再利用联合调试的方法完成了软硬件的结合。整个系统具有硬件设计简单、工作稳定性高、价格低廉等优点。软件编程也用了常用的单片机C语言,其重点在于定时中断的合理使用,各相互独立的程序通过有机的组合,来完成所需功能。西安工程大学毕业设计30谢谢观看!