51单片机电子万年历设计带有proteus仿真_第1页
51单片机电子万年历设计带有proteus仿真_第2页
51单片机电子万年历设计带有proteus仿真_第3页
51单片机电子万年历设计带有proteus仿真_第4页
51单片机电子万年历设计带有proteus仿真_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

湖南文理学院课程设计课程名称:单片机课程设计设计题目:电子万年历教学院部:电气与信息工程学院专业班级:自动化09101班指导教师:张晓虎(学生姓名:邵泽学号:0120完成时间:2012年6月12日报告成绩:摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分和秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。该电路采用AT89C52单片机作为核心、,功耗小,能在3V的低压工作,电压可选用3到5V电压供电。万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路以及串口下载电路等组成。在单片机的选择上使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用液晶LCD1602。软件方面主要包括日历程序、液晶驱动程序,显示程序等。程序采用汇编语言编写。所有程序编写完成后,在KeilC51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。关键词时钟电钟,DS1302,液晶LCD1602,单片机Abstract:…Electroniccalendarisaveryextensivedailytimingtoolformodernsocietyismoreandmorepopular.Itcanbetoyear,month,day,Sunday,when,minutes,andsecondsforthetime,alsohasaleapyearcompensationandotherfunctions,andtheDS1302longservicelifeandsmallerror.Fordigitalelectroniccalendarusingintuitivedigitaldisplay,canalsoshowsthatyear,month,day,Sunday,whentheinformationsuchas,minutesandseconds,stillhavetimecalibrationetc.Function.TheAT89C52singlechipmicrocomputerascircuitadoptscore,powerconsumptionissmall,canbein3Voflow-pressurework,voltagecanchoose3to5Vvoltagepowersupply.Thedesignprocessofthecalendarinthehardwareandsoftwaredesignofsynchronization.MainlybyAT89C52singlechipmicrocomputerhardwarepart,liquidcrystaldisplaycircuit,resetcircuit,clockingcircuitonthecircuitcircuitandserialdownloadcircuitetc.TheprocessoronthechoiceofthesinglechipmicrocomputerAT89C52use,thesinglechipmicrocomputersuitableformanymorecomplexcontrolapplications.UseofliquidcrystaldisplayLCD1602.Softwareismainlyincludingcalendarprogram,liquidcrystaldriver,showprogram,etc.Programusingassemblylanguage.Allprogramming,afterthecompletionofKeilC51softwareincommissioning,makesureno,afterProteussoftwareembeddedinwithinthesinglechipmicrocomputersimulation.KeywordsDianZhongclock,DS1302,liquidcrystalLCD1602,microcontroller目录TOC\o"1-5"\h\z\o"CurrentDocument"1设计要求与方案论证3\o"CurrentDocument"设计要求3\o"CurrentDocument"系统基本方案选择和论证3\o"CurrentDocument"单片机芯片的选择方案和论证3"\o"CurrentDocument"时钟芯片的选择方案和论证:4\o"CurrentDocument"电路设计最终方案决定5\o"CurrentDocument"2系统的硬件设计与实现5\o"CurrentDocument"电路设计框图5\o"CurrentDocument"系统硬件概述5\o"CurrentDocument"主要单元电路的设计5\o"CurrentDocument"单片机主控制模块的设计6\o"CurrentDocument"时钟电路模块的设计6}\o"CurrentDocument"显示模块电路7\o"CurrentDocument"串口下载电路8复位电路9\o"CurrentDocument"稳压电路10\o"CurrentDocument"3系统的软件设计11程序流程框图11子程序的设计11读写DS1302子程序11】读写LCD1602子程序124软件测试及分析14\o"CurrentDocument"分析与结论14\o"CurrentDocument"调试分析14\o"CurrentDocument"调试和结论15\o"CurrentDocument"5总结151设计要求与方案论证设计要求能够显示年、月、日、时、分。可以人为校正年、月、日、时、分。地一次开机显示:20000101。掉电信息不丢失。系统基本方案选择和论证系统方案包括单片机的选型、时钟芯片的选择和显示模块的确定等。单片机芯片的选择方案和论证方案一:采用89C51芯片作为硬件核心、,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。(方案二:采用AT89C52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89C52作为主控制系统控制整个系统的正常工作。显示模块选择方案和论证方案一:采用数码管显示,数码管是由八个发光二极管组成,对于显示数字字符比较适合,但对于电子万年历需要的数码管位数多,编程麻烦,且不稳定,存在抖动现象,需要通过软件延时进行消抖。方案二:采用LCD1602液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,易于编程,稳定可靠。通过对比,本课程设计采用LCD1602作为显示模块。?时钟芯片的选择方案和论证:方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、时、分计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对分、时、日、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压〜范围内,时耗电小于300nA。同时在外加电源和外加晶振电路下,掉电后走时准确。本课程设计采用DS1302作为时钟的芯片。电路设计最终方案决定综上各方案所述,对此次设计的方案选定:采用AT89C52作为主控制系统;DS1302提供时钟;LCD1602作为显示。2系统的硬件设计与实现电路设计框图系统硬件概述本电路是由AT89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分和秒进行计时,具有闰年补偿功能,工作电压为〜。采用三线接口(SPI总线)与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、时、分,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部分由LCD1602显示,精度高,显示稳定。主要单元电路的设计单元电路的设计包括主控制系统、时钟电路模块、显示模块、串口下载模块、复位电路和稳压电路的设计。单片机主控制模块的设计AT89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部

晶振和30PF电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和30PF电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.如图2-1所示]图2-1主控制系统时钟电路模块的设计图2-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32,7.68KHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。I/O为串行数据输入端(双向)。SCLK始终是输入端。如图2-2所示。图2-2DS1302的引脚图*显示模块电路如图2-3所示,采用液晶1602数据端由P0提供实现8位并行通信,其数据交换的速率比较快VL是调整液晶显示的亮度,E是使能端口,RW是读写控制端口,高电平读信号,低电平写信号;RS是读写命令与数据控制端口,高电平写数据,低电平写命令。液赢显示电路VCC5GND图2-3LCD1062的电路图串口下载电路经过KEILC51编译的汇编程序必须下载到单片机内部运行,才能实现所需要的功能。然而单片机得1、0是用5V、和0V表示的,而电脑中的1、0用的电压并不是5V、和0V,因此,必须用MAX232进行电压转化,于是设计的串口下载电路。如图2-4所示。

