收藏 分销(赏)

毕业设计-单片机模拟电子时钟设计.doc

上传人:w****g 文档编号:2180821 上传时间:2024-05-22 格式:DOC 页数:23 大小:576.50KB
下载 相关 举报
毕业设计-单片机模拟电子时钟设计.doc_第1页
第1页 / 共23页
毕业设计-单片机模拟电子时钟设计.doc_第2页
第2页 / 共23页
毕业设计-单片机模拟电子时钟设计.doc_第3页
第3页 / 共23页
毕业设计-单片机模拟电子时钟设计.doc_第4页
第4页 / 共23页
毕业设计-单片机模拟电子时钟设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、07电气工程及其自动化 07电力 谭善文 单片机课程设计 单片机课程设计课题:单片机模拟电子时钟设计学 院: 自动化学院 专 业: 07电气工程及其自动化(低压电力智能控制方向) 姓 名: 谭善文 学 号: 2007104743002 指导老师: 张华 23目 录一、前言3二、设计目的3三、设计任务与要求3四、设计原理3五、总体设计方案41、硬件电路图4(1)、总电路图4(2)、电源5(3)、晶振5(4)、LED5(5)、复位6(6)、蜂鸣器6(7)、按键6(8)、串行口7(9)、单片机7(10)、数码管82、程序编写10六、小结与展望21七、致谢22八、主要参考文献22一、前言在当今的工作和

2、生活环境中,有越来越多的单片机在为人们服务,例如电视遥控、手机、洗衣机、空调等,单片机几乎无所不在,学习单片微型计算机这门课程,就是为了对单片微型计算机有进一步感性的认识,了解、掌握、应用,甚至设计开发它。让我们能综合运用单片机的软、硬件技术分析实际问题,为工业生产、科学研究和实验设备等领域的单片机应用和开发打下良好的基础。二、设计目的a) 通过单片微型计算机原理与接口技术教程了解单片微型计算机的发展;b) 根据课程设计的要求,学会用汇编语言设计程序,学会应用程序设计调试软件;c) 通过调试程序设计模块,掌握单片微型计算机的结构原理,了解程序设计的编程思想;d) 通过软件调试熟悉使用单片机指令

3、系统,掌握汇编语言程序设计方法及编程技巧,掌握子程序的设计与使用,熟悉中断服务程序的设计及调用过程。三、设计任务与要求任务:利用单片机定时功能实现电子时钟的计时要求:1.设计单片机电子时钟设计控制方案,功能设计;2.详细描述实现需要的硬件,效果等;3.编写汇编语言程序设计,在KEIL仿真实现调试程序;四、设计原理单片机可以利用定时功能实现电子时钟的计时。设计时利用单片机的定时器作为时钟的基准,利用几个单元作为时、分、秒的累计单元,秒到时,秒单元加1,直到59s时,分单元加1,依此类推,可完成年、月、日、时、分、秒的计时工作。五、总体设计方案1、硬件电路图(1)总电路图图1 总硬件电路原理图(2

4、)电源图2 电源部分原理图该电源接上USB口后可输出一个+5V的直流电源。图中C1为电解电容,有储能缓冲作用。C2为一个滤波电容。而R1则为保护电阻,有限流作用。D1为电源工作指示灯。(3)晶振图3 晶振部分原理图该振荡电路可产生11.0952MHZ的频率。XTAL1为输入引脚,XTAL2为输出引脚。Y1为振荡器,C15、C16为微调电容,它们之间形成反馈电路,振荡器即能工作。(4)LED图4 LED接线图该部分主要用来记秒,即每隔一秒,LED指示灯就闪烁一次。(5)复位图5 复位电路原理图开关断开时,复位键RST为低电平,不起作用;当按下按键时,RST变为高电平,将起清零作用。(6)蜂鸣器图

