电子万年历论文_第1页
电子万年历论文_第2页
电子万年历论文_第3页
电子万年历论文_第4页
电子万年历论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、2014届毕业生毕业设计(论文)中 文 题 目基于单片机的电子万年历设计 系 别: 电气与信息工程系 专 业: 电气自动化 班 级: 电气11-1 学 号: 201104121009 姓 名: 郝鹏 指导教师: 完成日期: 河北交通职业技术学院目录第1 章 绪 论31.1 课题意义31.2国内外现状及水平:3第2章基于单片机万年历的方案研究42.1 系统基本方案选择和论证42.1.1 单片机芯片的选择42.1.2 显示模块选择方案和论证42.1.3 时钟芯片的选择方案和论证52.1.4 温度传感器的选择方案与论证52.2 电路设计最终方案决定62.3 DS1302,DS18B20和LCD160

2、2的原理及说明62.3.1 LCD1602工作原理及说明62.3.2 DS1302原理及说明72.3.3 DS18B20工作原理及说明9第3章 系统的硬件设计与实现93.1电路设计框图93.2系统硬件概述103.3 主要模块电路的设计103.3.1 STC89C52单片机主控制模块的设计10时钟电路模块的设计13温度采集模块设计143.3.4 显示模块的设计143.4各模块电路原理图14电源电路14复位电路15振荡电路15温度采集电路16通信电路16显示电路17键盘电路18第4章 系统的软件设计194.1 程序流程框图:19第5章 系统测试215.1 硬件测试215.2 软件测试21结束语22

3、参考文献23第1 章 绪 论1.1 课题意义电子万年历作为电子类小产品不仅是市场上的宠儿,也是是单片机设计培训中一个很实用的题目。因为这个课题有很好的开放性和可发挥性,对制作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且要求设计的电子万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。所以,电子万年历制作无论从实用目的,还是从培养能力的角度来看都是很有价值的毕业设计课题。本电子万年历的设计在硬件方面主要采用STC89C52单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCD液晶显示屏显示。STC89C52单片机是由Atmel公司推出的,功耗小

4、,电压可选用46V电压供电;DS1302时钟芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,而且DS1302的使用寿命长,误差小;数字显示是采用的LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。此外,该电子万年历还具有时间校准等功能。在软件方面,主要包括日历程序、时间调整程序,显示程序等。所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,烧写到单片机上进行测试。最后在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。1.2国内外现状及水平:诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自

5、动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。它可以对年、月、日、周日、时、分、秒进行计时,对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。近些年我国也开始重视对电子万年历的开发与设计,让更多的电子时钟能够走进人民生活,跟多人能够应用到功能强大,精度高的电子时钟。但是仍然存在很多问题。中国电子万年

6、历产业发展出现的问题中,许多情况不容乐观,如产业结构不合理、产业集中于劳动力密集型产品;技术密集型产品明显落后于发达工业国家;生产要素决定性作用正在削弱;产业能源消耗大、产出率低、环境污染严重、对自然资源破坏力大;企业总体规模偏小、技术创新能力薄弱、管理水平落后等.从什么角度分析中国电子万年历产业的发展状况?以什么方式评价中国电子万年历产业的发展程度?中国电子万年历产业的发展定位和前景是什么?中国电子万年历产业发展与当前经济热点问题关联度如何诸如此类,都是电子万年历产业发展必须面对和解决的问题中国电子万年历产业发展已到了岔口;中国电子万年历产业生产企业急需选择发展方向。中国电子万年历产业发展研

7、究报告阐述了世界电子万年历产业的发展历程,分析了中国电子万年历产业发展现状与差距,开创性地提出了“新型电子万年历产业” 及替代品产业概念,在此基础上,从四个维度即“以人为本”、“科技创新”、“环境友好”和“面向未来”准确地界定了“新型电子万年历产业” 及替代产品的内涵。根据“新型电子万年历产业” 及替代品的评价体系和量化指标体系,从全新的角度对中国电子万年历产业发展进行了推演和精准预测,在此基础上,对中国的行政区划和四大都市圈的电子万年历产业发展进行了全面的研究。第2章基于单片机万年历的方案研究2.1 系统基本方案选择和论证 单片机芯片的选择本设计采用STC89C52芯片作为硬件核心,该芯片采

