基于单片机的多用途定时器设计_第1页
基于单片机的多用途定时器设计_第2页
基于单片机的多用途定时器设计_第3页
基于单片机的多用途定时器设计_第4页
基于单片机的多用途定时器设计_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

PAGEIV基于单片机的多用途定时器设计摘要伴随着当今社会单片机技术的发展,数字控制在工业生产中的广泛应用。计算机控制中经常需要定时数据的读取、信号输出和屏幕刷新,特别是在控制系统和高精度数据采集系统中,这就需要精确的定时操作。本文分析了AT89C51单片机农业大棚定时灌溉系统的硬件方面的设计和结构。主要运行方法是用串行时钟日历芯片DS1302记录农业大棚定时灌溉系统的时间还有日历,硬件系统主要包括最小系统模块、时钟模块、温度模块、显示模块、按键模块、闹钟模块等,农业大棚定时灌溉系统在显示方面采用12864A液晶,能清楚的在LED显示屏上显示出年、月、日、周日、时、分、秒,还有调准时间的准确度的功能,并且能够显示当日的温度情况。本系统使用简单方便,成本低,显示直观,在广阔的市场具有非常很好的前景市场。关键词:定时器;温度计;液晶显示;灌溉系统

ABSTRACTWiththedevelopmentofmicrocontrollertechnologyintoday'ssociety,digitalcontroliswidelyusedinindustrialproduction.Timingdatareading,signaloutput,andscreenrefreshareoftenrequiredincomputercontrol,especiallyincontrolsystemanddataacquisitionsystemwithhighprecision,whichrequiresprecisetimingoperation.ThispaperanalysesthehardwaredesignandstructureoftheagriculturalgreenhousetimingirrigationsystembasedonAT89C51single-chipcomputer.ThemainoperationmethodistorecordthetimeandcalendaroftimingirrigationsysteminagriculturalgreenhousewithserialclockcalendarchipDS1302.Thehardwaresystemmainlyincludesminimumsystemmodule,clockmodule,temperaturemodule,displaymodule,keymodule,alarmclockmodule,etc.Thetimingirrigationsysteminagriculturalgreenhouseuses12864ALCDindisplay,whichcanclearlydisplaytheyearontheLEDdisplayscreen.Month,day,Sunday,hour,minute,second,aswellastheaccuracyofthetimeadjustmentfunction,andcandisplaythetemperatureoftheday.Thesystemissimpleandconvenienttouse,lowcost,intuitivedisplay,andhasverygoodprospectsinthebroadmarket.Keywords:timer;thermometer;liquidcrystaldisplay;irrigationsystem

