您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机课程设计报告-电子时钟
单片机课程设计报告电子时钟姓名:阳林霞专业:电子信息工程班级:电子信息一班学号:1020610161指导老师:朱兆优2012-12-23目录一、设计目的····································································1二、设计要求····································································1三、设计思路····································································2四、按键分配····································································3五、地址分配····································································3六、程序原理与流程图························································4七、编写程序····································································7八、设计心得··································································141电子时钟的设计一、设计目的1、增进对单片机的感性认识,加深对单片机理论方面的理解。2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。3、了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础4、加深对本门课程所学理论知识的理解与应用,提高对所学理论知识的综合运用能力,对计算机控制系统有一个整体认识,掌握计算机控制系统的设计方法。通过课程设计,还可以培养独立工作能力,为将来毕业设计打好基础。二、设计要求1.用80C51单片机及接口电路设计一个电子计时器。①系统硬件设计:根据任务要求,完成单片机最小系统及其组成功能完整的系统。②系统软件设计:根据数字电子计时器功能,完成控制软件的编写与调试,并对数码显示进行控制。2.实现的功能:①运行时,电子钟从00.00开始自动计时。②设置校正按键,能对闹钟时、闹钟分、时、分进行调整。③设置时间与当前闹钟值切换显示键,能对时间与当前闹钟切换显示。④设置+1键,能对所要校正单元内容+1。⑤设置确定/开关闹钟键3.显示要求:①在没有键的情况下,四个数码管显示正常走时时间且显示时的第二个数码管小数点每秒内亮半秒、灭半秒,其余三个数码管小数均不亮。2②当按下切换显示键时,数码管由显示时间变为显示当前闹钟值,这时小数点常亮。在按下回到走时。③按下校正键后,开始时为校闹钟时,再按一下校正键,跳至校闹钟分,再按一下则为校时,再按一下后为校分,再按一次就回到校月,依次循环,当校闹钟时,该校正单元内容在数码管上每秒内亮半秒、灭半秒,且第二个数码码小数点为常亮。当为校时或校分时,该校正单元内容在数码管上每秒内亮半秒、灭半秒,第二个数码管小数点每秒内亮半秒、灭半秒。④按下确定键后,不管前一种按键是哪一种均跳至显示正常走时状态。⑤当时钟走到设定的闹钟值时,蜂鸣器会以30MS的周期响六秒(时间可以通过程序设定)⑥确定键有开启/关闭蜂鸣器功能,并以P3.3口接LED灯(低电平亮)作指示,当P3.3为低电平时,闹钟开启,反之则为关闭)。三、设计思路利用MCS-51单片机内部的定时/计数器、中断系统、以及独立键盘和数码管等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间、闹钟值以及两者切换显示等操控。用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为0BDCH,形成1/16S定时时间。中断服务程序中对1/16S定时中断次数计数,若到计到了16次,秒单元内容加1,否则执行判键,当秒单元内容加至60时,自动清0秒单元同时分单元内容加1,同理对时、闹钟时、闹钟分处理,分别用片内RAM分别存秒、分、时、闹钟分、闹钟时,然后根据按键信息选择要显示的单元。显示时,当显示时间时,小数点每秒内亮半秒、灭半秒,因为2FH.3位0和1每半秒切换一次,故实现这个可以利用2FH.3来判断,当显示闹钟值时,这时小数点常亮。对于校时或校分显示,当校正其中一个单元内容时,显示该单元内容每秒内亮半秒、灭半秒,且小数点也随之一起闪烁;当校闹钟时或闹钟分时,校正单元闪烁,但小数点为常亮。以校正指针21H底2位:00为校月,01为校日,10为校时,11为校分,若校正指针21H.0为1时,则为3校闹钟分或校分,故使后两个数码闪烁,反之则前两个数码管闪烁,同时以20H.1来区分是校闹钟还是校时来确定小数点是常亮还是闪烁。以此来区分当前校正的单元为哪个单元。显示判断与判键思路:1.时间/闹钟值显示标志位上电时标志位置1显示时间,切换时标志位为0显示闹钟值。2.校正状态标志位(20H.1)标志位为0时正常走时,KEY3键无效。3.标志位位1时KEY2、KEY3、KEY4有效,KEY1键无效。四、按键分配1:k1键(P1.4):时间/闹钟值切换显示键2:K2键(P1.5):校正键3:K3键(P1.6):+1键4:K4键(P1.7):确定键以及开关闹钟蜂鸣器(四个按键均以低电平有效,且不要同时按下多个键)五、地址分配1.闹钟时单元:30H2.闹钟分单元:31H3.时单元:32H4.分单元:33H5.秒单元:34H6.1/16秒计数单元:2FH7.校正指针:21H低两位(00为校月、01日、10时、11分)8.时间/闹钟状态标志:20H.0(低电平为显示日期,反之为显示闹钟值)9.校正/走时标志:20H.1(低电平时为走时,反之为校正)10.显示缓冲单元:3BH,3AH11.按键信息存放单元:50H4六、程序原理与流程图1原理图5YNN2流程图①主程序开始建立各按键标志位系统初始化设置定时器/计数器1为工作方式1,1/16秒中断一次设置定时器/计数器1初值启动定时器/计数器1显示开启闹钟闹钟时间到?调用蜂鸣器子程序设置蜂鸣响的时长Y6②中断程序NYYNYNYNY中断入口地址重置计数器初值1S到了吗?1/16秒重赋16秒单元加1并调整为十进制到60S了吗?秒单元清0分单元加1并调整为十进制到60分了吗?分单元清0小时单元加1并调整为十进制到24小时了吗?小时单元清0判键中断返回7七、编写程序ORG0000HSJMPMAINORG000BHLJMPIT0P;T0中断入口ORG0030HMAIN:MOV50H,#0FFH;按键信息存放单元(作用:长按按键只当按一次)MOV30H,#0;定时闹钟时单元MOV31H,#1;定时闹钟分单元,开始默认为一分钟闹钟MOV32H,#0;时单元MOV33H,#0;分单元MOV34H,#0;秒单元MOV2FH,#16;1/16秒计数单元(定时器为1/16秒中断溢出)CLR20H.1;20H.1为0走时,为1校正SETB20H.0;20H.0为0显示当前闹钟值,为1显示走时MOVTMOD,#01H;T0工作于定时,方式1MOVTH0,#0BH;赋定时器T0初值,定时1/16S=62500USMOVTL0,#0DCHMOVIE,#82H;允许定时器T0中断SETBTR0;启动定时器T0//////////////////////////////////////;显示模块////////////////////////////////////////////////////DISP:MOVDPTR,#TAB;取笔型码表始地址JB20H.1,DISP1;校正?若是跳至校正显示MOVA,3BH;不是校正,显示走时/闹钟值ANLA,#0F0H;取时高位BCD码SWAPAMOVCA,@A+DPTR;读时高位BCD码笔型码并通过P0口输出SETBP2.0;数据片选74LS573芯片使能输入有效CLRP2.1;位选片选74LS573芯片工作于锁存方式MOVP0,A;送时高位笔型码输出显示SETBP2.1;片选573芯片工作CLRP2.0;573锁存时高位MOVP0,#0FEH;只允许第一个数码管亮LCALLDELAY;延时,调节动态显示效果MOVA,3BHANLA,#0FH;取时低位MOVCA,@A+DPTR;读时低位笔型码JNB20H.0,LOOP1;显示当前闹钟值?若是,秒常亮JB2FH.3,LOOP1;显示走时,秒闪;半秒到?SJMPNEXT1;半秒到,秒灭LOOP1:ORLA,#80H;秒亮NEXT1:SETBP2.0CLRP2.18MOVP0,A;送时低位笔型码输出显示SETBP2.1CLRP2.0MOVP0,#0FDH;只允许第二个数码管亮LCALLDELAY;延时,调节动态显示效果MOVA,3AHANLA,#0F0H;取分高位SWAPAMOVCA,@A+DPTRSETBP2.0CLRP2.1MOVP0,A;输出显示分高位值SETBP2.1CLRP2.0MOVP0,#0FBH;只允许第三个数码管亮LCALLDELAY;延时,调节动态显示效果MOVA,3AHANLA,#0FH;取分低位MOVCA,@A+DPTRSETBP2.0CLRP2.1MOVP0,A;输出显示分低位值SETBP2.1CLRP2.0MOVP0,#0F7H;只允许第四个数码管亮LCALLDELAY;延时,调节动态显示效果LJMPEXT;显示闹钟模块///////////////////////////////////;校闹钟时或校时显示代码////////////////////////////////////////DISP1:JB21H.0,LOOP2;校闹钟分或校分?不是,跳至闹钟分或校分MOVA,3BH;校闹钟时或校时ANLA,#0F0H;显示时高位SWAPAMOVCA,@A+DPTRJNB2FH.3,LP2;半秒到?没,跳正常显示MOVA,#0;半秒到,时高位灭LP2:SETBP2.0CLRP2.1MOVP0,ASETBP2.1CLRP2.0MOVP0,#0FEH;只允许第一个数码管显示LCALLDELAYMOVA,3BHANLA,#0FH9MOVCA,@A+DPTRJNB2FH.3,LP3;半秒到?没,显示时低位MOVA,#0;半秒到,时低位送灭码LP3:JNB21H.1,LOOP3;校闹钟时?是,跳校闹钟时JB2FH.3,NEXT2;校时,半秒到?没,秒灭ORLA,#80H;半秒到,秒亮SJMPNEXT2LOOP3:ORLA,#80H;校闹钟时,秒亮(校闹时,秒常亮;校时,秒闪)NEXT2:SETBP2.0CLRP2.1MOVP0,ASETBP2.1CLRP2.0MOVP0,#0FDH;只允许第二位数码管显示LCALLDELAYMOVA,3AHANLA,#0F0H;取分高位SWAPAMOVCA,@A+DPTRSETBP2.0CLRP2.1MOVP0,ASETBP2.1CLRP2.0MOVP0,#0FBH;只允许第三位数码管显示LCALLDELAYMOVA,3AHANLA,#0FH;取分低位MOVCA,@A+DPTRMOVP0,AMOVP2,#0F7H;只允许第四位数码管显示LCALLDELAYLJMPEXT;跳至闹钟模块/////////////////////////////;校闹钟分或校分显示代码////////////////////////////////////LOOP2:MOVA,3BH;校闹分校分ANLA,#0F0H;取时高位SWAPAMOVCA,@A+DPTRSETBP2.0CLRP2.1MOVP0,ASETBP2.1CLRP2.0MOVP0,#0FEH;只允许第一位数码管显示
本文标题:单片机课程设计报告-电子时钟
链接地址:https://www.777doc.com/doc-4331075 .html