毕业设计电子万历的设计1.doc

上传人:仙人指路1688 文档编号:4149438 上传时间:2023-04-07 格式:DOC 页数:21 大小:232.50KB
返回 下载 相关 举报
毕业设计电子万历的设计1.doc_第1页
第1页 / 共21页
毕业设计电子万历的设计1.doc_第2页
第2页 / 共21页
毕业设计电子万历的设计1.doc_第3页
第3页 / 共21页
毕业设计电子万历的设计1.doc_第4页
第4页 / 共21页
毕业设计电子万历的设计1.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《毕业设计电子万历的设计1.doc》由会员分享,可在线阅读,更多相关《毕业设计电子万历的设计1.doc(21页珍藏版)》请在三一办公上搜索。

1、目 录摘 要1引 言2第一章总体要求31.1 作品要求31.2 方案论证31.2.1控制部分的方案选择31.2.2显示部分的方案选择3第二章系统硬件设计42.1单片机系统及显示电路42.2驱动电路52.3时钟控制电路5第三章软件设计7第四章调 试84.1 硬件调试84.2 软件调试8第五章总 结9致 谢10参考文献11附 录A12附 录B13附 录C14电子万年历的设计摘 要电子万年历是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观

2、、走时准确、可以进行夜视,本设计利用数量较少的芯片制作了一个运用简单的电子万年历。以单片机作为本设计的核心,实现时钟日历的显示:用八段LED数码管分别显示年、月、日、星期、时、分、秒,用DS1302作为该设计的实时时钟芯片,用74LS164寄存器来驱动数码管的各段码,用三极管来驱动数码管的各位码。关键词: 单片机、DS1302时钟芯片、数码管引 言年历,是指印有一年的月份、星期、日期、节气等的印刷品。人们习惯把单张年历、月历、日历都划入广义的年历范畴内。几十年来,年历的发展见证了科技的发展和时代的变迁。年历工艺的进步显示了科技的发展和人民生活水平的提高。随着科学技术的发展,以前的年历已发展成现

3、代的电子万年历,它一开始是采用数字电路实现的,电路复杂,精确度差,每天都需要调时,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得它的电路越来越简单,精度也越来越高,现在的电子万年历一般都用集成芯片和软件结合实现,电路简单,制作方便,给人们生产生活都来了极大的便利,它已成为我们生活中不可缺少的家居用品。 第一章 总体要求1.1 作品要求本作品电子万年历用LED数码管显示阳历年、月、日、星期、时、分、秒。通过按键开关实现调时的功能,能调时,断电有实时时钟。1.2 方案论证1.2.1控制部分的方案选择一、用可编程逻辑器件设计可采用PLD器件。设计起来结构清晰,各个模块从硬件上设计起来相对简单

4、,控制与显示的模块间的连接也会比较方便。但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。从成本上来讲,用可编程逻辑器件来设计没有什么优势。二、用单片机设计单片机有丰富的中断源,方便本实验的设计。它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些调用。I/O口功能也比较强大,方便使用。方便对设计进行扩展,使设计更加完善。成本也相对低一些,虽然在控制与显示的结合上有些复杂,但和前则相比用单片机设计还是比较可行的。1.2.2显示部分的方案选择一、液晶显示方式液晶显示效果出众,但是在显示时,屏幕会有明显的闪烁。而且存储空间有限,大大影响了电子万年

5、历的性能。二、数码管显示相比液晶显示,采用七段数码管既经济实惠,在效果上也可以加入语音报时功能,操作比较液晶显示来说虽然略显繁琐,但总体也还可以做到比较人性化。所以,最后选择用LED数码管做显示部分。第二章 系统硬件设计硬件电路主要分为单片机系统及显示电路、按键电路和时钟控制电路等几部分组成。设计框图如图2.1。主控芯片(单片机)按键控制时钟控制显示电路图2.1电子万年历设计框图2.1单片机系统及显示电路单片机采用89C51利用它的最小应用系统设计,如下图,电容C8,C13起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。晶振频率的典型值为12MHz,采用6MHz的情况也比较多。内部

6、振荡方式所得的时钟信号需要比较稳定时,用12MHz高精度的晶振,以获得较稳定的时钟频率,减小时差。在本设计中用12MHz比较适当,相对的电容取为20PF。 显示电路采用简单实用的共阳LED数码管,电阻选用200欧姆即可获得合适的亮度效果,段码用74LS164芯片驱动,位码用PNP三极管9012驱动。单片机系统及显示电路如图2.2所示。图2.2单片机及显示系统电路图2.2驱动电路驱动电路采用74LS164的芯片来驱动,在单片机系统中,如果并行口的IO资源不够,而串行口又没有其他的作用,那么我们可以用74LS164来扩展并行IO口,节约单片机资源它是一个8位并行输出门控串行输入移位寄存器,其显示数