目录摘要 IABSTRACT II第一章绪论 11.1课题研究的背景 11.2课题的研究目的与意义 11.3国内外研究现状分析 21.4课题解决的主要内容 3第二章系统的方案设计与论证 42.1硬件系统设计方案 42.1.1单片机的选择与论证 42.1.2时钟模块设计与论证 52.1.3温度采集模块设计与论证 52.1.4显示模块模块设计与论证 52.2软件系统设计方案 6第三章系统硬件的设计 73.1单片机模块设计 73.2时钟模块设计 73.2.1DS1302性能简介 73.2.2DS1302接口电路设计 83.3温度模块设计 83.3.1DS18B20性能简介 83.3.2DS18B20接口电路设计 93.4显示模块设计 103.5按键模块设计 103.6闹钟模块设计 113.7系统功能实现 12第四章系统软件设计和实现 144.1系统初始化 144.2显示模块 154.3按键扫描模块 164.4温度控制模块 164.5时间数据采集模块 174.6闹钟模块 19第五章系统测试 205.1系统测试环境 205.2系统测试过程与结果 20第六章总结和展望 226.1总结 226.2展望 23参考文献 24致谢 25附录1元件清单 26附录2源代码 28PAGE20第一章绪论1.1课题研究的背景农业大棚的日常工作是防潮、防腐、防霉。为了保证日常工作的顺利进行,必须加强对农业大棚的温湿度监测。传统的方法是采用湿度计、湿度计和人工检测双金属测量仪等检测设备,不满足农业大棚通风、除湿、降温的温湿度要求。这种人工检测方法费时、费力、效率低、温湿度误差大、随机性强。因此,需要一种成本低、使用方便、温度测量准确的温湿度控制系统。作为农业大棚最重要的材料之一,储粮尤为重要。一般温度对微生物的生长繁殖有影响。多数菌株生长繁殖的最适温度为28°C-30°C,控制贮藏温度可以保持良好的粮食品质,在贮藏过程中保持一定的温度水平,达到安全贮藏的目的。是一种安全、经济、绿色的先进种植技术。它已成为科学种植技术发展的新方向。作为本系统采用的单片机技术,已经普及到我们的生活、工作、科研各个领域,已经成为一个比较成熟的技术。现在的电子定时器在世界各国是非常的普遍的,几乎每个人身上都有,原来的计时器非常的少在古代的时候古人是用太阳的位子来计算时间的,随着时代的不断发展紧接着用的是摆钟,现在的定时器设计各种各种的,有大的还有小的,有操作简单的有操作复杂的,价格有便宜的有贵的,现在定时器应用很广泛,现在人类普遍应用到手表,现在每个人几乎都带一个手表,现在的手机都有定时器,没有电子定时器人类就不能按准确的时间完成重要的事情,不同的地方对定时器的准确度不同,比如一个公司就定时器的准确度是非常高的,因为一个公司每一分每一秒都是在运作的,一分钟不运作对公司的影响是非常的大的,所以一个公司的经济实力很在意很多的细节,然面对时间的要求也是密不可少的,还有学校的家用的定时器也是非常的普遍的,原来定时器的功能就是简单的计算时间的,然而现在的定时器功能是非常的多的,现在的定时器有着闹钟的功能,这个功能起着非常大的作用,有些人因为某些原因耽误了重要的事情,然而闹钟这个功能就能有效的提醒你,然而闹钟功能主要的作用是闹醒正在熟睡的人,起着一个唤醒的作用,有的电子定时器有着温度显示的功能,这个功能一般的定时器不会拥有,因为要有这个功能就要对定时器进行一些改进,需要的费用大,所以一些定时器生产的开发商不会让定时器带有温度这个功能。还有些定时器有计算你一天所行驶的步数的作用,这个起着一个监督人的运动量的动作,对那些需要健身的朋友是一个非常好的功能,可以计算出你一天步行所消耗的卡路里。1.2课题的研究目的与意义中国是一个人口大国,科学种植是一个战略性的事件,保护人民的食品供应和国家经济迫不及待。目前,在粮食农业大棚温度和湿度的检测,基本上是人工检测,劳动强度大,复杂的检测报警不及时,和粮食面积,颗粒分散,舱内温度测试点,造成工作量大,效率低,检测周期长,容易泄漏检测、高损伤率测量装置。测试精度难以保证,造成种植损失现象时有发生,所以每年在粮食储存成本过高,并设计和开发了粮食温湿度自动检测系统是迫在眉睫的优良性能,从而促进社会的发展,产生良好的经济价值的发挥重要的作用。在当今社会是一个电子数字发展的高速年代,单片机在这个高速发展的数字年代是不一个密不可少的重要成员。电子定时器在当今时代是必不可少的,所以人类不断的在完善和改进它,在许多场合都需要运用到它,比如:训练场、公共场所、机关、学校、部队、教学地方都需要它的存在,电子定时器存在于人类世界的每一个角落。所以说电子定时器的开发是国家之所需,社会之所需,人民之所需。在这个高速发展的世界,时间观念对于人们来说是非常的重要,正由于这些东西不断的促使电子定时器不断发展和飞速提升。1.3国内外研究现状分析我国集成电路设计作为一种独立的产业形态,始于上世纪90年代,至今主要形成了以下四大发展区域:以京津为中心的京津地区,包括辽宁、河北等周边地区。是2018年集成电路设计产业发展最早的地区之一。2018年,全区共有集成电路设计企事业单位2200多家:以广州、深圳、珠海为中心的珠三角地区是全国一体化的区域。该地区发展最快的地区之一是集成电路设计产业与整个系统制造商的融合,如国淼电子和深圳先科、ESCO和TCL、中兴集成电路和中兴通讯,因此该地区的设计企业初步实现了真正的工业化。该地区起步晚,但中国的人才培养基地。集成电路设计是基于半导体材料的电子电路创新活动。1948年,三位美国科学家弗雷宁等人在贝尔实验室发明了晶体三极管,开创了电子电路技术发展的新纪元。自1962年单芯片四门sman集成电路诞生以来,集成电路技术得到了迅速发展。在20世纪60年代末和70年代初,英特尔成功地开发了微处理器芯片。微处理器丰富的指令系统满足了应用电子系统的不同要求,推动了集成电路技术的发展到一个新的阶段。上世纪80年代,通沽集成电路产品制造成本持续下降,设计自动化技术和工具迅速发展,促使系统设计工程师设计自己的专用电路,以弥补“不足或过多”的不足。标准集成电路或通用集成电路产品的功能,从而推广专用集成电路。道路开发。20世纪80年代末90年代初,以otp(一次性程序)为代表的用户白色编程集成电路应运而生。在这个阶段,硬件是通用的,软件是专用的。在国内定时器是无处不在的,一般定时器用在计时方面,有了定时器的准确的计时工具给人们带来很多的方便。定时器应用到很多方面,在报警和闹铃的方面都应用到定时器准确的计时功能,还有定时器,微波炉,自动通电器,这些都应用到电子定时器。因为定时器准确的计时了年月日分秒的信息,人们常用在计时方面,电子万年设计可大可小,按人们需求来设计,一般人们用的定时器简单方便,易于携带,而且价格便宜,很适合广大的消费者。随着时代的发展电子定时器的不断的跟新,现在定时器的功能不断完善,有的定时器的佩戴也看出了一个人的身份,现在的手表的价格有贵的有便宜,贵的手表可买一套房子,所以定时器有广阔的发展前景。从以上角度可分析出来电子定时器在电子时代有广阔的发展市场,它的发展不管可以推动国内经济的发展,还可以推动世界的发展,给人类进步带来了巨大的动力。1.4课题解决的主要内容此次论文只要内容是电子定时器在单片机方面的重要应用,此次课题只要研究以下几点:(1)芯片的选取是对定时器是非常重要的,在选取方面应需要优先考虑使用简单方便、使用性、单片存储的大小、抗断电、低消耗。(2)根据选用的电子定时器芯片设计外围电路和单片机的接口电路。(3)在硬件的选取和设计方面,让人操作过程中简单方便,容易完成,让人在看电路方面一目了然。(4)根据硬件电路图,在开发板上完成器件的焊接。(5)根据设计的硬件电路,编写控制AT89C51芯片的单片机程序。(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。

第二章系统的方案设计与论证单片机电子定时器的制作有多种方法,可供选择的器件和运用的技术也有很多种。所以,该系统以满足系统应充分考虑系统环境的前提下进行操作的整体设计,选择的结构应实现的,使用的设备,旨在适当的设置,使用简单,方便,性能稳定,功耗低,价格低廉。2.1硬件系统设计方案系统的设计要求由六个模块初步确定:电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和报警模块。电路系统框图如图1所示。图2.1硬件电路框图2.1.1单片机的选择与论证(1)方案一:在使用芯片方面用芯片为硬件的重要器件,使用了FlashROM,所需要的内部存储空间有4KBROM,可以在超低的电压工作,它可以在3V电压下工作。单片机可与mcs-51系列兼容。其中许多在电路设计的在线编程过程中没有编程,其中ISP是不可用的,当在对电路调试过程中,要对程序许多的错误方面进行修改在这个过程中还要不断增添一些新的功能都需要将次烧入程序中,在这个过程中不需要多次拔插芯片,由此这样不会对芯片造成损坏。(2)方案二:在使用芯片方面用用AT89C51芯片为硬件的重要器件,使用了FlashROM,可在3V电压工作运行,在兼容方面能完美的与MCS-51系列单片机完美兼容,在存储方面该芯片存储大小8KBROM。同时还应该具备AT89C51的功能,在编程的过程中需要可擦除技术,这个技术在编程过程中是非常需要的。在电路调试过程中,要对程序许多的错误方面进行修改在这个过程中还要不断增添一些新的功能都需要将次烧入程序中,在整个过程中不需要多次拔插芯片,所以这样不会对芯片造成损坏。在AT89C51内部系统当中含有8KBROM存储芯片而且还支持ISP在线编程,所以采用AT89C51当作主控芯片。2.1.2时钟模块设计与论证方案一:利用单片机内部的信号定时器提供秒,通过编出的程序实现年,月,日,星期,时,分,秒的数据。当使用这种方案减少使用的芯片,节约成本,但实施时间错误。方案二:采用DS1302时钟芯片的时钟,DS1302时钟芯片是一款高性能的芯片,可自动秒,分钟,小时,日,周,月,年和计数闰年补偿,精度高,内存位作为临时数据存储区,2.5V5.5V的工作电压范围,当功耗小于300nA2.5V。在这两种方案当中,高时钟芯片DS1302计数时间精度,而且第二种芯片更巧妙的运用到对闰年补偿,因此采用方案二更好些。2.1.3温度采集模块设计与论证方案一:温度传感器(如热敏电阻或AD590),然后通过AD转换器,以获得比标准的数字信号的准确性,但价格昂贵,电路是比较复杂的。方案二:数字温度传感器ds18b20,可直接读取被测温度,并可根据实际要求通过简单编程实现9-12位的读数,但精度不高,最大误差为2。因为随着温度的DS18B20芯片,单总线访问,降低成本,降低了生产难度,可以节省MCU资源,所以采用方案二的。2.1.4显示模块模块设计与论证方案一:在显示模块运用了静态的显示方法,在制作方面静态显示模块的硬件制作过程是非常的复杂,在这个过程中功的消耗是非常的大,在制作的过程中要多个移位寄存器在整个过程中不占用端口,制作过程中只用两根串口线输出。方案二:采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机14个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小。方案三:在制作过程中使用了LCD的方法,在制作硬件的过程中可简单的与单片机接口,可显示出许多信息,运行过程中消耗的功率小,成本很低。,在硬件方面LCM12864可显示32个字符,LCD村子的缺点是亮度不够。比较以上三种方案:方案一硬件复杂体积大、功耗大;方案二硬件简单、功耗小;方案三硬件简单,显示内容多,功耗小,成本低等。此次系统设计需要运行过程中所消耗的功小,所需要的体积小,所需要的成本低,显示屏显示的数据清楚等要求,通过对这三种方案的对比,选择第三种方案较合适在硬件方面选择了AT89C51作为主控芯片,DS1302时钟芯片,LCM12864x显示模块,数字温度传感器DS18B20。在硬件方面选择了AT89C51作为主控芯片,DS1302时钟芯片,LCM12864x显示模块,数字温度传感器DS18B20系统的功能往往决定了系统的成本结构、性能和功耗。很多人认为3874LS164串行接口到外部显示LEDRespack-8电源的AT89C51单片机决定了AT89C51单片机、DS1302的时钟芯片。启用电子日历功能。2.2软件系统设计方案系统主要用于日历算法设计,主要包括温度测量、按键扫描输入等软件部分。在程序的第一次运行初始化后,根据初始化命令初始化内部程序中微控制器的管脚。运行程序后,初始化温度测量,温度传感器读取测量温度。然后运行日历计算程序,获取日历的时间和日期信息,完成计算。扫描程序键,检查按钮是否按下,如果没有直接调用按钮按下节日计算程序,则根据获得的日历信息计算假日。如果更新按钮是节日计划的关键变量,则在修改相应变量后,按下节日计算的修改计算程序。运行显示程序计算完成后,程序将显示从温度数据中获取的日历信息、与节假日对应的信息,然后进行数字显示。软件框图如下所示:图2.2软件框图

第三章系统硬件的设计3.1单片机模块设计AT89C51采用高密度非易失性存储器技术在ATMEL公司生产。它的产品说明和引脚与工业80C51完全兼容。它具有以下标准功能:32位I/O端口、6矢量二级中断结构、2个数据指针、256字节RAM、看门狗定时器、3个16位定时器/计数器、8K字节闪存、6矢量二级中断结构、片上晶体振荡器和时钟电路,全双工串行端口。AT89C51的引脚如下图所示:图3.1AT89C51的引脚图3.2时钟模块设计3.2.1DS1302性能简介时钟有两层含义:一是保证系统正常工作的参考振荡定时信号,主要由晶体振荡器和外围电路组成。晶振频率的大小决定了单片机系统的速度;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现。因此,其与单片机之间的数据传送是十分容易实现的,DS1302的引脚排列及内部结构图如图2:DS1302引脚说明X1,X232.768kHz晶振引脚GND:地线RST:复位端I/O:数据输入/输出端口SCLK:串行时钟端口VCC1:慢速充电引脚VCC2:电源引脚图3.2DS1302引脚3.2.2DS1302接口电路设计1时钟芯片DS1302的接口电路及工作原理:图3.3DS1302与MCU接口电路图3.3为DS1302的接口电路,其中Vcc1为后备电源,Vcc2为主电源。VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。DS1302由VCC1或VCC2两者中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。3.3温度模块设计3.3.1DS18B20性能简介1.DS18B20的主要特性其性能特征可以概括如下:(1)独特的单线接口只需要一个通信端口引脚;(2)温度范围-55℃至125℃,最高0.0625℃的分辨率;(3)线和连接到微控制器,从而减少了外部硬件电路;(4)零待机功耗;(5)通过3.0V-5.5V的数据线电源电压范围;非易失性温度报警设置6用户可定义;(6)负电压特性,电源极性反转,体温表不会燃烧,但不起作用。2.DS18B20原理其DS18B20主要作用是来延迟时间读写时间,温度测量原理,接收DS1820相同的平均温度值,因为从减小到750ms之间闪不同分辨率和不同,还有温度转换这方面。假如输入脉冲计数器2计数器1,温度产生的信号是-55℃对应名册依据预定值。所产生的计数器1的脉冲信号算由振荡器产生的脉冲,依此类推可知道到针对2的计数到零,可知温度可以预防累积值寄存器当测量时候的温度的寄存器数值的温度。图4斜率累加器补偿和非线性温度校正,对预置1校正输出值。图3.5DS18B20测温原理3.3.2DS18B20接口电路设计由4.6图所示可知,此系统中使用数字式温度传感器DS18B20,其优点有测量精度高,它的电路连接简单特点。这一类型传感器只需要一条数据线进行数据传输,可用P3.7与DS18B20的DQ口连接、Vcc接电源、GND接地方法。图3.6温度传感器DS18B20接口电路3.4显示模块设计1.LCM12864的接口信号说明如表3.1:表3.1LCM12864的接口信号编号引脚符号功能说明编号引脚符号功能说明1VSS电源地9D2DATAI/O2VDD电源正极10D3DATAI/O3VL液晶显示偏压信号11D4DATAI/O4RS数据/命令选择端(H/L)12D5DATAI/O5R/W读/写选择端(H/L)13D6DATAI/O6E使能信号14D7DATAI/O7D0DATAI/O15BLA背光正极8D1DATAI/O16BLK背光负极2.基本操作时序如下:(1)读状态:RS=L,RW=H,E=H(2)写指令:RS=L,RW=L,D0~D7=指令码,E=高脉冲(3)读数据:RS=H,RW=H,E=H(4)写数据:RS=H,RW=L,D0~D7=数据,E=高脉冲3.5按键模块设计此系统要用到了5个按键进行,一个按键可用于系统手动复位,其他的四个采用了独立的按键,这一种的接法查询非常简单,程序处理过程中是非常的简单,在这过程中省了CPU资源很多,由此可以看出按键电路如图3.7所示,这4个独立按键分别和AT89C51的P3.0、P3.1、P3.2、P3.3接口相连成的。图3.7按键电路对以上4个按键作简要说明:S4——SET键,S3——UP键,S2——DOWN键,S5——OUT/STOP键。SET键:按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期的校准;UP键:当SET键按下时,UP进行SET选定项(如:小时)的加操作;DOWN键:当SET键按下时,DOWN进行SET选定项(如:小时)的减操作;OUT键:当OUT键按下时,此键功能为退出校准功能,进入下一模式,显示温度值和上下限的温度值。3.6闹钟模块设计图3.8蜂鸣器电路蜂鸣器的介绍:蜂鸣器主要应用在电子器件方面,一般主要的作用就是播放器的发声器件,没有它的作用,所有播放器的硬件就不能发声,它就相当于一个小型的音响,他还作用到计算机方面,比如笔记本一般都自带蜂鸣器,然而台式的电脑上面一般都没有,可以通过购买音响就可以放出声音,然而音响主要的结构就是蜂鸣器。报警器也是通过蜂鸣器的功能而制作的,通过蜂鸣器所放出的声音,提醒有着防盗的作用,然而显示出蜂鸣器对人类的重要性,许多的大公司都是通过用报警器来进行防盗的,银行对蜂鸣器的需求是非常的大的。还有音乐播放器对蜂鸣器的需求是非常大的,因为有了蜂鸣器播放设备才能放出动听的歌曲,让人类在紧张的时候听着歌,放松紧张的神经。蜂鸣器主要的分类有两类,只要的分类为电压式蜂鸣器和电磁式蜂鸣器。蜂鸣器在电路中是有很多的图形的符号,对于有些很大的电路图,电路里面的东西复杂又多样,有时你想找到对应的电路图形是非常的困难的,所以想清楚简单快速的认出蜂鸣器就要知道蜂鸣器在电路中的字母表达式,蜂鸣器在电路的表达字母是“H”或者“HA”’,这样可以很快的找到蜂鸣器,让你对烦躁的电路图没有那么厌倦。3.7系统功能实现当按下P3.3键时,系统进入另一模式,可以通过按键来设置温度上下限,当温度超过温度上限或低于温度下限,此时液晶会显示越限标志,如果想要退出该模式就在按一下P3.3即可。系统原理图如图4.5:图3.9系统原理图

第四章系统软件设计和实现本次设计的软件部分主要选择C语言进行设计,C语言以模块化进行编写具有阅读性强,易于编写、适用性高等特点。电子日历功能以C语言程序控制的方式来实现的。此次系统的软件设计和硬件设计是相互结合在一起的,通过所需要的功能分成不同的程序模块还有设计,编程还有不断的调试,直到最后连接在主程序模块上面。这有利于修改和调试程序,增强了程序的可移植性。4.1系统初始化该系统主要用于日历算法方案设计,该方案设计主要包括温度测量,按键扫描输入等软件的一部分。在程序启动第一运行进行初始化后,根据初始化命令初始化内部的程序的微控制器的各引脚的状态,运行程序后初始化完成温度测量,温度传感器读取的测得的温度,然后运行公历计算程序,获得日历时间,日期信息,然后运行该程序键扫描,检测按钮是否按下,如果没有直接调用按钮被按下节日计算程序,根据获得的公历信息计算假期,如果更新按钮是关键变量的节日计划,根据相应的变量修改后的假期计算的节日计算程序的修改后的计算后按运行显示程序的计算完成后,程序将显示温度数据获得的日历信息、节假日所对应于的信息然后通过数字进行显示。主程序流程图:图4.1主程序流程图4.2显示模块LDC的驱动包括初始化操作、写指令、写数据、显示模块的设定等操作。图4.2LDC的驱动流程图LCM12864有以下几个基本时序:1.读状态:RS=L,RW=H,E=H:2.写指令:RS=L,RW=L,DO~D7指令码,E=高脉冲3.读数据:RS=H,RW=H.E=H;4.写数据:RS=H,RW=L,DO~D7=数据,E=高脉冲;4.3按键扫描模块本设计中按键采用查询法识别按键,程序简单,本系统中含有四个调整按键,分别命名为SET、UP、DOWN、SET1。在主函数里面查询SET、SET1P两个按键是否按键是否按下,UP、DOWN、SET1。在主函数里面查询SET、SE1P的按键是否按下,UP、DOWN键的功能由SET和SET1键激活。这样设计可减少CPU的工作量,下面简单介绍本设计中键盘扫描程序。4.4温度控制模块在这3种操作中,只有写操作是单向的,初始化操作和读操作都是双向的。温度采集模块流程图如下图所示:图4.3温度采集模块流程图具体程序设计如下:byteow_reset(void){bytepresence;DQ=0;//拉低总线delay(29);//保持480usDQ=1;//释放总线delay(3);//等待回复presence=DQ;//读取信号delay(25);//等待结束信号return(presence);//返回0:正常1:不存在}//从1-wire总线上读取一个字节4.5时间数据采集模块串行的DS1302时钟芯片的期中主要包括了控制逻辑、移位寄存器、实时时钟、振荡器以及内、外部RAM。要是任意的数据传送初始化,就应把RST置为高电平,而且还应该给移位寄存器装入8位的提供地址和命名信息。数据应该串行输入在脉冲信号的上升沿不管是发生“读”周期还是“写”周期,也不管是传送的方式是单个字节的传送或是多字节的传送。开始时候的8位指定的四十个字节中的那一个将被其访问。在初始八个时钟周期之后就把命令字装入到移位的寄存器,之外的时钟正在读操作时的输出/输入的数据,时钟脉冲的数量在单个字节方式下应该8加8,其在多个字节的方式下最大可以能够达到248的数。时间流程图如下图所示:图4.4时间流程图4.6闹钟模块这部分的实现是采用E2PROM存储器来存储闹钟信息,因为它具有掉电仍能保存数据的特征。所以本设计中吧闹钟信息写先写入AT24C02存储中,然后在程序中读出数据与当前时间进行比较,如果相等则发出闹钟警告。如果要对闹钟值进行修改,可通过几个按键进行,系统能根据用户的设定自动更新闹钟信息。闹钟程序的流程图如下图所示。图4.5闹钟程序的流程图

第五章系统测试5.1系统测试环境proteus实验室电子公司开发的eda工具软件由isis和ares两部分组成。isis是一种方便的电子系统仿真平台软件。ares是一个高级的布线编辑软件。它集成了先进的原理接线图、混合模式spice电路仿真、pcb设计和自动布线。建立一个完整的公司。本文用PROTEUS仿真软件对电子定时器的硬件电路设计。5.2系统测试过程与结果在PROTEUSISIS中的最终设计图如图5.1所示。图5.1系统仿真图最后分别对各元器件的属性值进行设置,单击按钮,进行电气检测,查看接线是否合理,说明硬件电路已经顺利的完成。单击按钮,进行对电子定时器的仿真测试,运行结果如图5.2所示。图5.2电路仿真测试由于使用的是汇编语言编写的程序,如果在测量的时候测量显示错误,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用PROTEUS对程序进行调试。单击按钮。在单击菜单栏中的Debug,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。

第六章总结和展望6.1总结下在这里本此设计已经告一段落,本设计首先对整个系统的硬件部分进行选型讨论分析,在软件方面中我通过电脑的网络对定时器方面的资料做出许多的了解,在此次的过程中还学会了keil软件的学习,让我学会了对程序进行分模块化处理和设计,此次课设让我学会设计了阳历数据读取程序、阳历转阴历程序、温度采集程序、闹铃程序以及LCD显示程序,做出的定时器具有读取数据显示直观、功能强大、电路简洁明了、成本低等很多的优点。非常的符合定时器的发展趋势,在市场上有广阔的前景。通过这次毕业设计我学习到很多知识,如在电路焊接过程当中,我总是喜欢用较多的锡丝结果导致电源直接的锡丝过多互相连通,一不小心就烧伤到自己,还有的时候出现短路现象,这样让我心烦不想做下去,因为我是一个很不耐烦的人,焊接对于我来说刚接触,但是如果你想要电路通畅无阻的话一定要焊接到很好,对于焊接还要给老师看毕竟这是毕业设计的一部分,想到这里我心急如焚,但是没有人能帮你,然后我静下来想想烦恼是解决不了一切问题的,只有自己静下心来想出解决的办法,才能找出问题的根本完成好焊接,然后我就打电话询问大学时候教焊接的老师,老师细心讲解焊接的过程,让我顿时懂得了焊接了许多知识,然后通过电脑网络的观看视频,让我最快的速度学会了焊接,这次焊接让我懂得了,虽然电路工程量大,但是不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果,通过此次的焊接让我学到许多的东西,这些东西是在学校学不来的东西,那就是毅力。在编程过程中我遇到很多的麻烦,许多编程的东西都忘记,这让我在编程的过程中非常的苦恼,代码敲到一半就不知道怎么编下去了,就要进行翻书,有时翻书还找不到自己想要的知识点,有时在编程的过程中一度没有任何思路,完全不知道怎么编下去,在整个过程中写写停停,让我几次想放弃,在我学习的道路上从没有碰到过这么困难的问题,我想我不能再这样下去了,所以我鼓起勇气打电话向同学沟通还有和老师的交流,在与他们沟通的过程中,让我对我所想编的程序有一个总体的框架和概念,对不懂得知识在网上进行查找,这让我更加有信息能编出程序出来,终于功夫不负有心人让我编出我自己想要的程序,这时回首望来我感觉非常的欣喜对之前的苦恼和烦躁一扫而过,现在的我满满的都是成就感,虽然在整个过程中自己想放弃,到最后自己还是坚持下来了,也练就了我的耐心,做什么事都要有耐心。总之,此次毕业设计使我的能力得到了全方位的提高,为以后的工作吸取经验教训。6.2展望对于即将的毕业的我来说未来是一片迷茫的,同时我也是对未来也是无限的憧憬,我想每个人在这个阶段都有这种想法,但是我们要有一个对未来有一个好的规划,这样才让你有奋斗的动力和目标,这样让你人生之路走得不迷茫,自己知道自己即将走那条路,然后朝着目标前行,我想只要我为自己的目标奋斗,我想一定会到达我想要的高度,那样你会为自己的成功而感到开心快乐,这不仅仅不是物质上的满足,而是精神上的支柱,这让你活着有着人生的价值,所以我会为我的人生目标加油前进。

参考文献[1]陈明荧.8051单片机课程设计实训教程[M].北京:清华大学出版社.2012.[2]苏平.单片机的原理与接口技术[M].北京:电子工业出版社,2013:1-113.[3]王忠民.微型计算机原理[M].西安:西安科技大学出版社,2012:15-55.[4]何立民.单片机高级教程[M].北京:北京航空航天大学出版社,2013年[5]纪宗南.单片机外围器件使用手册[M].北京:北京航空航天大学出版社,2013.622-655.[6]周雪.模拟电子技术[M]西安:西安电子科技大学出版社,2012:81-95.[7]左金生.电子与模拟电子技术[M].北京:电子工业出版社,2011:105-131.[8]尹勇.单片机开发环境μVision2的开发指南[M].北京:北京航空航天大学出版社,2012:173-199.[9]马忠梅,籍顺心等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2011年.[10]新编单片机原理与应用(第二版).西安电子科技大学出版社,2012.2[11]张萌.单片机应用系统开发综合实例[M].北京:清华大学出版社,2012.7[12]楼然苗.单片机课程设计指导[M].北京:北京航空航天大学出版社,2011.7[13]朱思荣.51单片机实现公历与农历、星期的转换[Z].当当电子网.2011.[14]李广弟.单片机原理及应用[M]北京航空航天大学出版社,2012年[15]王越明.电子定时器的设计[J].黑龙江科技信息,2011年[16]VergheseGC,LangH,CaseyLF.Analysisofinstabilityinelectricalmachines.IEEETransonIA,2009,22:853-864.[17]RichardBlanchard,JamesHarden.Mosfetscontrolmorepowerinthesame-sizedpackage.ElectronicDesign,1982,12:107~114

致谢在本论文即将完成之际,谨此向我敬爱的导师致以衷心的感谢和崇高的敬意!感谢学院所有老师,在学校这几年离不开他们的帮助,他们用辛勤的汗水,用丰富的学识,用严谨的治学态度,用正直的人格素养,用朴素的生活方式,感染着我,教育着我,从他们身上学到的这些优良品格,将使我受益终身。真诚感谢我的师兄师姐及同门兄弟姐妹们,在研究生短暂的时光里,他们以自身的严谨好学,勤勉的处事态度影响着我,让我不断自省,不断成长。在我有时候因家里或工作上的一些事物无法及时到学校时,是他们在我最需要的时候给予了我最无私的帮助,给与了我极大的鼓励和支持,真心感谢他们。由衷地感谢我的母校,在这里学习生活虽然只有短短的两年时间,却让我深刻的感受到了优秀特质,在这里所留下的美好记忆将会一路伴我勇敢前行。最后,衷心地感谢为评阅本论文而付出宝贵时间和辛勤劳动的各位专家和教授!

附录1元件清单序号元件1万用板9*152DC电源插座3蜂鸣器4自锁开关52.2K电阻*26STC89C52单片机740脚IC座8DS1302芯片9钮扣电池10电池座118脚IC座12LCD1602液晶显示屏1316p单排插针1416p单排母座15DS18B20温度传感器1610K排阻(103)1710K电阻*31810uF电容19按键*42032.768mhz晶振211.5k电阻2212M晶振2330P电容*2249012三极管*225导线26焊锡27USB电源线或(电池盒+DC插头)

附录2源代码#include<reg52.h>//#include"DS18B20_3.H"#include<string.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedchar#definewd1 //定义是否有温度功能=0时无温度,=1时有温度#include"eeprom52.h"#defineyh0x80//LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#defineer0x80+0x40//LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbiten=P2^7;sbitrw=P2^6;//如果硬件上rw接地,就不用写这句和后面的rw=0了sbitrs=P2^5;//校时按键与C51的引脚连接定义sbitset=P3^0; //设置键sbitadd=P3^1; //加键sbitdec=P3^2; //减键sbitseeNL_NZ=P3^3; //查看农历/闹钟sbitDQ=P3^7; //sbitbuzzer=P2^0; //蜂鸣器,通过三极管8550驱动,端口低电平响sbitled=P2^4; //LCD背光开关bitled1=1;bitNZ_sdgb=1;unsignedchartemp_miao;unsignedcharbltime;//背光亮的时间//DS1302时钟芯片与C51之间的引脚连接定义sbitIO=P1^1;sbitSCLK=P1^0;sbitRST=P1^2;chara,miao,shi,fen,ri,yue,nian,week,setn,temp;uintflag;//flag用于读取头文件中的温度值,和显示温度值bitc_moon;charnz_shi,nz_fen,setNZn; //定义闹钟变量ucharshangyimiao,bsn,temp_hour; //记录上一秒时间ucharT_NL_NZ; //计数器bittimerOn=0; //闹钟启用标志位bitbaoshi=0; //整点报时标志位bitp_r=0; //平年/润年=0表示平年,=1表示润年dataucharyear_moon,month_moon,day_moon;sbitACC0=ACC^0;sbitACC7=ACC^7;/************************************************************ACC累加器=AACC.0=E0HACC.0就是ACC的第0位。Acc可以位寻址。累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。***************************************************************//******************把数据保存到单片机内部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,nz_shi); byte_write(0x2001,nz_fen); byte_write(0x2002,timerOn); byte_write(0x2060,a_a); }/******************把数据从单片机内部eeprom中读出来*****************/voidread_eeprom(){ nz_shi=byte_read(0x2000); nz_fen=byte_read(0x2001); timerOn=byte_read(0x2002); a_a=byte_read(0x2060);}/**************开机自检eeprom初始化*****************/voidinit_eeprom(){ read_eeprom(); //先读 if(a_a!=1) //新的单片机初始单片机内问eeprom { nz_shi=12; nz_fen=30; timerOn=0; a_a=1; write_eeprom(); //保存数据 } }//********阳历转换阴历表************************************codeucharyear_code[597]={0x04,0xAe,0x53,//190100x0A,0x57,0x48,//190230x55,0x26,0xBd,//190360x0d,0x26,0x50,//190490x0d,0x95,0x44,//1905120x46,0xAA,0xB9,//1906150x05,0x6A,0x4d,//1907180x09,0xAd,0x42,//1908210x24,0xAe,0xB6,//19090x04,0xAe,0x4A,//19100x6A,0x4d,0xBe,//19110x0A,0x4d,0x52,//19120x0d,0x25,0x46,//19130x5d,0x52,0xBA,//19140x0B,0x54,0x4e,//19150x0d,0x6A,0x43,//19160x29,0x6d,0x37,//19170x09,0x5B,0x4B,//19180x74,0x9B,0xC1,//19190x04,0x97,0x54,//19200x0A,0x4B,0x48,//19210x5B,0x25,0xBC,//19220x06,0xA5,0x50,//19230x06,0xd4,0x45,//19240x4A,0xdA,0xB8,//19250x02,0xB6,0x4d,//19260x09,0x57,0x42,//19270x24,0x97,0xB7,//19280x04,0x97,0x4A,//19290x66,0x4B,0x3e,//19300x0d,0x4A,0x51,//19310x0e,0xA5,0x46,//19320x56,0xd4,0xBA,//19330x05,0xAd,0x4e,//19340x02,0xB6,0x44,//19350x39,0x37,0x38,//19360x09,0x2e,0x4B,//19370x7C,0x96,0xBf,//19380x0C,0x95,0x53,//19390x0d,0x4A,0x48,//19400x6d,0xA5,0x3B,//19410x0B,0x55,0x4f,//19420x05,0x6A,0x45,//19430x4A,0xAd,0xB9,//19440x02,0x5d,0x4d,//19450x09,0x2d,0x42,//19460x2C,0x95,0xB6,//19470x0A,0x95,0x4A,//19480x7B,0x4A,0xBd,//19490x06,0xCA,0x51,//19500x0B,0x55,0x46,//19510x55,0x5A,0xBB,//19520x04,0xdA,0x4e,//19530x0A,0x5B,0x43,//19540x35,0x2B,0xB8,//19550x05,0x2B,0x4C,//19560x8A,0x95,0x3f,//19570x0e,0x95,0x52,//19580x06,0xAA,0x48,//19590x7A,0xd5,0x3C,//19600x0A,0xB5,0x4f,//19610x04,0xB6,0x45,//19620x4A,0x57,0x39,//19630x0A,0x57,0x4d,//19640x05,0x26,0x42,//19650x3e,0x93,0x35,//19660x0d,0x95,0x49,//19670x75,0xAA,0xBe,//19680x05,0x6A,0x51,//19690x09,0x6d,0x46,//19700x54,0xAe,0xBB,//19710x04,0xAd,0x4f,//19720x0A,0x4d,0x43,//19730x4d,0x26,0xB7,//19740x0d,0x25,0x4B,//19750x8d,0x52,0xBf,//19760x0B,0x54,0x52,//19770x0B,0x6A,0x47,//19780x69,0x6d,0x3C,//19790x09,0x5B,0x50,//19800x04,0x9B,0x45,//19810x4A,0x4B,0xB9,//19820x0A,0x4B,0x4d,//19830xAB,0x25,0xC2,//19840x06,0xA5,0x54,//19850x06,0xd4,0x49,//19860x6A,0xdA,0x3d,//19870x0A,0xB6,0x51,//19880x09,0x37,0x46,//19890x54,0x97,0xBB,//19900x04,0x97,0x4f,//19910x06,0x4B,0x44,//19920x36,0xA5,0x37,//19930x0e,0xA5,0x4A,//19940x86,0xB2,0xBf,//19950x05,0xAC,0x53,//19960x0A,0xB6,0x47,//19970x59,0x36,0xBC,//19980x09,0x2e,0x50,//19992940x0C,0x96,0x45,//20002970x4d,0x4A,0xB8,//20010x0d,0x4A,0x4C,//20020x0d,0xA5,0x41,//20030x25,0xAA,0xB6,//20040x05,0x6A,0x49,//20050x7A,0xAd,0xBd,//20060x02,0x5d,0x52,//20070x09,0x2d,0x47,//20080x5C,0x95,0xBA,//20090x0A,0x95,0x4e,//20100x0B,0x4A,0x43,//20110x4B,0x55,0x37,//20120x0A,0xd5,0x4A,//20130x95,0x5A,0xBf,//20140x04,0xBA,0x53,//20150x0A,0x5B,0x48,//20160x65,0x2B,0xBC,//20170x05,0x2B,0x50,//20180x0A,0x93,0x45,//20190x47,0x4A,0xB9,//20200x06,0xAA,0x4C,//20210x0A,0xd5,0x41,//20220x24,0xdA,0xB6,//20230x04,0xB6,0x4A,//20240x69,0x57,0x3d,//20250x0A,0x4e,0x51,//20260x0d,0x26,0x46,//20270x5e,0x93,0x3A,//20280x0d,0x53,0x4d,//20290x05,0xAA,0x43,//20300x36,0xB5,0x37,//20310x09,0x6d,0x4B,//20320xB4,0xAe,0xBf,//20330x04,0xAd,0x53,//20340x0A,0x4d,0x48,//20350x6d,0x25,0xBC,//20360x0d,0x25,0x4f,//20370x0d,0x52,0x44,//20380x5d,0xAA,0x38,//20390x0B,0x5A,0x4C,//20400x05,0x6d,0x41,//20410x24,0xAd,0xB6,//20420x04,0x9B,0x4A,//20430x7A,0x4B,0xBe,//20440x0A,0x4B,0x51,//20450x0A,0xA5,0x46,//20460x5B,0x52,0xBA,//20470x06,0xd2,0x4e,//20480x0A,0xdA,0x42,//20490x35,0x5B,0x37,//20500x09,0x37,0x4B,//20510x84,0x97,0xC1,//20520x04,0x97,0x53,//20530x06,0x4B,0x48,//20540x66,0xA5,0x3C,//20550x0e,0xA5,0x4f,//20560x06,0xB2,0x44,//20570x4A,0xB6,0x38,//20580x0A,0xAe,0x4C,//20590x09,0x2e,0x42,//20600x3C,0x97,0x35,//20610x0C,0x96,0x49,//20620x7d,0x4A,0xBd,//20630x0d,0x4A,0x51,//20640x0d,0xA5,0x45,//20650x55,0xAA,0xBA,//20660x05,0x6A,0x4e,//20670x0A,0x6d,0x43,//20680x45,0x2e,0xB7,//20690x05,0x2d,0x4B,//20700x8A,0x95,0xBf,//20710x0A,0x95,0x53,//20720x0B,0x4A,0x47,//20730x6B,0x55,0x3B,//20740x0A,0xd5,0x4f,//20750x05,0x5A,0x45,//20760x4A,0x5d,0x38,//20770x0A,0x5B,0x4C,//20780x05,0x2B,0x42,//20790x3A,0x93,0xB6,//20800x06,0x93,0x49,//20810x77,0x29,0xBd,//20820x06,0xAA,0x51,//20830x0A,0xd5,0x46,//20840x54,0xdA,0xBA,//20850x04,0xB6,0x4e,//20860x0A,0x57,0x43,//20870x45,0x27,0x38,//20880x0d,0x26,0x4A,//20890x8e,0x93,0x3e,//20900x0d,0x52,0x52,//20910x0d,0xAA,0x47,//20920x66,0xB5,0x3B,//20930x05,0x6d,0x4f,//20940x04,0xAe,0x45,//20950x4A,0x4e,0xB9,//20960x0A,0x4d,0x4C,//20970x0d,0x15,0x41,//20980x2d,0x92,0xB5,//2099};///月份数据表codeucharday_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};codeuintday_code2[3]={0x111,0x130,0x14e};/*函数功能:输入BCD阳历数据,输出BCD阴历数据(只允许1901-2099年)调用函数示例:Conversion(c_sun,year_sun,month_sun,day_sun)如:计算2004年10月16日Conversion(0,0x4,0x10,0x16);c_sun,year_sun,month_sun,day_sun均为BCD数据,c_sun为世纪标志位,c_sun=0为21世纪,c_sun=1为19世纪调用函数后,原有数据不变,读c_moon,year_moon,month_moon,day_moon得出阴历BCD数据*/bitc_moon;//子函数,用于读取数据表中农历月的大月或小月,如果该月为大返回1,为小返回0bitget_moon_day(ucharmonth_p,uinttable_addr){ uchartemp10;switch(month_p){case1:{temp10=year_code[table_addr]&0x08;if(temp10==0)return(0);elsereturn(1);}case2:{temp10=year_code[table_addr]&0x04;if(temp10==0)return(0);elsereturn(1);}case3:{temp10=year_code[table_addr]&0x02;if(temp10==

温馨提示

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

评论

0/150

提交评论