基于单片机万年历的设计毕业论文.doc

上传人:文****钱 文档编号:43746 上传时间:2018-05-10 格式:DOC 页数:35 大小:313.11KB
下载 相关 举报
基于单片机万年历的设计毕业论文.doc_第1页
第1页 / 共35页
基于单片机万年历的设计毕业论文.doc_第2页
第2页 / 共35页
基于单片机万年历的设计毕业论文.doc_第3页
第3页 / 共35页
基于单片机万年历的设计毕业论文.doc_第4页
第4页 / 共35页
基于单片机万年历的设计毕业论文.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、河北化工医药职业技术学院毕业论文I摘要本文借助电路仿真软件PROTUES对基于AT89S51单片机的电子万年历的设计方法及仿真进行了全面的阐述。该电子万年历在硬件方面主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCM点阵液晶显示屏显示。AT89C51单片机是由ATMEL公司推出的,功耗小,电压可选用46V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED液晶显示屏来显示,可以同

2、时显示年、月、日、星期、时、分、秒等信息。此外,该电子万年历还具有时间校准等功能。在软件方面,主要包括日历程序、时间调整程序,显示程序等。所有程序编写完成后,在KEIL软件中进行调试,确定没有问题后,在PROTEUS软件中嵌入单片机内进行仿真。论文主要研究了液晶显示器LCM及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。研究结果表明,由于万年历的应用相当普遍,所以其设计的核心在于硬件成本的节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。关键词单片机;DS1302;DS18B20;

3、LCM1602单片机在万年历的应用II目录第1章方案设计111单片机芯片的选择112显示模块选择方案和论证113时钟芯片的选择方案和论证114温度传感器的选择方案与论证215电路设计最终方案决定2第2章系统的硬件设计与实现321电路设计框图322系统硬件概述323主要单元电路的设计4231AT89S51单片机主控制模块的设计4232单片机中断系统6233时钟电路模块的设计8234温度采集模块设计9235显示模块的设计10236DS1302原理及说明11237LCM1602工作原理及说明13238系统仿真电路14第3章系统的软件设计1631程序流程框图1632子程序18河北化工医药职业技术学院毕

4、业论文III第4章系统测试1941硬件测试1942软件测试19总结19致谢21参考文献22附录程序23河北化工医药职业技术学院毕业论文1第1章方案设计11单片机芯片的选择本设计采用AT89S51芯片作为硬件核心,该芯片采用FLASHROM,内部具有4KBROM存储空间,相对于本设计而言程序空间完全够用。能于3V的超低压工作,而且与MCS51系列单片机完全兼容,而且运用于电路设计中时具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,避免芯片的多次拔插对芯片造成的损坏。12显示模块选择方案和论证方案一采用点阵式数码管显示,点阵式数码管是由八行八列的发

5、光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案二采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍,所以不采用LED数码管作为显示。方案三采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见3,对于电子万年历而言,一个1602的液晶屏即可,价格也还能接受,需要的接口线较多,但会给调试带来诸多方便,所以此设计中采用LCD160

6、2液晶显示屏作为显示模块。13时钟芯片的选择方案和论证方案一直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、单片机在万年历的应用2秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二采用DS1302时钟芯片实现时钟,DS130是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存

7、放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768KHZ晶振。因此,本设计中采用DS1302提供时钟。4温度传感器的选择方案与论证方案一使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的

8、测量误差。方案二采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。因此,本设计DS18B20温度传感器作为温度采集模块。15电路设计最终方案决定综上各模块的选择方案与论证,确定最后的主要硬件资源如下采用AT89S51作为主控制系统;河北化工医药职业技术学院毕业论文3第2章系统的硬件设计与实现21电路设计框图本系统的电路系统框图如图21所示。AT89S51单片机对DS1302和DS18B20写入控制字并读取相应的数据,继而

9、控制LCM1602作出对应的显示。图21系统硬件框图22系统硬件概述本电路是由AT89S51单片机作为控制核心,能在3V超低压工作,AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4KBYTESISPINSYSTEMPROGRAMMABLE的可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFLASH存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案;时钟电路由DS1302提供,它是一种高性能、低功耗、

10、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。可产生年、月、日、周、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20完成,它具有独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,测温范围55125,固有测温分辨率05,支持多点组网功能,多个DS18B20可以并联在唯一

