




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*职业技术学院毕业论文课题:基于AT89C51电子万年历的 设计与仿真 专 业 学生姓名 班 级 学 号 指导教师 完成日期 摘 要本文提出了一种基于AT89C51单片机的万年历设计方案,该方案以AT89C51单片机作为主控核心,与时钟芯片DS1302、DS18B20温度传感器、按键、LCD显示等模块组成硬件系统。在硬件系统中设有5个独立按键和一个LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势具有广阔的市场前景。AbstractIn this paper, a calendar is designed based on AT89C51 MCU.The proposal uses a single-chip microcomputer AT89C51 as the Master Control chip. The hardware system makes up of the clock chip DS1302, temperature sensor DS18B20, buttons, LCD display modules. Hardware system has five independent buttons and a LCD display, which can display a wealth of information. In accordance with the needs of users, time can be calibrated at any time, chosen the time and so on. To sum up this calendar has some advantages, for example easy to read, showing intuitive, feature-rich, circuit simplicity, low cost. In line with the electronic instrumentation of the development trend, the calendar has the broad market prospects. 目 录摘 要IAbstractI目 录II第一章 绪论11.1 课题的背景11.2 电子万年历的应用11.3 技术指标和要求1第二章 总体方案22.1 系统基本方案选择和论证22.2 系统设计结构图4第三章 硬件设计53.1 系统硬件概述53.2 系统的模块电路设计53.3 总硬件设计13第四章 软件设计144.1 软件设计方案144.2 各模块分析14第五章 系统调试205.1 硬件调试205.2 软件仿真联调265.3 功能仿真效果285.4 调试心得31第六章 结论与展望32致 谢33参考资料34附录:电子万年历原理图仿真图35附录:电子万年历原理图36附录:元件清单37附录:源程序清单38第一章 绪论1.1 课题的背景在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能计时功能,只是工作原理不同而已,在人们的使用过程中逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了极大的方便。走入家庭,从洗衣机、微波炉到音响、汽车,到处都可以见到单片机应用的踪影。如果说微型计算机技术的出现使现代科学研究得到了质的飞跃,那么也可以毫不夸张的说:“单片机技术的出现则是给现代工业测控领域带来了一次新的工业革命”。因此,单片机技术的开发和应用水平已经逐步成为一个国家自动化发展水平的标志之一。 万年历是采用数字电路实现对时、分、秒数字显示的计时装置, 随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它们可以对年、月、日、周日、时、分、秒进行计时,还具有润年补偿等功能,且使用寿命长、误差小、使用方便,电子万年历的出现给人们的生活带来的诸多方便。目前,国际上的电子万年历正从模拟模式向数字式、由集成化向智能化的方向飞速发展。1.2 电子万年历的应用电子万年历广泛用于个人家庭,车站,码头办公室等公共场所,成为人们常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。1.3 技术指标和要求1、设计具有年、月、日、时、分、秒等功能;2、使用按键开关可实现日期和时间的调整;3、具备年、月、日、时、分、秒校准功能;4、具有温度的实时显示的调整的功能。5、具有闹钟功能;第二章 总体方案本章重点主要是从系统结构图来阐述了硬件的设计,以及从方案上对比选择各个电路部分的元件,目的是使系统达到一个低成本、高质量、稳定可靠的设计。2.1 系统基本方案选择和论证 1. 主控制器的选择 方案一:采用CPLD作为主控制器控制外围电路进行,时钟控制、温度测量、键盘和LED控制、闹钟实现。此方案逻辑电路复杂,功耗高,灵活性较低。而且采用CPLD价格较贵。方案二:采用中小规模集成电路实现组合逻辑与时序逻辑电路设计,用振荡器产生的稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。进而得到分和小时,计数器的输出经译码器送显示器。此方案能实现数字钟的基本功能,但其他扩展功能的实现非常有限。方案三:采用51系列单片机来实现。目前单片机技术比较成熟,功能也比较强大。硬件电路主要由微处理控制器单元、键盘控制模块、时钟模块、温度传感器模块、液晶显示模块等模块构成。由于AT89C51单片机片内有4K字节的在线编程Flash存储器,可以擦写1000次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。从这三种电路设计方案的比较而言,利用单片微型计算机及外围电路编写软件程序来设计万年历,简单灵活,而且可扩展各种功能,能完全达到设计要求,体现了现代计算机工具的方便、简捷、准确性。综上所述,选用AT89C51单片机作为电子万年历芯片的控制单片机。 2.显示模块选择方案和论证方案一:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高。方案二:采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍。方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于电子万年历而言,一个1602的液晶屏即可,价格也还能接受,需要的接口线较多,但会给调试带来诸多方便。本次电子万年历设计需要显示的参数多,数码管需要的数量较多,综合性价比,所以采用了LCD液晶显示屏。3.时钟芯片的选择方案和论证方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大。方案二:采用DS1302时钟芯片实现时钟,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。本次设计在时间显示方面需要尽可能的减少误差,与现实时间同步,所以在时钟方面选用了DS1302芯片。4.温度传感器的选择方案与论证方案一: 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二: 采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。本设计为尽可能的减少误差,所以采用DS18B20温度传感器作为温度采集模块。5.电路设计最终方案决定综上各模块的选择方案与论证,确定最后的主要硬件资源如下:采用AT89C51作为主控制系统;DS1302提供时钟;DS18B20作为数字式温度传感器;LCD1602液晶屏作为显示。 2.2 系统设计结构图根据系统设计的要求和设计思路,确定该系统的系统设计结构图。如图2-1所示。硬件电路主要由主控制器、键盘控制模块、温度传采集模块、DS1302时钟模块、液晶显示模块构成。 图2-1 系统结构设计图 第三章 硬件设计3.1 系统硬件概述本电路是由AT89C51单片机作为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒等进行计时,具有闰年补偿功能,工作电压为2.5V-5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个用于临时存放数据的RAM寄存器。可产生年、月、日、时、分、秒等,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成,显示部分为LCD液晶显示屏,能够实现字符与数字同时显示的功能。3.2 系统的模块电路设计3.2.1单片机最小应用系统电路 单片机系统是整个硬件系统的核心,它即协调整机工作,又是数据处理器,是软硬件系统连接的桥梁,AT89C51是一个低电压,高性能CMOS 8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。因此,我们选用AT89C51单片机来满足我们程序的要求。单片机最小应用系统电路包括以下的两个部分:时钟电路和复位电路。如图3-1所示。 1、 时钟电路 单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。2、 复位电路 为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图3-1单片机最小应用系统电路3.2.2 DS1302时钟模块设计1. DS1302性能特性介绍 DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。2. DS1302引脚介绍图3-2 DS1302实物图实物图如图3-2所示,各引脚的功能为:8 脚Vcc1:备用电池端;1脚Vcc2:5V电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。7脚 SCLK:串行时钟,输入; 6脚I/O:数据输入输出口;5脚CE/RST:复位脚2脚3脚:X1、X2 是外接晶振脚(32.768KHZ的晶振)4脚地(GND)3. 电路原理 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。 DS1302的控制字节DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。表3-1 DS1302的控制字格式1RAM/CKA4A3A2A1A0RD/WR数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图3-3所示。图3-3 DS1302读/写时序图DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。实际上,在调试程序时可以不加电容器,只加一个晶振即可。如图3-4所示。图3-4 DS1302与单片机的接线图3.2.3温度采集模块1. DS18B202性能特性介绍本设计中在温度模块中采用的是DS18B20温度传感器。DS18B20是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源 测量温度范围为-55度至+125度。-10度至+85度范围内精度为0.5度温度传感器可编程的分辨率为912位。2. DS1302引脚介绍表 3-2 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VCC电源,输入电压为35.5V图3-5 DS18B20实物图 3. DS18B20温度数据对应关系DS18B20是单总线接口的数字温度传感器,MSC-51通过串口将数据和指令写入或读出。该芯片的温度测量范围是55125,转换完的数据通过两字节输出,对应关系如下表所示:表3-3温度与两字节数据对应关系温度数字输出(二进制)数字输入(十六进制)+1250000 0111 1101000007D0H850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FF6FH-551111 1100 1001 0000FC90H4. DS18B20的测温原理图3-6 DS18B20的测温原理传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。此电路连接简单,DS18B20采用电源供电方式,如图3-7所示,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源,I/O口接单片P0.3口。 图3-7 DS18B20温度传感器数据采集电路3.2.4独立式键盘设计实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。在本系统中我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,键数目较多,可节省口线。本设计采用的是独立式键盘。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。由于单片机在正常应用过程中可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态, 在进行本次设计中,只涉及到了切换、设置、上调、下调、闹钟五个功能。因此采用独立式键盘。如下图3-8所示。图3-8 按键的设计3.2.5 显示模块的设计本设计中由于要对时间、温度进行显示所以选择液晶显示屏1602模块作为输出。如图3-9所示。图3-9 LCD 1602实物图1LCD1602 主要技术参数显示容量:162 个字符 芯片工作电压:4.55.5V工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm 2引脚功能说明 LCD 1602采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如下表所示。表3-4引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极LCD1602主要管脚介绍:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址;当RS为高电平R/W 为低电平时可以写入数据。E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。将LCD1602的RS端和P0.0,R/W端和P0.1, E 端和P0.2相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。图3-10为1602液晶显示屏与单片机的硬件连接图。图3-10 1602液晶显示屏与单片机的硬件连接图3.3 总硬件设计本章主要介绍了系统硬件设计,其中对时钟芯片DS1302、1602液晶显示屏、DS18B20温度传感器和AT89C51最小系统的设计做了详细阐述。此外还介绍了各模块和单片机的连接方法、其特性及电路原理最后确定系统的整体硬件设计方案。图3-11 总硬件设计电路图第四章 软件设计4.1 软件设计方案软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。电子万年历的程序主要包括3个方面的内容:一是DS1302从单片机中读取数据进行计数,二是利用按键进行时间和温度的调整,三是LCD从单片机中读取数据显示时间和温度。4.2 各模块分析1.主函数主函数是整个程序运行的开始,主函数的内容并不复杂,就是不断的循环调用子函数,把各个子函数的功能均实现,最后主函数实现的功能就是我们设计、万年历的要求和目的。主程序流程图如下图4-1所示。由于LCD1602,DS18B20,DS1302的数据读取及指令写入函数均已在各自的头文件中完成,在主程序中只须引用即可。主函数是软件设计的核心,它是把各个模块函数连接起来的桥梁。把各个功能通过模块在主函数里实现。图4-1主程序流程图流程图分析:首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间、温度等数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。2.DS1302时钟模块时钟流程图如图4-2所示。流程图分析:DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;若没有按键按下,则直接存入EPROM,送入液晶屏显示。图4-2时钟流程图3.温度采集模块温度采集流程图如图4-3所示。流程图分析:开始进入初始化DS18B20,就是通过主线拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令,当成功的执行操作命令后,就开始进行温度转换,当转换完成后又开始初始化DS18B20是否有应答脉冲,若有就发起命令,即能同时读出数据。图4-3温度采集流程图4.LCD显示模块显示程序流程图如图4-4。流程图分析:首先对1602显示屏进行初始化(初始化大约持续10ms左右),然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。图4-4显示程序流程图3.键盘模块键盘模块流程图如图4-5。在这里采用是独立式按键,按键扫描其实很简单,也就是按键消抖,只需三步,一步是判断按键按下,是哪个按键按下;二步是延时,大约10MS左右就可以了,三步是检测是否还是刚才按键按下。按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。判断有键按下的标志为:读取的键值取反后不全为0,if(test( )。而判断按键是否释放的标志是:读取的键值取反后为0。图4-5键盘模块流程图值得注意的是,软件延时去抖动这一步不要省略,否则对按键的判断可能会产生误判断。在使用动态扫描显示的程序中,一般采用动态扫描显示程序作为去抖动的延时。如图4-6所示。图4-6按键抖动信号波形第五章 系统调试本系统已符合设计课程基本要求,即可用LCD1602液晶显示屏显示年、月、日、时、分、秒以及温度等信息;可使用按键开关可实现时间和日期的调整。系统调试分为硬件调试、软件调试和软硬件联调。调试时按模块调试,各模块逐个调试通过后再联调。5.1 硬件调试 (1)按键调试对于按键电路我们在PROTEUS上先进行了仿真,仿真图如图5-1所示,通过给按键电路一段简单的程序,去测试按键电路是否正常。 程序如下:#includesbit ks=P30;void delay(void);void left(void);void main(void) unsigned char i,t;P3=0xff;while(1) if(ks=0) for(i=0;i250;i+) for(t=0;t5;t+); if(ks=0) left();else P1=0x00;void delay(void) unsigned char a,b; a=255; while(a-) b=255; while(b-);/*-*/void left(void) unsigned char i=8,a=1; while(i-) P1=a; a=a1; delay(); 图5-1 按键在PROTEUS测试通过给按键电路一段的程序,看当按键按下时,LED灯是不是左移。如果左移说明按键正常,没有太灵敏,也没有太迟钝。(2) 1602显示检测图5-2 1602显示第一列程序图5-3 1602显示第一列显示第一列正常。图5-4 1602显示两列列程序图5-5 1602显示两列显示两列正常。图5-6 1602完整显示程序图5-7 1602完整显示经检测1602显示正常。(3) DS18B20精度检测图5-8温度显示程序当前的温度图5-9温度显示当前温度加1后模拟的温度显示图5-10显示加1后的温度有一定的误差,但基本正确精度为0.06左右。5.2 软件仿真联调 本次课题,选用Keil 软件来调试程序,仿真部分采用Proteus 7.5 Professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。首先在Keil设置联机调试,在Project Workspace窗口中Target1右击,选择Options for TargetTarget1,点击Debug,选择Proteus VSM Simulator会出现如图5-11所示:图5-11联调窗口然后进行编译,编译成功之后,点击debug选择start/stop debug session,然后运行,如图5-12所示。图5-12运行的窗口这样就在PROTEUS仿真中看看联调的结果,如图5-13所示。图5-13 PROTEUS仿真结果5.3 功能仿真效果上电运行后LCD显示:图5-14 LCD显示调节秒钟:图5-15 秒钟的调节调节分钟:图5-16 分钟的调节调节时钟:图5-17时钟的调节调节日期:图5-18日期的调节调节月份:图5-19月份的调节调节年份:图5-20年份的调节温度调节:图5-21温度的调节5.4 调试心得问题1:利用Proteus绘制出相应硬件电路后进行仿真,出现LCD显示无法正常显示的问题。解决办法:经过思考和查阅的资料发现AT89C51在进高电平时没有接上拉电阻导致LCD无法正常显示。修改电路后(接上拉电阻)烧入程序后,LCD能显示。问题2:仿真时发现按下相应按键时,相应功能没能实现。解决办法:经分析得知是标志量没有设置好,进而改正了程序,使之实现了相应的功能。由此可见调试部分是多么重要,在调试中学到了不少有用的知识,做出来的成品是经过多次修改的,并不是感觉做的很完善了就好了,而是要确保没一点错误,要达到没有错误就要不断检验,不断修改。调试整个过程中,我有了一点感悟,一是不要轻易放弃,要静下心来去分析问题的所在,二是就是细心,上面所说的问题也是我不够细心所造成的,所以在什么时候细心都是重要的。正所谓:细节决定成败。第六章 结论与展望 至此,关于毕业设计的所有内容就介绍完了,进行这次毕业设计一切都是从零开始,从最简单查资料、了解各个元件的功能起步,再确定设计方案、画流程图、编写程序到最后进行仿真,这次课题设计可以说成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁、等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。最终较好的完成了设计,达到了预期的目的,完了最初的设想。 但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些最基本的功能,还有许多不足和可以扩展的地方,这些有待以后来弥补,还望各位老师予以指正和修改。致 谢大学三年的学习和生活就要随着这篇论文的结束而结束了。有许许多多的不舍,也有许许多多的感谢要说。毕业设计,实时上就是综合的运用四年所学知识去分析、解决一个问题,在做毕业设计的过程中,把所学知识梳理一遍,它既是一次检阅,又是一次锻炼。在设计中,我遇到过很多问题,比如课题需要用什么元器件,主电路图如何设计,子程序该怎么编写等都是一点头绪都没有,但是我在设计的这一段时间里查询了大量的资料:硬件设计、原理图绘制、程序编写测试与调试,并且在指导老师的帮助下我学会和懂得了很多,逐渐完成了对硬件电弧与软件编程两方面设计,掌握了硬件调试、软件调试基本方法,掌握了从子程序到总程序、从基本功能到复杂功能等程序编写的基本思路及方法。首先要衷心的感谢的是我的指导老师!在我学习期间不仅传授了知识上的秘诀,更教育了我做人的准则。这些都将使我终生受益。无论是在理论学习阶段,还是在论文的选题、资料的查询、开题、研究和撰写的每一个环节,都得到了罗薇老师无微不至的悉心指导和帮助。我愿借此机会向导师表示衷心的感谢!其次要感谢所有教育过我的老师!是你们缠手给我的专业知识是我不断成长的源泉,也是完成本论文的基础。我还要向关心和支持我学习的朋友们表示真挚的谢意!感谢他们对我的关系、关注和支持!大学的生活让我有了坚强的性格,冷静的头脑和永远乐观的态度。最重要的是让我有了责任感,对自己、对家人和对社会的责任感。我愿在未来的学习过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持我的所有领导、老师、同学和朋友。参考资料1 李光飞 .李良儿.楼然苗.单片机C程序设计实例指导M.北京:航空航天大学出版社,20062 戴佳.戴卫.51单片机C语言应用程序设计实例精讲M.北京: 电子工业出版社,20073 陈景初.单片机应用系统设计与实践M.北京: 北京航空航天大学出版社,20064 杨子文.单片机原理及应用M.西安:西安电子科技大学出版社, 20065 沈红卫.单片机应用系统设计实例与分析M.北京:北京航空航天大学出版社,20036李广弟.朱月秀.王秀山单片机基础M.北京:北京航空航天大学出版社,20047余锡存.曹国华.单片机原理及接口技术M.西安:西安电子科技大学出版社,20048周航慈.单片机程序设计基础M. 北京:北京航空航天大学出版,1991附录:电子万年历原理图仿真图附录:电子万年历原理图附录:元件清单元件名称型号及数量AT89C51单片机AT89C51(一块)电源一块LCD1602液晶显示屏一块DS1302时钟芯片一块DS18B20温度传感器一块扬声器一块按键5个电阻(10K)4个晶振1电容2附录:源程序清单主程序:#include#includelcd1602.h#includeds1302.h#includeds18b20.h#define uint unsigned int#define uchar unsigned charuint b6;/年、月、日、时、分、秒uchar code row1=2011-11-01;uchar code row2=00:00:00;uchar year112=31,28,31,30,31,30,31,31,30,31,30,31;/平年uchar year212=31,29,31,30,31,30,31,31,30,31,30,31;/润年uchar j6=0x85,0x88,0x8b,0x84+0x40,0x87+0x40,0x8a+0x40;/LCD地址uchar i,k,jj=0,w,clock=0,bigclock=0,c=0,num;/i循环数,k温度缓存,jj地址位uint temp;sbit b1=P30;/设置sbit b2=P31;/上调sbit b3=P32;/下调sbit b4=P25;/转换sbit b5=P34;/闹钟sbit speaker=P37;void Speaker(void) uchar i; for (i =0; i100;i+) delay(3); speaker = speaker; speaker =0;lcdscan()for(i=0;i6;i+) lcdwrite(ji);lcdshuju(a11-i*2+0x30);lcdwrite(ji+0x01);lcdshuju(a10-i*2+0x30);void key()if(b1=0) dsaddshuju(0x80,(a14)+a0+0x80);while(b1=0)for(i=0;iyear2b1-1)b2=1;else if(b2year1b1-1)b2=1;if(b1=13)b1=1;if(b0=100)b0=0;if(b3=0)delay(3);bjj-;if(b5=-1)b5=59;if(b4=-1)b4=59;if(b3=-1)b3=23;if(b0%4=0&b0%100!=0) | b0%400=0)if(b2=0)b2=year2b1-1;else if(b2=0)b2=year1b1-1;if(b1=0)b1=12;if(b0=-1)b0=99;for(i=0;i6;i+) a11-i*2+clock=bi/10;a10-i*2+clock=bi%10;lcdwrite(jjj);lcdshuju(0);lcdwrite(jjj+1);lcdshuju(0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论