5、6 蜂鸣器电路原理图访电路在T1口的驱动后,经过Q1的放大,作用到BZ1上发出声音,在设计中将用作整点报时。(7)按键图7 按键电路原理图这两个按键在设计中分别用来调整时间和切换显示内容。(8)串行口图8 串行口电路原理图该电路主要由MAX232芯片和它的外围电路组成,可通过它与电脑的串口连接,将程序下载到单片机里。(9)单片机图9 单片机引脚图整个电路的主控芯片。(10)数码管图10 数码管显示电路原理图该电路通过了二片74HC595芯片组成的电路去驱动4位的共阴数码管显示时间。74HC595是一款具有8位移位寄存器和一个存储器,三态输出功能的驱动芯片。移位寄存器和存储器分别具有独立的时钟信

6、号。数据在SHCP的上升沿输入,在STCP的上升沿进入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(DS),和一个串行输出(Q7),和一个异步的低电平复位(MR),存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。它和74HC164的功能类似,都是串入并出的IO接口,将串行的数据,转为并行的输出,这样可以节约MCU的IO口资源。主要应用在多路LED指示或多位数码管驱动方面。但与74HC164比,595主要还有以下更优越的功能:1.支持3态输出,当第13脚为高电平时,595无输出;

7、2.具有数据锁存功能,这样不会影响移位时的瞬时输出;3.具有数据输出功能,可以更方便的进行595级联其引脚图和引脚功能如下:图11 74HC595引脚图1. 第1脚:数据输出端QB 2. 第2脚:数据输出端QC 3. 第3脚:数据输出端QD 4. 第4脚:数据输出端QE 5. 第5脚:数据输出端QF 6. 第6脚:数据输出端QG 7. 第7脚:数据输出端QH 8. 第8脚:电源GND 9. 第9脚:串行数据输入端SQH,时钟下降沿数据移出 10. 第10脚:复位引脚RESET 11. 第11脚:数据移位时钟输入端SCK 12. 第12脚:数据锁存信号输入端RCK 13. 第13脚:数据输出使能

8、端/OE,低电平有效 14. 第14脚:串行数据输入端A,时钟上升沿数据移入 15. 第15脚:数据输出端QA 16. 第16脚:电源VDD2、程序编写汇编源程序如下:; 电子时钟程序 ;SPK EQU P3.5 ;P3.5端口定义为喇叭org0x0000;程序执行开始地址ajmpmain;跳到标号main执行org0x0003;外中断0中断程序入口; 1秒闪烁子程序 ;org0x000b;定时器T0中断程序入口clrtf0movTH0,#0x4cmovTL0,#0x00djnzr4,ret1;50*20(0x14)=1000ms=1Smovr4,#0x14clrp1.0;每隔1秒指示灯闪烁一

9、次clrp1.1pushaccsetbrs0clrrs1movr0,#0x20; 秒计时控制子程序 ;mova,r0adda,#0x01daa ;二-十进制调整指令movr0,acjnea,#0x60,t0lp1 ;60秒到后分钟加1,秒钟清零mova,#0x00movr0,aincr0; 分计时控制子程序 ;mova,r0adda,#0x01daamovr0,acjnea,#0x60,t0lp1 ;60分到后时钟加1,时钟清零mova,#0x00lcallBZ ;整点到后喇叭报时movr0,aincr0; 小时计时控制子程序 ;mova,r0adda,#0x01daamovr0,acjnea

10、,#0x24,t0lp1 ;24小时到后天加1,时钟清零mova,#0x00movr0,aincr0; 天计时控制子程序 ;mova,r0adda,#0x01daamovr0,acjnea,#0x31,t0lp1 ;30天过后月加1,天归1mova,#0x01movr0,aincr0; 月计时控制子程序 ;mova,r0adda,#0x01daamovr0,acjnea,#0x13,t0lp1 ;12个月过后月归1mova,#0x01movr0,a;t0lp1:noppopaccclrrs0clrrs1ret1:cjner4,#0x0a,ret2jcret2 ;point judgesetbp

11、1.0;point offsetbp1.1 ret2:reti; 电子时钟初始化程序 ;main:mov0x20,#0x15;秒初始化mov0x21,#0x59;分初始化mov0x22,#0x23;时初始化mov0x23,#0x30;天初始化mov0x24,#0x12;月份初始化;clrp1.3clrp1.4clrp1.5;acallT0initmovsp,#0x0f; 显示时分的子程序 ;main1:jbp3.2,hmlpacalldelayjbp3.2,hmlpmovr0,#0x21 acalldisplayajmpmain1; 显示月份与日数的子程序 ; hmlp:movr0,#0x1f