11、的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温,工作电源35V/DC,在使用中不需要任何外围元件;显示部份由LCD1602液晶显示器完成,该显示器为工业字符型液晶,能够同时显示16X02键盘控制模块温度采集模块AT89S51主控模块LCD1602液晶显示模块DS1302时钟模块单片机在万年历的应用4即32个字符(16列2行)。23主要单元电路的设计231AT89S51单片机主控制模块的设计AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4KBYTESISPINSYSTEMPROGRAMMABLE的可反复擦写1000次的FLAS

12、H只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFLASH存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点40个引脚,4KBYTESFLASH片内程序存储器,128BYTES的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0HZ并

13、可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。P0口P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它

14、可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这

15、是由于内部上拉的缘故。P2口当用河北化工医药职业技术学院毕业论文5于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时

16、实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,如果不对端口置1,端口锁存器原来的状态有可能为0Q端为0Q为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确

17、的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。单片机的最小系统如图22所示18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端单片机的最小系统如下图所示图22中的晶振频率为12MHZ,复位方式为上电自动复位。单片机在万年历的应用6图22单片机最小系统232单片机中断系统在提及单片机的最小系

18、统后,现对单片机的另一重要应用系统即中断系统做一个比较详细的介绍。在CPU与外设交换信息时,存在着一个快速CPU与慢速的外设之间的矛盾。为解决这个问题,发展了中断的概念。单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢通过中断可以实现多个任务的资源共享。所谓的中断就是,当CPU正在处理某项事务的时候,如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回这样三个要素。中断源发出中断请求,单片机

19、对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。MCS51单片机的中断源共有两类,它们分别是外部中断和内部中断。外部中断0INT0来自P32引脚,通过外部中断0触发方式控制位IT0TCON0,来决定中断输入信号是低电平有效还是负跳变有效。一旦输入信号有效,便使IE0标志置一,向CPU申请中断;外部中断1INT1来自P33引脚,通过外部中断1河北化工医药职业技术学院毕业论文7触发方式控制位IT1TCON2,来决定中断输入信号是低电平有效还是负跳变有效。一旦输入信号有效,便使IE0标志置一,向CPU申请中断。内部中断有三个TF0,TF1,RI或TI。T

