




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Proteus的多功能万年历的设计摘要:在当代繁忙的工作与生活中,时间与每一个人都有非常密切的关系,每个人都受到时间的影响,电子万年历的出现给人们的工作与生活带来了福音。电子万年历是实现对阳历的日期和时间以及阴历的日期显示的计时装置。本文介绍了基于单片机AT89C52的电子万年历的设计,该设计结合时钟芯片DS1302以及显示器件LCD12864,能够直观的显示阳历年、月、日、星期、时、分、秒,以及通过程序算法转换阳历的日期,得到阴历的年、月、日。全部信息均受单片机AT89C52的控制,并由液晶显示器件LCD12864显示。关键词:Proteus,单片机,万年历,仿真ThedesignofthemultifunctionalcalendarbasedonProteusAbstract:Incontemporarybusyworkandlife,timeandeveryonehasaverycloserelationship,everyoneistheinfluenceofthetime,theemergenceofelectroniccalendartopeoplesworkandlifebringtheGospel.Electroniccalendaristherealizationofthesolarcalendardateandtimeanddateofthedisplayofthetimingdevice.ThispaperintroducestheAT89C52singlechipmicrocomputerbasedontheelectroniccalendardesign,thedesignwiththeclockchipDS1302anddisplaydevicesLCD12864,canintuitiveshowsYangLiNian,month,day,week,when,minutesandseconds,andthroughtheprocessofconvertingsolarcalendardatealgorithm,getthelunarcalendaryear,month,day.Inthedisplaylunarcalendartime,canindicatewhetherforaleapyear,intercalarymoon,finishatthesametimetotheirautomaticadjustment,allinformationbyAT89C52singlechipmicrocomputercontrolofboth,andtheliquidcrystaldisplaydeviceLCD12864display.Keywords:Proteus,MCU,PerpetualCalendar,Simulatio目录1前言.11.1本设计的研究背景和研究意义.12.系统总体方案设计.32.1方案论证与比较.32.1.1方案一基于AT89C52的电子万年历的设计.32.1.2方案二基于PLD的电子万年历的设计.42.1.3方案三基于凌阳单片机的电子万年历的设计.42.2本设计方案选择.53系统硬件设计.63.1控制电路的设计.63.1.1元器件的选型.63.1.2电路选择.83.2时钟电路的设计.83.2.1元器件的选型.83.2.2电路选择.103.3显示电路的设计.103.3.1元器件的选型.103.3.2电路选择.113.4传感电路的设计.123.4.1芯片的选择及电路绘制.124系统软件设计.134.1软件设计流程图.134.2阳历程序设计及功能实现.144.3时间调整程序设计及功能实现.154.4阴历程序设计及功能实现.175系统调试及分析.215.1硬件调试及功能分析.215.1.1编程环境Proteus.215.1.2用ProteusISIS对电子万年历的硬件电路设计.21I5.2软件调试及功能分析.245.2.1阳历显示程序功能实现及其分析.245.2.2时间调整程序功能实现及其分析.245.2.3阴历显示程序功能实现及其分析.255.2.4用ProteusISIS进行电子万年历的仿真测试.25结论.27参考文献.28致谢.29附录一:ISIS绘制电子万年历系统的电路原理图.30附录二:系统完整程序.3101前言单片机自20世纪70年代问世以来,作为微计算机一个很重要的分支,应用广泛,发展迅速,已对人类社会产生了巨大的影响。目前,单片机的应用已经渗透到国民经济与人们生活中的各个领域。各类导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的手机充电器电话电风扇录像机摄像机全自动化洗衣机的控制,以及遥控玩具电子宠物等等,这些都离不开单片机。随着电子技术的迅速发展,时间的流逝,从观察太阳、摆钟到现在的电子钟,人类在不断的研究、不断的创新。多功能万年历是实现对年、月、日、时、分、秒、农历等显示的计时装置,广泛应用与家庭、车站、码头、办公室、银行等各种场所,成为人们日常生活中的必需品。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。钟表的数字化给人们生活带来了极大的方便,在此基础上完成的电子万年历精度高,功能易于扩展,易于将温湿度传感器与电子万年历芯片集成一起,从而在一个显示器上显示出数值。由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。1.1本设计的研究背景和研究意义二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。随着电子技术的迅速发展,特别是大规模集成电路出现,给人类生活带来了根本性的变化,尤其是单片机技术的应用产品已经走进了千家万户。近年来,我国科技不断发展,我国经济发展的支柱产业电子产业获得长足发展,各种电子产品琳琅满目,随处可见,随着电子产品的更新速度的加快,各种功能强大,款式新颖的电子产品不断问世。1万年历便是这一发展趋势中的代表,万年历则顺应了人们对时间方面的要求。它的出现给人们的生活带来的诸多方便,在时间极显宝贵的现代生活中,起作用更是不言而喻的。他在学校、车站、码头、剧院、医院、办公室等公共场所的应用非常广泛。但传统的万年历除了显示时间之外,功能较为单一,逐渐失去了市场。顺应技术发展和人们生产生活需求,各种功能的新式万年历不断涌现,且功能不断更新。万年历作为电子类的小产品以其方便、实用等优势成为市场上的宠儿,同时也成为单片机设计培训中一个很实用的课题。因为这个课题有很好的开发性和可发挥性,因此对设计者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且要求设计的万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。所以万年历不论从实用角度还是培养能力角度都很有价值1。22.系统总体方案设计2.1方案论证与比较2.1.1方案一基于AT89C52的电子万年历的设计采用AT89C52芯片作为硬件核心,采用FlashROM,内部具有8KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,编程也简单,而且价格便宜,使整体的设计成本降低。采用LCD12864液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,显示美观,方便查看1。采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。本方案的系统框图如图2.1所示。图2.1方案一系统框图时钟芯片按键主控模板AT89C52温湿度传感器液晶显示器LCD1286432.1.2方案二基于PLD的电子万年历的设计采用ALTERA公司的FLEX10K系列PLD器件。设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接比较方便。采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合2。采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。该方案的系统框图如图2.2所示。图2.2方案二系统框图2.1.3方案三基于凌阳单片机的电子万年历的设计凌阳16位单片机有丰富的中断源和时基。它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。I/O口功能也比较强大,方便使用。用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善,成本也相对低一些。采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。主控模板(PLD)时钟电路(DS1302)键盘扫描电路点阵数码管4直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是实现的时间误差较大3。此方案的系统框图如图2.3所示。图2.3方案三系统框图2.2本设计方案选择在方案二中,但是考虑到本设计的特点,PLD在功能扩展上比较受局限,而且占用的资源也相对多一些。显示模块使用的点阵式数码管的价格相对较高。在方案三中,凌阳单片机在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高。显示模块使用的数码管编程繁琐,操作比液晶显示复杂,也不便于直观的查看。综上各所述,本次设计将选择方案一:基于AT89C52的电子万年历的设计。采用AT89C52作为控制系统;DS1302提供时钟;LCD12864作为显示。主控模板(凌阳)键盘扫描电路LED数码管53系统硬件设计3.1控制电路的设计3.1.1元器件的选型(1)单片机AT89C52AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止4。AT89C52的引脚图如图3.1所示。6图3.1AT89C52引脚图(2)单片机晶振电路晶振电路采用的是频率为12MHz的晶体振荡器。在晶振的两端接两个电容值为22pF电容的目的是为晶振输出信号滤波5。如图3.2所示为晶振电路连接图。图3.2单片机晶振电路(3)单片机复位电路AT89C52单片机的复位输入引脚RET为AT89C52提供了初始化的手段。有了它可以使程序从指定处开始执行,即从程序存储器中的0000H地址单元开始执行程序。在89C52的时钟电路工作后,只要在RET引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位。只要RET保持高电平,则89C52循环复位。只有当RET由高电平变成低电平以后,89C52才从0000H地址开始执行程序。复位电路采用的复位方式为上电复位。复位电路中使用的电容C3的值为10uF,电阻R1的值为10K。上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行6。如图3.3所示为复位电路图。7图3.3单片机复位电路3.1.2电路选择最小控制系统由单片机、晶振电路和复位电路组成。3.2时钟电路的设计3.2.1元器件的选型时钟芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,时钟操作可通过AM/PM指示决定采用24或12小时格式。工作电压为2.5V5.5V,采用双电源供电(主电源和备用电源),可设置备用电源充电方式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力7。如图3.4所示为DS1302引脚图,其中Vcc1为后备电源,Vcc2为主电源。X1和X2是振荡源,外接32.768KHz晶振。8图3.4DS1302引脚图控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。读写时序如下图3.5所示。图3.5DS1302读/写时序图DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3.1。9表3.1DS1302的日历、时间寄存器3.2.2电路选择时钟电路的晶体振荡器与单片机的晶振一样,如图3.6所示为时钟电路连接图。图3.6时钟芯片电路图3.3显示电路的设计3.3.1元器件的选型选型为LCD12864液晶显示,12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互10图形界面。可以显示84行1616点阵的汉字。也可完成图形显示.低电压低功耗是其又一显著特点8。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。LCD12864的数据传输过程如图图3.7所示。图3.7写数据(8位数据线模式)LCD12864读数据的时序图如图3.8所示。图3.8读数据(8位数据线模式)3.3.2电路选择LCD12864的引脚直接接在单片机的引脚上面,E、RW、DI、CS2、CS1依次接在11单片机P3.2、P3.1、P3.0、P3.7、P3.6口上,数据口D0-D7依次接在单片机P1口上。3.4传感电路的设计3.4.1芯片的选择及电路绘制温湿度传感器SHT10的SCK、DATA口的引脚直接接在单片机的引脚上面,分别接在单片机的P3.4和P3.5口上。如图3.9图3.9温湿度传感器连接图124系统软件设计4.1软件设计流程图软件系统主程序流程图如图4.1所示。图4.1主程序流程图开始初始化读、写日期,时间和温度分离日期、时间、温度显示值显示子程序日期时间修改子程序闰月子程序农历自动更新子程序返回134.2阳历程序设计及功能实现因为使用了时钟芯片DS1302,阳历程序只需从DS1302各个寄存器中读出年、月、日、星期、时、分、秒等数据,在处理即可。在首次对DS1302进行操作前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示模块单元。阳历程序设计系统流程图如图4.2所示。图4.2计算阳历程序流程图开始置阳历总天数当前月加1总天数中加入该月天数月加与当前月同?当前号数是总天数总天数中加入号计算阳历天数结束,总天数中的数据为当前日期在阳历中的第几天YNYN144.3时间调整程序设计及功能实现调整时间用5个按钮调整,1个用于复位,1个用于用来在时间显示与菜单选择之间进行切换,2个用于移位,另外1个用于清零。在调节时间过程中,因调整的位与其他的位应该有区别,所以增加了汉字显示提示功能,即调整的位有相应的汉字提示。当按下一位按钮时,即进入下一位的调整,并有相应汉字提示。时间调整程序流程图如图4.3所示。部分程序如下:#includeintmain()inty;printf(请输入年份,回车结束n);scanf(%d,if(y%4=0&y%100!=0)|y%400=0)printf(%d是闰年,y);elseprintf(%d是平年,y);return0;15图4.3时间调整程序流程图开始控制键有效,进入年调整程序等待按键程序加键有效减键有效年加1年减1控制键有效,进入日调整程序等待按键程序加键有效减键有效日加1日减1控制键有效,进入小时调整程序等待按键程序加键有效减键有效小时加1小时减1控制键有效,进入月调整程序等待按键程序加键有效减键有效月加1月减1控制键有效,进入星期调整程序等待按键程序加键有效减键有效星期加1星期减1控制键有效,进入分钟调整程序等待按键程序加键有效减键有效分钟加1分钟减1按键有效,跳出时间调整程序,进入主循环程序YYYYYY164.4阴历程序设计及功能实现阴历程序的实现是靠阳历日期来推算。要根据阳历日期来推算阴历日期,首先要设计算法。推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29天,平年2月为28天)。阴历一年有12个月或13个月(含闰月),一个月为29天或30天。如果把一个只有29天的月称为小月,用1标志,把30天的月称为大月,用0标志,那么12位二进制就能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一字节的高4位,低4位表示闰月大小,大月为0,小月为1。这样一字节就包含了所有闰月信息。阴历春节和阳历元旦相差天数也用一字节表示。总共用4字节就可以存储一年中任何一天阳历与阴历对应关系的有关数据,例如2004年的阴历与阳历对应关系如表4.1所示。表4.12004年的阴历与阳历对应关系表月份123456789101112闰2月大小小大大大小大小大小大小大小二进制1000101010101天数29303030293029302930293030十六进制4252212004年春节和元旦相差21天,这样2004年的信息表示为:21,42H,52H,21H。其中表示12个月大小信息的字节,第4位和第7位不用。第一字节位十进制,其他的都为十六进制。按此方法,100年的阳历和阴历对应关系表共使用400字节。先要根据当前阳历的日期,算出阳历为该年中的第几天,计算出当前阳历日期为该年的第几天后,再减去该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年中的总第几天,根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历为阳历的前一年,在这种情况下,根据实际,当前阴历日期会处于阴历的11月或12月,此时春节和元旦的日差减去前面计算出的当前阳历日期在阳历中的第几天的数据,其结果表示当前阴历日期距离春节的天数。再根据查表所得的该年的阴历的闰月和大小月信息,就可以推算出该天的阴历日期。17阴历程序算法流程图如图4.4所示。图4.4阴历程序流程图程序入口R2减1月个位天数是否够减?下个月为闰月?减去闰月天数月加1R3=0?R2=R2+R3R2=0R2=0?月份为当前正在减的月份的前一个月的最后一天月份为当前正在减的月份的前一个月份,号数为R2中的值YNYN18对应的阳历转换阴历程序:*功能:输入BCD的阳历数据,输出BCD阴历数据(1901-2099)*入口参数:c_flag:阳历的世纪标志clock_time:时钟地址*出口参数:无*说明:c_flag=0:21世纪c_flag=1:19世纪*voidErshi(uchar*clock_time)/bitflag_month,flag_year;ucharyear,month,day,month_point;/定义年月天uchartemp1,temp2,temp3;/uintcalendar_address;/定义农历地址/uintday_number;/ucharclock_moon3;/定义阴历clock_time+=3;/指向日day=(*clock_time4)*10+(*clock_time/BCD转换十进制clock_time+;/指向月month=(*clock_time4)*10+(*clock_time/BCD转换十进制clock_time+;/指向年year=(*clock_time4)*10+(*clock_time/BCD转换十进制temp1=ershi1_code(month-1)*2+1/找出本月第二个节气的最小日/temp2=(month-1)/4;temp2=ershi2_codeyear*3+(month-1)/4;/找出本月的节气对应的字节temp3=(month-1)%4;temp2=temp27;/计算出本月第二个节气的日期if(day=temp1)temp1=month*2-1;else19temp1=ershi1_code(month-1)*2;/找出本月第一个节气的最小日temp2=ershi2_codeyear*3+(month-1)/4;/找出本月的节气对应的字节/temp3=(month-1)%4;temp2=temp27;if(day=temp1)temp1=month*2-2;temp1=month*2-3;LCD_ERSHI(temp1);#ifndef_REAL_TIMER_DS1302#define_REAL_TIMER_DS1302/*预定义*/#defineucharunsignedchar#defineuintunsignedint/*DS1302管脚配置*/sbitclock_rst=P24;sbitclock_io=P23;sbitclock_sclk=P22;/*为了编程方便定义的位变量*/sbitACC0=ACC0;sbitACC7=ACC7;#definesecond_address0x80#defineminute_address0x82#definehour_address0x84#defineday_address0x86#definemonth_address0x88#defineyear_address0x8C205系统调试及分析5.1硬件调试及功能分析5.1.1编程环境ProteusPROTEUS软件是由英国LabCenterElectronics公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件,它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。为了减少资源的浪费和避免焊接过程中产生不必要的错误,在焊接硬件电路前对硬件电路设计的可行性和软件编程的正确性进行了仿真实验。采用的调试系统为PROTEUS。PROTEUS是目前世界上最完整的系统设计与仿真平台。PROTEUS可以实现数字电路、模拟电路及微控制系统与外设的混合电路系统的电路仿真、系统协同仿真和PCB设计等全部功能。PROTEUS软件已有20多年的历史,在全球拥有庞大的企业用户群,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原形时就可以对系统进行调试与验证。PROTEUS软件包大大提高了企业的开发效率,降低了开发风险。5.1.2用ProteusISIS对电子万年历的硬件电路设计通过PROTEUSISIS软件的VSM(虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。用PROTEUSISIS设计硬件电路的过程(1)选择设计图纸的大小根据设计所使用到元器件的多少,选择合适大小的设计图纸,操作是单击菜单栏上的SystemSetSheetSize,然后弹出如图5.1所示的对话框,从中选择合适大小的图纸,也可以选择User进行图纸的自定义设置。在设计过程中也可以通过此方法调整图纸的大小9。21图5.1图纸设置(2)选取仿真所需的元器件选取元器件的方式是,单击如图5.2所示的按钮“P”。会弹出如图5.3所示的窗口。图5.2拾取元器件22图5.3相关元器件从此窗口的左上角的“Keywords”中输入电子万年历设计用到的器件,如输入“AT89C52”,在中间会列出带有输入关键字的元器件,选择合适的元器件并双击它,则已经选择好了该元器件。然后再在“Keywords”中输入其他所需的元器件,用同样的方法进行操作。最后选择好所有的元器件。(3)把元器件放到图纸的合适位置,进行布线单击元器件AT89C52,再在右边图纸上单击,就把元器件放入到了图纸上。再用同样的方法把ds1302放入到图纸的合适位置。如果元器件放置错误,这可通过两次右击删除所放置的元器件,如果位置放得不理想,可以先右击该器件,然后按住左键进行移动。在布线之前,如果觉得元器件的引脚的方向不好布线,则可以通过单击这四个按钮进行调整,这四按钮的意思分别是:顺时针旋转90,逆时针旋转90,沿Y轴对称,沿X轴对称。通过这样的调整,可以使整个布局合理一些。接着进行布线,由于PROTEUSISIS有自动布线的功能,比如要把AT89C52的P2口连到74LS164的OUT8口,只要先在P2引脚上单击一下,再在OUT8引脚上23单击,则ISIS自动将两个引脚连上线。ISIS还提供了网络布线,即不使用线连接也可以把两个引脚虚拟的连接了起来。具体操作是:单击要连线的一个引脚,连出适当的距离后双击,另一个引脚也同样操作,在单击“LBL”按钮,再在图中P0.1引脚的A处单击,在弹出的窗口中的“String”中填入名称,如“A”,对OUT7引脚进行同样的操作,在“String”中也填入名称“A”,这样就完成了P3.4引脚与RES引脚的网络连接,这个好处避免两个距离比较远的器件进行真实线的连接,使布线美观10。(4)编辑窗口连接端子要让最后的设计成功仿真时,必须放置并连接端子。选择,从中可以选择电路原理中的两个通用的端子,一个是接地,一个是电源。如图5.4所示。图5.4连接端子5.2软件调试及功能分析5.2.1阳历显示程序功能实现及其分析阳历程序的设计很简单,编写好DS1302读写程序和阳历和时间显示程序,在主函数中调用,很容易就能实现阳历和时间的显示功能。在编写程序时,由于没有掌握好DS1302的读写时序,导致DS1302不能正常读数。经过认真分析时序,最后终于编写出了DS1302的正确程序。5.2.2时间调整程序功能实现及其分析时间调整程序比较复杂,程序多了,就很容易出错,所以在编写过程中要很细心。将编写好的程序载入单片机中进行检查。在写这部分程序时,感觉不是很困难,只要认真按照逻辑顺序编写就行了。245.2.3阴历显示程序功能实现及其分析阴历程序的编写难点主要在算法上,在有了算法和阴历与阳历转阴历的关系表的情况下,阴历程序也很容易编写。编写好程序。在程序加入了农历子程序后,农历不能正常显示。在仔细查看程序,发现返回的农历是十六进制数。而我把它当成了十进制数,以至于不能正常显示。修改后,显示正常。5.2.4用ProteusISIS进行电子万年历的仿真测试(1)添加Keil中编写的代码文件单击工具栏中的SourceAdd/RemoveSourcefiles.,弹出一个对话框,分别单击“New”,然后选择在Keil中编写的数字电压表.ASM汇编语言程序,单击“OK”,完成添加代码文件10。(2)编译源程序,生成.HEX目标代码文件单击SourceBuildAll。如果编译结果没有错误,会出现如图5.5所示的结果。图5.5生成HEX文件(3)加载.HEX目标代码文件通过如图5.6所示的对话框,选择刚才编译生成的.HEX文件。设置使单片机的25运行频率为6MHz。图5.6加载HEX文件(4)单击按钮,进行对电子万年历的仿真测试,如图5.726图5.7仿真测试结论本课题的主要任务是开发一个以AT89C52单片机为核心的电子万年历。本设计主要分为硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简化硬件电路,节省线路板的空间,达到硬件电路最优化设计。软件采用C语言编写,采用模块化设计思想,程序可读性强。通过仿真、实验验证了系统的可行,能满足设计要求,达到设计的指标,成功显示了阳历年月日时分秒及阴历,并用LCD显示。本系统能完成以下功能:(1)显示公历日期功能(年、月、日、时、分、秒以及星期)(2)可通过按键调节年、月、日、时、分、以及星期(3)显示与公历对应的阴历日期(4)显示温湿度值本设计的亮点是在液晶显示器上显示出了温湿度值。本设计硬件电路较简单,所以器件较少,电路中使用了AT89C52单片机、DS1302时钟芯片和LCD12864液晶显示器,实现了预计功能。本次毕业设计使我们将大学四年所学的知识进行了汇总,在收集资料,确定方案的过程中,我学到许多知识,也弄懂了许多以前不是很清楚的问题。在做毕业设计的过程中,是我们所学知识的一次升华,把理论知识运用到了实际当中。也使我们从中得到了锻炼。27参考文献1康光华电子技术基础(数字部分)M北京:电子工业出版社,2006.022李建忠.单片机原理及应用M陕西:西安电子科技大学出版,2006.023李飞光.单片机课程设计实例指导M.北京:北京航空航天大学出版社,20044何立民.单片机应用技术选编M.北京:北京航空航天大学出版社,2000.085万光毅.单片机实验与实践教程M.北京:北京航空航天大学出版社,2005.016周航慈.单片机程序设计基础M.北京:北京航空航天大学出版社,1991.117张毅刚.单片机原理及应用M.北京:高等教育出版社,2004,1.8王怀平等.Proteus仿真设计基于单片机AT89C51的电子万年历J.科技广场,2008(10):197-198.9汤竞南,沈国琴.51单片机C语言开发与实例M.北京:人民邮电出版社,2008.10徐爱钧,彭秀华.KeilCx51V7.0单片机高级语言编程与uViSion2应用实践M.北京:电子工业出版社,2004.11鲁广英.基于单片机电子万年历的设计与实现J.硅谷,2010(12):57,77.10张斌武.单片机系统Proteus设计与仿真M.北京:电子工业出版社,2005:52-89.12尹勇.单片机开发环境Vision2的开发指南M.北京:北京航空航天大学出版社,2004:173-199.13纪宗南.单片机外围器件使用手册M.北京:北京航空航天大学出版社,622-655.14王忠民.微型计算机原理M.西安:西安科技大学出版社,2003:15-55.15赵长德.微型计算机原理与接口技术M.北京:机械工业出版社,1999:98-28350.致谢首先我必须感谢院领导对我们毕业生在毕业设计过程中的支持与关怀!其次我要特别感谢张焕梅老师,不管在选题阶段,还是在设计阶段、在制作阶段,正是她给予我不断的指导与帮助,导师渊博的学识、严谨的治学态度、求实创新的工作作风、对事业和科学的执着追求,以及对我谆谆教诲给我留下了深刻的印象,使我受益终身。在课题的研究设计过程中,我不仅从张老师那里学到许多专业知识,更重要的是学会了学习新知识并将其巩固的方法,这无疑是一把开启未来生活的钥匙,特此向张老师表示衷心的感谢!在大学四年的学习生活中,还得到了许多领导和老师的热情关心和帮助,在此,向所有关心和帮助过我的领导、老师、同学和朋友们表示由衷的谢意!衷心的感谢在百忙之中评阅论文和参加答辩的各位老师!29附录一:ISIS绘制电子万年历系统的电路原理图30附录二:系统完整程序#include#include#include#include#include#include#include/*预定义*/#defineucharunsignedchar#defineuintunsignedint/*/sbitbell=P20;/定义蜂鸣器端口sbitin=P27;/定义红外检测端口/*名称:Timer0_Service()inturrupt1*功能:中断服务程序整点报时3声嘟嘟的声音*入口参数:*出口参数:*/voidTimer0_Service()interrupt1staticucharcount=0;staticucharflag=0;/记录鸣叫的次数count=0;TR0=0;/关闭Timer0TH0=0x3c;TL0=0XB0;/延时50msTR0=1;/启动Timer031count+;if(count=20)/鸣叫1秒bell=bell;count=0;flag+;if(flag=6)flag=0;TR0=0;/关闭Timer0/*名称:Timer2_Servie()interrupt5*功能:中断服务程序整点报时一分钟*入口参数:*出口参数:*/voidTimer3_Service()interrupt5staticucharcount;TF2=0;/软件清除中断标志count+;if(in=1)count=0;/计算清0TR2=0;/关闭Timer2bell=1;/关闭蜂鸣器32if(count=120)/一分钟后关闭报警count=0;/计算清0TR2=0;/关闭Timer2bell=1;/关闭蜂鸣器/*函数名称:main()*功能:*入口参数:*出口参数:*/voidmain(void)ucharclock_time7=0x00,0x30,0x08,0x10,0x01,0x09;/定义时间变量秒分时日月年ucharalarm_time2=0,0;/闹钟设置alarm_time0:分钟alarm_time1:小时uchartemperature2;/定义温度变量temperature0低8位temperature1高8位Lcd_Initial();/LCD初始化/Clock_Initial(clock_time);/时钟初试化/*中断初始化*/EA=1;/开总中断ET0=1;/Timer0开中断ET2=1;/Timer2开中断TMOD=0x01;/Timer0工作方式1RCAP2H=0x3c;RCAP2L=0xb0;/Timer2延时50ms33while(1)switch(Key_Scan()caseup_array:Key_Idle();break;casedown_array:Key_Idle();break;caseclear_array:Key_Idle();break;casefunction_array:Key_Function(clock_time,alarm_time);casenull:Clock_Fresh(clock_time);/时间刷新Lcd_Clock(clock_time);/时间显示Sensor_Fresh(temperature);/温度更新Lcd_Temperture(temperature);/温度显示/ershi(clock_time);34/Ershi(clock_time);Calendar_Convert(0,clock_time);/调用阴历转换显示子程序Week_Convert(0,clock_time);/整点报时if(*clock_time=0x59)&(*(clock_time+1)=0x59)bell=0;TR2=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国娃娃鱼养殖项目创业计划书
- 中国假肢、人工器官及植(介)入器械制造项目创业计划书
- 中国鲫鱼项目创业计划书
- 中国科技服务项目创业计划书
- 中国菊粉项目创业计划书
- 中国光盘镜像服务器项目创业计划书
- 中国骨科器械项目创业计划书
- 中国高端水产养殖项目创业计划书
- 中国电子书包项目创业计划书
- 中国3D制图软件项目创业计划书
- 2025-2031年中国植物多糖市场发展前景预测及投资战略咨询报告
- 适老化建筑设计案例调研
- 玫琳凯授权合同协议
- 罗森便利店培训
- 2025年烟台市初中地理学业水平考试试题及答案
- 非遗缠花创新创业
- 物业品质管理制度
- 施工分包商入库管理细则
- 2025-2030中国胎盘提取物行业市场发展趋势与前景展望战略研究报告
- 《中国肌肉减少症诊疗指南(2024版)解读》
- 人工智能产品的用户体验优化研究
评论
0/150
提交评论