基于单片机万年历的设计毕业毕业设计.docx

上传人:b****4 文档编号:3913442 上传时间:2022-11-26 格式:DOCX 页数:29 大小:244.77KB
下载 相关 举报
基于单片机万年历的设计毕业毕业设计.docx_第1页
第1页 / 共29页
基于单片机万年历的设计毕业毕业设计.docx_第2页
第2页 / 共29页
基于单片机万年历的设计毕业毕业设计.docx_第3页
第3页 / 共29页
基于单片机万年历的设计毕业毕业设计.docx_第4页
第4页 / 共29页
基于单片机万年历的设计毕业毕业设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于单片机万年历的设计毕业毕业设计.docx

《基于单片机万年历的设计毕业毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机万年历的设计毕业毕业设计.docx(29页珍藏版)》请在冰豆网上搜索。

基于单片机万年历的设计毕业毕业设计.docx

基于单片机万年历的设计毕业毕业设计

 

基于单片机万年历的设计

 

毕业设计项目:

基于单片机万年历的设计

专业:

计算机应用技术

年级:

09级

学号:

0904040105

姓名:

指导老师:

鲁晓辉

 

摘要

本文借助电路仿真软件Protues对基于AT89S51单片机的电子万年历的设计方法与仿真进行了全面的阐述。

该电子万年历在硬件方面主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCM点阵液晶显示屏显示。

AT89C51单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。

此外,该电子万年历还具有时间校准等功能。

在软件方面,主要包括日历程序、时间调整程序,显示程序等。

所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机进行仿真。

论文主要研究了液晶显示器LCM与时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联与通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。

研究结果表明,由于万年历的应用相当普遍,所以其设计的核心在于硬件成本的节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。

关键词:

单片机;DS1302;DS18B20;LCM1602

 

Abstract

ThispapermainlydiscussthedesignandsimulationofelectroniccalenderbasedonAT89S51withthehelpofProtues.Onthehardwareside,theelectroniccalendarusingAT89C51microcontrollerasthemaincontrolcenter,clockprovidedbytheDS1302clockchip,1602LEDdotmatrixLCDdisplay.AtmelCorporationAT89C51microcontrollerisproductedbyAtmelCorporation,lowpowerconsumption,voltagecanbeselected4V~6Vvoltagepowersupply;DS1302clockchip,launchedintheUnitedStateswithDALLASsmallcurrentchargingfunctionrealtimeclockchip,lowpowerconsumption,itcanbeyears,month,date,day,hour,minute,secondstime,alsohasaleapyearcompensationandotherfunctions,andDS1302longlife,smallerror;LEDdigitaldisplayisusedinLCDdisplaysthatcandisplayin,month,day,week,hours,minutes,secondsandotherinformation.Inaddition,theelectroniccalendarisalsoatimecalibrationfunctions.Intermsofsoftware,includingcalendarprogram,timetoadjustprocedures,displayprocedures.Allprogrammingiscomplete,theKeilsoftwaredebugging,makesurethereisnoproblem,intheProteussoftwareembeddedwithinthesimulatedMCU.

ThisarticlefocusonliquidcrystalscreenLCM1602andclockchipDS1302,temperaturesensorDS18B20whichconnectedandcommunicatedwithMicrocontroller.Severalsolutionswillalsocomparedwitheachother.Onsoftwareside,calendercalculationwillbediscussedaswell.

Theresultsareasfollows:

aselectroniccalenderarewidelyusedinourdailylife.Itshould

bechipandconvenientsoastowinmoreprofit.

Keywords:

Microcontroller,DS1302;DS18B20;LCD1602

 

 

绪论

随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。

为了在观测时间的同时,能够了解其它与人类密切相关的信息,比如温度、星期、日期等,电子万年历诞生了,它集时间、日期、星期和温度功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势。

伴随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。

由其是单片机技术的应用产品已经走进了千家万户。

电子万年历的出现给人们的生活带来的诸多方便,作为一种附加功能,现在越来越广泛的被应用于各种电子产品中,具有广阔的市场前景。

通过以往对工业自动化的相关课程学习和理解独立完成制作电子万年历的设计。

电子万年历作为电子类小产品不仅是市场上的宠儿,也是是单片机设计培训中一个很实用的题目。

因为这个课题有很好的开放性和可发挥性,对制作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。

而且要求设计的电子万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。

所以,电子万年历制作无论从实用目的,还是从培养能力的角度来看都是很有价值的毕业设计课题。

本电子万年历的设计在硬件方面主要采用AT89S51单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCM点阵液晶显示屏显示。

AT89S51单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电[1];DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。

此外,该电子万年历还具有时间校准等功能。

在软件方面,主要包括日历程序、时间调整程序,显示程序等。

所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机进行仿真。

最后在老师同学的帮助以与自己的努力下完成了此次电子万年历的设计。

第一章方案设计

第一节系统基本方案选择和论证

1.1单片机芯片的选择

本设计采用AT89S51芯片作为硬件核心,该芯片采用FlashROM,部具有4KBROM存储空间,相对于本设计而言程序空间完全够用。

能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,而且运用于电路设计中时具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,避免芯片的多次拔插对芯片造成的损坏。

1.2显示模块选择方案和论证

方案一:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。

方案二:

采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。

但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍,所以不采用LED数码管作为显示[2]。

方案三:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见[3],对于电子万年历而言,一个1602的液晶屏即可,价格也还能接受,需要的接口线较多,但会给调试带来诸多方便,所以此设计中采用LCD1602液晶显示屏作为显示模块。

