1、综合实践(能力训练)设计题目单片机的电子万年历设计所属教研室电气教研室专业班级秋电气自动化班学生姓名指导教师年月日毕业综合实践(能力训练)任务书1毕业综合实践(能力训练)题目单片机的电子万年历的设计2毕业综合实践(能力训练)题目来源虚拟()顶岗实习()3毕业综合实践(能力训练)课题任务的内容和要求(技术要求、工作要求等)1、收集资料,单片机的基础知识和工作原理2、要求完成软件显示时间;3、设计原理图及PCB图,完成硬件电路的设计4、编写程序,完成软件调试5、用PROTUES软件进行电路仿真4成绩评定标准(指导教师30,评审小组30,答辩委员会40)毕业综合实践(能力训练)任务书5本毕业综合实践
2、(能力训练)课题工作进度计划起迄日期工作内容完成情况9月1日9月11日学习毕业论文工作规定及工作细则,明确具体相关要求9月11日9月13日查文献资料、确定所用的元器件、确定整体实现方案9月13日10月1日设计硬件电路图,用PROTEL软件画出硬件原理图和PCB图10月1号日10月21日编写程序及仿真调试10月28日提交论文初稿教研室审查意见主任年月日院系意见领导年月日沈阳职业技术学院软件学院摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字
3、显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序
4、部分的编写。关键词电子万年历;DS1302;单片机沈阳职业技术学院软件学院1绪论111电子万年历的应用及发展112单片机的原理22应用软件介绍321仿真软件介绍322PROTEUS和KEILC51联合与应用3221KEILC51与PROTEUS离线联合使用3222KEILC51与PROTEUS70在线联合仿真调试33主要硬件介绍431单片机芯片的介绍432DS1302芯片的介绍533LCD液晶显示屏的介绍9331LCD液晶显示屏概述9332基本特性9333模块接口说明10334指令说明124系统构成1441AT89C51的电子万年历系统构成145仿真与编程1451PROTEUS仿真设计过程14
5、52KEILC51编写程序1653仿真分析及结论18设计总结19参考文献20沈阳职业技术学院软件学院11绪论11电子万年历的应用及发展在当代繁忙的工作与生活中,时间与我们每个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能计时功能,只是工作原理不同而已。万年历是采用数字电路实现对时、分、秒的数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路
6、的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。电子万年历采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒等信息,还具有时间校准功能。综上所述,万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。国内外
7、电子万年历的设计已经比较成熟了,它可以采用很多种设计方案,每种方案各有自己的优缺点。国内外电子万年历的设计主要有以下几种设计方案。第一种设计方案是采用可编程逻辑器件设计。这种方案采用PLD器件,设计起来结构清晰,各个模块从硬件上设计起来相对简单,控制与显示模块间的连接也比较方便,但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也会相对多些,从成本上来讲,用可编程逻辑器件来设计并没什么优势可言。第二种设计方案是采用ARM来设计。ARM微处理器的功能特别强大,与MC51单片机相比,它更适合做中高端数字系统的微处理器。它体积小、低功耗、低成本、高性能,但是这要求设计者有较高
8、的设计水平,设计起来有点难度,特别是对于我们这种对嵌入式系统不太熟悉的。第三种设计方案是采用51系列单片机来设计,我也是基于51系列单片机来设计电子万年历的。51系列单片机是基础入门的一类单片机,也是应用最广泛的单片机之一,虽然它的运行速度较慢,功耗较大,不过由于51系列单片机比较易学,所以开发者比较容易入门,在本次设计中采用的是AT89S52单片机,它具有在线编程,低功耗,能在超低压工作的特点,完全符合电子万年历的设计要求,所以采沈阳职业技术学院软件学院2用基于AT89S52来设计电子万年历。虽然近些年我国也开始重视对电子万年历的开发与设计,让更多的电子时钟能够走进人民生活,更多人能够应用到
9、功能强大,精度高的电子时钟,但是仍然存在很多问题。中国电子万年历产业发展出现的问题中,许多情况不容乐观,如产业结构不合理、产业集中于劳动力密集型产品;技术密集型产品明显落后于发达工业国家;生产要素决定性作用正在削弱;产业能源消耗大、产出率低、环境污染严重、对自然资源破坏力大;企业总体规模偏小、技术创新能力薄弱、管理水平落后等。不过由于电子万年历具有诸多优点,它的市场前景很广泛。12单片机的原理单片机到底是什么呢就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很
10、多,不过价钱也是低的,一般不超过10元即可用它来做一些控制电器一类不是很复杂的工作足矣了。排烟罩VCD等等的家电里面都可以看到它的身影它主要是作为控制部分的核心部件。单片机是靠程序工作的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性由于单
11、片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言近几年,C语言也开始广泛被应用,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢很多高级的语言已经达到了可视化编程的水平为什么不用呢原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC也是承受不了的。
12、目前最常用的单片机为MCS51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其内核兼容MCS51单片机。沈阳职业技术学院软件学院32应用软件介绍21仿真软件介绍PROTEU是由英国LABCENTERELECTRONICS公司开发的EDA工具软件,自1989年出现至今已有近二十年的历史,在全球广泛使用。该软件集成了高级原理布图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完全的电子设计系统。它是一种混合电路的仿真工具,能对模拟电路、数字电路、单片机及其外围电路进行动态仿真。PROTEUS软件主要
13、由两个模块组成ARES和ISIS。前者主要用于PCB自动或人工布线;后者主要绘制电路原理图,并可进行相应的仿真。作为一款EDA仿真软件,PROTEUS有着丰富的元件库。LABCENTER公司与相关的第三方软件公司共同开发了8000多个模拟和数字电路中常用的SPICE模型以及各种动态元件(基本元件如电阻、电容、各种二极管、三极管、MOS管、555定时器等;74系列TTL元件和4000系列CMOS元件;存储芯片包括各种常用的ROM、RAM、EEPROM;还有常见I2C器件等)。此外该软件还支持微处理器的仿真(支持许多通用的微控制器,如PIC系列、AVR系列、8051系列等;同时它还支持ARM、PL
14、D及各种外围芯片的仿真),并能与常用的编译器,如KEIL、IAR、PROTON等进行协同调试。整个过程与真实的硬件调试极其相似,在动态外设支持下的实时输入和输出为实验者提供了一个最接近现实的调试环境。22PROTEUS和KEILC51联合与应用PROTEUS和KEILC51整合构建单片机实验仿真环境PROTEUS和KEIL构建单片机实验仿真环境时,常用的方法有如下两种221KEILC51与PROTEUS离线联合使用通过KEILC51编辑、修改、编译源程序并生成HEX等单片机能识别的文件;运行PROTEUS,将HEX文件与原理图中的单片机(MCU)进行绑定即可。222KEILC51与PROTEU
15、S70在线联合仿真调试在计算机(PC)上安装好TCP/IP协议;下载并安装软件PROTEUSVSMAGDIDRIVER(即VDMAGDIEXE),完成后KEIL文件夹下的TOOLSINI文件中的C51字段的最后两行增加了TDRV2BINVDM51DLL(用于两个软件的联接)和BOOK1HLPVDMAGDIHLP(帮助文档);进入KEILC51的开发环境建立一个工程文件,在选中“TARGET”的情况下选择PROJECTOPTIONSFORTARGET;在“DEBUG”选项卡中选择左边的“USE”,在下拉框中选“PROTEUSVSM沈阳职业技术学院软件学院4SIMULATOR”,再点击“SETTI
16、NG”设置通信接口,在HOST后面添上“127001”、端口号PORT为8000,如果不是同一台电脑,在这里添上另一台电脑的IP地址(另一台电脑安装PROTEUS);打开PROTEUSISIS,在菜单栏中选择“DEBUGUSEREMOTEDEBUGMONITOR”,选中该项。注意一定要把KEIL的工程和PROTEUS的文件放到同一个目录下(这里所说的KEIL的工程是指工程目录,即PROTEUS的工程文件要和KEIL的工程文件夹放在同一层目录下)。3主要硬件介绍31单片机芯片的介绍AT89C51是一种带4K字节FLASH存储器(FPEROMFLASHPROGRAMMABLEANDERASABLE
17、READONLYMEMORY)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示。沈阳职业技术学院软件学院532DS1302芯片的介绍DS1302是美国
18、DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2555V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。沈阳职业技术学
19、院软件学院6图1DS1302的外部引脚分配图2DS1302的内部结构各引脚的功能为VCC1主电源;VCC2备份电源。当VCC2VCC102V时,由VCC2向DS1302供电,当VCC2低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作忙标志BFBF标志提供内部工作情况BF1表示模块在进行内部操作,此时模块不接受外部指令和数据BF0时,模块为准备状态,随时可接受外部指令和数据利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制
20、。DFF1为开显示(DISPLAYON,DDRAM的内容就显示在屏幕上,DFF0为关显示(DISPLAYOFF。DFF的状态是指令DISPLAYON/OFF和RST信号控制的。显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型168、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGR
21、AM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0F7FFH)。沈阳职业技术学院软件学院12字型产生RAMCGRAM字型产生RAM提供图象定义造字功能,可以提供四组1616点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址
22、计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。334指令说明模块控制芯片提供两套控制命令,基本指令和扩充指令如下指令表1(RE0基本指令)指令指令码功能RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满“20H“,并且设定DDRAM的地址计数器AC到“00H“地址归位000000001X设定DDRAM的地址计数器AC到“00H“,并且将游标移到开头原点位置这个指令不改变DDRAM的内容显示状态开/关00
23、00001DCBD1整体显示ONC1游标ONB1游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位这个指令不改变DDRAM的内容功能设定00001DLXREXXDL0/14/8位数据RE1扩充指令操作RE0基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM地址设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM地址(显示位址)第一行80H87H第二行90H97H沈阳职业技术学院软件学院13读取忙标
24、志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志BF可以确认内部动作是否完成,同时可以读出地址计数器AC的值写数据到RAM10数据将数据D7D0写入到内部的RAMDDRAM/CGRAM/IRAM/GRAM读出RAM的值11数据从内部RAM读取数据D7D0DDRAM/CGRAM/IRAM/GRAM指令表2(RE1扩充指令)指令指令码功能RSR/WD7D6D5D4D3D2D1D0待命模式0000000001进入待命模式,执行其他指令都棵终止待命模式卷动地址开关开启000000001SRSR1允许输入垂直卷动地址SR0允许输入IRAM和CGRAM地址反白选择00000001R1R
25、0选择2行中的任一行作反白显示,并可决定反白与否。初始值R1R000,第一次设定为反白显示,再次设定变回正常睡眠模式0000001SLXXSL0进入睡眠模式SL1脱离睡眠模式扩充功能设定00001CLXREG0CL0/14/8位数据RE1扩充指令操作RE0基本指令操作G1/0绘图开关设定绘图RAM地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0设定绘图RAM先设定垂直列地址AC6AC5AC0再设定水平行地址AC3AC2AC1AC0将以上16位地址连续写入即可备注当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受
26、新的指令如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。沈阳职业技术学院软件学院144系统构成41AT89C51的电子万年历系统构成基于AT89C51的电子万年历系统构成采用单片机设计应用系统时,应考虑到在满足设计要求的情况下,硬件电路尽可能精简,最大限度地用程序设计完成系统的各项功能。这样做的目的有二一是节省硬件成本;二是缩短设计周期,便于系统今后的维护与升级。鉴于此,该电子万年历主要采用单片机AT89C51、实时时钟芯片DS1302及LCD液晶显示屏设计实现,系统原理组成如图一所示。其功能说明如下图一基于单片机AT
27、89C51的电子万年历系统框图DS1302为系统提供精准的秒、分、时、日、月、年等实时时间信息,星期则由编程计算得到;设置了3个按键,功能分别为状态调整(确认)、加一、减一。调整键可对万年历时间设置进行移位和确认,加一键是对相应调整位进行加一操作(每按键一次加一),减一键则是对调整位进行减一操作(每按键一次减一);存储器主要是对LCD点阵字库等数据进行存储;显示采用LCD点阵(12864)显示屏。5仿真与编程51PROTEUS仿真设计过程用PROTEUSISIS绘制电子万年历系统的电路原理图(如图二所示)沈阳职业技术学院软件学院15图二PROTEUSISIS绘制的电子万年历的电路原理图沈阳职业
28、技术学院软件学院1652KEILC51编写程序用KEILC51编写程序(程序图,如图三),编译无误后生成HEX文件;再次,在PROTEUSISIS中将HEX文件“下载”到AT89C51芯片中,其方法是鼠标右击AT89C51,然后左击,出现相应元件属性对话框,在该对话框“PROGRAMFILE”一项中选择要加入的HEX文件;最后,点击PROTEUSISIS窗口下方的PLAY键可以观察到电路仿真结果。当然,系统也可采用PROTEUS和KEILC51在线联接进行调试运行,方法如前所述。LCD程序截图沈阳职业技术学院软件学院17DS1302程序截图按键程序沈阳职业技术学院软件学院18主程序53仿真分析
29、及结论在电子万年历的仿真过程中,实时时钟芯片DS1302的时间信息自动与PC机同步。仿真界面友好,操作方便,与现实极为接近。沈阳职业技术学院软件学院19总结经过这些天不懈的努力终于完成了设计。通过这次单片机课程设计,使我在理论课程的基础上对单片机有了更进一步的了解。虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节。有了老师在实验室给我们的讲解和平时每次的作业练习使我有了一定的基础来完成本次设计。刚开始时我在整体思路模糊的情况下,不知道从什么地方入手。通过在网上查找资源有了初步的构想。随着知识的积累,我对电子时钟的设计方案已经慢慢酝酿而成。有了方
30、向和不少知识储备后,就开始了我的设计。设计单元电路阶段,这个阶段可以说是考察数电书本知识的阶段。所有的设计方法还有步骤在数字电路书上都有,而且还有例题。这个阶段遇到的主要问题就是以前的知识忘记不少,所以做设计的时候要常随手翻阅课本,等于是做了几道数字电路作业题。这个阶段的难度虽然不是很大,但是要有耐心,要心细。仿真阶段可以说是这次设计中最重要的部分,因为以前的只是理论而不是真正的实体。所以说它是最重要的。在设计中出现了不少问题通过和同学交流和借助于资料书的帮助很快就解决了问题。本次设计是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,学习到
31、了不少的专业知识。各个模块可以在软件或者硬件上实现。在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面。课程设计结束了,在这些天的努力学习和老师的精心指导下,我顺利地完成了课程设计任务。在课设的进行中,在自己一步一步的实践和仿真中,这让我学会了很多,学到了许多书本上没有的东西,同时也帮助自己温习了数字电路和电子软件的知识。在此期间,我知道了“三人行,必有我师”的道理。在设计制作过程中遇到困难时,可以向同学和老师求救经过和同学和老师的探讨可以解决不少的问题。沈阳职业技术学院软件学院20参考文献1李朝青单片机原理及接口技术M,北京北京航天航空大学出版社,20052李广弟单片机基础M,北京北京航空航天大学出版社,20003万光毅单片机实验与实践教程M,北京北京航空航天大学出版社,20034唐亚平、李移伦单片机原理实训与学习指导M,长沙中南大学出版社,20065刘军单片机原理与接口技术M,华东理工大学出版社,20066谢自美电子线路设计、实验、测试M,武汉华中理工大学出版社,2000