《基于单片机的数字时钟-毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字时钟-毕业论文.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录引言1第1章 时间计时原理31.1时钟计时的方案选择3 1.2时钟显示的方案选择4第2章 系统的硬件设计5 2.1 系统硬件的整体设计5 2.2 主控制模块的方案选择与设计52.2.1单片机STC89C52简介62.2.2主控制模块电路72.3时钟模块的方案选择与设计82.3.1 DS1302时钟芯片简介82.3.2时钟模块电路122.4按键电路的设计132.5显示模块的方案设计132.5.1 图形点阵液晶显示器12864简介132.5.2 显示模块电路16第3章 系统软件设计193.1 编程语言选择193.2系统主程序及流程图203.3 DS1302时钟芯片的读操作流程图203.4液晶模
2、块的写操作流程图213.5按键调整模块流程图22第4章 实验与调试244.1硬件测试244.2软件调试254.3实物调试26结 论28参考文献29致 谢30附录A:电路原理图31附录B:程序清单32附录C:外文翻译资料45外文翻译资料译文部分50引言1第1章 时间计时原理31.1时钟计时的方案选择3 1.2时钟显示的方案选择4第2章 系统的硬件设计5 2.1 系统硬件的整体设计5 2.2 主控制模块的方案选择与设计52.2.1单片机STC89C52简介62.2.2主控制模块电路72.3时钟模块的方案选择与设计82.3.1 DS1302时钟芯片简介82.3.2时钟模块电路122.4按键电路的设计
3、132.5显示模块的方案设计132.5.1 图形点阵液晶显示器12864简介132.5.2 显示模块电路16第3章 系统软件设计193.1 编程语言选择193.2系统主程序及流程图203.3 DS1302时钟芯片的读操作流程图203.4液晶模块的写操作流程图213.5按键调整模块流程图22第4章 实验与调试244.1硬件测试244.2软件调试254.3实物调试26结 论28参考文献29致 谢30附录A:电路原理图31附录B:程序清单32中国民航大学本科生毕业设计(论文)引言1课题的背景与意义近年来,随着电子产品的发展,随着社会竞争的激烈,人们对数字时钟的要求越来越高。时间对人们来说总是那么宝贵
4、,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。因此从人们的日常生活到工厂的自动控制,从民用时钟到科学发展所需的时钟,现代人对时间的精度和观察时间的方便有了越来越多的需求。人们要求随时随地都能快速准确的知道时间,并且要求时钟能够更直观、更可靠、价格更便宜。这种要求催生了新型时钟的产生。除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对时钟的又有了体积小、功耗低的要求。传统的机械表由于做工的高精细要求,造价的昂贵,材料的限制,时间指示精
5、度的限制,使用寿命方面,以及其它方面的限制,已不能满足人们的需求。另外,近些年随着科技的发展和社会的进步,人们对时钟的要求也越来越高,而使得新型电子钟表成了大势所趋。20世纪末,电子技术获得了飞速的发展,在其推动下微机开始向社会各个领域渗透同时大规模集成电路获得了高速发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。另
6、外单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。这正符合了现代时钟的设计要求。另一方面,电子技术的告诉发展,有力地推动了社会生产力的发展和社会信息化程度的提高,这些使时间显得更加宝贵,从时间就是生命,时间就是效率这些名言警句中就能看
7、出。数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。因此本论文所做的数字时钟采用了以单片机(STC89C51)为核心,
8、结合相关的外围元器件例如液晶显示、按键电路、复位电路、报警电路,再配以相应的软件,达到制作简易数字钟的目的,能实现实时时钟显示的功能,能进行年、月、日、时、分、秒和实时温度的显示,并且有远程通信功能。其硬件部分难点在于元器件的选择、布局及焊接。2课题任务与设计思路时间是两时刻之间的时刻间隔,是一种最基本的环境参数,人门的生活与时间息息相关,在工业生产过程中需要实时地观察时间,设定时间,因此研究时间的测量方法和设计测量装置具有重要的意义。鉴于时间使用的普遍性和重要性,本课题选用时间作为实时监测的参量。本课题设计单片机与时钟芯片相结合的电路,实现实时显示时间,并能够进行远程通信,实现数据与电脑的交
9、换。按照课题的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键扫描电路模块共4个模块组成。设计采STC89系列单片机,以汇编语言为程序设计的基础,设计出用液晶显示年、月、日、周、时、分、秒的时钟。31第1章 时间计时原理单片机的接口信号是数字信号。要想用单片机获取时间这类非电信号的信息,必须使用时间芯片,将时间信息转换为电流或电压输出。如果转换后的电流或电压输出是模拟信号,还必须进行A/D转换,以满足单片机接口的需要。如果是数字信号就可以直接送往单片机进行数据处理。1.1时钟计时的方案选择方案一:比较传统的基于单片机的时钟设计可以采用单片机内部的晶振来产生脉冲,然后通过单片机内部的计时
10、器经过分频产生秒脉冲,然后通过软件编程来实现时钟的显示,这种设计方案的优点是外围器件少,电路简单清晰,电路焊接容易,出问题的故障几率小。但是这种方案需由软件编程来实现秒脉冲的产生,编程相对来说比较复杂,而且也不利于排故。另外由单片机内部时钟产生的秒脉冲由于受到温漂的影响和程序执行时的延时的影响,而使的计时会产生不定的误差,即使设计时间误差补偿程序也很难实现提供准确时间的功能。另外,这种电路设计方案的另外一个设计要求就是晶振的选择要求晶振的振荡频率必须通过分频得到秒脉冲。这种设计还有一个非常大的缺点就是如果单片机断电,时间计时就停止,再次上电时又从初始设定重新计时,这样就需要在每次上电都调整时间
11、,比较麻烦。方案二:在传统的基于单片机的数字时钟设计的基础上经过一些改进,引入12887时间芯片,将电路的控制部分和计时部分分开,电路的控制部分为单片机,计时部分为12887时间芯片。12887芯片是独立计时,并且具有掉电保护功能,内部自带锂电池,能够在断电的情况下继续计时,主电路恢复供电之后能够不必调整时间,为时钟的日常操作省去了很大的麻烦,而且这种设计更节能,在需要观察时间的时候比如白天就可以给主电路通电。而在夜晚不需要观察时钟的时候就可以给主电路断电,这样可以节约大量能量。时间芯片12887采用了内部集成晶振的电路,并且具有内部温漂补偿电路设计。能够准确计时,提供精确的时间,这样就简化了
12、电路的器件选择,另外也使程序的设计更加简洁。在硬件设计方面,由于只增加了一个12887时间芯片,因此并不是特别复杂,而且这种独立计时的设计使得产品排故更加方便。比较上述两种方案可以看出,第二种方案计时更加准确而且电路硬件设计先对来说并不复杂,软件设计更加简洁,因此采用第二种方案。1.2时钟显示的方案选择方案一:时钟的显示可以用多位七段LED数码管显示,七段 LED数码管显示耗能多,而且显示位数有限,每增加一位都要在程序设计和硬件设计方面增加很多的工作量,不利于电路的扩展,而且无法显示年、月、日、星期这些汉字,使得显示不够直观,灵活。但是这种设计方案在显示位数比较少时性价比比较高,价格便宜,方案
13、二:采用点阵式数码管显示。点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,而在本课题设计中的显示数字较多字符较少,而且此种方案耗能多,不符合现代的节能理念,所以不用此种作为显示。方案三:采用LCD液晶显示器显示。而LCD液晶显示则耗能少,能够显示年、月、日、星期等汉字,在显示方面更加灵活,而且改变显示时只要改变软件设计就可以,不用改变硬件电路的设计,易于电路的功能扩展。电路的软件设计也很简单。另外,这种设计硬件更加简洁。采用LCD液晶显示方案的缺点是在显示位数比较少时,价格略显昂贵。比较上述两种方案可以看出方案二耗能少,显示灵活,易于电路扩展而且不管是软件设计还是硬件设计都比较
14、简单,因此采用第二种设计方案。综上所述,本设计采用独立计时,引入时钟日历芯片12887的设计方案,显示使用LCD液晶显示。第2章 系统的硬件设计根据实时时钟的功能要求,基于单片机的设计方案要运用集成时钟芯片,实现实时数据记录,实现数据与出现该数据的时间同时记录。实时时钟的要求:(1)基本要求a) 具有年、月、日、星期、时、分、秒等功能;b) 具备年、月、日、星期、时、分、秒校准功能;c) 具有远程通信功能(2)创新要求要求能够对时钟进行实时控制,并且可以通过远程电脑对时间进行读取、校正,对时间进行设置,实现远程操控。2.1 系统硬件的整体设计主控芯片使用51系列STC89C52单片机,时钟芯片
15、使用美国DALLAS公司推出的一种高性能、低功耗、带RAM和内置电池的实时时钟DS12887。采用DS12887作为主要计时芯片,可以做到计时准确。更重要的是,DS12887可以在外部电源断电的情况下继续计时,在没有外部供电的情况下,DS12887可以连续计时10年以上。系统由主控制器STC89C52、时钟芯片DS1302、LCD液晶显示电路、键扫描电路和通信系统模块电路组成。系统硬件设计框图如图2-1所示。图2-1 系统硬件设计框图2.2 主控制模块的方案选择与设计系统的设计可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也
16、主要依赖数字电路的各功能模块的组合来实现4。若用单片机来设计完成,由于其功能的实现主要通过软件编程来实现的,那么就降低了硬件电路的复杂性,所以在该设计中采用单片机作为主控模块。另外这个课题设计的软件程序比较简单,不需要很强大的单片机,只要用简单的单片机就可以满足要求,因此我选用了性价比比较高的低端STC89C52单片机。2.2.1单片机STC89C52简介STC89C52 是低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes 的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准 MCS-51 指令
17、系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和 Flash 存储单元,功能强大 STC89C52 单片机适合于许多较为复杂控制应用场合。STC89C52单片机为40引脚双列直插芯片,有四个I/O口P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。STC89C52 PDIP管脚封装,如图2-2所示。图2-2 STC89C52 PDIP管脚封装STC89c52包含以下部分,其结构图如图2-3所示(1)一个8位微处理器CPU(2)片内数据存储器RAM和特殊功能寄存器SFR(3)片内程序存储器ROM(4)两个定时/计数器T0、T1,可用作定时器,也可用以对外部脉冲进行计
18、数(5)四个8位可编程的并行I/O端口,每个端口既可作输入,也可作输出(6)一个串行端口,用于数据的串行通信(7)中断控制系统(8)内部时钟电路图2-3 STC89c52内部结构图功能特性概述:STC89C52 提供以下标准功能:8k字节 Flash 闪速存储器,256字节内部 RAM,32 个 I/O 口线,3 个 16 位定时/计数器,一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,STC89C52 可降至 0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式
19、保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2.2.2主控制模块电路单片机STC89C52的P0口作为输入口。P0与DS12887的AD相连,进行时间数据的采集;P3.7(RD)与DS12887的17脚DS相连,P3.3与DS12887的19脚IRQ相连,P2.7与DS12887的13脚CS相连;30脚ALE与DS12887的14脚AS相连。单片机的第18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,XTAL2接外部晶振和微调电容的另一端。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和
20、温度的稳定性。因此,此系统电路的晶体振荡器的值为11.0592MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。第9引脚为复位输入端,接上电容,电阻后构成上电复位电路。20引脚为接地端,40引脚为电源端。/EA端(31引脚)接+5V电压。由此就构成了单片机主控模块的最小系统,如图2-4所示。图2-4 主控电路及其最小系统电路图2.3时钟模块的方案选择与设计方案一:美国Dallas公司生产的串行时钟DS1302芯片是一种高性能的时钟芯片,可自动地对秒、分、时、日、周、月、年进行计数,而且工作电压2.5V5.5V范围内,2.5V时耗电小于300nA,可方便地与单片机接口,从而解决并行实时芯片使
21、得电路结构复杂的问题,但是DS1302时钟芯片没有内置电池,在电路掉电的情况下不能继续计时,在电路恢复供电之后需要校正时间比较麻烦。方案二:美国Dallas公司生产的串行时钟DS12887芯片也是一种高性能的时钟芯片,可自动地对秒、分、时、日、周、月、年进行计数,可以方便地与单片机接口,从而解决并行实时芯片使得电路结构复杂的问题,而且DS12887时钟芯片没有内置电池,在电路掉电的情况下能继续计时,在电路恢复供电之后不需要校正时间因此选用DS12887芯片。2.3.1 DS12887时钟芯片简介DS12887是美国DALLAS公司生产的时钟日历芯片,具有24个引脚。DS12887和MC1468
22、18B及DS1287管脚兼容。内部自带锂电池,在没有外部电源的情况下可工作十年。它有内部集成晶振。可计算到2100年前的时、分、秒、星期、日、月、年七种日历信息,并带闰年补偿。用2进制或BCD码代表日历或闹钟信息。可选用夏令时模式。可以选用MOTOROLA和INTEL两种总线模式。它采用数据地址总线复用模式。内键128字节RAM,这128字节RAM中前14字节是时钟控制寄存器。其余为通用RAM。它可以输出可编程方波。它可以产生3种可编程中断;一,时间中断,可产生每秒一次直到每天一次中断;二,周期性中断,可产生122ms到500ms周期性中断;三,时间更新结束中断。DS12887有24个引脚,其
23、引脚如图2-5所示。图2-5DS12887引脚图MOT是总线类型选择管脚,当此脚接在VCC上时选择MOTOROLA总线方式,如果此脚接在电源地上或者不接时选择的是INTEL总线模式。AD0-AD7是数据复用总线。GND是电源地。CS是片选信号。AS是ALE信号管教。R/W在INTEL总线模式下是WR。DS在INTEL总线模式下是RD,当它有效时表示DS12887正在往总线输出数据。RD信号在贮存器芯片上被称为OE信号线。RESET是复位信号,复位信号对日历、时间、RAM无效,系统上电时,复位信号要保持200ms以上DS12887芯片才能正常工作。当复位引脚电平为低并且VCC高于4.5V时,以下
24、情况发生。周期中断允许位清零,闹钟中断允许位清零,更新完成中断标志位清零,中断请求状态标志位清零,周期中断标志位清零,DS12887不可以操作,闹钟中断标志位清零,IRQ呈高阻状态,方波输出允许位清零,更新完成中断允许位清零。IRQ是中断请求输出,当中断状态位和中断允许位有效时,IRQ保持低电平。复位和读C寄存器都可以清除中断信号。没有中断时IRQ保持高阻状态,其它中断源还可以接到中断上。另外由于IRQ是漏极输出,因此需要外接上拉电阻。SQW是方波输出引脚,当电源电压低于4.25V时此脚没有作用。VCC是电源引脚。NC是空引脚。DS12887内部结构框图如图2-6所示。DS12887由晶振,周
25、期中断/方波选择器,方波输出,寄存器ABCD,时钟/日历/闹钟RAM,114字节通用RAM,BCD/二进制数码累加器,时钟/日历更新,总线选择,电源开关和写保护这些部分组成。当VCC高于4.25V 200ms之后,芯片可以被外部程序操作。当VCC低于4.25V时,芯片处于写保护状态,所有的输入均无效,同时所有输出呈高阻状态,当VCC低于3V时,DS12887自动将供电方式改为由内部电池供电。图2-6 DS12887内部结构框图DS12887地址分布框图如图2-7所示。所以地址包括114字节通用RAM,10字节用于记录时间,日历,闹钟信息的RAM和4字节的控制、状态RAM.所有的字节都可以在除以
26、下的情况下直接读写。1,寄存器C、D为只读,寄存器A的第七位为只读,秒字节的高位为只读。时间,日历,闹钟的信息所在的寄存器的详细分布图如表2-1所示图2-7 DS12887地址分布图表2-1,时间,日历,闹钟寄存器地址分布表控制、状态寄存器及其功能描述:寄存器 AUIP:更新进行标志。DV2- DV0:为 010 时晶振工作,其他组合停止。RS3- RS0:频率选择。寄存器BSET:为 1 时禁止更新。为 0 时正常。PIE:为 1 时周期中断允许。AIE:为 1 时警报中断允许。UIE:为 1 时更新结束中断允许。SQWE:为 1 时方波输出允许。DM:为 0 时时间为 BCD 码,为 1
27、时为二进制。24/12:为 1 时是 24 小时进制。为 0 时是 12 小时进制。DSE:置 0。寄存器CIRQF:中断申请标志。PF:周期中断标志。AF:警报中断标志。UF:更新结束中断标志。寄存器DVRT:为 0 时表示内部锂电池耗尽。2.3.2时钟模块电路时钟模块DS12887的AD口与单片机的P0口相连,进行时间、日历数据输出。其它各功能端口的连接在主控电路中已有描述,不在赘述。另外DS12887的12脚与电源地相连,24脚与电源相连。总线选择端口MOT端与电源地相连。电路图如图2-8所示。图2-8 时钟模块电路2.4按键电路的设计根据设计要求,系统的按键电路用4个按键和一个拨码开关
28、就可以进行对时间的调整,按键就采用最简单的点动式按钮,由单片机的I/O进行扫描,来实现扫描按键功能。其中,时间调整按钮与单片机STC89C52的P3.5相连,其功能是当按下此键时,开始调整年、月、日、星期、时、分、秒,没按一次就改变一个相应的要改变的位;闹钟调整按钮与单片机STC89C52的P3.4相连,其功能是当按下此键时开始进行闹钟调整,并且每按一次就改变一次要调整的位;加法按钮与单片机STC89C52的P2.5连,其功能是每按一次此键就将相应的要改变的位的数值加一;减法按钮与单片机STC89C52的P2.6连,其功能是每按下一次此键就将要改变的位的数值减一;近远程选择按钮与STC89C5
29、2的P2.4相连。电路图如图2-9所示。图2-9 按键电路2.5显示模块的方案设计此设计方案采用了LCD液晶显示,由于此设计不需要显示太多内容,因此选用了12232F图形点阵液晶显示器。2.5.1 图形点阵液晶显示器12864简介点阵LCD的显示原理:在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使
30、用,即英文的内码15。那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状。12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及12864全点阵液晶显示器组成。可完成图形显示,也可以显示84个(1616点阵)汉字。12864LCD的引脚说明如表2-2所示。表2-2 液晶模块12864的管脚说明管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/LD/I=“H”,表示DB7
31、DB0为显示数据D/I=“L”,表示DB7DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/LR/W=“L”,E信号下降沿锁存DB7DB0R/W=“H”,E=“H”DDRAM数据读到DB7DB07DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18VOUT-10VLCD驱
32、动负电压19LED+-LED背光板电源20LED-LED背光板电源液晶显示模块的特殊寄存器说明:在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下:1. 指令寄存器(IR)IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。2数据寄存器(DR)DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。3忙标志:BFBF标志提供内部工作情况。BF=1表
33、示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。4显示控制触发器DFF此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DDF的状态是指令DISPLAY ON/OFF和RST信号控制的。5XY地址计数器XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的
34、页指针,Y地址计数器为DDRAM的Y地址指针。X地址计数器是没有记数功能的,只能用指令设置。Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。6显示数据RAM(DDRAM)DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。7Z地址计数器Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的
35、起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。8. 字符显示FYD12864-0402B每屏可显示4行8列共32个1616点阵的汉字,每个显示RAM可显示1个中文字符或2个168点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。FYD12864-0402B内部提供1282字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(
36、自定义字形)的内容。三种不同字符/字型的选择编码范围为:00000006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H7FH显示半宽ASCII码字符,A1A0HF7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如表2-3所示。表2-3 字符显示RAM在液晶模块中的地址表80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9BH9CH
37、9DH9EH9FH2.5.2 显示模块电路显示模块电路如图2-10所示,液晶模块的1管脚接电源地,15管脚用于接电源地,19管脚用于接电源地。2管脚接电源给液晶显示器供电,3管脚接电源用于提供液晶显示器显示驱动电压,17管脚接电源,20管脚接电源用与提供背景光。4管脚接单片机的P1.3用于接收数据或者指令,5管脚接单片机的P1.4选择数据被读写到什么位置,6管脚接单片机的P1.5用于提供锁存信号。图2-10 显示模块2.6 通信模块电路方案选择设计 通信模块电路方案选择:RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布,RS-232196
38、2年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间兼容。但是RS-232通信有距离短、速率低的缺点。RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器驱动能力和冲突保护特性,扩展了总线共模范围,其最大传输距离约为1219米,最大传输速率为10Mb/s。基于现代通信的远距离要求,因此本设计采用RS-485通信方案。2.6.1 RS485通信简介RS-485采用平衡传输方式、需要在传输线上接终接电阻。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS
39、-485 串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。 RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485 可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。RS-485是-7V至+12V之间,其最大传输距离约为1219米,最大传输速率为10Mbps。平衡双绞线的长度与传输速率成反比,在100Kbps速率以下,才可能使用规定最长的电缆长度
40、。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mbps。2.6.2 通信电路设计通信模块电路采用RS-485通信,485芯片的1脚接单片机的10脚,485芯片的4脚接单片机的11脚,这样就可以配合软件实现远程通信功能。电路图如图2-11所示图2-11 通信电路第3章 系统软件设计软件是系统的主要组成部分,也是整个调试的重点和难点工作。本设计采用了汇编语言,因为汇编语言更接近机器语言,可以直接存取寄存器和I/O,编写的代码可以非常精确的被执行,可以编写出比一般编译系统高效的代码,可以作为不同语言或不同标准的接口。因此,依据课题设计的要求,采用汇编语言进行软件编程
41、,用模块化程序设计思想,将软件划分成若干模块单元;包括:DS12887时钟显示模块、延时等模块,键盘扫描子程序,按键处理子程序模块,通信中断子程序,3.1 编程语言选择汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操
42、作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快16。汇编语言程序归纳起来大概有以下几个主要特性。1、与机器相关性2、执行的高效率3、编写程序的复杂性4、调试的复杂性下面简单列举几个领域以示说明,但不能把它们绝对化: 1、 适用的领域 要求执行效率高、反应快的领域,如:操作系统内核,工业控制,实时系统等; 系统性能的瓶颈,或频繁被使用子程序或程序段; 与硬件资源密切相关的软件开发,如:设备驱动程序等; 受存储容量限制的应用领域,如:家用电器的计算机控制功能等; 没有适当的高级语言开发环境。 2、不宜使用的领域 大型软件的整体开发; 没有特殊要求的一般应
43、用系统的开发等。综上所说,汇编语言的特点明显,其诱人的优点直接导致其严重的缺点,其“与机器相关”和“执行的高效率”导致其可移植性差和调试难。所以,我们在选用汇编语言时要根据实际的应用环境,尽可能避免其缺点对整个应用系统的影响。3.2系统主程序及流程图主程序的主要功能是显示日期时间信息。在主程序中,系统上电自动复位以后首先进行系统的液晶显示、时钟芯片DS12887初始化,然后读写日期、时间等信息,待数据读写结束后显示时钟。主程序流程如图3-1所示。图3-1 主程序流程图主程序说明,当主程序运行时,先将液晶显示器清屏,然后将单片机和时钟日历芯片DS12887初始化,即将时钟的初始时间设定为2005
44、年月日3.3 DS12887时钟芯片的读操作流程图首先对时钟芯片DS12887初始化,经过对状态寄存器判断之后,对DS12887进行读操作,读操作时利用时钟日历地址相邻的特点,直接使地址增加,随后判断数据是否读完了。若读完了,则返回主程序;若没有读完,则继续增加地址,直到读数据完成为止。如图3-2所示。图3-2 DS12887时钟芯片的读操作流程图3.4液晶模块的写操作流程图本设计用的液晶模块是12864液晶模块,这个模块可以进行串口通信也可以进行并口通信,由于单片机口线限制,在这里采用了串口设计思路。本设计采用了分屏显示的原理,在时间显示时显示屏一,在时间调整时显示屏二,其流程图分别如图3-
45、3、3-4所示。图3-3 时间显示,屏一显示流程图在屏一显示流程图中,显示设置液晶显示设置为全屏显示,显示界面没有光标显示,年月日的显示从第二行第一个字符开始,时分秒的显示从第三行第一个字符开始。图3-4 时间调整显示,屏二显示流程图在显示屏二时应先判断是否有调整时间的请求,如果有时间调整的要求即有按键按下则显示此屏,显示此屏时先进行显示设置,因为要调整时间因此要用光标表示出要调整的位,因此显示设置中要调整出光标,调整时间时先调出当前时间,从当前时间开始调整,然后判断按键,根据按键来调整时间,调整完成之后再返回时间显示即显示屏一。3.5按键调整模块流程图按键调整程序模块是用来调整时间的,当P3
46、.4按键按下时进入时间调整界面,再按P3.4就会依次改变要调整的参量,依次调整的参量为年、月、日、时、分、秒。当选择好了要调整的位后再按P3.5就会实现相应位的加一操作,按P2.6就会实现相应位的减一操作。当调整完毕之后,再按P3.4键就会返回时间显示界面,从刚才调整好的时间开始显示、计时。其流程图如图3-5所示图3-5 按键调整模块流程图3.6通信模块流程图通信模块的协议包括两部分,一部分是主机程序,一部分是从机程序。这个子程序模块的作用是通过电脑来读写、调整单片机控制电路的时间。主机程序是在电脑上运行,从远程控制时钟,可以对时钟的当前时间进行读写、调整操作。从机程序则是在单片机上运行,利用中断接收来自电脑的操作指令,并且将时间传送给电脑。其流程图分别如图3-6,3-7所示。图3-5 主机端通信子程序流程图 图3-6 从机端通信子程序流程图第4章 实验与调试验证理论的最好的方法是实践,因此本设计通过实验,用实物的调试来验证之上设计的可行性。虽然现在很多设计采用仿真来模拟结果,但是放着和实际还是有一定差距的,而且有些实际问题是仿真所不能显示的,为了更好的验证本设计方案,因此本设计采用实物来验证。4.1硬件测试本设计的硬件验证电路完