基于单片机的万年历设计-本科论文.doc
永城职业学院 课 程 设 计题目 基于单片机的万年历设计 系别 专业 班级 姓名 学号 指导教师 日期 永城职业学院课程设计目 录摘 要3前 言4第一章 概述5第二章 总体设计62.1 设计要求62.2 主控芯片选择62.3 时钟芯片的选择方案论证62.4 温度传感器的选择方案与论证7第三章 系统硬件设计83.1 单片机主控模块设计83.2 传感器设计93.3 显示设计103.4 按键设计113.5 主电路设计11第四章 软件设计124.1仿真与测试124.1.1 软件测试124.1.2 仿真124.2 显示子程序设计13第五章 结论13致 谢14参考文献15摘 要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。实时监测环境温度(可根据需要启动高温报警功能);最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。 研究结果表明,由于万年历的应用相当普遍,所以其设计的核心在于硬件成本的节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。关键词:万年历;温度计;闹钟;液晶显示前 言对于本次毕业设计,首先,本课题对系统主要功能进行分析,确定该系统的主要功能是:阳历日期显示、时间显示、农历日期显示、星期显示、环境温度显示和定时闹铃,并可以修改时间,在修改时间的过程中,可以对月份天数自动判断。随着微电子技术和超大规模集成电路技术的不断发展家用电子产品不但种类日益丰富而且变得更加经济实用。单片微型计算机体积小、性价比高、功能强、可靠性高等独有的特点在各个领域得到了广泛的应用。电子万年历是一种应用非常广泛的日常计时工具。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用。该电子万年历还具有时间校准等功能。在软件方面,主要包括日历程序、时间调整程序,显示程序等。所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。最后在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。第一章 概述随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。为了在观测时间的同时,能够了解其它与人类密切相关的信息,比如温度、星期、日期等,电子万年历诞生了,它集时间、日期、星期和温度功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势。伴随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来的诸多方便,作为一种附加功能,现在越来越广泛的被应用于各种电子产品中,具有广阔的市场前景.二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,更加直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,电子万年历的出现带来了钟表计时业界跨跃性的进步。 如今电子万年历飞入了寻常百姓家,挂式、台式以及带装饰画面等丰富的电子万年历数不胜数,不但满足了精准的计时需求,还将计时带上了科技时尚的味道。单片机技术所应用的功能控制芯片可进行多种功能的设置,如闹钟、报时、日历查询、语音等;并改善了很多原有石英钟不能解决的问题,例如:数字夜光显示、数据存储以及全自动温度检测等功能;这给传统计时消费带来了新的动力,越来越多的消费者选择了电子万年历。第二章 总体设计2.1 设计要求基本要求: (1)具有显示年、月、日、星期、时、分、秒等功能; (2)万年历具有闰月识别显示功能; (3)具备年、月、日、星期、时、分、秒校准功能; (4)具备温度报警、节日提醒、闹钟功能。2.2 主控芯片选择方案一:纯硬件电路系统,各功能采用分离的硬件电路模块实现。用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。 方案二:用可编程逻辑器件(PLD)实现。这种方案与前一种相比,可靠性增加,同时可以很好的完成时钟的功能。同时这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求,系统的灵活性不够。方案三:虽然目前单片机的品种很多,但其中最具代表性的当属Intel公司的MCS-51单片机系列。MCS-51以其典型的结构、完善的总线、SFR的集中管理模式、位操作系统和面向控制功能的丰富的指令系统,为单片机的发展奠定了良好的基础。MCS-51系列的典型芯片是80C51(CHMOS型的8051)。为此,众多的厂商都介入了以80C51为代表的8位单片机的发展,如Philips、Siemens(Infineon)、Dallas、ATMEL等公司,我们把这些公司生产的与80C51兼容的单片机统称为80C51系列。特别是在近年来,80C51系列又有了许多发展,推出了一些新产品,主要是改善单片机的控制功能,如内部集成了高速I/O口、ADC、PWM、WDT等,以及低电压、微功耗、电磁兼容、串行扩展总线和控制网络总线性能等。2.3 时钟芯片的选择方案论证(一) 可直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。(二) 采用DS1302时钟芯片实现时钟,DS130是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振4。因此,本设计中采用DS1302提供时钟。2.4 温度传感器的选择方案与论证 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误。采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。因此,本设计DS18B20温度传感器作为温度采集模块。第三章 系统硬件设计3.1 单片机主控模块设计AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4kBytes Flash片内程序存储器,128Bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入7。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,如果不对端口置1,端口锁存器原来的状态有可能为0Q端为0Q为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。 单片机的最小系统如图2所示:18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.单片机的最小系统如下图所示:图2中的晶振频率为12MHz,复位方式为上电自动复位。3.2 传感器设计DS1820 数字温度计以 9 位数字量的形式反映器件的温度值。DS1820 通过一个单线接口发送或接收信息,因此在中央微处理器和 DS1820 之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个 DS1820 都有一个独特的片序列号, 所以多只 DS1820 可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在 HVAC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。DS18B20的主要特征: 全数字温度转换及输出 先进的单总线数据通信 最高12位分辨率,精度可达土0.5摄氏度 12位分辨率时的最大工作周期为750毫秒 可选择寄生工作方式 检测温度范围为55°C +125°C (67°F +257°F)内EEPROM,限温报警功能 64位光刻ROM,内置产品序列号,方便多机挂接 多样封装形式,适应不同硬件系统 3.3 显示设计液晶显示的原理是利用利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。在本万年历当中1286液晶显示显示当前的实时时间和温度及重要的阴阳历节日等功能。12864液晶显示具有如下的特性:提供8位,4位并行接口及串行接口可选并行接口适配M6800时序自动电源启动复位功能 内部自建振荡源 64×16位字符显示RAM(DDRAM最多16字符×4行,LCD显示范围16×2行(改为半角输入) 2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×16 点阵)16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×8点阵)64×16位字符产生RAM(CGRAM) 15×16位总共240点的ICONRAM(ICONRAM)3.4 按键设计按键采用4个独立的按键,一个功能键、一个确认键、一个加按键、一个减按键通过这四个按键可以来合理的设置时钟的调整和闹铃的设定温度报警的上下限数值。3.5 主电路设计主电路的功能是完成年、月、日、星期、时、分、秒之间的转换, 再送往LED显示,并且接受键盘操作,对日期和时间进行校正。显示部分用P0口做为输出数据接到LED数码管a到h,并接74ls244做为各段的驱动(为了简化电路图在此用了8个上拉电阻代替74ls244)。用P3口的低3位接译码器的A0,A1,A2端,用P3.3,P3.4,P3.5分别接译码器的使能端,通过控制P3口来控制LED的动态扫描。单片机的18和19引脚接12MHZ的晶振,并接两个22PF的电容同时接地,单片机复位端接一极性电容并连接到电源处,在极性电容的负极接一10K的电阻,并连接至地做为放电用。本设计用到四个独立式键盘分别接到P1口的低4位,用P1口的P1.4,P1.5,P1.6接日历时钟的使能端和时钟端及数据输入输出口,并在日历时钟上接一32.768KHZ的晶振,并接两个22PF的电容终端和地相连,各芯片的电源部分分别接到有开关式电源产生的5V电源上,芯片的接地端都接在公共地上。第四章 软件设计4.1仿真与测试4.1.1 软件测试在本系统中,硬件电路全部采用集成芯片设计。每一个集成芯片都有相应的控制方法,即工作时序。在应用一个集成芯片的时候,首先要认真阅读其读写时序,再了解它的初始化流程及指令集。该系统除含有单总线温度传感器芯片外,还含有液晶显示模块,其控制方式都非常麻烦,对软件的设计要求很严格,尤其是温度传感器芯片,在对其读写过程中,要求有严格的延时。 (1)时钟芯片软件调试 在开始的时钟芯片读写过程中,发现不能正确读出时钟芯片数据,读出的时钟芯片数据全部为0FFH。经仔细阅读资料发现时钟芯片DS1302内部含有写保护寄存器,当其最高位为0时,可以写入移位寄存器,反之则不能写入,而在开始初始化DS1302时,并没有包含写保护寄存器最高位清零的环节,所以程序中的所有写入、读出语句全部无效,不能被DS1302所接收。在程序设计的开始加入关闭写保护语句,可以正确写入、读出时钟芯片日历寄存器数据。 (2)显示部分软件调试 为了使系统具有良好的人机交互界面,该系统采用液晶显示器显示所有数据,但是,液晶显示模块的控制要比LED数码管复杂得多。液晶模块采用8位并口和微控制器对话,在时钟下降沿有效。在开始的显示部分软件调试过程中,液晶显示模块白屏,即所送指令和数据根本没有被液晶模块所接收。(3)按键部分软件调试 在本系统中,用户可以使用键盘修改时间、设定闹铃时间。以前学习过读取微控制器引脚状态的基本语句。按照理论设计程序,并观察按键按下之后显示界面是否按照理论设计的结果变化,发现在按下一次“选择”键之后,游标不是移动一位,而是移动很多位,这说明硬件有抖动。本设计在最后按键部分软件设计过程中,采用软件消抖和按键释放判断,很好的解决了这个问题。4.1.2 仿真本次仿真使用软件Protues7.0,该软件元件库丰富,元件封装要求相对简单且参数调整方便,除此之外,程序还可进行动态调试。4.2 显示子程序设计本设计的显示部分具有消隐和闪烁功能,当时分秒等高位为0时显示消隐, 此时在读时间时更加明了,但低位不能显示消隐。闪烁功能也是本设计的一个难点,本设计采用8个位标志位,其中一个标志位通过用定时器0产生一个周期大约为每秒1.5次,使闪烁时效果达到最好。此时定时器采用定时中断的工作方式,这样可以充分利用CPU资源。另外7个标志位是时分秒等的位标志位,当秒标志位置1时即秒开闪烁,与用中断产生的标志位相结合,即在一个周期内为0时此时消隐为1时开显示,这样就使在调时间时对应的位闪烁。第五章 结论以上所述即是电子万年历的设计全过程,经过多次的反复测试与分析,对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.经过此设计,基本完成了设计任务的要求。在系统硬件设计之前,要结合当前系统的发展趋势和现状对系统功能进行定位,使系统在实际应用中具有竞争力。该系统最大的特点就是界面友好,走时准确,和现在使用LED显示数据的万年历相比,体积更小,可以作为轿车车载显示装置。系统采用液晶显示器,可以使该系统应用到更加现代化的地方。该系统采用模块化程序设计方法,同时保留了很多的微控制器I/O口,扩展十分方便。以往的采用LED显示数据的万年历要想实现功能扩展,除需要对系统程序进行修改外,还必须增加或删减LED数码管,同时要对LED图片界面进行更换,硬件改动较大。该系统本身不仅具有很大的灵活性、友好的界面、方便的可扩展性,同时,在其基础上的系统的市场需求也很可观。而且对时间进行控制。学校的电铃,要根据时间进行动作;自动配电系统,要根据时间进行通电或断电等很多场合需要根据时间量进行控制,本系统可以很好的满足这些系统的要求。参考文献1 章彧 陈炘 单片机原理及应用 南京:南京大学出版社 2011.- 17 -