课程设计(论文)-基于51单片机的电子万年历.doc_第1页
课程设计(论文)-基于51单片机的电子万年历.doc_第2页
课程设计(论文)-基于51单片机的电子万年历.doc_第3页
课程设计(论文)-基于51单片机的电子万年历.doc_第4页
课程设计(论文)-基于51单片机的电子万年历.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

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

文档简介

基于51单片机的电子万年历制作【摘 要】本次设计就是设计一款万年历,以at89s52单片机为核心,配备数码管显示模块、按键等功能模块。分别采用a/d转换器tlc1549和温度传感器lm35来实现的。万年历采用24小时制方式显示时间,在数码管上显示年、月、日、小时、分钟、秒等功能。设计的核心主要包括硬件设计和软件编程两个方面。硬件电路设计主要包括中央处理单元电路、时钟电路、执行电路等几部分。软件用汇编语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。【绪 论】万年历,就是记录一定时间范围内(比如100年或更多)的具体阳历与阴历的日期的年历,方便有需要的人查询使用。万年只是一种象征,表示时间跨度大。这次设计通过对万年历系统的设计,详细介绍了51 单片机应用中的按键处理、数码管显示原理、动态和静态显示原理、定时中断、a/d转换等原理。该系统能够显示年、月、日、小时、分钟、秒、星期、农历、温度,通过按键可以修改时间和设定闹钟等功能。此系统结构简单、功能齐全,具有一定的推广价值。 系统说明1.1方案选择l 方案一:采用日历时钟芯片ds12887来产生时间,数据经单片机处理后送到数码管显示。ds12887内部有晶体振荡器、振荡电路、充电电路和可充电锂电池。此外,片内有114b的ram。l 方案二:采用纯单片机制作。方案一中因为有了日历时钟芯片,这就使得单片机的软件部分简单很多。但是考虑到芯片成本高,因此采用方案二。1.2 系统方框图:如图1-1所示: 图1-1 系统方框图1.3 说明系统由51系列单片机at89s52、按键、温度采集、数码管显示、闹钟报时,电源等部分构成。单片机部分包括时钟电路、复位电路;按键部分能够实现对时间的调整和定时时间的设定。四个按键的功能分别为:退出、闹钟、设置、修改。温度采集部分包括温度传感器、a/d转换。传感器采样进来的信号经a/d转换后送给单片机,经软件处理后送至7段共阳数码管显示。一旦定时时间到,外接电路中的音乐芯片就会发出响声。电源部分共输出2个电压,9v和5v。9v电压给tl431提供电源,5v电压给各个芯片提供电源。 电路模块说明2.1 单片机电路2.1.1 时钟电路时钟系统是单片机的心脏,在本次设计中,包括中央处理器在内的所有单片机都是时钟系统所提供的节拍工作的。 时钟电路由外接谐振器的时钟振荡器、时钟发生器及关断控制信号等组成。时钟振荡器是单片机的时钟源,时钟发生器对振荡器的输出信号进行二分频。 cpu的时钟振荡信号有两个来源:一是采用内部振荡器,此时需要在xtal1和xtal2脚连接一只频率范围为033mhz的晶体振荡或陶瓷振荡器及两只30pf电容。二是采用外部振荡,此时应将外部振荡器的输出信号接至xtal1脚,将xtal2脚浮空。利用单片机内部的定时功能来实现时钟的走时,通过编程实现每50毫秒产生一次中断,中断20次后,秒单元加1,秒单元加到60时,跳回到零再继续加,同时分单元加1。以次类推,从而实现秒、分、小时、年的走时。本次设计中采用的是内部振荡器,频率为12mhz的晶体振荡器及30pf的瓷片电容。如图2-1所示。 图2-1时钟电路2.1.2复位电路复位是指在规定的条件下,单片机自动将cpu以及与程序运行相关的主要功能部件、i/o口等设置为确定初始状态的过程。如果电路参数不符合规定的条件或干扰导致单片机不能正确的复位,系统将无法进行正常的工作,因此,复位电路除了要符合厂家规定的参数外,还要滤除可能的干扰。at89s52单片机内部有一个由施密特触发器等组成的复位电路。复位信号是从其9脚,即rst脚输入的。at89s52单片机规定,当其处于正常工作状态,且振荡器工作稳定后,在rst端有从高电平到低电平,且高电平时间大于两个机器周期的复位信号时,cpu将完成对系统的复位。有两点需要注意:一、复位信号是高电平有效,二、高电平的保持时间必须大于两个机器周期,可见高电平保持时间与振荡频率有关。本次设计中采用上电复位电路,上电复位是指在系统上电时,rst端自动产生复位所需要的信号将单片机复位,本次设计中的上电复位电路如图所示。上电时,rst端高电平的维持时间取决于r(1k)和c(22uf)的值。要使单片机可靠的复位,设计中使其维持的时间足够长。如图2-2所示。 图2-2 复位电路2.2 温度采集电路2.2.1 温度传感器该系统采用lm35作为温度传感器,lm35系列是精密集成电路温度传感器,其输出的电压线性地与摄氏温度成正比。因此,lm35比按绝对温标校准的线性温度传感器优越得多。lm35系列传感器生产制作时已经过校准,输出电压与摄氏温度一一对应,使用极为方便。灵敏度为10.0mv/,精度在0.4至0.8(-55至+150温度范围内),重复性好,低输出阻抗,线性输出和内部精密校准使其与读出或控制电路接口简单和方便,可单电源和正负电源工作。 图2-3 lm35的管脚 图2-4 lm35的电路 特性:1、在摄氏温度下直接校准2、+10.0mv/的线性刻度系数3、确保0.5的精度(在25)4、额定温度范围为-55至+1505、适合于远程应用6、工作电压范围宽,4v至30v7、低功耗,小于60ua8、在静止空气中,自热效应低,小于0.08的自热9、非线性仅为1/410、输出阻抗,通过1ma电流时仅为0.1 极限参数:电源电压 输出电压 输出电流+35v0.2v +6v1.0 100ma2.3.2 a/d转换l 方案一:采用ad0809ad0809是一种8路模拟输入8位数字输出的逐次逼近法a/d器件,可以测量多路的模拟输入,但也占用比较多的i/o资源。l 方案二:采用tlc1549tlc1549是一种1路模拟输入带串行控制的10位模数转换器,转换精度高,由于采用串行输入方式占用比较少的i/o资源。这次设计只需一路的模拟输入,转换精度高要求比较高,因此选用方案二。从温度传感器采集进来的电压信号进入到a/d转换器以形成单片机便于处理的数字信号。在该设计中,采用了美国ti公司生产的10位模数转换器tlc1549。它采用cmos工艺,具有内在的采样和保持,采用差分基准电压高阻输入,抗干扰,可按比例量程校准转换范围,总不可调整误差达到()1lsb max(4.8mv),占地面积小等特点。其引脚图见图2-5。图2-5 tlc1549的管脚排列其工作原理为:在芯片选择(/cs)无效情况下,i/o clock最初被禁止且data out处于高阻状态。当串行接口把/cs拉至有效时,转换时序开始允许i/o clock工作并使data out脱离高阻状态。串行接口然后把i/o clock 序列提供给i/o clock并从data out接收前次转换结果。i/o clock从主机串行接口接收长度在10和16个时钟之间的输入序列。开始10个i/o时钟提供采样模拟输入的控制时序。在/cs的下降沿,前次转换的msb出现10个时钟长度 ,那么在10个时钟的下降沿,内部逻辑把data out拉至低电平以确保其余位的值为零。在正常进行的转换周期内,规定时间内/cs端高电平至低电平的跳变可终止改周期,器件返回初始状态(输出数据寄存器的内容保持为前次转换结果)。由于可能破坏输出数据,所以在接近转换完成时要小心防于止/cs被拉至低电平。时序图如图2-6所示。 图2-6 tlc1549工作时的时序图由于它采用串行输出的方式,占地面积小,方便灵活,与单片机的接口简单,所以应用非常广泛。电路如图2-7所示。 图2-7 a/d转换电路2.3 按键电路l 方案一:采用阵列式键盘 此类键盘是采用行列扫描方式,当按键较多时可以减少占用单片机的i/o口数目。 l 方案二:采用独立式按键电路 每个键单独占有一根i/o接口线,每个i/o口的工作状态互不影响,此类键盘采用端口直接扫描方式。但是当按键较多时占用单片机的i/o数目较多。本系统只需四个按键,因此选择方案二。 如果按键采用中断的话,可以使单片机工作更加灵活、效率更高。由于该系统要用到4个按键,考虑到单片机的中断资源不够,所以就只用外部int0和int1中断,另外2个按键接p1.0和p1.1口。电路如图2-8所示。 图2-8 按键电路2.4 显示电路l 方案一:采用动态显示 这种工作方式是分时轮流选通数码管的公共端,使得各个数码管轮流导通。当所有数码管依次显示一遍后,软件控制循环,使每位显示器分时点亮。这种方式不但能提高数码管的发光效率,并且由于各个数码管的字段线是并联使用的,因而大大简化了硬件线路。 各个数码管虽然是分时轮流通电,但由于发光数码管具有余辉特性及人眼具有视觉暂留作用,所以适当选取循环扫描频率时,看上去所有数码管是同时点亮的,察觉不出有闪烁现象。l 方案二:采用静态显示数码管工作在静态显示方式下,共阴极或共阳极点连接在一起接地或高电平。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。该工作方式常采用串行口设定方式0输出,外接74ls164移位寄存器构成显示电路。 由于该系统用到的数码管很多,要分3行显示,如果采用动态显示的话,单片机的i/o口资源明显不够。而采用静态显示的话,一个数码管就要对应一片74ls164芯片,这使得成本要花费很多。综合考虑后,决定采用动态显示和静态显示相结合的方法。 采用3片74ls164级联的方法来带动21个数码管显示。第一行中年、月、日的段选线串接在一起接到第一片74ls164,第二行中小时、分钟、秒、星期的段选线串接在一起接到第二片74ls164,第三行中农历月、日、温度的段选线串接在一起接到第三片74ls164。第一片的a、b脚由单片机的rxd脚输入,第二片的a、b脚接到第一片的qh,第三片的a、b脚接到第二片的qh。三片的clk脚共同接到单片机的txd。位选通信号用8个三极管来控制。千年与十时、农历十月相连接至w1;百年与时、农历月相连接至w2;十年与十分、农历十日相连接至w3;年与分、农历日相连接至w4;十月与十秒、温度十位相连接至w5;月与秒、温度个位相连接至w6;十日与星期相连接至w7;日个位接至w8。发送第1个数据时,数据暂存在第一片164芯片中;发送第2个数据时,第1个数据就移到第二片164芯片,而第2个数据就存在第一片芯片中;发送第3个数据时,第1个数据就移到第三片芯片,第2个数据移到第二片芯片,而第3个数据就存在第一片芯片中。当连续发送完3个数据后,把w1打开,这时就显示第1列的3个数;当第2次发送完3个数据后,把w2打开,就显示第2列的3个数;依此下去就可以显示全部的数据。w1-w8由p2口来控制选通,当选通速度很快时,肉眼就看不出有闪烁现象。电路如图2-9所示。 图2-9 显示电路2.5 电源电路 该部分有2个输出电压,9v和5v。220v交流市电通过电源变压器变换成交流12v低压,再经过桥式整流电路d1d4和滤波电容2200uf的整流和滤波,在固定式三端稳压器lm7809的vin和gnd两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过lm7809的稳压和100uf电容的滤波后,便在稳压电源的输出产生了精度高、稳定度好的直流输出9v电压。9v电压给可调分流基准芯片tl431提供电源。tl431的主要作用是给a/d转换芯片tlc1549提供比较精确的参考电压。9v电源再经过lm7805稳压后,给各个芯片提供电源。电路见图2-10。三端稳压器是标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。三端稳压器的工作原理(以78系列为例)如下:它与一般分立元件组成的串联式稳压电路基本相似。不同的是增加了启动电路、保护电路和恒流源。启动电路是为恒流源建立工作点而设置的。恒流源随着在基准电压形成和误差放大器电路中,是为了使稳压器能够在比较大的电压变化范围内正常可靠工作。在芯片内设置了两种较完善的保护电路:一是过流保护,一是过热保护。图2-10 电源电路德州仪器公司生产的tl431是一个有良好的热稳定性能的三端可调分流基准源。它的输出电压用两个电阻就可以任意地设置到从vref(2.5v)到36v范围内的任何值。该器件的典型动态阻抗为0.2。图2-11是该器件的符号。3个引脚分别为:阴极(cathode)、 阳极(anode)和参考端(ref)。它在恒压电路中的应用如图2-12所示。 图2-11 tl431图 图2-12 tl431的电路编程输出电压,达36伏 电压参考源误差:典型+/-0.4%25 低动态输出阻抗,典型为0.22欧 1.0毫安至100毫安的灌电流能力 典型值为50ppm/的等效全范围温度系数 在整个额定工作温度范围内可进行工作温度补偿 低输出噪声电压tl431的内部含有一个2.5v的基准电压,所以当在ref端引入输出反馈时,器件可以通过从阴极到阳极很宽范围的分流,控制输出电压。如图2-13所示的电路,当r1和r2的阻值确定时,两者对vo的分压引入反馈,若v o增大,反馈量增大,tl431的分流也就增加,从而又导致vo下降。显见,这个深度的负反馈电路必然在vi等于基准电压处稳定,此时vo=(1+r1/r2)vref。选择不同的r1和r2的值可以得到从2.5v到36v范围内的任意电压输出,特别地,当r1=r2时,vo=5v。需要注意的是,在选择电阻时必须保证tl431工作的必要条件,就是通过阴极的电流要大于1 ma 。在该系统中,2个电阻都取1k,主要是给tlc1549提供+5v的参考电压。电路如图2-13所示。图2-13 tl431所构成的电路在该系统中还需加一个掉电保护。掉电保护通常可采用以下三种方法:一是加接不间断电源,让整个系统在掉电时继续工作;二是采用备份电源,掉电后保护系统中全部或部分数据存储单元的内容;三是采用eeprom来保存数据。由于第一种方法体积大、成本高,对单片机系统来说,不宜采用。第二种方法是根据实际需要,掉电时保存一些必要的数据,使系统在电源恢复后,能够继续执行程序,因而经济实用,故大量采用。eeprom既具有rom掉电不丢失数据的特点,又有ram随机读写的特点。但由于其读写速度与读写次数的限制,使得eeprom不能完全代替ram。考虑到成本等各方面问题,该系统只外接一个蓄电池。当掉电后,二极管导通,这时电源由蓄电池来提供。 2.6 闹钟电路l 方案一:采用蜂鸣器声音指示。蜂鸣器又分无源和有源两种。前者需要输入声音频率信号才能正常发声,后者则需外加适当直流电源电压就可以了。l 方案二:采用发光二极管来代表闹钟闹铃。l 方案三:外接音乐芯片。一旦定时时间到,单片机就给音乐芯片一个触发脉冲,使芯片工作发出响声。这三种方案的电路都很简单,但考虑到方案一中蜂鸣器发出的响声不悦耳,因此不采用;方案二用发光二极管起不到很好的报警提示作用,故也不采用。方案三虽外接音乐芯片使成本提高,但可以起到很好的报警作用,因此采用方案三。2.7 总电路图:(见图2-14) 图2-14 总电路图3. 程序流程图3.1主程序流程图 3.2按键扫描程序流程图3.3设置时间程序流程图(int0中断) 3.4修改时间程序流程图(int1中断) 3.5时间程序流程图(t0中断)3.6温度采集程序流程图 3.7闹钟程序流程图3.8公历转农历程序流程图4.系统调试和设计效果4.1系统调试硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性错误。由于在做板过程中出了点错误,导致腐蚀板出现挺多断线。经万用表检查,手工慢慢焊接好后接入电源。再用万用表检查各个芯片管脚的电压是否达到正常的工作电压,然后判断是否有存在短路现象等,经一步步修改后把硬件调试好。程序的调试是采用一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能等;最后逐步将各子程序联接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。在程序调试过程当中,主要是判断进位的问题。要调试它在大小月中进位会不会出现错误,尤其是十六进制和十进制之间的问题。有时候没考虑清楚,在运算过程当中就会经常出现错误。在显示部分中,我是把第一行显示写好后,再写第二行,然后第三行,再把这三行显示结合在一起。在温度采集中,要把传感器采集进来的信号经过a/d转换后,再进行乘法和除法运算,bcd码转换。还有就是判断闰年和闰月的问题,公历纪年法中,能被4整除的大多是闰年,能被100整除而不能被400整除的年份不是闰年,能被3200整除的也不是闰年。4.2使用说明刚上电时,由于单片机复位后i/o口输出高电平,音乐芯片就触发导通发出响声。4个按键的功能分别为:退出、闹钟、设置、修改。退出键:当数码管显示闹钟时间时,按下退出键后,显示就切换到当前时间,同时设置键中选择的要修改

温馨提示

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

评论

0/150

提交评论