毕业设计(论文)-电子万年历设计.doc_第1页
毕业设计(论文)-电子万年历设计.doc_第2页
毕业设计(论文)-电子万年历设计.doc_第3页
毕业设计(论文)-电子万年历设计.doc_第4页
毕业设计(论文)-电子万年历设计.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子万年历设计 系 电子信息工程系 专业 姓名 班级 学号_ 指导教师 职称 指导教师 职称 设计时间 2014.7.22014.7.10 41 摘 要古人依靠日冕、漏刻记录时间,而随着科技的发展,电子万年历已经成为日渐流行的日常计时工具。本文研究的万年历系统拟用STC89C52单片机控制,以DS1302时钟芯片计时1602液晶屏显示。系统主要由单片机控制电路,显示电路以及校正电路四个模块组成。本文阐述了系统的硬件工作原理,所应用的各个接口模块的功能以及其工作过程,论证了设计方案理论的可行性。系统程序采用C语言编写,经Keil软件进行调试后在Proteus软件中进行仿真,可以显示年、月、日、星期、时、分、秒并具有校准功能和与即时时间同步的功能。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:万年历 单片机 仿真 全套设计加扣3012250582 目 录摘要.2 绪论5课题研究的意义5本课题主要的研究工作5研究内容5第一章 单片机的特点61.1.1单片机的定义61.1.2 STC89C52单片机简介61.2编程语言的选择7第二章 系统硬件设计72.1设计要求72.2单片机芯片的选择82.3显示模块选择82.4时钟芯片的选择82.5.1电路设计框图8 2.5.2系统硬件概述92.6主要单元电路的设计92.6.1电源及时钟引脚92.6.2控制引脚92.6.3I/O引脚102.6.4单片机主控制模块的设计10 2.6.5复位电路的计.11 2.6.6晶振电路的计.12 2.6.7时钟电路模块的计.12 2.6.8独立式键盘计.13 2.6.9显示模块的计.14第三章 系统软件设计 3.1程序流程图143.1.1系统总流程图143.1.2时钟程序流程图153.1.3液晶显示程序流程图153.2程序的设计173.2.1读写DS1302程序173.2.2液晶显示程序19第四章 仿真与调试20 4.1 Proteus软件运行204.2 万年历的功能仿真21 4.3 调试结果.23第五章 总结与展望24致谢.24参考文献25附录一:系统电路图25附录二:系统程序.25 绪论课题研究的意义万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。而随着微电子技术的高速发展,人类用于计时的工具也在不断发展更新,单片机技术的出现使得万年历有了新的发展方向。单片机以其体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5倍以上。用最少的芯片就能实现最强大的功能,这是将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。以基于单片机的万年历作为设计的课题,因为它有很好的开放性和可发挥性,对作者的要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多种功能。所以,电子万年历作为设计课题很有价值。主要的研究工作本论文主要研究基于单片机的万年历设计。当程序执行后,LCD显示即时时间、年月日、星期。设置3个操作键:K1:设置键;K2:上调键;K3:下调键。本设计的主要内容:1、了解单片机技术的发展现状,熟悉万年历各模块的工作原理;2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各接口电路;3、熟悉单片机使用方法和C语言的编程规则,编写出相应模块的应用程序;4、分别在各自的模块中调试出对应的功能,在Proteus软件上进行仿真。研究内容设计目标:使基于STC89C52单片机的万年历实现以下四个功能:1、具有年、月、日、星期、时、分、秒等功能;2、具备年、月、日、星期、时、分、秒校准功能;3、具有与即时时间同步的功能; 第一章 单片机的概述目前单片机渗透到了我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及远程控制玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域中的机器人、智能仪表、医疗器械了。单片机具有结构简单、控制功能强、可靠性高、体积小、价格低等优点,因而在许多行业都得到了广泛应用,并且在诸多领域中都发挥了无可比拟的巨大作用。1.1单片机的特点1.1.1单片机的定义单片机即单片微型计算机,是把中央处理器、存储器、定时/计数器、输入输出接口都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。单片机也被称为微控制器(Microcontroller),是因为它最早被用于工业控制领域。单片机的芯片内仅由CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。1.1.2 STC89C52单片机简介STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。引脚排列如图2.1所示。 图2.1 STC89C52引脚图1.2编程语言的选择在众多的程序设计语言中,C语言简洁紧凑,语言表达能力强,其结构化的流程控制有助于编制结构良好的程序。C语言程序经编译后生成的目标程序代码效率高,几乎可以与汇编语言媲美。所以本系统以C语言进行软件设计,增加了程序的可读性和可移植性,便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁了。第二章 系统硬件设计2.1 设计要求1、 具备在液晶上显示年、月、日、星期、时、分、秒的功能;2、 具备年、月、日、星期、时、分、秒校准功能;3、 具有与即时时间同步的功能;2.2 单片机芯片的选择采用STC89C52芯片,STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。同样具有AT89S51的功能,且具有在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,因此选择采用STC89C52作为主控制系统核心。2.3 显示模块选择采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。所以在此设计中采用1602液晶显示屏。2.4时钟芯片的选择采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。所以本设计采用DS1302时钟芯片。2.5.1 电路设计框图图4.1系统结构框图为使时钟走时与标准时间一致,校时电路是必不可少的,键盘模块用来校正液晶上显示的时间;STC89C52单片机通过输出各种电脉冲信号来驱动控制各部分正常工作;而系统的时间等数据则最终通过液晶模块显示出来。2.5.2 系统硬件概述本电路是以STC89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作;时钟芯片采用DS1302,它是一款高性能、低功耗、自带RAM的实时时钟芯片,具有使用寿命长,精度高和功耗低等特点,同时具有掉电自动保存功能,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,其工作电压为2.5V5.5V;显示部份使用1602液晶显示屏来实现,该显示屏具有低功耗、寿命长、可靠性高的特点,其工作电压为5v。2.6 主要单元电路的设计2.6.1电源及时钟引脚VCC:接+5V电源;VSS:接地;XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。2.6.2控制引脚RST/VPT:RST是复位信号输入端,VPT是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源VCC发生故障而突然下降到一定低电压或断电时,第2功能VPT将为片内RAM提供电源以保护片内RAM中的信息不丢失。ALE/PROG:地址锁存允许信号输出端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就会周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固化程序时,作为编程脉冲输入端。PSEN:程序存储允许输出端。是片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。EA/VPP:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。对8031单片机,EA必须接低电平。在8751中,当对片内EPROM编程时,该端接21V的编程电压。2.6.3I/O口引脚P0.0P0.7:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。P1.0P1.7:P1口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。P2.0P2.7:P2口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3.0P3.7:P3口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。P3口亦作为STC89C52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。2.6.4单片机主控制模块的设计本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。它具有丰富的内部资源,较大的数据、程序存储区。一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。单片机的最小系统如图4.2所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。XTAL0接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。RESET为复位引脚,连接复位电路,它用于对单片机进行初始化。复位电路包括复位电容(C6)、复位电阻(R3)和复位开关(S4)。VSS为电源地,VCC为电源正。图4.2 单片机最小系统 单片机最小系统复位、晶振电路简介2.6.5、复位电路的设计复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。在此设计中,采用的按键复位电路。按键复位电路如图4.3所示。图4.3 复位电路2.6.6晶振电路的设计晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4.4中Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。 图4.4 时钟振荡电路2.6.7 时钟电路模块的设计DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。图4.5所示为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。DS1302由VCC1或VCC2两者中的较大者供电。所以在主电源关闭的情况下,也能保持时钟的连续运行。X1和X2是振荡源,外接32.768KHz晶振用来为芯片提供计时脉冲。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电行动时,在VCC大于等于2.5V之前,RST必须保持低电平。在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图4.5 DS1302的硬件接线图2.6.8独立式键盘设计实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。在本系统中,我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,键数目较多,可节省口线。本设计采用的是独立式键盘。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态, 在进行本次设计中,只涉及到了设置、上调、下调三个功能。因此采用独2.6.9 显示模块的设计本设计中由于要对时间进行显示,所以选择液晶显示屏1602模块作为输出。将L1602的RS端和P2.0,R/W端和P2.1, E 端和P2.2相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。图4.10为1602液晶显示屏与单片机的硬件连接图。图4.10 LCD液晶与单片机硬件连线图第三章 系统的软件设计3.1程序流程图3.1.1 系统总流程图系统总流程图如图5.1所示。流程图分析:首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间等数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。图5.1系统总流程图3.1.2 DS1302时钟程序流程图时钟流程图如图5.3所示。流程图分析:DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;若没有按键按下,则直接存入EPROM,送入液晶屏显示。图5.3 时钟流程图3.1.3 LCD显示程序流程图显示程序流程图如图5.4。流程图分析:首先对1602显示屏进行初始化(初始化大约持续10ms左右),然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作不接受任何外部指令和数据,直到BF=0为止。图5.4 LCD显示程序流程图3.2程序的设计3.2.1 DS1302读写程序DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图5.5所示。图5.5 DS1302的控制字控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图5.6、5.7所示。图5.6 单字节读图5.7 单字节写在进行任何数据传输时,RST必须被置高电平,每个SCLK为上升沿时数据被输入,下降沿时数据被输出。先把RST置低,禁止数据传输,SCLK置低,清零时钟总线,RST再置高,允许数据传输。传送完成后,RST置低,禁止字节的传送。部分源程序如下:void write_byte(uchar dat) /写一个字节ACC=dat;RST=1;for(a=8;a0;a-)IO=ACC0;SCLK=0;SCLK=1;ACC=ACC1;uchar read_byte() /读一个字节RST=1;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return (ACC);void write_1302(uchar add,uchar dat) /向1302芯片写函数,指定写入地址,数据RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;uchar read_1302(uchar add) /从1302读数据函数,指定读取数据来源地址uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);3.2.2液晶显示程序1602通过D0D7的8位数据端传输数据和指令,其模块内的控制器有11条控制指令。当液晶显示屏的接口电路与单片机系统I/O按照并行数据传输方式连接完成以后,即可以对STC89C52单片机进行编程。在液晶屏完成显示之前首先要对液晶进行初始化。源程序如下:lcd_init() /*液晶初始化函数*write_1602com(0x38); /设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c); /开显示不显示光标write_1602com(0x06); /整屏不移动,光标自动右移write_1602com(0x01); /清显示write_1602com(yh+1); /日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a14;a+)write_1602dat(tab1a); /向液晶屏写日历显示的固定符号部分/delay(3);write_1602com(er+2); /时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a8;a+)write_1602dat(tab2a); /写显示时间固定符号,两个冒号/delay(3); 第四章 仿真与调试4.1Proteus软件运行流程。运行Proteus程序后,进入软件的主界面(如图6.4)。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。Proteus ISIS的工作界面:将所需要的元器件放置好后,绘制成原理图如图 4.2 万年历的功能仿真模拟调试:当电路搭建好之后,选中单片机STC89C52,左键点击STC89C52,在出现的对话框里点击Program File按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击“OK”按钮就可以模拟了。点击模拟调试按钮的运行按钮,进人调试状态。图6.7为运行按键:图6.7运行按键上电后后LCD显示: 调节秒钟调节分钟: 调节时钟:调节星期: 调节日期:调节月份: 调节年份: 按键功能自上而下依次为:设置键、上调键、下调键:图6.16 按键的设置4.3 调试结果电子万年历的电路系统比较复杂,。在本次电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:(1)对万年历修改时间或日期时,有时LCD液晶显示屏被屏蔽掉,造成不亮现象。解决:根据测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。(2)烧入程序后,LCD液晶显示屏不显示或者亮度不好。解决:对程序进行认真修改。当显示亮度不好时一遍旋转10K欧的滑动变阻器,一遍观看LCD显示屏,直到看到合适的亮度为止。经过多次的反复调试试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固第五章 总结与展望至此,关于毕业设计的所有内容就介绍完了,进行这次毕业设计一切都是从零开始,从最简单查资料、了解各个元件的功能起步,再确定设计方案、画流程图、编写程序到最后进行仿真,这次课题设计可以说成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁、等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。最终较好的完成了设计,达到了预期的目的,完了最初的设想。但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些最基本的功能,还有许多不足和可以扩展的地方。例如实现公历和农历的转换、闹钟报时等,这些有待以后来弥补,还望各位老师予以指正和修改。 致谢 毕业设计的完成,为我的大学学习生活画下了最后一笔。本文是在指导老师的全面指导中完成的,老师认真负责的工作态度促使我更好的完成了本毕业设计,与老师的相处时间不多,但老师对专业知识的态度非常值得我学习,让我对本专业有了更大的学习兴趣,在论文完成之际,向老师致以最真挚的感谢和最崇高的敬意,所有这些,都将激励我在将来的工作岗位上勤奋实干,积极进取,用优异的成绩来回报大家对我的关心和帮助! 参考文献1 刘和平. 单片机原理与应用M.北京:机械工业出版社,2002,201-2092 刘守义单片机应用技术M. 西安:西安电子科技大学出版社,2002,98-1073 刘勇. 数字电路M. 北京:电子工业出版社, 2004,111-1184 康光华.电子技术基础模拟部分 M.(第五版)高等教育出版社.2005,247-2615 谭浩强. C程序设计 M.(第三版)北京:清华大学出版社,2005,256-2786 周润景,张丽娜,刘印群. PROTEUS入门实用教程M.北京:机械工业出版社,2007,314-3257 戴佳,戴卫恒. 51单片机C语言应用程序设计实例精讲M.北京:电子工业出版社,2006,231-2468 徐爱钧,彭秀华 Keil Cx51 V7.0 单片机高级语言编程与uVision2应用实践 M.(第二版)北京:电子工业出版社,2008,156-171附录一:系统原理图附录二:系统程序#include#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; #define yh 0x80 #define er 0x80+0x40 /液晶屏的与C51之间的引脚连接定义sbit rs=P10;sbit en=P12;sbit rw=P11; /如果硬件上rw接地,就不用写这句和后面的rw=0了/DS1302时钟芯片与C51之间的引脚连接定义sbit IO=P22;sbit SCLK=P21;sbit RST=P23;sbit ACC0=ACC0;sbit ACC7=ACC7;/校时按键与C51的引脚连接定义sbit key1=P13; /设置键sbit key2=P14; /加键sbit key3=P15; /减键sbit buzzer=P25; /蜂鸣器,通过三极管9012驱动,端口低电平响/*/uchar code tab1=20 - - ; /年显示的固定字符uchar code tab2= : : ; /时间显示的固定字符/延时函数,后面经常调用void delay(uint xms) /延时函数,有参函数uint x,y;for(x=xms;x0;x-) for(y=110;y0;y-);/*液晶写入指令函数与写入数据函数,以后可调用*/write_1602com(uchar com) /*液晶写入指令函数*rs=0; /数据/指令选择置为指令rw=0; /读写选择置为写P0=com; /送入数据delay(1);en=1; /拉高使能端,为制造有效的下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令write_1602dat(uchar dat) /*液晶写入数据函数*rs=1; /数据/指令选择置为数据rw=0; /读写选择置为写P0=dat; /送入数据delay(1);en=1; /en置高电平,为制造下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令lcd_init() /*液晶初始化函数*write_1602com(0x38); /设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c); /开显示不显示光标write_1602com(0x06); /整屏不移动,光标自动右移write_1602com(0x01); /清显示write_1602com(yh+1); /日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a14;a+)write_1602dat(tab1a); /向液晶屏写日历显示的固定符号部分/delay(3);write_1602com(er+2); /时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a0;a-)IO=ACC0;SCLK=0;SCLK=1;ACC=ACC1;uchar read_byte() /读一个字节RST=1;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return (ACC);/-void write_1302(uchar add,uchar dat) /向1302芯片写函数,指定写入地址,数据RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;uchar read_1302(uchar add) /从1302读数据函数,指定读取数据来源地址uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论