7、据以串行方式从单片机的输出口输出送往移位寄存器74LS164的A、B端,然后将转换的并行数据从输出端Q0Q7输出,几乎同时驱动与之相接的LED数码管,各个数码管便以很短时间间隔轮流显示。由于人眼的残留效应,所以各个数码管看上去几乎是同时显示的。74LS164的引脚定义及真值表如下图2.3。输入 输出工作方式MR A B Q0 QA-QHL Lqa-qhqa-qhqa-qhqa-qhLLLLHXLHLHXLLHHLHHHH复位(清除)移位图2.3 74LS164的引脚定义及真值表2.3时钟控制电路本设计的实时时钟电路用DS1302,如图2.4,它的工作电压一般为2.5-5.5V,它的主要特点是采

8、用串行数据传输,同时增加了主电源/后背电源双电源引脚,可以为掉电保护电源提供可编程的充电功能。采用32kHz的晶振,电容一般用10PF就可以起到稳定振荡频率和快速起振的作用了。图2.4时钟电路DS1302是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与

9、RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。第三章 软件设计电子万年历的软件程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。从本设计的原理图上可以看出,单片机从P3口输出位选码,从P0口输出段选码,LED就会显示出数字来。但P0口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元数据的段

10、选代码送入P0口,给74LS164译码后去驱动数码管显示。软件总体设计如图3.1、3.2。定时开关子程序取时间寄存器数据数据处理取时间开关寄存器数据按开关条件生成开关数据开关数据送P1口返回 读取时间寄存器数据数据处理送显示缓冲区调显示子程序判断有按键按下调定时开关子程序开始 图3.1 主函数流程 图3.2定时开关子程序第四章 调 试4.1 硬件调试电子万年历硬件的制作和调试都比较简单,焊接的时候要仔细的对照原理图或PCB板图,以免把元器件弄错,焊接时要注意,不要出现虚焊。等完全焊接好后要再检查一遍,确定无误后就开始调试。接上电源,看一下电源的指示灯有没有亮,如果亮了就说明有电源输入,在检测一

11、下单片机的电源脚(40号脚)是否有电源,如果有适当的电压说明电源部分没有问题。在硬件调试时也可以先在芯片中烧一个简单的显示程序,看一下驱动部分和显示部分能不能正常工作。如数码管显示不正常,有断码时要检查一下数码管的管脚有没有虚焊。4.2 软件调试确定硬件没有了错误后,根据原理,连接图编写程序,编译无误后可以先在仿真器上仿真一下,看一下程序是否按自己编写的效果显示出来。一开始程序经自己及向同学请教编写好以后,用仿真器试用了一下,万年历不能按照正常现象从数码管上的显示出来,原以为是在编写程序中出了问题,才使得该万年历不能正常工作,又去找软件比较懂的同学请教了一下,他们说软件可以用,没问题,于是又把

12、程序直接烧入芯片再看一下它的显示情况,经过观察,该万年历除了小时每天差四个小时另外的都可行。换了一块时钟芯片试用看看,结果却可以正常运行了,原来是时钟芯片出了问题。经使用观察该万年历可以正常使用,显示正确。第五章 总 结通过这次制作使我了解了整个万年历的工作过程和各个部分的工作过程,使我体会到利用单片机设计的电子万年历便于操作、直观。经实际使用观察证明,该万年历能达到任务书上的要求,能正确的显示年、月、日、星期、时、分、秒,能通过按键切换调时,误差为12秒/天,达到了设计的要求,总的来说制作还是成功的!在本次制作中,碰到了很多问题,但经过了老师、同学的指导和帮助,这些问题基本上得到了解决。另外

13、软件部分还需要多多向老师或同学学习。在这个设计中还有待提高的地方,由于本次制作时间紧迫,有些元器件还没能通过软件程序得到运用,有些问题还待解决。比如一开始插上电源使用时做调时切换用的按键不灵活等。总之,通过这次的毕业设计使我对本门专业知识有了进一步的学习,提高了我收集资料的能力,动手的能力。对书本中学到的知识也有了进一步的认识。致 谢本文是在xxx老师的全面指导中完成的,老师认真负责的工作态度促使我更好的完成了本毕业设计,与老师的相处时间不多,但老师对专业知识的态度非常值得我学习,让我对本专业有了更大的学习兴趣,在论文完成之际,向老师致以最真挚的感谢和最崇高的敬意!参考文献1、余永权等.单片机

