




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北水利水电大学毕业设计目 录摘要IAbstractII第1章 绪论11.1 课题背景和意义11.2 课题的主要内容2第2章 系统总体方案设计32.1 单片机的选择32.2 显示模块的方案选择32.3 时钟芯片的选择方案32.4 键盘的选择42.5 最终方案的选择4第3章 万年历系统硬件设计63.1 电路设计框图63.2 各模块硬件电路设计63.2.1 晶振电路模块的设计63.2.2 复位电路模块的设计73.2.3 单片机的控制模块73.2.4 DS1302时钟电路113.2.5 LCD12864液晶显示电路133.2.6 键盘模块设计15第4章 万年历系统软件设计174.1 主程序模块174.2 LCD12864显示程序184.3 DS1302时钟程序194.4 农历转换程序204.5 星期自动刷新程序214.6 时间调整程序22第5章 系统调试245.1 硬件调试245.2 软件测试245.3 总体调试25结 论26参考文献27致 谢28附录1 设计任务书29附录2 开题报告31附录3 外文翻译36附录4 程序清单55基于单片机的万年历设计摘要电子万年历在日常生活中是一种应用非常广泛的计时工具,数字显示的日历时钟已经越来越受欢迎,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,液晶显示的日历时钟逐渐受到人们的喜欢。并且数字显示的日历钟显示清晰直观、走时准确、并且可以进行夜视。本文介绍了电子万年历在生活中的重要性,主要介绍了一种以STC90C51为控制核心的多功能电子万年历的设计。该电子万年历在硬件结构方面主要采用STC90C51单片机作为主控核心,由DS1302时钟芯片提供时钟、12864LCD点阵液晶显示屏显示,以及键盘扫描电路。在软件方面,主要包括日历程序、时间调整程序,显示程序,时间信息采集程序等。所有程序编写完成后,在Keil2软件中进行调试,确定没有问题后,下载到单片机中调试运行。结果表明,该万年历可以同时显示年、月、日、星期、时、分、秒等信息。此外,该电子万年历还具有时间校准等功能。论文最后还会附录本次设计中的一些相关资料,如设计任务书,开题报告,英文翻译,程序等。 本论文主要分析了液晶显示器LCD12864及时钟芯片DS1302的使用方法和注意事项,与单片机之间的硬件连接和通信,并给出了相应的解决方案。软件方面,使用单片机C语言编程,增加了程序的可读性和可移植性,方便程序的扩展和更改。主要包括:主程序,LCD的显示程序,DS1302的时间信息采集程序,另外,对日历算法也作了详细的阐述。关键词:单片机STC90C51;DS1302;LCD12864E-calendar design based on SCMAbstractElectronic calendar is a very wide range of day-to-day timing tool,The calendar clock of digital was getting more and more popular,Especially suitable for use in the family room, office, hall, meeting rooms, stations and squares,LCD display calendar clock is gradually being welcomed, And the calendar clock of digital showed that clear direct-viewing, is in luck accurately, can carry on the night vision。This article describes the importance of electronic calendar in the life,Mainly describes a STC90C51-control of core design of multifunctional electronic calendar。The electronic calendar mainly uses STC90C51 SCM as the core master in terms of hardware structure。Chip clock provided by the DS1302 clock, 12864lcd dot-matrix LCD display, As well as keyboard scan circuit. In terms of software, mainly includes the calendar program, the time adjustment procedure, the display procedure, the time information gathering procedure and so on. all programming is completed, Debug in the Keil2 software, When you determine that there is no problem, Downloaded to the MCU debugging and running, The results showed that the calendar can display year, month, day, week, hours, minutes, seconds and other information. In addition, the electronic calendar also has a calibration function. Finally, also Appendix some relevant information in the design, the design project description, opens the topic to report, English translation and so on.This paper mainly studies the LCD LCD12864 and clock chip DS1302, with the Communication and connection between the microcontroller and hardware. Software aspect ,Using single-chip c language programming , Increased the readability and probability of procedure, LCD display program , DS1302 time information acquisition program ,The software also has the detailed elaboration to the calendar algorithm.Key Words: SCMSTC90C51, DS1302, LCD1286473第1章 绪论1.1 课题背景和意义在人们繁忙的工作与生活中,时间与我们每一个人都有很密切的关系,每个人都会受到时间的影响。为了更好的利用我们自己的时间,我们必须要对时间有一个计量,因此我们设计了钟表。钟表的发展是非常迅速的,从最原始的机械式钟表,到现在普遍使用的数字式钟表,即使现在钟表各式各样,但是,它们的功能单一,也即是计时功能,只是工作上原理不同而已。在人们的使用过程中,逐渐发现了钟表的功能太过单一,不能在更大程度上的满足人们的需求。随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活当中。日历是人们的不可缺少的日常用品。但是,一般日历都为纸制用品,使用不方便,寿命不长。为此电子日历顺应时代的要求并得到迅速发展。随着微电子技术的快速发展,单片机在日常生活的个人领域得到了广泛的运用。单片机的结构上主要是把CPU、存储器、I/O接口电路等集成在一个超大规模芯片上,就其组成和功能而言,一个单片机芯片就是一台计算机。这些电路能在软件的控制下单独、准确、迅速、高效地完成程序设计者所事先规定的任务。在其基本结构上,逐渐衍生了能满足各种应用要求的兼容系统,它能很好的满足应用系统的嵌入、现场可靠地运行、面向测控对象和控制品质等方面的要求。因此,由单片机构成的系统是发展比较快、品种比较全、数量比较大、应用广泛的控制处理器。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测量和控制领域的应用中占有一部分的市场,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。MCS-51单片机是由美国Intel公司于1980年推出的产品。由于MCS-51单片机具有优异的性能和低廉的价格,使其在各方面都得到了广泛的应用。其他一些电子公司在基本结构的MCS-51单片机的基础上,开发出了功能更强的产品。本课题所设计的是一种采用智能电子控制和显示技术,结合了电子时钟和纸制的日历组成了多功能电子时钟,具有读取方便、显示直观、功能多样、成本低廉等诸多优点。它不仅能显示时间、星期、日期还可以显示农历、生肖等,具有很高的实用价值,给人们的生活带来的诸多方便。符合电子仪器仪表的发展趋势,具有广阔的市场前景。因此,研究带万年历的多功能电子时钟及扩大其应用,有着非常现实的意义。1.2 课题的主要内容目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一,不能满足人们日常生活需求。本文提出了一种基于STC90C51单片机的多功能电子万年历的硬件结构和软件的设计方案,本课题以STC90C51单片机为主控核心,与串行时钟日历芯片DS1302、按键、字符型液晶LCD12864显示等模块组成硬件系统。在硬件系统中设有独立按键和LCD显示器,能显示年、月、日、时、分、秒及星期等信息,并且根据使用者的需要可以随时对时间进行校准、设定时间等。综上所述,此万年历具有读取方便,显示直观,功能多样,电路简洁,成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。第2章 系统总体方案设计本设计提出了一种基于STC90C51单片机的万年历设计方案,本方案以STC90C51单片机作为主控核心,与时钟芯片DS1302、按键、LCD显示屏等模块组成硬件系统。在硬件系统中设有独立按键和LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、设定时间等. 软件部分是采用C语言编写的。C语言编写的程序结构清晰、条例明确并且便于修改。通过Keil2软件编译连接可以自动生成用于烧写于单片机的 HEX文件。使用C语言配合keil2软件可以使程序编写者省去很多麻烦,还使的程序更加的结构化,便于以后的修改。2.1 单片机的选择采用传统的STC90C51作为本设计的控制核心。该单片机算术运算功能强,软件编程灵活、自由度大,而且与MCS-51系列单片机完全兼容,具有可反复擦除的flash存储器,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域得到广泛的应用。2.2 显示模块的方案选择方案一:采用LED数码管动态扫描显示,对于数字显示合适并且占用的接口线较少,价格便宜,但是不能显示文字。所以,没有采用这一方案。方案二:采用字符液晶显示器,来实现显示功能,液晶显示具有功耗低、轻便且防震,不仅可以实现基本的显示信息,而且可以显示丰富的字符指示信息以及文字指示信息,信息量丰富并且直观、易懂。而且液晶显示具有功耗低,体积小,重量轻,寿命长,不产生电磁辐射等等优点。界面友好清晰,操作简便。目前市场上已经推出多种低电压(5V)供电液晶。在本次设计中,我选用了M12864-3,具有128*64点阵显示。2.3 时钟芯片的选择方案方案一:直接采用单片机定时计数器提供的秒信号,使用程序完成年、月、日、星期、时、分、秒计数任务。如果采用了此种方案,则会减少芯片的使用,节约成本,但是,实现的时间误差较大,软件编程比较复杂。所以,没有采用此方案。方案二:目前在市场上已经存在很多实时时钟芯片。如DS12887、DS1302、DS1307、PCF8563、X1227等等,芯片内都集成了时钟/日历功能,给时钟系统设计带来诸多方便。因此计时功能还是以选专用时钟芯片为宜,时钟模块由此实现,比较简单准确且方便。DS1302芯片是一种高性能的时钟芯片,可以自动对年月日、时分秒以及闰年补偿的年进行计数,而且精度高。所以,采用此方案。2.4 键盘的选择方案一:采用2*2矩阵式键盘,当按键较多时可以降低单片机的I/O接口数目。但是,系统的软件编程比较麻烦,容易干扰,所以没有采用。方案二:采用独立式按键电路,每个键单独占用一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。但是当按键较多时占用单片机的I/O数目较多。由于本设计所使用的按键不多(4个按键足以满足设计的要求)因此采用1*4键盘,采用独立式按键电路。2.5 最终方案的选择主控制器选择STC90c51单片机,时钟芯片选择为DS1302,显示屏选择为LCD M12864-3,按键部分为独立按键模块。电路图如下2.1。图2.1总体设计图第3章 万年历系统硬件设计3.1 电路设计框图按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、独立键盘模块、显示模块共4个模块组成。本系统采用STC90C51单片机为处理器对DS1302写入控制字并且读取相关时间信息,最后控制液晶屏LCD12864做出相应的显示。设计的电路硬件框图如图3.1所示。STC90C51主控模块LCD12864液晶显示模块键盘控制模块DS1302时钟模块图3.1 电路设计总体框图3.2 各模块硬件电路设计3.2.1 晶振电路模块的设计该单片机内部有一个振荡电路,但要产生单片机所需的时钟信号,必须外接其它元器件,在XTAL1、XTAL2引脚之间接一个石英晶体和两个瓷片电容,组成一个并联的谐振回路。晶振的频率一般在1MHz12MHz,电容的取值范围为20pF70pF。我们选用的晶振频率为12MHz,电容为22pF。晶振电路图如下3.2。图3.2 晶振电路图3.2.2 复位电路模块的设计复位时单片机的初始化操作,其目的在于设定一个程序运行的初始状态。并且在程序出错或当系统进入死循环时,也需要系统能进行复位操作,重新启动单片机的工作。当在复位引脚RST上加高电平并维持10ms以上,单片机就可以完成复位操作。电路的复位电路图如下图3.3。图3.3 复位电路图3.2.3 单片机的控制模块最小系统是该系统最核心的模块,采用本系统的处理器采用STC90C51单片机,复位电路采用上电复位电路,外接12MHz晶振。最小系统电路图如下图3.4。图3.4最小系统图STC90C51是台湾STC公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。STC90C51单片机共有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,1个全双工串行通信口,2个读写的接口线,片内时钟电路。STC89C51单片机的管脚说明如图3.5所示。图3.5 单片机的引脚图VCC:电源电压+5VGND:接地XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将会使单片机复位。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。如果EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过多特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。该位置后,只有一条MOVX和MOVC指令ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当STC90C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线服用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。P1口:P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash 编程和程序校验期间,P1接收高8位地址。P2口:P2口是一个内部带上拉电阻的8位双向I/O,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”时,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某引脚被外部信号拉低时,会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。Flash 编程和程序校验期间,P2亦接收低高位地址和其它控制信号。P3口:P3口是一组内部带上拉电阻的8位双向I/O,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表3.1所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。表3.1 P3口的第二功能图端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时/计时器0外部输入)P3.5T1(定时/计时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)SFR:SFR是具有特殊功能的所有寄存器的集合,共含有21个不同寄存器,它们的地址分配在80HFFH中。虽然如此,不是所有的单元都被特殊功能寄存器占用,没有被占用的单元,其内容是不确定的。如果对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些没有确定地址的单元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、控制寄存器。定时/计数器:STC90C51单片机内含有2个16位的定时器/计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数的功能,定时器中含有3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。中断系统:STC90C51单片机有5个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中CPU所执行的操作步骤如下:(a)完成当前指令的操作(b)将PC内容压入堆栈(c)保存当前的中断状态(d)阻止同级的中断请求(e)将中断程序入口地址送PC寄存器(f)执行中断服务程序(g)返回3.2.4 DS1302时钟电路DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒等进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。它为单片机提供时间信息的电路图如下3.6。图3.6 时钟电路图DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24小时或带AM/PM的12小时格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电磁备份;Vcc1在双电池系统中提供主电源。在这种运行方式中,Vcc1里连接到后备电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较大者供电。当Vcc2(Vcc1+0.2V)时,Vcc2给DS1302供电;当Vcc2Vcc1时,DS1302由Vcc1供电。DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的控制字的一些资料。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1则表示存取RAM中的数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如果为0,则表示将进行写操作;为1时表示进行读操作。控制字节总是从最低位开始输入或输出。为了提高对32个地址寻址能力(地址/命令位15=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中的地址31不能存储数据。在多字节方式下,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有的31字节,不管是否谢了全部31字节,所写的每一字节都将传送至RAM。DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字如下表3.2所示,其中奇数为读操作,偶数为写操作。表3.2 DS1302控制字时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。 AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5为第二个10小时位(2023h)。 DS1302的晶振选用32768Hz,电容一般值为6pF。因为振荡频率较低,也可以不接电容,对计时精度影响不大。3.2.5 LCD12864液晶显示电路由于本设计需要显示字符与汉字,所以我选用M12864-3汉字图形点阵液晶作为显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显着特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。其管脚图如下3.7。图3.7 LCD12864管脚图它的主要技术参数和显示特性:电源:VDD 3.3V+5V(内置升压电路,无需负压);显示内容:128列 64行显示颜色:蓝绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等逻辑工作电压(VDD):4.55.5V电源地(GND):0V工作温度(Ta):060(常温) / -2075(宽温)外形尺寸:937012.5mm 视域尺寸:7339mm,如下图3.8。图3.8 12864M3外形图12864液晶模块引脚说明如下表3.3。表3.3 液晶模块引脚说明管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)20KVSS背光源负端注释1:如果在实际应用中仅仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的该引脚和“GND”用焊锡短接。Psb接高电平时,为并口通讯模式。注释2:该模块内部接有上电复位电路,因此在不需要经常复位的设计中可将该端悬空。注释3:如果背光和模块共享一个电源,可以将模块上的相应脚用焊锡短接。3.2.6 键盘模块设计在单片机应用系统中,常用键盘作为输入设备,通过它将数据、内存地址、命令及指令等输入到系统中,来实现简单的人机通信。这种独立按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O线,I/O接口线浪费较大。故只在按键数量不多时采用这种按键电路。由此本设计中的键盘输入系统由P3.4-P3.7口和4个按钮开关组成,开关的另一端连接到地线上。当无键按下时P3.4-P3.7口输入为高电平,有键按下时P1口所对应I/O口会被拉低,P3.4-P3.7中有低电平输入。分别对应时间、日期调整,退出功能。具体的键盘输入电路如图3.9所示。图3.9 键盘模块图第4章 万年历系统软件设计本次设计的软件部分是采用C语言编写。C语言编写的程序结构清晰、条例明确。通过Keil2软件编译连接可以自动生成用于烧写于单片机的 HEX文件。而且通过编译可以自动分配数据区和程序区的地址。使用C语言配合keil2软件可以使程序编写者省去很多麻烦,还使的程序更加的结构化,便于以后的修改。但使用C语言编写的程序也存在一定的缺点,其生成的文件会很麻烦,文件会比用汇编语言编写的文件大。由于本次设计的规模并不大,其利大于弊。所以采用C语言编写而没有用汇编语言编写。本系统的软件设计主要可分为主程序模块、时钟信息采集程序、液晶显示程序、键盘调整程序四大模块。系统初始化部分主要是对系统的按键值、时钟芯片、液晶显示器进行设置,本系统的时间是通过时钟芯片DS1302来取得,并将数据送入51单片机,通过液晶显示器M128643来显示,时间、日期的修改通过按键来控制的。所以要对按键、时钟芯片、液晶显示器进行初始化。而其它模块的初始化在各模块函数中初始化。在系统初始化部分结束后进入主体循环部分。而主体循环部分又分为外循环部分和内循环部分。在外循环部分是对当时时间、日期设置,如果没有设置完成就一直处于外循环部分。当设置完成后进入主体循环部分,系统将一直处于主体循环中。在内循环中可实时的采集时间信息数据,并将日期转换成农历月、日和其对应的生肖年。下面对各部分模块作介绍。4.1 主程序模块主程序是整个软件设计的核心,关系到整个程序能否正常运行,以及控制操作的顺利完成。主要是通过调用其它函数来实现系统的主要功能,现在我把他们作以下介绍,其工作顺序一般如下:(1)系统启动后,进行系统的初始化。(2)然后DS1302开始振荡,单片机从DS1302中读出年、月、日、星期、时、分、秒。据此刷新农历时间和星期。(3)根据阳历算出阴历并且把时间信息送往LCD显示。主程序的程序流程图如下图4.1所示。图4.1 主程序流程图4.2 LCD12864显示程序该显示屏具有两种通信方式,即串口通信和并口通信。我们采用了并口通信方式。它可以显示4行,每行各8字。在附录中有详尽的程序代码,在这里我简单介绍该部分显示程序的初始化部分。现列其初始化流程图如下,如图4.2。图4.2初始化流程图4.3 DS1302时钟程序 DS1302的数据传送方式有两种,即单字节方式和多字节突发传送方式。我们选择的是单字节传送方式。这样做,比较准确、方便。单字节传送方式必须在RST=1期间先送命令,紧接着在发送一个字节的数据,每次仅需16个时钟。DS1302在接收到命令后,自动将数据写入指定的内部地址或从该地址读出数据。其详尽的程序代码,在附录中已经阐述。在这里我简单介绍该部分显示程序的初始化部分。现列其初始化流程图如下,如图4.3。图4.3 DS1302初始化流程图4.4 农历转换程序由阳历转换为农历是整个程序重要的一部分,其流程图如下图4.4所示:图4.4农历转换程序流程图4.5 星期自动刷新程序这部分的程序主要包括一些算法。其流程图如下图4.5所示:图4.5 星期自动刷新程序流程图4.6 时间调整程序由于在硬件电路方面上设计了时间调整按键,因此应有对应的时间调整程序。时间调整程序的流程图如图4.6所示。图4.6 时间调整程序流程图第5章 系统调试5.1 硬件调试电路图在Protel中画好之后,经过检查没有发现错误,于是开始焊接,完成了硬件组装。在调试硬件时遇到过很多的问题,但时只要细心、认真检查这些问题都是可以避免的,主要问题及解决方法现在列出如下:(1) 接通电源后LCD12864没有正确的显示。在不通电状态下用万用表检测电路是否有正常的电气连接,在检查回路时发现有的点之间看似连接,但由于虚焊导致其并无电气连接,只能对焊接的引脚在进行加工直到解决问题。(2) 电路工作一段时间之后有的芯片发热严重。经查发现原来是该芯片的一个管脚与电源脚短接,故而发热,由于发现及时,并未对该芯片造成损伤,断掉该线并再次连接可解决了该问题。5.2 软件测试 由于电子万年历涉及到多个子程序,多个芯片的编程。首先必须熟记各个可编程芯片的控制指令。其次,芯片很多都有时钟输入端,需要晶振提供时钟。只有在相应的触发沿到来时,才能对芯片的进行读写。电子万年历是多功能的、数字型的,可以看当前日期(阴、阳历),时间。电子万年历功能较多,所以对于它的程序也较为复杂,所以在编写程序和调试运行时出现了相对较多的问题。最后经过多次的子程序模块的修改,一步一步的测试,最终完成了软件的编写。在软件的编程调试过程中,主要遇到的问题如下:(1)写入程序后,LCD不显示字符。解决:首先检查LCD显示子程序,修改了一部分,但是还是不正确。最后,我把单片机接口直接与显示屏相连,问题就解决了。 (2)修改时间、日期时,农历的显示没有自动匹配。解决:把不相关的程序暂时删除,把农历的程序独立调试,发现在调用农历自动更新时,对十进制和压缩的BCD码处理不好,所以会造成显示异常。最后把相应的十进制做相应的修改,使得可以与十六进制对应,最后解决了这一问题。(3)星期自动刷新程序。在首次调试时,发现关于星期的显示不与实际相符,有时会出现一些乱码。经过检查,发现由阳历日期求星期的算法有问题,并且与LCD星期显示程序不匹配。稍作修改,显示就正常了。(4)时间不走并且显示不正确。LCD只显示初始化的字符,由此,有对DS1302的硬件连接部分以及供电源做进一步检查,但是没有发现错误,当我把用另外一个芯片DS1302连接时,LCD显示正常。最后解决了此问题。综上,在硬件调试的基础上,根据各部分的功能和特性,完成了软件的调试,整个设计基本上能够实现预定的功能。在软件调试过程中尤其注意了各函数之间的调用、返回,使设计的程序结构清晰、合理、易懂。5.3 总体调试把HEX文件下载到单片机中,打开电源开关,显示正常。调试结果如下图5.1所示图5.1 调试结果图调试按键部分能否正常调整时间。结果都能正常运行。至此,整个电路的设计就结束了。结 论在这次的基于单片机的电子万年历的设计中,我遇到了很多的困难,也学到了不少的知识。首先这对于我来说,是一个全新的东西,而且要学习的知识很多,比如说C51编程软件Keil2的使用,液晶屏知识,这些都是我在以往的课本中所没有学到的。最新接触到这个课题,就是感觉东西很多,觉得很迷茫,也很头大。不过,在通过牛老师细心的指导下和大量查阅资料后,我渐渐理解了课题的目的及意义,理清了思路,也慢慢的在实践中摸索着走起来。 首先,我先搜集到关于单片机、液晶屏和时钟芯片的资料,然后对这些资料整理、学习。起初,感觉难度比较大,但是随着学习的深入,我克服了不少困难。最后我对各个芯片的知识都非常熟悉,使用PROTEL设计了相应的电路图。在就是,软件编程方面,开始的时候,我对C语言编程只是了解一些,但是,在这次设计中,日历算法比较复杂,遇到了不少困难,我在网上查了不少关于算法转换的程序,开始的时候,感觉这些程序非常复杂,但是,在我先编写了星期的自动刷新程序后,就着重研究阳历转换为农历的程序,经过查参考书以及在网上查资料,才完成了这一部分程序的编写。最终在同学的帮助和指导下,我完成了对软件的设计。总之,在毕业设计完成过程中,使我对理论知识进行了重温和学习,让我知道如何有步骤及有计划的完成一项任务,不过在此其中也让我感觉到自己所学的知识是有限的、解决问题是不够完善的,希望自己以后做好每一件事。参考文献1黄菊生.单片机原理与接口技术M.北京:国防工业出版社,2007.9:12-200.2阎石.数字电子技术基础(第五版)M.北京:高等教育出版社,2006.5:260-344.3张国雄.测控电路M.北京:机械工业出版社,2008:1-110.4刘大茂.智能仪器与设计M. 北京:清华大学出版社,2005:20-210.5谭浩强.C程序设计M.第三版,北京:清华大学出版社,2005.7:1-180.6余家春Protel 99 SE电路设计实用教程M中国铁道出版社,2004:20-1207苏平.单片机的原理与接口技术M.北京:电子工业出版社,2006:1-113.8尹勇.单片机开发环境Vision2的开发指南M. 北京:北京航空航天大学出版社,2004:174-198.9张斌武.单片机系统Proteus设计与仿真M.北京:电子工业出版社,2005:53-88.10彭伟.单片机C语言程序设计实训100例M.北京:电子工业出版社,2009:1-240.11赵建领、薛园园.零基础学单片机C语言程序设计M.机械工业出版社,2012:1-300.12高明远.电子工艺实训与protel DXP应用M.人民出版社,2007:1-288. 13刘炎.通用串行总线 (USB)应用与接口设计M.电子技术应用,2002(12):28-33.14DS1302资料DB.海纳电子资讯网:15LCD12864资料DB. 海纳电子资讯网:致 谢本课题的研究和论文的完成是在导师牛金星老师的悉心指导和热心关怀下完成的。牛老师丰富的专业知识、兢兢业业的工作精神和开拓的思维方式使我受益匪浅,他严谨的治学精神和宽厚的长着风度为学生建立了一个宽松、富于创造性的学习和工作环境,对我以后的生活和学习将产生深远的影响。在此向牛老师表示崇高的敬意并致以衷心的感谢。感谢四年来教导我知识的申杰、运红丽、宋小娜、张涛、齐永奇、王欣欣等数位老师!感谢大学以来所有给过我教诲的老师们,是你们带领我发现了学习的乐趣和知识的奥妙。在此谨向老师们致以最诚挚的敬意!感谢测控专业这四年来所有给过我帮助的人,本设计能顺利完成与同学们的帮助是分不开的。在此谨向亲爱的同学们致以最真的祝福!最后,我要特别感谢我的家人,他们的支持和关心是我不断进步的力量源泉,使我有能力、有信心面对困难,迎接挑战。附录1 设计任务书一、毕业设计目的本设计的目的是培养学生综合运用单片机等所学课程知识的能力。了解系统的设计流程,培养分析和解决课题中关键技术的能力,以及了解电路板的制作和调试能力。可以对以前所学的知识进一步的深化掌握,为以后的工作或研究生课题的研究奠定理论和实践基础。二、主要内容1、万年历的硬件设计。2、电子万年历的软件设计。3、实物焊接及调试运行。三、重点研究问题1、单片机与外设的硬件连接和通信。2、日历转换的算法。四、主要技术指标或主要参数1、显示年月日时分秒及其星期信息。2、具有可调整日期和时间功能。3、与即时时间同步。五、基本要求1、在设计初期阶段进行认真调研。在调研和充分理解课题内容和要求的基础上,写出3000字左右的开题报告。要求查阅文献在15篇以上.2、在设计初期进行毕业实习,实习时间为2周左右。实习过程应听从指导教师的指挥,写出实习日记。实习结束后,对实习过程进行总结,提交实习报告。3、在设计过程中,能运用一门外语翻译与课题有关的外文资料。要求译文准确、通顺,字数在2000汉字以上。4、在毕业设计后期,提交毕业设计设计一本。要求内容完整,含中外文摘要,条理清楚,文字通顺,书写规范。要求中文摘要字数在500字左右,关键词35个,设计正文字数应在15000字以上。5、提交设计部分的硬件电路图和显示系统设计的软件源码,以及能够正常演示成果。六、其它(包括选题来源)1、所有学生应按设计进度完成相应的工作。2、选题来源为自选。3、设计过程中,态度不认真,平时纪律松弛,缺勤累计超过毕业设计时数三分之一者或在毕业设计过程中有作弊行为的,毕业设计成绩以不及格处理。附录2 开题报告华北水利水电大学本科生毕业设计开题报告学生姓名邵
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 富平县交通安全培训中心课件
- 承德石油考试题及答案
- 家长交通安全培训简报课件
- 2025年数学高考常识题库及答案
- 2025年高品质研磨碳酸钙浆料项目发展计划
- 2025年初一英语考试卷及答案
- 新能源汽车电池寿命延长与车身结构创新报告2025
- 2025年现场演艺市场复苏创新演出形式对演出团队建设研究报告
- 家庭安全消防培训课件
- 家庭安全培训pdf课件
- 2025年巴州库尔勒市社区工作者招聘笔试试卷
- DOE考试试题及答案
- 农村拆迁转让协议书
- 原发性醛固酮增多症诊断治疗的专家共识(2024版)解读课件
- 新商标法修订解读:知识产权课件-商标法更新
- 钢厂脱硫脱硝工艺流程图
- 2025年五四制部编版道德与法治五年级上册教学计划(含进度表)
- 酒店宾馆员工守则与行为规范
- 食品行业标准化管理体系
- 设备购入保密协议书范本
- 2025年度国家广播电视总局直属事业单位公开招聘310人笔试带答案
评论
0/150
提交评论