20、F0(TCON5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断;TF1(TCON7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断;RI(SCON0)或TI(SCON1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。MCS51单片机为用户提供了四个专用寄存器,来控制单片机的中断系统。定时器控制寄存器(TCON),该寄存器用于保存外部中断请求以及定时器的计数溢出。进行字节操作时,寄存器地址为88H。按位操作时,各位的地

21、址为88H8FH,当CPU采样到INT0(或INT1)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。当中断响应完成转向中断服务程序时,由硬件把IE0(或IE1)清零,当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”。当转向中断服务时,再由硬件自动清“0”。计数溢出标志位的使用有两种情况采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用;串行口控制寄存器(SCON),进行字节操作时,寄存器地址为98H。按位操作时,各位的地址为98H9FH,当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”,当接收完一帧串行数据后,由硬件置“1”;

22、在转向中断服务程序后,用软件清“0”。串行中断请求由TI和RI的逻辑或得到。就是说,无论是发送标志还是接收标志,都会产生串行中断请求;中断允许控制寄存器(IE),进行字节操作时,寄存器地址为0A8H。按位操作时,各位的地址为0A8H0AFH,可见,MCS51单片机通过中断允许控制寄存器对中断的允许(开放)实行两级控制。即以EA位作为总控制位,以各中断源的中断允许位作为分控制位。当总控制位为禁止时,关闭整个中断系统,不管分控制为状态如何,整个中断系统为禁止状态;当总控制位为允许时,开放中断系统,这时才能由各分控制位设置各自中断的允许与禁止。MCS51单片机复位后(IE)00H,因此中断系统处于禁

23、止状态。单片机在中断响应后不会自动关闭中断。因此在转中断服务程序后,应根据需要使用有关指令禁止中断,即以软件方式关闭中断。中断优先级控制寄存器(IP)MCS51单片机的中断优先级控制比较简单,因为系统只定义了高、低2个优先级。高优先级用“1”表示,低优先级用“0”表示。各中断源的优先级由中断优先级寄存器(IP)进行设定。IP寄存器地址0B8H,位地址为0BFH0B8H。单片机在万年历的应用8233时钟电路模块的设计DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口

24、与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于VCC102V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32768KHZ晶

25、振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在VCC20V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端双向,SCLK为时钟输入端。DS1302的控制字节的最高有效位位7必须是逻辑1,如果它为0,则不能把数据写入DS1

26、302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据位5至位1指示操作单元的地址最低有效位位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器

27、可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH写、FFH读。DS1302与CPU的连接需要三条线,即SCLK7、河北化工医药职业技术学院毕业论文9I/O6、RST5。实际上,在调试程序时可以不加电容器,只加一个32768KHZ的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温

28、度。只要占用CPU一个口线即可。单片机与DS1302连接图如图23所示。图23DS1302与单片机的连接234温度采集模块设计采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用07与DS18B20的I/O口连接加一个上拉电阻,VCC接电源,VSS接地。独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为30V至55V无需备用电源测量温度范围为55度至125度。10度至85度范围内精度为05度温度传感器可编程的分辨率为912位。DS18B20连线如图24所

29、示。单片机在万年历的应用10图24DS18B20管脚连线235显示模块的设计如下图5所示,采用LCM1602液晶显示器,单片机P1口作为数据输出口,RS,RW,E分别通过10K的上拉电阻连接到单片机的P00,P01,P02。VDD接5V电源,VSS接地。VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。R/W为读写信号线,高电平1时进行读操作,低电平0时进行写操作。E或EN端为使能ENABLE端,下降沿使能。DB0DB7为双向

30、数据总线,同时最高位DB7也是忙信号检测位。BLA、BLK分别为显示器背光灯的正、负极。河北化工医药职业技术学院毕业论文11图25LCM1602与单片机的连接236DS1302原理及说明1时钟芯片DS1302的工作原理DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图7所示。图6为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM1,对时间进行读/写时,CK0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位

31、为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表2为DS1302的日历、时间寄存器内容“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。2DS1302的控制字DS1302的控制字如图6所示。控制字节的高有效位(位7)必须是逻辑1,如果它为单片机在万年历的应用120,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位

32、(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。图26DS1302的控制字3数据输入输出在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图27所示图27DS1302读与写的时序图3DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见图28。河北化工医药职业技术学院毕业论文13图28DS1302的日历、时间寄存

33、器此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH写、FFH读。237LCM1602工作原理及说明1寄存器选择控制1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。1602液晶模块内部的字

34、符发生存储器(CGROM已经存储了160个不同的点阵字符15,图形寄存器选择控制表如表21所示表211602寄存器选择控制表RSR/W操作说明00写入指令寄存器(清屏指令等)单片机在万年历的应用142指令集1602通过D0D7的8位数据端传输数据和指令。显示模式设置初始化001110000X38设置162显示,57点阵,8位数据接口;显示开关及光标设置初始化00001DCBD显示1有效、C光标显示1有效、B光标闪烁1有效。000001NSN1读或写一个字符后地址指针加1并且光标加1,N0读或写一个字符后地址指针减1并且光标减1,S1且N1当写一个字符后,整屏显示左移,S0当写一个字符后,整屏显

35、示不移动。数据指针设置数据首地址为80H,所以数据地址为80H地址码027H,4067H。其他设置01H显示清屏,数据指针0,所有显示0;02H显示回车,数据指针0。238系统仿真电路本次仿真使用软件PROTUES70,该软件元件库丰富,元件封装要求相对简单且参数调整方便,除此之外,程序还可进行动态调试。系统仿真截图如图29所示。01读BUSYFLAG,以及读取位址计数器(DB0DB6)的值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据河北化工医药职业技术学院毕业论文15图29系统仿真电路图如图,左上角为显示模块LCM1602,U1是时钟芯片DS1302,U2是主控模块AT89C5

36、1,单片机在万年历的应用16第三章系统的软件设计31程序流程框图图31主程序流程图主程序流程图如上图31所示。由于LCM1602,DS18B20,DS1302的数据读取及指令写入函数均已在各自的头文件中完成,在主程序中只须引用即可。由于在硬件电路方面上设计了时间调整按键和开关,因此应有对应的时间调整程序。时间调整程序的流程图如图3所示开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序日期、时间修改子程序闰月子程序返回河北化工医药职业技术学院毕业论文17开始控制键有效进入年调整程序等待按键程序加键有效年减1年加1减键有效控制键有效进入小时调整程序等待按键程序加键有效分钟减1小时加1

37、减键有效控制键有效进入日调整程序等待按键程序加键有效年减1日加1减键有效控制键有效进入月调整程序等待按键程序加键有效月减1月加1减键有效控制键有效进入星期调整程序等待按键程序加键有效星期减1星期加1减键有效控制键有效进入分钟调整程序等待按键程序加键有效分钟减1分钟加1减键有效按键有效,跳出时间调整程序,进入主循环程序图32时间调整程序流程图单片机在万年历的应用1832子程序由于本系统程序涉及的可编程器件有LCM1602,DS18B20以及DS1302,各芯片的控制字及数据读写如果混杂,将会使程序可读性大大降低,因此采用子程序的方法进行调用并将其封装于各自的头文件中。详尽的程序设计见附录。河北化

38、工医药职业技术学院毕业论文19第4章系统测试41硬件测试在PROTUES仿真结束后,于焊接板上完成了硬件组装。在调试硬件时遇到过很多问题,但只要细心、认真检查这些问题都是可以避免的,主要问题及解决办法现列如下1接通电源后LCM1602没有正确的显示。在不通电状态下用万用表检测电路是否正常连接,在检查回路时发现有的点之间看似连接,但由于虚焊导致其并无电气连接,只能对焊脚进行在加工直到解决问题。2电路工作一段时间之后有的芯片发热严重。经查发现原来是有尖锐的管脚刺破邻近的漆包线造成短路,断掉该线并再次连接可解决问题。42软件测试由于本系统涉及到多个子程序,多个芯片的编程。首先必须对可编程芯片的控制字

39、即其控制指令要熟记于心。其次,芯片很多都有时钟输入端,需要晶振支持。对芯片的读写都需要在相应的触发沿到来时才能进行。由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,会对延时有较高要求。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许。单片机在万年历的应用20总结在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的,在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用。相互学习、相互讨论、研究。完了最初的设想。在研究时虽然没什么大问题

40、,但从中也知道了整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次比赛中学到了很多很多东西,这是最重要的。总之,我们的能力得到了全方位的提高。河北化工医药职业技术学院毕业论文21致谢在河北化工职业技术学院的三年学习时间即将过去,三年时间并不算长,但对我而言,是磨砺青

41、春、挥洒书生意气的三年,也是承受师恩、增长才干、提高学识的三年。我将以积极的面貌重新投入到火热的工作和事业中。在此,谨对培育我的母校、教导我的老师、帮助我的同学们致予最诚挚的谢意和敬意。这次课程设计,我一直很努力地去做,过程中得到了老师的悉心指导和同学们大力热心帮助,并对我的设计提出许多有益的建议,在此对他们表示衷心的感谢。同时也要感谢学校能给我这次机会去尝试自己设计一些东西,使自己所学专业知识与实践相结合。最后也要感谢有关我参考过的文献的作者,是他们为我提供知识的源泉,使我最终能顺利地完成这次课程设计。在毕业之际,我衷心地同学和朋友们在以后的人生道路上越走越宽广,也深深相信在未来的日子里我们

42、将一路携手前行,会遇到很多的碰撞和交流,我们将始终记得我们曾在河北化工职业技术学院同窗学习,这将是我克服困难、不断前进的精神动力。单片机在万年历的应用22参考文献1胡乾斌,李光斌,李玲,喻红单片微型计算机原理与应用华中科技大学出版社,20062刘勇数字电路电子工业出版社,20043陈正振电子电路设计与制作广西交通职业技术学院信息工程系,20074杨子文单片机原理及应用西安电子科技大学出版社,20065王萍电子技术实验教程机械工业出版社,20096沈红卫单片机应用系统设计实例与分析,北京北京航空航天大学出版社20037李光飞单片机课程设计实例指导,北京北京航空航天大学出版社20048王法能单片机

43、原理及应用,科学出版社20049楼然苗,李光飞51系列单片机设计实例M北京航空航天大学出版社,200310朱定华,戴汝平单片微机原理与应用M清华大学出版社,200311胡汉才单片机原理与接口技术M清华大学出版社,200412余家春PROTEL99SE电路设计实用教程M中国铁道出版社,200413张培仁基于汇编语言编程MCS51单片机原理与应用北京清华大学出版社,200314TSOMEYA,JSMALL,PKIM,CNUCKOLLS,JTYARDLEYALCOHOLVAPORSENSORSBASEDONSINGLEWALLEDCARBONNANOTUBEFIELDEFFECTTRANSISTOR

44、SMNANOLETTERS,200315MPENZAETALALCOHOLDETECTIONUSINGCARBONNANOTUBESACOUSTICANDOPTICALSENSORSMAPPLIEDPHYSICSLETTERS,200416FRETTIG,RMOOSDIRECTTHERMOELECTRICGASSENSORSDESIGNASPECTSANDFIRSTGASSENSORSMSENSACTUATORSB,2007河北化工医药职业技术学院毕业论文23附录程序主程序INCLUDEINCLUDE“LCD1602H“INCLUDE“DS1302H“INCLUDE“DS18B20H“DEFI

45、NEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHARUINTB6/年、月、日、时、分、秒UCHARCODEROW1“20090101“UCHARCODEROW2“000000“UCHARYEAR11231,28,31,30,31,30,31,31,30,31,30,31/平年UCHARYEAR21231,29,31,30,31,30,31,31,30,31,30,31/润年UCHARJ60X85,0X88,0X8B,0X840X40,0X870X40,0X8A0X40/LCD地址UCHARI,K,JJ0,W,CLOCK0,BIGCLOCK0,C0,NUM/I循环数,

46、K温度缓存,JJ地址位UINTTEMPSBITB1P30/设置SBITB2P31/上调SBITB3P32/下调SBITB4P33/转换SBITB5P34/闹钟SBITSPEAKERP35LCDSCANFORI0IYEAR2B11B21ELSEIFB2YEAR1B11B21IFB113B11IFB0100B00IFB30DELAY3BJJIFB51B559IFB41B459IFB31B323IFB040DSRST1DSWRITE0X8DKDSREADDSRST0A10KA11K4DELAY100LCDSCANKEYIFB50FORI0IDEFINEUINTUNSIGNEDINTDEFINEUCH

47、ARUNSIGNEDCHARSBITLCDRSP00SBITLCDRWP01SBITLCDENP02VOIDDELAYUINTZUINTX,YFORXZX0XFORY110Y0Y/1毫秒左右延时/LCDWRITELCD写指令VOIDLCDWRITEUCHARWRITELCDRS0P1WRITEDELAY1LCDEN1DELAY1LCDEN0/LCDSHUJULCD写数据VOIDLCDSHUJUUCHARSHUJULCDRS1P1SHUJUDELAY1LCDEN1DELAY1单片机在万年历的应用28LCDEN0/LCDONLCD显示初始化VOIDLCDONLCDEN0LCDWRITE0X38/显

48、示模式LCDWRITE0X0C/开显示,光标不闪烁LCDWRITE0X06/光标设置LCDWRITE0X01DS18B20头文件INCLUDEDEFINEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHARSBITDQP03VOIDSDELAYUNSIGNEDINTIWHILEIDS18B20ONVOID/DS18B20初始化UCHARX0DQ1SDELAY8DQ0SDELAY80DQ1SDELAY14SDELAY20/读一个字节READDS18B20VOIDUCHARI0,DAT0河北化工医药职业技术学院毕业论文29FORI8I0IDQ0DAT1DQ1IFDQDAT|

49、0X80SDELAY4RETURNDAT/写一个字节WRITEDS18B20UCHARDATUCHARI0FORI8I0IDQ0DQDATSDELAY5DQ1DAT1/读取温度READTEMPERATUREVOIDUCHARA0,B0UINTT0FLOATTT0DS18B20ONWRITEDS18B200XCC/跳过ROMWRITEDS18B200X44/开启温度转换DS18B20ONWRITEDS18B200XCCWRITEDS18B200XBE/读暂存器单片机在万年历的应用30AREADDS18B20BREADDS18B20TBTDEFINEUINTUNSIGNEDINTDEFINEUCHARUNSIGNEDCHARSBITDSRSTP20SBITDSSCLKP21SBITDSIOP22UINTA240,0,0,0,0,0,1,0,1,0,9,0,0,0,0,0,0,0,1,0,1,0,9,0/分别对应秒秒分分时时日日月月年年/后12位为闹钟位,用于存储闹钟数据/1302WRITEDS1302写数据VO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。