12、 acalldisplayajmpmain1; 50ms延时子程序 ;T0init:movTMOD,#0x01movTH0,#0x4c ;50ms延时初值设置movTL0,#0x00setbet0setbeasetbtr0movr4,#0x14 ret; 显示子程序 ;display: movr1,#0x01 movr5,#0x04 ;4bit or 8bitmovdptr,#0x0300loop:movr7,#0x08mova,r1lp2:rlcasetbp1.5jclp1clrp1.5lp1:setbp1.4clrp1.4djnzr7,lp2;mova,r0anla,#0x0fmovca,

13、a+dptrcplamovr7,#0x08lp4:rlcasetbp1.5jclp3clrp1.5lp3:setbp1.4clrp1.4djnzr7,lp4;setbp1.3clrp1.3;acalldelay;mova,r1rlamovr1,a;movr7,#0x08mova,r1lp6:rlcasetbp1.5jclp5clrp1.5lp5:setbp1.4clrp1.4djnzr7,lp6;mova,r0anla,#0x0f0swapamovca,a+dptrcplamovr7,#0x08lp8:rlcasetbp1.5jclp7clrp1.5lp7:setbp1.4clrp1.4djn

14、zr7,lp8;setbp1.3clrp1.3;acalldelay; mova,r1rlamovr1,aincr0djnzr5,loopret; 整点报时子程序 ;BZ:MOV R6, #200B1: CPL SPKACALL DELAY1 DJNZ R6,B1;喇叭响的时间为:R6R5=0.5s RET; 延时子程序 ;delay:movr6,#0x00del1:djnzr6,del1ret;DELAY1: D1:MOV R5,#250 ;延迟时间为:R5D2: DJNZ R5,D2 RET START1: LCALL display ;调用显示子程序 JB p1.2,SETMM1 ;P1

15、.2口为0时转时间调整程序 SJMP START1 ;P1.2口为1时跳回START1SETMM1: LJMP SETMM ;转到时间调整程序SETMM; 时钟调整程序 ;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 mov TH0,#0x4cmov TL0,#0x00djnzr4,dede:lcallret1movr4,#0x14 ;调用1秒延时程序 JB p1.2,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断 SETB TR1

16、 ;开启定时器T1SET2: JNB p1.2,SET1 ;P1.2口为0(键未释放),等待 SETB 00H ;键释放,分调整闪烁标志置1SET4: JB p1.2,SET3 ;等待键按下 movTH0,#0x4cmovTL0,#0x00 djnzr4,de1de1:lcallret1movr4,#0x0A ;有键按下,延时0.5秒 JNB p1.2,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0,#77H ;按下时间小于0.5秒加1分钟操作 LCALL ADD1 ;调用加1子程序 MOV A,R3 ;取调整单元数据 CLR C ;清进位标志 CJNE A,#60H,HHH ;

17、调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环 LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志 AJMP SET4 ;跳转到SET4循环;CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断 SETB TR0 ;开启T0定时器(开时钟)CLOSE: JB p1.2,CLOSE ;无按键按下,等待。 LCALL display ;有键按下,调显示子程序延时削抖 JB p1.2,CLOSE ;是干扰返回CLOSE等待WAITH: JNB p1.2,WAITH ;等待键释放 LJMP START1 ;返

18、回主程序(LED数据显示亮)SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)SETHH1: JNB p1.2,SET5 ;等待键释放 SETB 01H ;小时调整标志置1SET6: JB p1.2,SET7 ;等待按键按下 mov TH0,#0x4c mov TL0,#0x00 djnz r4,de2de2: lcall ret1 mov r4,#0x0A ;有键按下延时0.5秒 JNB p1.2,SETOUT ;按下时间大于0.5秒退出时间调整 MOV R0,#79H ;按下时间小于0.5秒加1小时操作 LCALL ADD1 ;调加1子程序 MOV A,R3 CLR C CJ