8、用Flash ROM,内部具有8KB ROM存储空间,相对于本设计而言程序空间完全够用。能于5V电压工作,而且与MCS-51系列单片机完全兼容,而且运用于电路设计中时具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,避免芯片的多次拔插对芯片造成的损坏。 显示模块选择方案和论证方案一: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案二: 采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连

9、接时,占用的单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍,所以不采用LED数码管作为显示。方案三: 采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于电子万年历而言,一个1602的液晶屏即可,价格也还能接受,需要的接口线较多,但会给调试带来诸多方便,所以此设计中采用LCD1602液晶显示屏作为显示模块。 时钟芯片的选择方案和论证方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间

10、误差较大。所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并

11、且可以关闭充电功能。采用普通32.768kHz晶振。因此,本设计中采用DS1302提供时钟。 温度传感器的选择方案与论证方案一: 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二: 采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精

12、度高、测量范围广等优点。因此,本设计DS18B20温度传感器作为温度采集模块。2.2 电路设计最终方案决定 综上各模块的选择方案与论证,确定最后的主要硬件资源如下:采用STC89C52作为主控制系统;DS1302提供时钟;DS18B20作为数字式温度传感器;LCD1602液晶屏作为显示。2.3 DS1302,DS18B20和LCD1602的原理及说明 2.3.1 LCD1602工作原理及说明(1)寄存器选择控制 1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符,图形寄存器

13、选择控制表如表2.1所示:表2.1 LCD1602寄存器选择控制表 RS R/W 操作说明 0 0 写入指令寄存器(清屏指令等) 0 1 读busy flag,以及读取位址计数器(DB0DB6)的值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据 (2)指令集 1602通过D0D7的8位数据端传输数据和指令。显示模式设置(初始化)001110000x38设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:(初始化) 00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)。000001NS N=1(读或写一个字符后地址指

14、针加1并且光标加1),N=0(读或写一个字符后地址指针减1并且光标减1),S=1且N=1(当写一个字符后,整屏显示左移),S=0当写一个字符后,整屏显示不移动。数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)。其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。2.3.2 DS1302原理及说明(1) 时钟芯片DS1302的工作原理DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图2.2所示。图2.1为DS1302的控制字,此

15、控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表2.2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。 (2) DS1302的控制字DS1302的

16、控制字如图2.1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。图2.1 DS1302的控制字 (3) 数据输入输出在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图2.2所示: 图2.2 DS1302读与写

17、的时序图(3) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2.2。 表2.2 DS1302的日历、时间寄存器 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的R

18、AM的31个字节,命令控制字为FEH(写)、FFH(读)。 2.3.3 DS18B20工作原理及说明DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图2.3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数

19、器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 图2.3 DS18B20测温原理框图第3章 系统的硬件设计与实现3.1电路设计框图 本系统的电路系统框图如图3.1所示。STC89C52单片机对DS1302和DS18B20写入控制字并读取相应的数据,继而控制LCD1602作出对应的显示。LCD1602液晶显示模块STC89C52主控模块按键控制模块DS1302时钟模块温度采集

20、模块 图3.1 系统硬件框图3.2系统硬件概述本电路是由STC89C52单片机作为控制核心,能在5V电压工作,STC89C52是一个低功耗,高性能CMOS 8位单片机,片内含8kBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C52引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案;时钟电路由DS1302提供,它是一种高性能、低功耗、带

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

22、联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温,工作电源:35V/DC,在使用中不需要任何外围元件;显示部份由LCD1602液晶显示器完成,该显示器为工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。3.3 主要模块电路的设计 STC89C52单片机主控制模块的设计 STC系列单片机是由STMicroelectronics 公司生产,并有宏晶公司做大陆代理的。本设计使用STC89C52作为控制核心,其管脚兼容其他51系列的单片机,以下对STC89C52进行简单讲解。   STC89C5

23、2单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。采用40Pin封装的双列直接DIP结构,图3.2是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在对各引脚功能说明如下(图3.2):图3.2 STC89C52单片机管脚图(1)主电源引脚Vcc :接5V电源正端。Vss :接5V电源地端。(2)输入输出引脚P.0P0.7:P0口的8个引脚。在不接片外存储器与不扩展IO接口时,可作为准双向输入输出接口。在接