1.3时钟芯片的选择方案和论证

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案。

方案二:

采用DS1302时钟芯片实现时钟,DS130是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

采用普通32.768kHz晶振[4]。

因此,本设计中采用DS1302提供时钟。

1.4温度传感器的选择方案与论证

方案一:

使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。

此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差[5]。

方案二:

采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路[6]。

另外,数字式温度传感器还具有测量精度高、测量围广等优点。

因此,本设计DS18B20温度传感器作为温度采集模块。

第二节电路设计最终方案决定

综上各模块的选择方案与论证,确定最后的主要硬件资源如下:

采用AT89S51作为主控制系统;DS1302提供时钟;DS18B20作为数字式温度传感器;LCD1602液晶屏作为显示。

 

第二章系统的硬件设计与实现

第一节电路设计框图

本系统的电路系统框图如图1所示。

AT89S51单片机对DS1302和DS18B20写入控制字并读取相应的数据,继而控制LCM1602作出对应的显示。

 

图1系统硬件框图

第二节系统硬件概述

本电路是由AT89S51单片机作为控制核心,能在3V超低压工作,AT89S51是一个低功耗,高性能CMOS8位单片机,片含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与80C51引脚结构,芯片集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302部有一个31*8的用于临时性存放数据的RAM寄存器。

可产生年、月、日、周、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20完成,它具有独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,测温围-55℃~+125℃,固有测温分辨率0.5℃,支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温,工作电源:

3~5V/DC,在使用中不需要任何外围元件;显示部份由LCD1602液晶显示器完成,该显示器为工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。

第三节主要单元电路的设计

3.1AT89S51单片机主控制模块的设计

AT89S51是一个低功耗,高性能CMOS8位单片机,片含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与80C51引脚结构,芯片集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:

40个引脚,4kBytesFlash片程序存储器,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,复位方式为上电自动复位[8]-[9]。

图2单片机最小系统

3.2单片机中断系统

在提与单片机的最小系统后,现对单片机的另一重要应用系统即中断系统做一个比较详细的介绍。

在CPU与外设交换信息时,存在着一个快速CPU与慢速的外设之间的矛盾。

为解决这个问题,发展了中断的概念。

单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?

通过中断可以实现多个任务的资源共享。

所谓的中断就是,当CPU正在处理某项事务的时候,如果外界或者部发生了紧急事件,要求CPU暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。

从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回这样三个要素。

中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。

MCS-51单片机的中断源共有两类,它们分别是:

外部中断和部中断。

外部中断0(INT0)来自P3.2引脚,通过外部中断0触发方式控制位IT0(TCON.0),来决定中断输入信号是低电平有效还是负跳变有效。

一旦输入信号有效,便使IE0标志置一,向CPU申请中断;外部中断1(INT1)来自P3.3引脚,通过外部中断1触发方式控制位IT1(TCON.2),来决定中断输入信号是低电平有效还是负跳变有效。

一旦输入信号有效,便使IE0标志置一,向CPU申请中断。

部中断有三个:

TF0,TF1,RI或TI。

TF0(TCON.5),片定时/计数器T0溢出中断请求标志。

当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断;TF1(TCON.7),片定时/计数器T1溢出中断请求标志。

当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断;RI(SCON.0)或TI(SCON.1),串行口中断请求标志。

当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断[10]。

MCS-51单片机为用户提供了四个专用寄存器,来控制单片机的中断系统。

定时器控制寄存器(TCON),该寄存器用于保存外部中断请求以与定时器的计数溢出。

进行字节操作时,寄存器地址为88H。

按位操作时,各位的地址为88H~8FH,当CPU采样到INT0(或INT1)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。

当中断响应完成转向中断服务程序时,由硬件把IE0(或IE1)清零,当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”。

当转向中断服务时,再由硬件自动清“0”。

计数溢出标志位的使用有两种情况:

采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用;串行口控制寄存器(SCON),进行字节操作时,寄存器地址为98H。

按位操作时,各位的地址为98H~9FH,当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”,当接收完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。

串行中断请求由TI和RI的逻辑或得到。

就是说,无论是发送标志还是接收标志,都会产生串行中断请求;中断允许控制寄存器(IE),进行字节操作时,寄存器地址为0A8H。

按位操作时,各位的地址为0A8H~0AFH,可见,MCS-51单片机通过中断允许控制寄存器对中断的允许(开放)实行两级控制。

即以EA位作为总控制位,以各中断源的中断允许位作为分控制位。

当总控制位为禁止时,关闭整个中断系统,不管分控制为状态如何,整个中断系统为禁止状态;当总控制位为允许时,开放中断系统,这时才能由各分控制位设置各自中断的允许与禁止。

MCS-51单片机复位后(IE)=00H,因此中断系统处于禁止状态。

单片机在中断响应后不会自动关闭中断。

因此在转中断服务程序后,应根据需要使用有关指令禁止中断,即以软件方式关闭中断。

中断优先级控制寄存器(IP)MCS-51单片机的中断优先级控制比较简单,因为系统只定义了高、低2个优先级。

高优先级用“1”表示,低优先级用“0”表示。

各中断源的优先级由中断优先级寄存器(IP)进行设定。

IP寄存器地址0B8H,位地址为0BFH~0B8H。

3.3时钟电路模块的设计

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力[11]。

DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:

首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。

当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在Vcc>2.0V之前,RST必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向),SCLK为时钟输入端。

DS1302的控制字节的最高有效位(位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1