




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科生毕业设计(论文)基于单片机的电子日历软件设计THESOFTWAREDESIGNOFTHEELECTRONICCALENDARBASEDONSINGLECHIP总计毕业设计(论文)28页表格10个插图14幅学院(系)电子与电气工程系专业电气工程及自动化基于单片机的电子日历软件设计摘要本设计主要介绍了基于单片机的电子日历软件系统设计。系统以AT89S52为核心控制器,通过硬件电路的制作以及软件程序的编制设计出的数字时钟系统。系统主要由时钟模块DS13021、液晶显示模块AMPIRE128X642、4X4键盘控制模块、看门狗模块等模块组成。液晶模块能够准确显示时间,能用键盘直接调整时间,采用动态显示“年”,“月”,“日”,“星期”“时”,“分”,“秒”。显为“2010年05月18日星期二08时08分08秒”,系统具有简单清晰的操作界面,可随时进行时间调整,设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,系统稳定性高,该时钟系统还具有功耗小特点,具有很强的实用性,另外具有校时功能。关键词单片机AT89S52时钟模块DS1302液晶模块AMPIRE128X64看门狗定时器THESOFTWAREDESIGNOFTHEELECTRONICCALENDARBASEDONSINGLECHIPABSTRACTINTRODUCESTHEDESIGNOFMICROCONTROLLERBASEDELECTRONICCALENDARSOFTWARESYSTEMDESIGNAT89S523ASTHECORECONTROLLERSYSTEMTHROUGHHARDWAREDESIGNANDSOFTWAREPROGRAMMINGFORTHEDIGITALCLOCKSYSTEMDESIGNSYSTEMMAINLYCONSISTSOFTHECLOCKMODULEDS1302,LCDMODULEAMPIRE128X64,4X4KEYPADCONTROLMODULE,THEWATCHDOGMODULEMODULETHROUGHTHELCDTOACCURATELYDISPLAYTHETIME,THEKEYBOARDCANBEUSEDDIRECTLYTOADJUSTTHETIME,DYNAMICDISPLAY“YEAR“,“MONTH“,“DAY“,“WEEK“WHEN“,“SUB“,“SECONDS“WERETHE“AUGUST8,2008FRIDAY,08HOURS08MINUTES08SECONDS“,THESYSTEMISSIMPLEANDCLEARINTERFACE,WHICHCANBETIMETOADJUSTTHEDESIGNTOHARDWAREANDSOFTWAREINTOAGUIDINGPRINCIPLE4,GIVEFULLPLAYMCUFUNCTIONS,LARGESOMEFEATURESIMPLEMENTEDBYSOFTWAREPROGRAMMING,SYSTEMS,HIGHSTABILITY,THECLOCKSYSTEMALSOHASLOWPOWERCONSUMPTIONCHARACTERISTICS,ANDHIGHLYPRACTICAL,WITHTHESCHOOLWHENANOTHERFUNCTIONKEYWORDSMCUAT89S52COCKMODULEDS1302LCDMODULEAMPIRE128X64WATCHDOGTIMER目录1前言111数字电子钟的背景112数字电子钟的意义113数字电子钟的应用12软件系统的整体设计13系统模块软件设计331系统软件的总体设计流程图332实时时钟模块的软件设计5321实时时钟模块编程介绍5322实时时钟软件设计程序流程图633液晶显示模块软件设计8331液晶显示模块软件设计介绍8332液晶显示的软件程序设计流程图1034键盘模块的软件设计12341键盘的软件设计思路12342盘程序设计流程图1235看门狗模块的软件设计13351看门狗软件的介绍13352看门狗模块的程序流程图1436本设计软件重点及难点解决154软、硬件交互仿真与调试1541系统软件设计的开发环境15411KEILVISION3编程软件介绍15412PROTEUS仿真软件介绍1542软硬件交互仿真16421软件程序的设计与调试过程16422软件程序设计的仿真17423软硬件交互仿真结果18结束语19参考文献20附录21致谢231前言11数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,由于数字集成电路的发展和石英品体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便。数字时钟是一种利用数字电路来显示“年”、“月”、“日”、“星期”、“时”、“分”、“秒”的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用LCD数字电子钟已经成为一种时尚。但目前市场上各式各样的LCD数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点。因此有必要对数字电子钟进行改进。12数字电子钟的意义数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。13数字电子钟的应用数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。2软件系统的整体设计数字时钟系统的软件设计主要包括最小单片机系统模块、时钟模块、液晶显示模块、键盘控制模块、看门狗模块共五部分组成。本数字时钟系统设计的系统整体框图如图1所示单片机系统实时时钟模块看门狗键盘液晶显示模块电源模块图1整体设计框图通过编写调用12864选屏,12864初始化,12864清屏,读取年的前两位数据20和年、月、日、星期、时、分、秒这些汉字的数据,调用DS1302初始化,看门狗初始化,时间初时化,时间初始化是设置24小时制和设置2010年05月18日星期二08时08分08秒中要显示的数据,读入10年05月18日08时08分08秒星期二这些时间的数据,利用循环方式不断刷新这些数据的实时时间,扫描键盘读取键值,再判定是年、月、日、星期、时、分、秒中的哪个键,然后再扫描键盘读取键值,判定是加调整还是减调整,从读取动态数据开始到判定是加调整还是减调整,等程序模块实现AT89S52单片机从实时时钟模块DS1302中读取当前的电子日历数据,再把所读的数据送入到液晶显示模块AMPIRE128X64中去显示。(1)实时时钟模块软件设计实时时钟模块DS1302主要是通过编写程序,开始初始化,定义年、月、日、星期、时、分、秒的地址、数据组和端口设置,定义时间的类型,取时间,主要介绍了读取数据进制的转换和数据处理,初始时间设置,设定上电后,开始显示的时间,设置完后,给实时时钟模块DS1302设定初始时间,写入数据,读入数据,时间的增减功能的实现,先依次判按下的是那个键,再判年、月、日、星期、时、分、秒中的那个键,时间的初始化,DS1302的初始化等各个功能模块编写,为单片机读取数据和12864显示数据,提供年月日星期时分秒的电子日历实时数据。(2)晶显示模块软件设计通过编写初始化开始宏定义和设置端口,选屏,写数据模块,设定指令模式和写模式,开启使能,写入数据,关闭使能。清屏模块,利用循环将12864所有地址清0。12864初始化模块,设置从第0行开始显示和打开显示开关,接下来到8X16数字显示模块,分两页显示,分别设置两页的页和列地址。接下来到16X16汉字显示模块,分两页显示,分别设置两页的页和列地址。设置液晶显示模块AMPIRE128X64的显示方式,主要是用于显示DS1302传送过来的年、月、日、星期、时、分、秒等电子日历实时数据。(3)键盘软件设计通过4X4矩阵式键盘编写通过初始化定义端口,所有行置高电平,所有列置低电平,读取行状态,调用延时,去抖动,再次读取读取行状态值,判断有键按下吗没有的话,返加重新扫描,有的话,调用SCANM判定并得出行值。接下来再判列值,置P1口为F0,延时11秒,读取列状态值,调用SCANM判定并读列值,接下来键值译码,返回键值,判定按下的是年、月、日、星期、时、分、秒哪个键的程序,时间的增减程序,再扫描键盘,判定按下的是加或是减的哪个键的程序等程序模块的编写,能实现用键盘直接调整时间,当按下“年”、“月”、“日”、“星期”、“时”、“分”、“秒”中的任一个按键时,再按加或减键,都可以实现“年”、“月”、“日”、“星期”、“时”、“分”、“秒”的加或减,比如按下“年”这个键时,再按下加键,就可以年份增加,再按减,就可以实现年份的减少。实现电子日历的校验功能,设定电子时钟的当前显示时间和日期,便于使用。(4)看门狗软件设计看门狗软件的功能就是看门狗是利用了一个定时器,通过对X25045芯片程序的编写,来控制主程序的运行,在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位,在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路,有效地防止程序发生死循环,或者说程序跑飞。看门狗模块确保了系统可靠性。3系统模块软件设计31系统软件的总体设计流程图本电子时钟系统程序的设计,是根据系统软件的总体设计流程图进行编写,开始初始化,宏定义DS1302头文件、12864头文件等,12864选择全屏显示,12864开始初始化,能过命令设置显示起始行和打开显示命令,接下来12864清屏,读取年的前两位数据20,接下来读取年、月、日、星期、时、分、秒这些汉字的数据,这些都是固定显示的,接着DS1302初始化,时间初始化是设置24小时制和设置2010年05月18日星期二08时08分08秒中要显示的数据,接着再依次读入10年05月18日08时08分08秒星期二这些时间的数据,利用循环方式不断刷新这些数据的实时时间,扫描键盘读取键值,本数字时钟系统软件设计总体的流程图如图3所示开始初始化12864选屏12864初始化12864清屏调用PLAY8和PLAY16固定显示20年月日星期时分秒DS1302初始化12864所有地址清0时间初始化取时间结束选全屏设秒为00设置24小时制设置初始时间2008年08月08日星期五08时08分08秒读取时间数据转化为十进制再把读取值两个数分开设置显示起始行打开显示开关扫描键盘见键盘流程图是06中的那个键键值是7再扫描键盘Y时间设置加1N键值是8Y时间设置减1看门狗初始化发写读使能命令发写状态字命令定时14S开机复位调用PLAY8和PLAY16显示080808五080808喂狗了吗NY图3系统软件设计的总体流程图再判定是年、月、日、星期、时、分、秒(年是0号键、月是1号键、星期是3号键、时是4号键、分是5号键、秒是6号键)哪个键,然后再扫描键盘读取键值,判定是加调整还是减调整(加是7号键,减是8号键),从读取动态数据开始到判定是加调整还是减调整,循环显示,本设计采用模块化设计,主程序做为一个主函数,把每个功能模块作为一个子函数来实现其功能,在主函数中逐一调用这些模块来实现,所以流程图也是以模块式介绍并在分支中介绍了功能模块的实现过程,并在下面的每个功能模块的流程图中进行了详细介绍。原程序见附录。32实时时钟模块的软件设计实时时钟模块设计采用DS1302芯片,通过编写程序实现,DS1302的初始,把要设定的初始时间的数据写入到DS1302芯片中去,让DS1302为系统提供年月日星期时分秒电子日历的实时数据。321实时时钟模块编程介绍1本设计实时时钟模块采用DS1302芯片,在程序设计时,首先要了解芯片的时钟时序和RAM数据的存储,才会进行相应的设置和应用,所以在编写程序之前,要先将来些数据看懂,才能进行编程,芯片时钟时序和RAM数据的存储,分别如图4和图5所示图4时秒100000076152秒430分1000010小时1001000W日1001010W月1000001W星期1000011年1001001控制1001011005910秒0112002312/24100小时0128/2901300131010日0日011200010M月0107000星期0000991001010WWP000000CH秒005910分0分A/P小时0WWWWW时钟1001011W钟芯片时序图DS1302芯片是可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿等多种功能控制字节的最高有效位位7必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据位5至位1指示操作单元的地址最低有效位位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出需要注意的是应用DS1302编程时涉及到进制的转换,将16进制转换成10进制。RAM数据01010000WRAM数据30110WRAM字符组11WRAM数据0RAM数据0图5RAM的存储数据图2DS1302内部寄存器CH时钟停止位寄存器2的第7位12/24小时标志CH0振荡器工作允许BIT71,12小时模式,CH1振荡器停止BIT70,24小时模式WP写保护位寄存器2的第5位AM/PM定义WP0,寄存器数据能够写入AP1下午模式WP1寄存器数据不能写入,AP0上午模式。322实时时钟软件设计程序流程图本实时时钟程序设计,开始初始化时,定义年、月、日、星期、时、分、秒的地址、数据组和端口设置,定义时间的类型,再写入数据时间的增减,读入数据。判定读入的是年吗是的话,再判定读取值等于OXFF吗等于的话,设置DAT99,不等于的话,往下执行,再判定读取值等于100吗等于的话,设置DAT0,不等于的话,往下执行。跳出去再判读取是月吗是的话,DAT13吗等于的话,设置DAT1,不等于再判DAT0吗等于的话,设置DAT12,不等于的话,往下执行。跳出去判读取是天吗再判读取是2月吗是的话,DAT29吗是的话,设置DAT1,不等于再判DAT0吗等于的话,设置DAT28,不等于的话,往下执行。跳出去再判读取是1、3、5、7、8、10、12月吗是的话,DAT32吗是的话,设置DAT1,不等于再判DAT0吗等于的话,设置DAT31,不等于的话,往下执行。跳出去再判读取是4、6、9、11月吗是的话,DAT31吗是的话,设置DAT1,不等于,再判DAT0吗等于的话,设置DAT30,不等于的话,往下执行。跳出去判读取是小时吗是的话,DAT24且不等于OXFF吗等于的话,设置DAT0,不等于再判DATOXFF吗等于的话,设置DAT59,不等于的话,往下执行。跳出去再判读取是分和秒吗是的话,DAT60且不等于OXFF吗是的话,设置DAT0,不等于再判DAT0XFF吗等于的话,设置DAT59,不等于的话,往下执行。跳出去再判读取是星期吗是的话,DATOXFF吗等于的话,设置DAT6,不等于再判DAT7吗大于等于的话,设置DAT0,不等于的话,往下执行。实时时钟DS1302芯片的软件设计程序流程图如图6所示开始初始化时间设置时间增减得出改变值YWP0打开写保护数据写入DS1302复位WP1关闭写保护数据写入DS1302调用写入子函数写入到DS1302读数据取时间初始时间设置DS1302初始化结束读值是年的吗NYDATOXFFDAT99NDAT100YDAT0跳出读值是月的吗YNYDAT13DAT1NDAT0YDAT12跳出读值是天的吗读值是星期的吗读值是分和秒的吗读值是小时的吗Y再判月是2月吗DAT28NDAT1YNDAT29YDAT1NDAT0Y跳出是1、3、5、7、8、10、12月吗YDAT32YDAT0YDAT31跳出Y是4、6、911月吗N跳出YDAT31YNNDAT1DAT0YDAT1跳出DAT24且不等于FFYDAT31NDATFFYDAT23跳出跳出跳出YDAT60且不等于FFYDAT0NDATFFYDAT59跳出跳出跳出DATFFYDAT6跳出跳出YDAT7YDAT0跳出图6实时时钟软件设计程序流程图跳出将读取的键值,写到DS1302中去,接下是取时间,主要介绍了读取数据进制的转换和数据处理,接下来是初始时间设置,设定上电后,开始显示的时间,设置完后,DS1302开始初始化,本模块的设计重点介绍了时间的增减子程序实现的方法和过程。原程序清单见附录。33液晶显示模块软件设计本设计显示模块采用AMPIRE128X64芯片,通过编写程序,初始化AMPIRE128X64、选屏、清屏、把DS1302传送过来的年、月、日、星期、时、分、秒等电子日历实时数据显示出来。331液晶显示模块软件设计介绍12864点阵液晶显示芯片就是由12864个液晶显示点组成的一个128列64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形或汉字的点阵信息当然由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的6464液晶屏拼接而成,每半屏有一个5128BITS显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。显示点在6464液晶屏上的位置由行号(LINE,063)与列号(COLUMN,063)确定。5128BITSRAM中某个存储单元的地址,由页地址(XPAGE,07)和列地址(YADDRESS,063)确定。每个存储单元存储8个液晶点的显示信息。为了使液晶点位置信息与存储地址的对应关系更直观关,将6464液晶屏,从上至下8等分为8个显示块,每块包括8行64列点阵。每列中的8行点阵信息构成一个8BITS二进制数,存储在一个存储单元中。(需要注意二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM区称为存储页。即6464液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列8行点阵信息。因此存储单元地址包括页地址(XPAGE,07)和列地址(YADDRESS,063)。例如点亮12864的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000(也可能是00001000,高低顺序取决于制造商)写入XPAGE2,YADDRESS29的存储单元中即点亮(20,30)上的液晶点。12864内部功能器件及相关功能如下1指令寄存器IRIR是用于寄存指令码,与数据寄存器数据相对应。当D/I0时,在E信号下降沿的作用下,指令码写入IR。2数据寄存器DRDR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I1时,在下降沿的作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。3忙标志BFBF标志提供内部工作情况。BF1表示模块在内部操作,此时模块不接受外部指令和数据。BF0时,模块为准备状态,随时可接受外部指令和数据。利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。4显示控制触发器DFF此触发器是用于模块屏幕显示开和关的控制。DFF1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上,DFF0为关显示(DISPLAYOFF),DDF的状态是指令DISPLAYON/OFF和RST信号控制的。12864LCD的指令系统及时序该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表1示表112864的指令系统控制信号控制代码指令名称R/WRSDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX写数据01写数据读数据11读数据12864LCD指令表中各功能指令分别介绍如下1显示开/关指令说明如表2所示表2显示开/关指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB00000111111/0当DB01时,LCD显示RAM中的内容;DB00时,关闭显示。2)显示起始行(ROW)设置指令说明如表3所示表3显示起始行设置指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB00011显示起始行(063)该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。3)页(PAGE)设置指令说明如表4所示表4页设置指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB00010111页号(07)12864LCD全屏显示RAM共64行,分8页,每页8行。4)列地址(YADDRESS)设置指令说明如表5所示表5列地址设置指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB00001显示列地址(063)设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MCU就可以用读、写指令读出该单元中的内容或向该单元写进一个字节数据。5)读状态指令说明如表6所示表6读状态指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB010BUSY0ON/OFFREST0000该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下BUSY1内部在工作0正常状态;ON/OFF1显示关闭0显示打开;RESET1复位状态0正常状态;在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。6)写数据指令说明如表7所示表7写数据指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB001写数据7)读数据指令说明如表8所示表8读数据指令R/WRSDB7DB6DB5DB4DB3DB2DB1DB011读显示数据读、写数据指令每执行完一次读、写操作之后,相应的列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。332液晶显示的软件程序设计流程图本显示程序流程图,液晶显示模块的程序设计流程图具体内容如图7所示开始初始化选屏全屏写命令清屏12864初始化I0选择右半屏I1选择右半屏I2判断12864忙吗YN设置指令模式和写入模式写入数据12864所有地址清0设置显示起始行打开显示开关8X16数字显示16X16显示汉字设置第二页列和页地址结束分两页显示设置第一页列和页地址设置第二页列和页地址分两页显示设置第一页列和页地址图7液晶显示模块的程序设计流程图初始化开始宏定义和设置端口,接下来开始选屏,如果I0CS10,CS21右半屏显示,如果I1CS11,CS20左半屏显示,如果I2CS10,CS20全屏显示。接下来到写数据模块,设定指令模式和写模式,开启使能,写入数据,关闭使能。接下来到清屏模块,利用循环将12864所有地址清0。接下来到12864初始化模块,设置从第0行开始显示和打开显示开关,接下来到8X16数字显示模块,分两页显示,分别设置两页的页和列地址。接下来到16X16汉字显示模块,分两页显示,分别设置两页的页和列地址。具体介绍了通过编写程序实现电子日历显示的过程,通过MPIRE128X64的设置,汉字和数字的显示实现过程。原程序见附录。34键盘模块的软件设计本设计键盘模块的软件设计采用4X4矩阵式键盘,通过编写键盘扫描,判断是年、月、日、星期、时、分、秒中哪键号(年是0号键、月是1号键、星期是3号键、时是4号键、分是5号键、秒是6号键),再次调用键盘扫描,判断是加还是减的键号加是7号键,减是8号键键盘调整当前显示时间。341键盘的软件设计思路本设计采用矩阵式键盘,每一水平线行线与垂直线列线的交叉处不相通,而是通过一个按键来连通。利用这种行列结构只需N条行线和M条列线,即可组成具有NXM个按键的键盘。这种键盘处理程序首先执行有无键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下,对键的识别常用逐行(或列)扫描查询法。行扫描的工作过程如下1判断键盘中是否有键按下吗2行扫描,判断是哪一个键按下,若有键按下,调用延时子程序去抖动之,再次读入键值,进一步确认有键接下吗若无键按下,则返回重新扫描,若有键按下,读取行号。3读取按键的键值码将按键的位置转换为键值(键的顺序)0、1、2、F。342盘程序设计流程图本设计键盘模块程序设计采用4X4矩阵式键盘,动态扫描键盘程序编写的具体内容,本键盘程序只写了读取键值的过程,开始初始化定义端口,所有行置高电平,所有列置低电平,读取行状态,调用延时,去抖动,再次读取读取行状态值,判断有键按下吗没有的话,返加重新扫描,有的话,调用SCANM判定并得出行值。接下来再判列值,置P1口为F0,延时11秒,读取列状态值,调用SCANM判定并读列值,接下来键值译码,返回键值,判定按下的是哪个键的程序(加减时间的增减程序放到了DS1302程序当中去了)放到了主程序当中去了。具体设计思路如下面流程图8所示开始初始化所有行置高电平所有列置低电平读取行状态延时1US再次读P1口值与0F相等吗Y有键按下N调用SCANM判定行值KM1、2、4、8中的一个得出对应行值返回置P1口为F0延时11秒读取列状态调用SCANM判定列值键值译码返回键值无键按下图8键盘程序设计流程图具体的原程序内容见附录。35看门狗模块的软件设计本设计看门狗模块采用X25045芯片,通过编写程序,设定X25045内的定时器,读入和写入程序,在主程序中加入喂狗指令,就可以实现程序发生死循环,或者说程序跑飞或者说死机时,系统自动复位的功能。351看门狗软件的介绍看门狗是一个定时器电路,来监控主程序的运行,看门狗定时器实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。在读写操作之前,需要先向它发出指令,指令名及指令格式如表9表9指令名及指令格式指令名指令格式操作WREN00000110设置写使能锁存器允许写操作WRDI00000100复位写使能锁存器禁止写操作RDSR00000101读状态寄存器WRSR00000001写状态寄存器READ0000A8011把开始于所选地址的存储器中的数据读出WRITE0000A8010把数据写入开始于所选地址的存储器写允许在器件进行写操作之前,首先必须设置写操作指令,WREN指令允许进行写操作,而WREI将禁止写操作,在器件复位后将自动禁止写操作,而一旦对器件写入一个字节,一页或写入状态寄存器后也自动处于写禁止状态,在WP引脚接地后也会使器件处理写禁止状态。在写了WRENWRDIRSDR和WRSR指令后不需要在后跟上一个地址或一个数据状态寄存器。看门狗定时器电路监测WDI的输入来判断微处理器是否工作正常,在设定的定时时间以内微处理器必须在WDI引脚上产生一下由高到低的电平的变化,否则X5045将产生一个复位信号。WD0和WD1组合的含义如下表10所示。表10WD0和WD1组合的含义WD1WD0看门狗定时值0014S01600MS10200MS11禁止看门狗工作在X5045内部的一个控制寄存器中有2位可编程位决定了定时周期的长短,微处理器可以通过指令来改变这两个位从而改变看门狗定时时间的长短。352看门狗模块的程序流程图看门狗模块的软件设计X20545芯片,具体程序流程图的内容如图9所示初始化上电结束喂狗图9看门狗的程序流程图X20545芯片编程思路,当程序正常运行时,主程序中的喂狗指令会在14S内喂狗;当程序发生死循环,或者说程序跑飞,或者死机,超过14S没有喂狗时,系统会自动复位。原程序见附录。36本设计软件重点及难点解决(1)用单片机控制过程软件实现研究。(2)单片机电子时钟的液晶显示原理与程序编写方法。(3)通过程序实现电子时钟的准确定时、显示功能的实现和键盘可调整。4软、硬件交互仿真与调试41系统软件设计的开发环境411KEILVISION3编程软件介绍KEILVISION3是一个功能强大的开发平台,有功能齐全的软件模拟调试及硬件调试环境,生成烧录HEX文件。在KEILVISION3编程软件中进行C语言程序的编写和调试,然后生成“HEX”十六进制文件。在KEILVISION3中程序设计既可以采用C语言,也可也采用汇编语言设计,在程序调试方面也有很多比较方便的操作方式。软件设计的环境KEILVISION3是目前最流行开发MCS51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持KEIL即可看出。KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些部份组合在一起,其生成目标代码效率非常高。KEILVISION3这款编程软件,为我们更好的学习计算机语言和单片机,提供了一个很好的学习平台,激发了我们的学习积极性,掌握KEILVISION3这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的。412PROTEUS仿真软件介绍PROTEUS是一款新颖的系统软硬件设计仿真平台,它是LABCENTERELECTRONICS公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。PROTEUS的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。通过PROTEUS软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室,特别适用于单片机仿真,能够多种类型的单片机。对于初学单片机的人来说,既减少了学习成本,又达到了良好的学习效果。在PROTEUSISIS中进行在线、实时仿真验证。我们的学习,减少了很多不必要的麻烦,比如跑去买元件,再做实验,在实验的过程,由于电压过高等原因,造成烧坏元件等等,这样既浪费了大量的宝贵时间,又浪费金钱,造成很多不必要的损失,PROTEUS这款仿真,给我们的学习和设计带来了很大的方便。42软硬件交互仿真421软件程序的设计与调试过程在KEILVISION3编程软件中,进行C语言程序的编写和调试,本设计采用模块化编程和调试,为了便于在PROTEUSISIS中进行仿真验证,在KEILVISION3工具栏中点OPTIONSFORTARGET弹出如图10所示的对话框图10目标选项卡在图10的选项卡中,点击OUTPUT选项,在CREATEHEX前打勾,点确定,保存并编辑程序,然后生成“HEX”十六进制文件。会出现图11的对话框图11输出选项卡经过多次的调试,程序调试的最终正确结果如图12所示图12程序调试结果422软件程序设计的仿真在PROTEUSISIS74中双击AT89C51元件,在弹出如图13中的对话框图13AT89S52芯片编辑框在图13中的对话框中选择“PROGRAMFILE”项,寻找在KEIL中生成的“HEX”程序文件,在CLOCKFREQUENCY栏中设置系统工作频率为110592MHZ,点击“OK”,完成目标代码加载即相当于把软件下载到单片机中。点击PROTEUSISIS中的仿真运行按钮,进行软、硬件交互仿真验证。当需要调整单片机程序更改显示的内容时,只需在KEIL中再次生成“HEX”文件即可,而不用将“HEX”文件重新导入到PROTEUSISIS的单片机中去。423软硬件交互仿真结果在硬件电路的基础上,在PROTEUSISIS74中找出对应的元件,连接好电路,再把已编写好的程序加载到单片机中去,仿真结果如图14所示图14软硬件交互仿真图按设计要求,仿真能够实现由DS1302提供实时时钟数据,通过AT89S52单片机控制,液晶模块AMPIRE128X64动态显示“年”、“月”、“日”、“星期”、“时”、“分”、“秒”,以“2010年05月18日星期二08时08分08秒”开始显示,可以用键盘直接调整时间,当按下“年”、“月”、“日”、“星期”、“时”、“分”、“秒”中的任一个按键时,再按加或减键,都可以实现“年”、“月”、“日”、“星期”、“时”、“分”、“秒”的加或减,比如按下“年”这个键时,再按下加键,就可以年份增加,再按减,就可以实现年份的减少。实现电子日历的校验功能,设定电子时钟的当前显示时间和日期。达到了本设计的预期要求。结束语本设计对液晶的编程原理做了详细的剖析及单片机的编程控制原理介绍。PROTEUS与KEIL软件的完美结合,使本设计的设计和调试过程更加方便快捷,提高了设计一次成功率,节约了设计成本,缩小了设计周期。总结本文的研究工作,主要做了下面几点较突出的工作(1)通过查阅大量的相关资料,详细了解了LCD的发光原理和LCD显示屏的原理,了解了LCD的现状,清楚地了解了LCD显示屏与其它显示屏相比较有那些优点,明确了研究目标。(2)本文设计的LCD显示屏能够实现在目测条件下LCD显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。(3)文章给出了系统具体的软件设计方案,硬件结构电路图,软件流程图和具体C言程序设计与调试等方面。(4)在这次毕业设计的过程中学会了PROTEUSISIS的基本使用,感到PROTEUSISIS对电子类专业的同学来说是一门很有用的课程。(5)通过这次毕业设计,重新复习并进一步学习了MCS51;熟练掌握了WORD软件的使用。(6)存在缺陷设计方面经验严重不足,很多地方需要注意的问题没有意识去避免,比如没有考虑抗干扰的问题;设计最初没有充分考虑到程序初始化的各个方面等。主要训练软件的设计能力。训练正确地应用单片机编程,培养解决显示与控制等领域实际问题的能力;学生通过本课题,熟悉单片机应用系统开发研制的过程,软件设计的工作方法和程序的编写及调试,通过软件程序编写实现课题要求功能;对学生进行基本技能训练,例如编程、调试、绘图、仿真等,使学生理论联系实际,提高动手能力和分析问题,解决问题的能力。对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,在查找资料的过程中学到了许多东西。此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。参考文献1李朝青单片机原理及接口技术M北京航空航天大学2005102胡献满蒋伟文图解液晶显示屏维修技术图解液晶显示屏维修技术人民邮电出版社2010013AT89C51DATASHEEPPHILIPSSEMICONDUCTORS1999DEC4VIZIMULLER,PRFDESIGNGUIDESYSTEMS,CIRCUITS,ANDEQUATIONSARTECHHOUSE,BOSTON,MA,1995055戴佳戴卫恒刘博文51单片机C语言应用程序设计实例精讲电子工业出版社2002116陳志宗8051单芯片基础使用KEILVISION3汇编语言附光盘M东南大学出版社2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年证券分析师之发布证券研究报告业务题库及答案
- 2025年试验检测师题库及完整答案网校专用
- 医美咨询目标规划方案
- 南京楼道出新施工方案
- 2025年特种纤维项目立项申请报告模板
- 心理咨询室粉刷方案
- 配餐营销方案
- 手机店圣诞活动方案策划
- 健康咨询情绪管理方案范文
- 咨询服务的响应方案
- 2025年书记在公文抄袭问题专项整治工作会议上的讲话范文
- GB/T 17219-2025生活饮用水输配水设备、防护材料及水处理材料卫生安全评价
- 出差工作安全培训课件
- 占道施工安全培训内容课件
- 2025年少先队大队委笔试试卷及答案
- 证券业反洗钱培训课件
- GJB3165A-2020航空承力件用高温合金热轧和锻制棒材规范
- 2025年执业药师考试题库大全-附答案
- 退换货方案及措施
- 2025年食药监局考试题库
- 密室逃脱消防应急预案
评论
0/150
提交评论