24、有片外存储器或扩展IO接口时,P0口分时复用为低8位地址总线和双向数据总线。P1.0P1.7:P1口的8个引脚。可作为准双向IO接口使用。对于52子系列,P1.0 与 P1.1还有第二种功能:P1.0 可用作定时器计数器2的计数脉冲输入端T2。P1.1可用作定时器计数器2的外部控制端T2EX。P2.0P2.7:P2口的8个引脚。可作为准双向IO接口;有接有片外存储器或扩展IO接口且寻址范围超过256个字节时,P2口用作高8位地址总线。P3.0P3.7:P3口的8个引脚。除作为准双向IO接口使用外,还具有第二种功能 ,详见表3.1。表3.1 P3口第二功能表 引脚第二功能P3.0P3.1P3.2

25、P3.3P3.4P3.5P3.6P3.7RXD(串行口输入)TXD(串行口输出)I¯N¯T¯0¯(外部中断0输入)I¯N¯T¯1¯(外部中断1输入)T0(定时器0的外部输入)T1(定时器1的外部输入)W¯R¯(片外数据存储器写控制信号)R¯D¯(片外数据存储器读控制信号)(3)控制总线ALEPROG:地址锁存有效信号输出端。在访问片外程序存储器期间,每机器周期该信号出现两次,其下降沿用于控制锁存P0口输出的低8位地址。对于片内含EPROM的机型,在编程期间,此引脚用作编程脉冲

26、PROG的输入端。PSEN:片外程序存储器读选通信号输出端,或称片外取指信号输出端。在向片外程序存储器读取指令或常数期间,每个机器周期该信号两次有效(低电平),以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,PSEN信号将不出现。RSTV:(RST 是 RETET 简略写法。)是复位端。单片机的振荡器工作时,该引脚上出现持续两个机器周期的高电平就可实现复位操作,使单片机回复到初始状态。上电时,考虑到振荡器有一定的起振时间,该引脚上高电平必须持续10ms以上才能保证有效复位。Vcc掉电期间,该引脚如接备用电源VPD(电压范围+4.5V至+5.5V),可用于保存片内RAM中的数据。当

27、Vcc下降到某规定值以下VPD,便向片内RAM供电。EAVDD:片外程序存储器选用端。该引脚有效(低电平)时只选用片外程序存储器,否则计算机上电或6复位后先选用片内程序存储器。(4)外接晶振引脚XTAL1:片内反相放大器输入端。XTAL2:片内反相放大器输出端。外接晶体时,XTAL1和 XTAL2各接晶体的一端,借外接晶体与片内反相放大器构成振荡器。图3.3单片机最小系统3.3.2时钟电路模块的设计 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可

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

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

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

31、存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,

32、同时显示实时温度。只要占用CPU一个口线即可。3.3.3温度采集模块设计采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用3.5与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源 测量温度范围为-55度至+125度。-10度至+85度范围内精度为±0.5度温度传感器可编程的分辨率为912位。3.3.4 显示模块的设计采用LCD1602液晶显示