14、在控制系统中的应用:北京电子工业出版社,2004。2、李华.MCS-51系列单片机实用接口技术:北京航空航天大学出版社,2004。3、李光飞等.单片机课程设计实例指导:北京航空航天大学出版社,2004。4、李光飞等.单片机C程序设计实例指导:北京航空航天大学出版社,2005.9。5、刘文涛等. MCS-51单片机培训教程:电子工业出版社,2005.8。附 录A实物图附 录B 电路原理图附 录C 主要程序 ; ;主程序; ; START: SETB EA MOV SCON,#00H ;串行输出,方式0 MOV TMOD,#10H ;计数器1,方式1 MOV TL1,#00H MOV TH1,#0

15、0H MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写1302 LCALL WRITE MOV DS1302_ADDR,#90H MOV DS1302_DATA,#0A6H;1302充电,充电电1.1MA LCALL WRITE MAIN1: MOV DS1302_ADDR,#8DH ;读出年 LCALL READ MOV year,DS1302_DATA MOV DS1302_ADDR,#8BH ;读出星期 LCALL READ MOV week ,DS1302_DATA MOV DS1302_ADDR,#89H ;读出月 LCALL READ M

16、OV month,DS1302_DATA MOV DS1302_ADDR,#87H ;读出日 LCALL READ MOV day,DS1302_DATA MOV DS1302_ADDR,#85H ;读出小时 LCALL READ MOV hour,DS1302_DATA MOV DS1302_ADDR,#83H ;读出分钟 LCALL READ MOV mintue,DS1302_DATA MOV DS1302_ADDR,#81H ;读出秒 LCALL READ MOV second,DS1302_DATA MOV R0,year ;年分离,送显示缓存 LCALL DIVIDE MOV 7B

17、H,R1 MOV 4BH,R1 MOV 7CH,R2 MOV 4CH,R2 MOV 78H,week MOV 48H,week MOV R0,month ;月分离,送显示缓存 LCALL DIVIDE MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2 MOV R0,day ;日分离,送显示缓存 LCALL DIVIDE MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2 MOV R0,hour ;小时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45

18、H,R2 MOV R0,mintue ;分钟分离,送显示缓存 LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2 MOV R0,second ;秒分离,送显示缓存 LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2 MOV 41H,R2;闪动调时程序; INTT1: PUSH ACC PUSH PSW GFLASH:CPL 0FH JB 0FH,GFLASH1 MOV 7CH,4CH ;全部显示 MOV 7BH,4BH MOV 7AH,4AH MOV 79H,49H MOV 78H,48H M

19、OV 77H,47H MOV 76H,46H MOV 75H,45H MOV 74H,44H MOV 73H,43H MOV 72H,42H MOV 71H,41H MOV 70H,40H GFLASHOUT:POP PSW POP ACC RETI GFLASH1: JB 0AH,GFLASH2 ;调年闪 MOV 7CH,#0AH MOV 7BH,#0AH AJMP GFLASHOUT GFLASH2: JB 0BH,GFLASH3 ;调月闪 MOV 7AH,#0AH MOV 79H,#0AH AJMP GFLASHOUT GFLASH3: JB 0CH,GFLASH4 ;调日闪 MOV 7

20、7H,#0AH MOV 76H,#0AH AJMP GFLASHOUT GFLASH4: JB 0DH,GFLASH5 ;调星期闪 MOV 78H,#0AH AJMP GFLASHOUT GFLASH5: JB 0EH,GFLASH6 ;调小时闪 MOV 75H,#0AH MOV 74H,#0AH AJMP GFLASHOUT GFLASH6: MOV 73H,#0AH ;调分钟闪 MOV 72H,#0AH AJMP GFLASHOUT;写1302程序; WRITE: CLR SCLK NOP SETB RST NOP MOV A,DS1302_ADDR MOV R4,#8 WRITE1: R

21、RC A ;送地址给1302 NOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE1 CLR SCLK NOP MOV A,DS1302_DATA MOV R4,#8 WRITE2: RRC A NOP ;送数据给1302 CLR SCLK NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE2 CLR RST RET;读1302程序; READ: CLR SCLK NOP NOP SETB RST NOP MOV A,DS1302_ADDR MOV R4,#8 READ1: RRC A ;送地址给1302 NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP NOP CLR SCLK NOP NOP DJNZ R4,READ1 MOV R4,#8 READ2: CLR SCLK NOP ;从1302中读出数据 NOP NOP MOV C,IO NOP NOP NOP NOP NOP RRC A NOP NOP NOP NOP SETB SCLK NOP DJNZ R4,READ2 MOV DS1302_DATA,A CLR RST RET

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号