基于单片机的万年历课程设计说明书.doc_第1页
基于单片机的万年历课程设计说明书.doc_第2页
基于单片机的万年历课程设计说明书.doc_第3页
基于单片机的万年历课程设计说明书.doc_第4页
基于单片机的万年历课程设计说明书.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

郑州工业应用技术学院课程设计说明书题目:基于单片机控制的电子万年历设计姓 名: 许颖福 院 (系): 机电工程学院 专业班级: 13电气工程1班 学 号: 1302120118 指导教师: 祁瑞敏、杨坤漓 成 绩: 时间: 2015 年 12月 21 日至 2015 年 12 月 30 日郑州工业应用技术学院课程设计任务书题 目: 基于单片机控制的电子万年历设计 专业、班级 13电气工程1班 学号 1302120118 姓名 许颖福 主要内容、基本要求、主要参考资料等:主要内容:设计一个基于单片机的电子万年历,能够显示时间、日期、温度等信息。并且具备调整时间、日期、定时等功能。基本要求:1.利用单片机、时钟芯片、温度传感器、显示模块等实现日期、时间、温度的显示即一个简单的万年历;2.万年历的设计是几个简单模块的组合,硬件上是这样,软件上也是这样,要熟悉相关模块的设计思路;3.通过Proteus仿真设计的使用,完成万年历的设计与仿真;4.通过万年历的设计熟练掌握单片机的各个功能,并且能对单片机有一个总体的把握,在设计的过程中能够凭借对单片机各功能的了解,达到理想的设计效果;5.通过该设计掌握时钟芯片DS1302、温度传感器DS18B20和LCD1602等芯片的使用方法。主要参考资料:1李全利,单片机原理及接口技术M,高等教育出版社2王文杰,单片机应用技术M,冶金工业出版社3朱清慧,PROTEUS教程电子线路设计、制版与仿真M,清华大学出版社4单片机实验指导书,天煌教仪5彭伟,单片机C语言程序设计实训100例M,电子工业出版社完 成 期 限: 指导教师签名: 课程负责人签名: 年 月 日摘要电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间技术,还能够对日期、温度、湿度等进行显示,所以在现代社会受到广泛应用。本设计是一个基于AT89C52单片机的多功能日历显示设计,能够显示公历年、 月、日,以及时、分、秒、温度等信息,而且还具有日期调整、时间校准以及温度采集等功能。设计所用的时钟日历芯片 DS1302 和数字式温度传感器 DS18B20 具有高性能、低功耗、接口简单的特点,使本设计电路简化,编程方便,同时功能也很强。采用AT89C52单片机的万年历设计可以很好的改善传统采用模拟电路引起的计时不准确不可靠,一致性差等问题。 本设计是用单片机为主控制, 通过电路仿真而实现的。在 Proteus7软件绘制硬件电路原理图,用 Keil 软件进行编程与调试,最终生成 hex 文件,载入单片机,从而实现仿真效果。关键词: 万年历、单片机、DS1302、DS18B20目 录1.绪论11.1 研究的目的和意义11.2 本设计主要研究内容12.总体设计22.1 设计基本方案与论证22.1.1 控制部分的选择方案与论证22.1.2 显示部分的选择方案与论证22.1.3 时钟部分的选择方案与论证22.1.4 温度部分的选择方案与论证22.1.5 电路设计最终方案32.2 设计原理及总体结构图33.设计主要硬件设计43.1单片机主控模块43.1.1 AT89C52芯片简介43.1.2 封装和引脚说明43.2 液晶显示模块63.2.1 LCD1602模块简介63.2.2 LCD1602的控制指令及操作流程63.3 时钟电路及复位电路93.3.1 时钟电路93.3.2 复位电路93.4 按键电路103.5 时钟模块103.5.1 DS1302的基本组成和工作原理113.5.2 DS1302内部寄存器113.6 温度模块123.6.1 DS18B20的性能123.6.2 DS18B2的电路设计123.7 其他模块143.7.1 倒计时模块143.7.2 指示灯模块143.8 设计电路图154.设计软件设计154.1 设计程序流程图154.2 设计程序编写155.仿真调试166.测试结果分析18结论18致谢18参考文献19附件20附件211.绪论人类的日常生活离不开时间,任何具有周期变化的自然现象都可用来测量时间。而现在人们日常生活中广泛使用的是机械表、电子表、电子中等。随着科技的发展,电子技术和计算机应用领域不断扩大,特别是单片机的出现,是近代计算机技术发展史上的一个重要里程碑 基于单片机的万年历结合了时钟和日立的功能,将其二者融为一体,在现实时间的同时还能显示日期和年月,它主要通过单片机来读取时钟芯片的时间、日期,然后送给显示设备显示出来。本设计的万年历除了显示年月日外还能准确显示温度它所处环境的温度。本设计采用的测温元件是美国 DALLAS 半导体公司生产的一种智能温度传感器DS18B21,测温范围为-55125C,最高分辨率达到 0.0625C。1.1 研究的目的和意义 随着电子技术的迅速发展,特别是大规模集成电路出现,给人类生活带来了根本性的变化,尤其是单片机技术的应用产品已经走进了千家万户。近年来,我国科技不断发展,我国经济发展的支柱产业电子产业获得长足发展,各种电子产品琳琅满目,随处可见,随着电子产品的更新速度的加快,各种功能强大,款式新颖的电子产品不断问世。万年历便是这一发展趋势中的代表,万年历则顺应了人们对时间方面的要求。它的出现给人们的生活带来的诸多方便,在时间极显宝贵的现代生活中,起作用更是不言而喻的。他在学校、车站、码头、剧院、医院、办公室等公共场所的应用非常广泛。但传统的万年历除了显示时间之外,功能较为单一,逐渐失去了市场。顺应技术发展和人们生产生活需求,各种功能的新式万年历不断涌现,且功能不断更新。万年历作为电子类的小产品以其方便、实用等优势成为市场上的宠儿,同时也成为单片机设计培训中一个很实用的课题。因为这个课题有很好的开发性和可发挥性,因此对设计者的要求比较高,不仅考察了队单片机的掌握能力更加强调了对单片机扩展的应用。而且要求设计的万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。所以万年历不论从实用角度还是培养能力角度都很有价值。 1.2 本设计主要研究内容 本设计的主要研究内容是: (1) 选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、 抗断电的器件。 (2) 根据选用的电子万年历芯片设计外围电路和单片机的接口电路。 (3) 在硬件设计时,结构要尽量简单实用,易于实现,是设计电路尽量简单。 (4) 根据硬件电路,编写控制 AT89C51 芯片的单片机程序。 (5) 通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。2.总体设计2.1 设计基本方案与论证 2.1.1 控制部分的选择方案与论证 方案一: 用可编程逻辑器件设计可采用 PLD 器件,设计起来结构清晰,各个模块 从硬件上设计起来相对简单,控制与显示的模块间连接也会比较方便。但是考虑到本设计的特点,EDA 在能够扩展上比较受局限,占用的资源也多。从成本上讲,可编程逻辑器件价格比较高。 方案二: 用单片机设计用AT89C52单片机芯片作为控制部分,单片机有丰富的中断源,它的准确度相当高,并且 C 语言的灵活运用,给编程带来了方便。单片机I/O功能也比较强大,容易对其进行扩展,使设计更加完善,此外单片机的成本也比较低。综上所述,AT89C52资源丰富,程序编写也灵活简单,可移植性强,性价比也高,所以选择AT89C52作为主控芯片。2.1.2 显示部分的选择方案与论证 方案一: 采用点阵式数码管显示 点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,但是基于电子万年历主要是显示数字,就显得太浪费了,且价格相对较高。 方案二: 采用 LCD 液晶显示屏 LCD 液晶显示屏的显示功能特别强大,可以显示大量文字、 图形,显示多样清晰可见,使得万年历的内容更加丰富,加上动态显示效果, 更加吸引观众的眼球。 2.1.3 时钟部分的选择方案与论证 方案一: 直接采用单片机定时计数器直接采用单片机定时计数器提供时间单位秒,使 用程序实现年、月、日、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现时间误差较大,而且不具有实时性,必须用到断电存贮资料,否则一断电,时钟就不会准确,误差太大。 方案二: 采用 DS1302 时钟芯片实现时钟 DS1302 时钟芯片是一种高性能的时钟芯片, 可自动对秒、时、分、日、月、年以及闰年补偿的年进行计数,而且精度高的 RAM 作为数据暂存区,工作电压 2.5V5.5V 范围内,2.5V 时耗电小于 300mA。此外可以外接电池,具有实时性,断电后时间还会走,比较精准。 2.1.4 温度部分的选择方案与论证 方案一: 使用热敏电阻作为传感器 用热敏电阻与一个相应该阻值相串联分压,用热敏电阻随温度变化的特性,采集这两个电阻变化的分压值,并用 A/D 转换。此设计方案需用 A/D 转换电路,增加硬件成本而且热敏电阻的温性曲线并不是严格线性的,会产生较大测量误差。 方案二: 采用数字式温度传感器DS18B20此类传感器为数字式传感器,而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除 A/D 模块,降低硬件成本, 简化设计电路,测量温度精度高。 2.1.5 电路设计最终方案 本设计包括主控模块,显示模块,时钟模块,温度采集模块,综上各方案所述,电路设计最终方案:采用AT89C52作为主控制设计,12864LCD 液晶作为显示部分,DS1302 作为时钟模块,DS18B20传感器来采集温度信息。 2.2 设计原理及总体结构图 根据上述电路设计最终方案,设计总体设计方案如下: 设计的电路主要由四大模块构成:温度传感器电路,单片机控制电路,显示电路以及校正电路。 当温度传感器接受到外面的信号,送入单片机,单片机将接受到的信号输出,让它在液晶上显示。 同时由单片机控制的万年历以及时间显示,当时间及秒计数计满 60 时就向分进位, 分计数器计满60分后向时计数器进位,小时计数器按“24 翻 1”规律计数。时、分、 秒的计数结果经过数据处理可直接送显示器显示。当计时发生误差的时候可以用校时电路进行校正。时计数器计满 24小时后自动向日计数器进一,日计数器由平年、闰年的 28/30/31对大、小月和二月的判断应与当月相应的日期相一致,当日计数器计满时, 向月计数器进位,月计数器计满12月向年计数器进位,当年计数器计满 100 时所以计数器清零。设计采用的是年、月、日和时、分、秒显示,所以在单片机通过对数据处理进行同时在液晶上显示。图2.1 设计总统框图3.设计主要硬件设计3.1单片机主控模块3.1.1 AT89C52芯片简介单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。ATMEL公司生产的AT89C52单片机采用高性能的静态80C51设计,并采用先进工艺制造,还带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。8KB Flash ROM,可以擦除1000次以上,数据保存10年。其主要特点如下:256字节内部RAM;电源控制模式;时钟可停止和恢复;空闲模式;掉电模式;6个中断源;4个中断优先级;4个8位I/O口;全双工增强型TUAR;3个16位定时/计数器:T0、T1、T2全静态工作方式:024MHZ3.1.2 封装和引脚说明AT89C52单片机为双列直插式(DIP)芯片,是最常用的有总线扩展引脚的DIP40封装。如图3.1所示。(1)电源及时钟引脚Vcc:接入电源Vss:接地XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接晶振和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。(2)控制线引脚RST:RST是复位信号输入端。ALE/PROG:地址锁存允许信号输入端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是作为编程脉冲输入端。PSEN:程序存储器允许输出端。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。EA/Vpp:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。(3)并行I/O引脚P0.0P0.7:P0口为8位双向I/O口或地位地址/数据总线复用引脚。P1.0P1.7:P1口为8位双向I/O口。P2.0P2.7:P2口为8位双向I/O口或高位地址总线引脚。P3.0P3.7:P3口为8位双向I/O口或第二功能引脚。P3口也可以作为一些特殊功能口,如表3.1所示。图3.1 AT89C52单片机引脚封装表3.1 P3特殊功能口口管脚备选功能P3.0 /RXD串行输入口P3.1 /TXD串行输出口P3.2 /INT0外部中断0P3.3 /INT1外部中断1P3.4 /T0记时器0外部输入P3.5 /T1记时器1外部输入P3.6 /WR外部数据存储器写选通P3.7 /RD外部数据存储器读选通3.2 液晶显示模块液晶显示模块由于具有低功耗、寿命长、体积小、显示内容丰富,价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。字符型液晶显示模块是一类专用于显示字母、 数字、 符号等点阵式液晶显示模块。针对目前电子万年历常采用LED作为显示电路,造成硬件电路复杂、功耗高、产品体积庞大等特点;本设计设计采用字符型液晶显示模块1602作为显示器件,这样不仅简化了电路的硬件设计,而且极大地提高了设计的可靠性。3.2.1 LCD1602模块简介LCD1602可以显示2行16个字符,具有8位数据总线D0-D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光设置。下面(图3.2)就是LCD1602液晶模块的正面和反面照片。图3.2 LCD1602液晶模块引脚介绍如下:第1脚:VSS为电源地,接GND。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写控制信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能信号端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:BLA背光电源正极(+5V)输入引脚。第16脚:BLK背光电源负极,接GND。3.2.2 LCD1602的控制指令及操作流程1602液晶模块内部的控制器共有11条控制指令,控制命令如表3.2所示。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(1为高电平、0为低电平)表3.2 控制命令序号指令RSRWD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001*3输入模式00000001I/DS4显示模式0000001DCB5光标/字符移位000001S/CR/L*6功能设置00001DLNF*7CGRAM地址设置0001CGRAM地址8DDRAM地址设置001DDRAM地址9读忙标志和地址01BF计数器地址10写DDRAM或CGR0M10要写的数据11写DDRAM或CGR0M11读出的数据指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令 DL:高电平时4位总线,低电平为8位总线 N:低电平为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据指令11:读数据 LCD1602可以在8根I/O线上读写数据,因此LCD的控制器接口有严格的通信协议来保证读写数据传输的正确性和完整性。1602字符LCD基本操作有以下四种:1. 读状态:输入信号:RS=0,RW=1,E=1 输出信号:D0D7=状态字2. 读数据:输入信号:RS=1,RW=1,E=1 输出信号:D0D7=数据3. 写指令:输入信号:RS=0,RW=0,E=1-0 输出信号:D0D7=指令4. 写数据:输入信号:RS=1,RW=0,E=1-0 输出信号:D0D7=数据其读写信号的操作时序如图3.3所示。图3.3 LCD1602的基本操作流程如图3.4所示为LCD1602液晶和单片机的连接电路图图3.4 LCD1602电路图3.3 时钟电路及复位电路3.3.1 时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机设计的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。图3.5 内部时钟方式本文用的是内部时钟方式(如图2.5所示)。内部时钟方式只要在单片机的XTAL1和XTAL2引脚外接即可。图中电容C1和C2的作用是稳定频率和快速起振,电容值为530pF,典型值为30pF。晶振CYS的振荡频率要小于12MHz,典型值为6MHz,12MHz或11.0592MHz。3.3.2 复位电路如图3.6所示为复位电路原理图,复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序,并使其它功能单元处于一个确定的初始状态。本复位电路采用的是按键复位,它是通过复位端经电阻与VCC电源接通而实现的,它兼具上电复位功能。因本设计的晶振的频率为12MHz,所以,复位信号持续时间应当超过2S才能完成复位操作。图3.6 单片机复位电路3.4 按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。它是整个设计中最简单的部分,根据功能要求,本设计共需五个按键:功能总控键、功能移位键、数字加键、数字减键、倒计时键(如图3.7所示)。分别命名为KEY1、KEY2、KEY3、KEY4、KEY5。P3.0口表示功能总控键,按键选择要调整模式。P3.1口表示功能移位键,按键选择年月日时分秒。P3.2口表示数字“+“键,按一下则对应的数字加1。P3.3口表示数字“-”键,按一下则对应的数字减1。P3.4口表示倒计时键,按下进入30s倒计时模式,再次按下退出。图3.7 按键电路3.5 时钟模块DS1302是DALLAS公司推出的涓流充电时钟芯片 内含有一个实时时钟/日历和 31 字节静态 RAM 通过简单的串行接口与单片机进行通信 实时时钟/日历电路提供秒、分、时、日、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线 1 RES 复位 2 I/O 数据线 3 SCLK 串行时钟 时钟/RAM 的读/写数据以一个字节或多达 31 个字节的字符组方式通信 DS1302 工作时功耗很低保持数据和时钟信息时功率小于 1 mW DS1302 是由 DS1202 改进而来 增加了以下的特性 双电源管脚用于主电源和备份电源供应 Vcc1 为可编程涓流充电电源 附加七个字节存储器 它广泛应用于电话 传真 便携式仪器以及电池供电的仪器仪表等产品领域 下面将主要的性能指标作一综合。l 31*8位暂存数据存储 RAM l 串行I/O口方式使得管脚数少l 宽范围工作电压2.0-5.5V l 工作电流2.0V时,小于300nAl 8 脚DIP封装l 简单3线接口 l 与TTL兼容Vcc=5V l 可选工业级温度范围-40-+85l 与DS1202兼容3.5.1 DS1302的基本组成和工作原理DS1302的管脚排列及描述如下图及表所示管脚描述 管脚配置 X1X232.768KHz 晶振管脚 GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚3.5.2 DS1302内部寄存器CH: 时钟停止位寄存器2的第7位12/24小时标志CH=0振荡器工作允许bit7=1,12小时模式CH=1振荡器停止bit7=0,24小时模式WP: 写保护位寄存器2的第5位:AM/PM 定义WP=0寄存器数据能够写入AP=1 下午模式WP=1寄存器数据不能写入AP=0 上午模式TCS: 涓流充电选择 DS: 二极管选择位TCS=1010 使能涓流充电 DS=01选择一个二极管 TCS=其它 禁止涓流充电 DS=10 选择两个二极管DS=00 或 11, 即使 TCS=1010, 充电功能也被禁止DS1302电路图如图3.8所示图3.8 DS1302电路连接图3.6 温度模块采用数字式温度传感器 DS18B20,有 DALLAS 半导体公司生产的 DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事领域的温度测量及控制仪器、测量设计和大型设备中。 3.6.1 DS18B20的性能性能特点可归纳如下: 1) 独特的单线接口仅需一个端口引脚进行通信; 2) DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网多点测温;3) DS18B20 在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内;4) 测温范围55125,在-10+85时精度为0. 5; 5) 可编程的分辨率为 912 位, 对应的可分辨温度分别为 0. 5、 0. 25、0. 125和 0. 0625,可实现高精度测温; 6) 在 9 位分辨率时最多在 93. 75ms 内把温度转换为数字,12 位分辨率时最多在 750ms 内把温度值转换为数字,速度更快;7) 测量结果直接输出数字温度信号,以一 线总线串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力; 8) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 3.6.2 DS18B2的电路设计 采用数字式温度传感器 DS18B20, 它是数字式温度传感器,具有测量精度高, 电路连接简单等特点, 此类传感器仅需要一条数据线进行数据传输, 使用AT89C51 单片机芯片的 P2. 7 端口与 DS18B20 的 I/O 口连接, 加一个上拉电阻, Vcc 接电源, Vss 接地。图 3.9 DS18B20电路图DS18B2的工作时序 1)复位时序图图 3.10 复位时序图2)读时序图 图 3.11 读时序图3)写时序图 图 3.12 写时序图3.7 其他模块本设计还添加了倒计时模式以及指示灯模式3.7.1 倒计时模块该模块设有一个独立的按键KEY5,第一次按下时进入30s倒计时模式并在LCD液晶屏上显示“daoshi”字样提示。当倒计时为0时,单片机控制发声单元(单片机控制的扬声器)发声,直到再次按下该键时退出。当然在倒计时过程中可以随时按下KEY5的退出。3.7.2 指示灯模块 本设计设有三个LCD指示灯分别为电源指示灯D1,运行指示灯D2,按键指示灯D3。3.8 设计电路图可调电子万年历的设计电路图请见附件。4.设计软件设计4.1 设计程序流程图用51单片机(AT89C52)通过程序控制来产生时间信号,利用P0端口使之显示于LCD1602液晶显示屏上,程序开始进行标识位初始化,对时钟单元进行初始化,开始读取时间信息,通过读取程序,液晶显示器显示时间,当有按键按下时进行键值的处理,没有按键按下时则程序重新读取时间信息。设计程序流程图如图4.1所示。图4.1设计程序流程图 4.2 设计程序编写电子万年历程序清单请见附件。5.仿真调试完成了硬件的设计、制作和软件编程之后,要使设计能够按设计思路正常运行,必须进行设计调试。设计调试包括硬件调试和软件调试两个部分。不过,作为一个单片机设计,正常运行是硬件设计和软件设计相结合的,因此,硬件、软件设计的调试是紧密相关,二者是相辅相成的。Proteus软件主要由两个模块组成:ARES和ISIS。前者主要用于PCB自动或人工布线;后者主要绘制电路原理图,并可进行相应的仿真。作为一款EDA仿真软件,Proteus有着丰富的元件库。各种动态元件(基本元件如电阻、电容、各种二极管、三极管、MOS管、555定时器等;74系列TTL元件和4000系列CMOS元件;存储芯片包括各种常用的ROM、RAM、EEPROM件等)。此外该软件还支持微处理器的仿真(支持许多通用的微控制器,如PIC系列、AVR系列、8051系列等;同时它还支持ARM、PLD及各种外围芯片的仿真),并能与常用的编译器,如Keil、IAR、Proton等进行协同调试。Proteus应用于单片机应用设计的仿真设计后,改变了单片机应用设计的传统的学习和研发过程,降低了单片机原理及应用学习的门槛,并开辟了一条“提出设计方案一仿真设计一实物设计一检测调试一最终产品”的产品研发途径,大大缩短了开发周期,提高了产品开发的成功率。Proteus和Keil C51整合构建单片机实验仿真环境,过程如下:(1)首先,用Proteus ISIS绘制电子万年历设计的电路原理图(如图5.1);图5.1 Proteus绘制的电路仿真图(2)其次,用Keill C51编写程序,编译无误后生成HEX文件(如图5.2)图5.2 Keill 4 编写程序的情况(3)再次,在Proteus ISIS中将HEX文件“下载”到AT89C52芯片中,其方法是鼠标右击AT89C52,然后左击,出现相应元件属性对话框,在该对话框“Program File”一项中选择要加入的HEX文件;(4)最后,点击Proteus ISIS窗口下方的Play键可以观察到电路仿真结果(如图5.3)。图 5.36.测试结果分析(1)在测试中遇到发光二极管、液晶为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏. (2)显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。结论本设计从理论到实际应用,用AT89C52单片机与LCD1602液晶模块等一些电路的组合,成功的设计出了一个可调数字电子万年历。在软件设计的过程中,利用了Keil这个软件在程序录入和调试的时候的优越性,让我能够在编写程序的时候很方便的发现程序中的错误,对于PROTEUS这款软件,也能熟练掌握电路设计仿真。最后所设计的可调电子万年历设计也按当初要求的能够在PROTEUS中进行仿真,并且能够很精确的显示时间。由于平时没有接触过单片机的实物调试,对单片机程序烧写未能熟练掌握加上毕业设计的时间有限,所以对于他们的硬件连接调试没有成功,但以后有机会的话会再好好学习的。通过这次的设计使我认识到我对单片机方面的知识知道的太少了,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子万年历设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。致谢毕业设计的完成,为我的大学学习生活画下了最后一笔。应该感谢的人很多,首先感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。在做论文设计的日子里得到了指导教师的悉心指导,在此向我的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学给了我很多无私的帮助和支持,我在此深表谢意。参考文献1李全利,单片机原理及接口技术M,高等教育出版社,20052王文杰,单片机应用技术M,冶金工业出版社,20084单片机实验指导书,天煌教仪,20045彭伟,单片机C语言程序设计实训100例M,电子工业出版社,20046王萍电子技术实验教程机械工业出版社,2005 7李光飞.单片机课程设计实例指导,北京:北京航空航天大学出版社. 20048朱定华,戴汝平单片微机原理与应用M清华大学出版社,2003 9胡汉才.单片机原理与接口技术M清华大学出版社,2004 附件附件/* 延时函数头文件*/#ifndef _Delay_H_#define _Delay_H_#include #define uchar unsigned char#define uint unsigned int/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms() unsigned char i,j;for(i=0;i4;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒*/ void delaynms(unsigned char n) unsigned char i;for(i=0;i0;t-);/* 精准延时 1s */void delay1s(void) unsigned char h,i,j,k; for(h=5;h0;h-) for(i=4;i0;i-) for(j=116;j0;j-) for(k=214;k0;k-);#endif/* 以下是DS18B20的操作程序 * */#ifndef _ds18b20_H_#define _ds18b20_H_#include /包含_nop_()函数定义的头文件#includeDelay.hsbit DQ=P21;unsigned char time; /设置全局变量,专门用于严格延时/*18B20复位函数*/void ow_reset(void)char presence=1;while(presence)while(presence)DQ=1;_nop_();_nop_();DQ=0; /delay(50); / 550usDQ=1; / delay(6); / 66uspresence=DQ; / presence=0继续下一步delay(45); /延时500uspresence = DQ; Q=1; /* 18B20写命令函数 */void write_byte(uchar val) /向 1-WIRE 总线上写一个字节uchar i;for (i=8; i0; i-) /DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ = 1;delay(1); /* 18B20读1个字节函数 */uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(6); /66usDQ=1;return(value);/*DS18B20 做好读温度的准备*/ void ReadyReadTemp(void) ow_reset(); /将DS18B20初始化write_byte(0xCC); / 跳过读序号列号的操作write_byte(0x44); / 启动温度转换 delaynms(50); /转换一次需要延时一段时间 典型值为 200msow_reset(); /将DS18B20初始化write_byte(0xCC); /跳过读序号列号的操作write_byte(0xBE); /读取温度寄存器,前两个分别是温度的低位和高位#endif/* DS1302时钟芯片*/#ifndef _DS1302_H_#define _DS1302_H_#define uchar unsigned charsbit ACC_7= ACC7;sbit SCLK = P22; / DS1302时钟信号 7脚sbit DIO= P23; / DS1302数据信号 6脚sbit CE = P24; / DS1302片选 5脚/地址、数据发送子程序void Write1302 ( unsigned char addr,dat ) unsigned char i,temp;CE=0; /CE引脚为低,数据传送中止SCLK=0; /清零时钟总线CE = 1; /CE引脚为高,逻辑控制有效for ( i=8; i0; i- ) /循环8次移位 SCLK = 0;temp = addr;DIO = (bit)(temp&0x01); /每次传输低字节addr = 1; /右移一位SCLK = 1;for ( i=8; i0; i- ) SCLK = 0; temp = dat; DIO = (bit)(temp&0x01); dat = 1; SCLK = 1;SCLK=1;CE = 0; /数据读取子程序unsigned char Read1302 ( unsigned char addr ) unsigned char i,temp,dat; CE=0; SCLK=0; CE = 1; /发送地址 for ( i=8; i0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr = 1; /右移一位 SCLK = 1; for ( i=8; i0; i- ) ACC_7=DIO; SCLK = 1; ACC=1; SCLK = 0; CLK=1; CE=0; dat=ACC; re

温馨提示

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

评论

0/150

提交评论