33、器,单片机P0口作为数据输出口,通过10R的上拉电阻连接到VCC,VCC接5V电源,GND接地。GND为液晶显示器对比度调整端,可以通过滑动变阻器RH1调显示器的对比度(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。E(或EN)端为使能(enable)端,下降沿使能。DB0-DB7为双向数据总线,同时最高位DB7也是忙信号检测位。BLA、BLK分别为显示器背光灯的正、负极。3.4各模块电路原理图电源电路由USB接口供5V电压,

34、此电源电路能够给单片机提供稳定的电压,使系统能够稳定工作如图3.7所示图3.7电源电路复位电路无论用户使用哪种类型的单片机 ,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的,本电路设计采用可靠的手动复位方式,单片机复位电路如图3.8所示图3.8复位电路振荡电路对于一个高可靠性的系统设计,晶体的选择非常重要。在振荡回路中,晶体既不能过激励(容易产生高次谐波)也不能欠激励(不容易起振)。晶体的选择至少必须考虑:谐振频点,

35、负载电容,激励功率,温度特性,长期稳定性。在本设计中采用了11.0592MHZ的晶振。这样有利于得到没有误差的波特率。特别是用于串口通信时,选用这种晶振比较好。单片机振荡电路如图图3.9所示。图3.9震荡电路温度采集电路单片机使用VCC与上拉电阻RDS1相连,再与DS18B20的2号引脚相接,上拉电阻取值4.7K。温度传感器采用外部供电方案,由1、3引脚提供电源。电路图如下图3.10:图3.10温度采集电路通信电路 通信电路主要由MAX232芯片构成,如下图3.11所示。MAX232的T1IN引脚接在单片机TXD的P3.1引脚控制。TTL电平从单片机的TXD端发出,经过MAX232转换为RS-

36、232电平后从MAX232的T1OUT引脚发出,再经过随板配送的交叉串口线后,连接至PC机的串口座的第二引脚RXD端,至此计算机收到数据。PC机发送数据时从PC机串口座第三脚TXD端发出数据,再逆向流向单片机的RXD端P3.0接收数据。图3.11串口通信电路显示电路 显示电路由1602液晶接口插槽组成,如下图3.12所示。液晶显示器R/W端直接接地,表示只允许写入,而不可以从中读取。使能端E由单片机P0.7引脚控制,数据/命令选择端由单片机的P2.6引脚控制。偏压信号VL端与滑动变阻器RH1相连,通过RH1可以调节显示器的显示对比度。RD1主要用于限流作用,起到一定的保护作用。显示器数据端口与

37、单片机的P0对应相连,单片机通过P0口可以向显示器中输入控制命令或要显示的字符。图3.12显示电路键盘电路 按键电路由3个按键组成,主要是用于调节时间,日期和星期如图3.13所示。图3.13按键电路第4章 系统的软件设计4.1 程序流程框图:开始初始化DS1302,温度键盘扫描是否有按键按下时钟停止Y功能调节NFlag=1?时钟显示获取温度并显示温度结束YYN图4.1主程序流程图主程序流程图如上图4.1所示。由于LCD1602,DS18B20,DS1302的数据读取及指令写入函数均已在各自的头文件中完成,在主程序中只须引用即可。由于在硬件电路方面上设计了时间调整按键和开关,因此应有对应的时间调

38、整程序。时间调整程序的流程图如图4.2所示。 图4.2 时间调整程序流程图第5章 系统测试5.1 硬件测试在调试硬件时遇到过很多问题,但只要细心、认真检查这些问题都是可以避免的,主要问题及解决办法现列如下:(1) 认真检查电路是否有短路的地方,线与线之间,管脚刺破邻近的漆包线之间是否连接在一起,有的话要用刀划开,或者重新焊接。(2) 检查完毕后接通电源后LCD1602没有正确的显示。在不通电状态下用万用表检测电路是否正常连接,在检查回路时发现有的点之间看似连接,但由于虚焊导致其并无电气连接,只能对焊脚进行在加工直到解决问题。5.2 软件测试 由于本系统涉及到多个子程序,多个芯片的编程。首先必须

39、对可编程芯片的控制字即其控制指令要熟记于心。其次,芯片很多都有时钟输入端,需要晶振支持。对芯片的读写都需要在相应的触发沿到来时才能进行。由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,会对延时有较高要求。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许。结束语以上所述即是基于单片机电子万年历的设计全过程,经过多次的反复测试与分析,对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.经过此设计,基本完成了设计任务的要求。硬件层面而言操作相对简单,界面比较友好。在硬件电路方面,详尽解析了各个独立元件的

40、选择依据,对数种方案进行了全面的比较。在时钟芯片的选择上,若直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大。因此采用专业的时钟芯片DS1302,它可以对年、月、日、周日、时、分、秒进行计时,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能;在显示模块的选择上,若采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往

41、会有很多障碍,因此本次设计选择了LCD1602,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见;在温度采集模块的选择上,没有采用热敏电阻,因为设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。最后选择了DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。从元件性能和组装电路后的测试结果来看,硬件电路的设计是比较成功的,各个功能都能实现了。参考文献1胡乾斌,李光斌,李玲

42、,喻红单片微型计算机原理与应用.华中科技大学出版社,19962刘勇数字电路电子工业出版社,20043陈正振电子电路设计与制作广西交通职业技术学院信息工程系,20074杨子文单片机原理及应用西安电子科技大学出版社,20065王萍电子技术实验教程机械工业出版社,20096沈红卫.单片机应用系统设计实例与分析,北京:北京航空航天大学出版社.20037李光飞.单片机课程设计实例指导,北京:北京航空航天大学出版社. 20048王法能.单片机原理及应用,科学出版社. 20049楼然苗,李光飞51系列单片机设计实例M北京航空航天大学出版社,200310朱定华,戴汝平单片微机原理与应用M清华大学出版社,200

43、311胡汉才.单片机原理与接口技术M清华大学出版社,200412余家春Protel 99 SE电路设计实用教程M中国铁道出版社,200413张培仁基于汇编语言编程MCS-51单片机原理与应用北京:清华大学出版社,200314TSomeya,JSmall,PKim,CNuckolls,JTYardleyAlcohol vapor sensors based on single-walled carbon nanotube field effect transistorsMNano Letters,200315MPenza et alAlcohol detection using carbon n

44、anotubes acoustic and optical sensorsMApplied Physics Letters,200416FRettig,RMoosDirect thermoelectric gas sensors Design aspects and first gas sensorsMSens Actuators B,2007致谢在河北交通学院的三年学习时间即将过去,三年时间并不算长,但对我而言,是磨砺青春、挥洒书生意气的三年,也是承受师恩、增长才干、提高学识的三年。我将以积极的面貌重新投入到火热的工作和事业中。在此,谨对培育我的母校、教导我的老师、帮助我的同学们致予最诚挚的

45、谢意和敬意。 这次课程设计,我一直很努力地去做,过程中得到了老师的悉心指导和同学们大力支持和热心帮助,并对我的设计提出许多有益的建议,在此对他们表示衷心的感谢。同时也要感谢学校能给我这次机会去尝试自己设计一些东西,使自己所学专业知识与实践相结合。最后也要感谢有关我参考过的文献的作者,是他们为我提供知识的源泉,使我最终能顺利地完成这次课程设计。在毕业之际,我衷心地同学和朋友们在以后的人生道路上越走越宽广,也深深相信在未来的日子里我们将一路携手前行,会遇到很多的碰撞和交流,我们将始终记得我们曾在广西工学院同窗学习,这将是我克服困难、不断前进的精神动力。附录1:程序#include<reg52

46、.h>#define uchar unsigned char #define uint unsigned intsbit lcden=P24;/1602管脚定义sbit lcdrs=P26;sbit lcdws=P25;sbit ds=P35;/ds18b20信号线sbit beep=P23; /蜂鸣器管脚定义sbit ACC_7 = ACC7; /位寻址寄存器定义sbit SCLK = P32; / DS1302时钟信号 sbit DIO= P33; / DS1302数据信号 sbit CE = P34; / DS1302片选 sbit key3=P10;/功能键定义sbit key4

47、=P11;/增大键定义sbit key5=P12;/减小键定义uchar shi,fen,miao,year,month,day,week;uchar flag,s1num;uint temp; float f_temp;uint i;uint d;uchar code table2=0x20,0x20,0x2e,0x20,0xdf,0x43;uchar code table="20 - - "uchar code table1=" : : "void delay(uint z)/延时1msuint x,y;for(x=z;x>0;x-)for(y

48、=110;y>0;y-);void write_com(uchar com)/1602写命令lcdrs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)/1602写数据lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void dsreset(void) /DS18B20,初始化函数uint i;ds=0;i=103;while(i>0)i-;ds=1;i=4;while(i>0)i-;bit tempr

49、eadbit(void)/读1位数据函数uint i;bit dat;ds=0;i+;ds=1;i+;i+;/i+起到延时作用dat=ds;i=8;while(i>0)i-;return(dat);uchar tempread(void) /读一个字节数据函数uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tempreadbit();dat=(j<<7)|(dat>>1);return(dat);void tempwritebyte(uchar dat) /向DS18B20写一个字节数据函数uint i;uchar j;bit t

50、estb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb)/写1ds=0;i+;i+;ds=1;i=8;while(i>0)i-;elseds=0; /写0i=8;while(i>0)i-;ds=1;i+;i+;void tempchange(void) /DS18B20开始获取温度并转换dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0x44);uint get_temp() /获取温度uchar a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread(); /读高8位b=tempread(); /读低8位temp=b;temp<<=8; /两个字节组合成1个字节temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;f_temp=f_temp

温馨提示

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

评论

0/150

提交评论