19、NE A,#24H,HOUU ;计时单元数据与24比较HOUU: JC SET6 ;小于24转SET6循环 LCALL CLR0 ;大于或等于24时清0操作 AJMP SET6 ;跳转到SET6循环SETOUT: JNB p1.2,SETOUT1 ;调时退出程序。等待键释放 LCALL display ;延时削抖 JNB p1.2,SETOUT ;是抖动,返回SETOUT再等待 CLR 01H ;清调小时标志 CLR 00H ;清调分标志 CLR 02H ;清闪烁标志 CLR TR1 ;关闭定时器T1 CLR ET1 ;关定时器T1中断 SETB TR0 ;开启定时器T0 SETB ET0 ;

20、开定时器T0中断(计时开始) LJMP START1 ;跳回主程序;SET1: LCALL display ;键释放等待时调用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示SET3: LCALL display ;等待调分按键时时钟显示用 AJMP SET4SET5: LCALL display ;键释放等待时调用显示程序(调小时) AJMP SETHH1 ;防止键按下时无时钟显示SET7: LCALL display ;等待调小时按键时时钟显示用 AJMP SET6SETOUT1: LCALL display ;退出时钟调整时键释放等待 AJMP SETOUT ;防止键按下时

21、无时钟显示; 加1子 程 序 ;ADD1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入A中低四位 ADD A,#01H ;A加1操作 DA A ;十进制调整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高四位变0 MOV R0,A ;放回前一地址单元 MOV A,R3 ;取回R3中暂存数据 INC R0 ;指向当前地址单元 SWAP A ;A中数据高四位与低四位交换 ANL A,#0FH ;高四位变0 MOV R0,A ;数据放入当削地址单元中 RET ; 清零程序

22、 ;对计时单元复零用CLR0: CLR A ;清累加器 MOV R0,A ;清当前地址单元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址单元清0 RET ;org0x0300DB0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,00H ;0 1 2 3 4 5 6 7 8 9 不亮 共阴段码表 end六、小结与展望通过这次单片机课程设计,我终于把在课本上的知识应用到了实际当中去。这次课程设计还真是受益匪浅。我基本上熟悉了MCS51单片机的原理和汇编语言程序的设计,掌握了外设接口的编程设计,中断系统,系统扩展等知识。,我不但巩固了自

23、己电力电子的理论知识,还进一步熟练了KEIL仿真软件的应用。用这个仿真软件,不仅可以方便地实现程序的修改,而且还可以直接进行软件仿真,观察程序运行情况。还可以将通过接口把程序下载到硬件电路上调试,真是方便多多啊!这种直观的仿真教学,使我不但验证了书本上的理论知识,而且也对一些抽象难懂的概念有了更加明确直观的理解。同时也能让我综合运用单片机的软、硬件技术分析实际问题,为工业生产、科学研究和实验设备等领域的单片机应用和开发打下良好的基础。本次的课程设计还令我认识到了熟能生巧这个道理。刚刚接触单片机的时候,觉得很难,好像什么都不会,各种各样的助记符、程序更烦,做一道习题或者是设计一个电路都要耗费我很

24、多的时间。但通过这次实训,让我懂得了世上无难事,只怕有心人的道理。再难的事,只要你肯用心,也会变得容易;反之,再容易的事,如果你无心去做,也会变得遥不可及。要学好单片机,我们要走的路还很长。但路漫漫其修玩兮,吾将上下而求索。只要我们不懈努力,我相信我们一定能把任何一件事做好。七、致谢本次单片机课程设计的顺利完成,我要特别感谢我们的张华老师,是他平时理论与实际的讲课方式让我对单片机产生了极大的兴趣和打下了扎实的理论基础。另外,在整个实训过程中,我还要感谢我的队友,是大家在一起讨论,一起研究,互相帮助,才会有我们的共同进步,才能顺利地完成这次的课程设计。感谢大家一起为这次课程设计营造了良好的气氛。这次,我还要特别感谢海杰同学。从实训开始到结束,海杰同学一直都陪着我到实验室调试程序,给了我很大的帮忙。对大家给我的无私帮助,在此我要再一次向他们表示衷心的感谢。八、主要参考文献1)单片微型计算机原理与接口技术 ,高锋, 科学出版社,20072)单片机原理及接口技术, 李朝青,北京航空航天大学出版社,2000

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服