KLAX232DCS1104341C11045TXD113匚|10415^T1INKLAX232DCS1104341C11045TXD113匚|10415^T1INT2INTKOUTR1INT2-OUTR2INR1〜OUTGNDR2-OUTC9104Cl®104l-GNDRXDGNDOOOJ1DConnector9■c图2-4串口下载电路在单片机中运行程序时,如果程序跑飞,即程序运行的地址出现混乱时,可以用复位电路,在低电平时程序从零地址从新开始运行。同时也可以使用看门狗,定时的喂狗,使程序每次从零地址开始运行。防止程序跑飞。如图2-5所示。

VCC5GND图2-5复位电路VCC5GND稳压电路当输入的电压高于或者低于51v时,可以用L7805CV稳压到5V,保证单片机稳定的性能和可靠的稳定性,其中的二极管是利用了单片机的单向导电性,导致单片机被烧毁或者系统不能正常工作。如图2-6所示。图2-6稳压电路3系统的软件设计程序流程框图4软件proteus测试及分析X288CLKKPT'COZ::::1VCC1pXTWJPDU'.™P0.1W1pn^i-.KGXT,12pnawip口.甘gP口里灿5pn&‘就右RSTPD.T^PZJViSP2.1«pz^'h-nPW3W1AU=P7.J/1W3百.pzs.raPWJSW.PW.TWISP1UT2pmrvHxnp1P31iT:Tip-)2P3』lffDr13razfWFTPUP3.44TDP17P3.7i^[i通过调节四个按键设定时间为2000年1月1日12点整U1EmpapnEpnpapahhmRZpzm』uwa.「grvIDATE00-01-015RTTIHE12ISSSQ9LrE典EluBdBB^EEd软件测试电子万年历是多功能的数字显示仪器。由于功能很多,所以对于它的程序也较为复杂,因此本次设计采用简化模型,即只显示年月曰,时分秒。但在程序调试时出现了相对较多的错误。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:分析与结论调试分析显示的数据秒并没有变化,原因是没有启动定时器,我有不断的读取DS1302时钟芯片寄存器中的数据,并显示才能实现所需要的功能,实时显示年、月、日、星期、分钟、小时、秒等基本功能来满足系统的需求。调整时间后应该先去掉写保护,如果存在写保护,那么在初始化写入初始时间时,是写不进去初始化的时间的。因而会看见显示的时间并不随着设置的初始化的值变化而变化,甚至我们看见的时间并不按着一秒一秒的增加。液晶显示的时候,由于采用的并行总线,显然传输速度快,但是数据端口必须接1K的排阻,以实现驱动,实践证明,没有排阻的时候,液晶显示就会不稳定,甚至出现乱码。因此,排阻的作用很大。写程序时要严格按照时序就行,否则,也不会显示。调试和结论经过多次反复修改程序,对电路各模块的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对所学的知识得到很大的提高与巩固.5总结通过这次制作使我了解了整个万年历的工作过程和各个部分的工作原理。使我认识到利用单片机设计的万年历便于操作。经过认真的仿真观察,本次设计的万年历能够正确的显示年、月、日等,总体来说算是比较成功的。本次单片机课程设计是使用Protues设计工具、协同使用Keil编程软件制作的。这也使我又掌握了一门非常实用的软件,对于我以后的毕业设计算是又多了一个非常好的选择。在看同学编写程序的过程中我自己也学到了很多的东西,对于一些Protues程序的不同用法和功能能够比较顺畅的读程序和简单的应用。6参考文献$1刘勇编数字电路电子工业出版社20042陈正振编电子电路设计与制作广西交通职业技术学院信息工程系20073杨子文编单片机原理及应用西安电子科技大学出版社20064王法能编单片机原理及应用科学出版社2004附录系统电路图心G-XC安万年历原睡-DI7:BZIUlTAB21岱EIt,成5-ra孑■.叫ID!疝*rx11TU1?.,Dt11rjcrrr:•七D-li_-x:-■.膜14'FTIt?:1.g<~J_亏匚节矣milKJ.tElmi;*1成职花真皿既IK咐AK卧雷STEA-JPN】K心2五.uiiSt丈EOKbCEC"CELjpcec口猝KT宓成也?u„yKin:扫IEK-L112*115耗sK-11513f划__._.,]|j.Uincr裕TTTMn附录二:系统程序清单#include<>#include<>#include<>#defineuintunsignedint#defineucharunsignedcharsbitIO=P「0;•,六,为了与DS1302的星期格式匹配,返回值需要加1DateTime[5]=(w+d)%7+1;}//*****年月日时分++/一********//voidDateTime_Adjust(charx)(switch(Adjust_Index)(case6://年00-99if(x==1&&DateTime[6]<99)DateTime[6]++;if(x==-1&&DateTime[6]>0)DateTime[6]--;//获取2月天数MonthsDays[2]=isLeapYear(2000+DateTime[6])29:28;//如果年份变化后当前月份的天数大于上限则设为上限if(DateTime[3]>MonthsDays[DateTime[4]])(DateTime[3]=MonthsDays[DateTime[4]];}RefreshWeekDay();//刷新星期break;case4://月01-12if(x==1&&DateTime[4]<12)DateTime[4]++;if(x==-1&&DateTime[4]>1)DateTime[4]--;MonthsDays[2]=isLeapYear(2000+DateTime[6])29:28;if(DateTime[3]>MonthsDays[DateTime[4]])(DateTime[3]=MonthsDays[DateTime[4]];}RefreshWeekDay();break;case3://日00-28、29、30、31,调节之前首先根据年份得出该年中断二月天数MonthsDays[2]=isLeapYear(2000+DateTime[6])29:28;//根据当前月份决定调节日期的上限if(x==1&&DateTime[3]<MonthsDays[DateTime[4]])DateTime[3]++;if(x==-1&&DateTime[3]>0)DateTime[3]--;RefreshWeekDay();break;case2://时if(x==1&&DateTime[2]<23)DateTime[2]++;if(x==-1&&DateTime[2]>0)DateTime[2]--;break;case1://分if(x==1&&DateTime[1]<59)DateTime[1]++;if(x==-1&&DateTime[1]>0)DateTime[1]--;break;}}//定时器0每秒刷新LCD显示//voidT0_INT()interrupt1(TH0=-50000/256;TL0=-50000%256;if(++tCount!=2)return;tCount=0;〃按指定格式生成待显示的日期时间串Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5);Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8);Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11);〃星期strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]-1]);//时分秒Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5);Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8);Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11);//显示年月日,星期,时分秒Display_L

温馨提示

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

评论

0/150

提交评论