




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 目录一、单片机数字时钟3二、课程设计的设计任务及基本要求3三、课程设计方框图4四、主程序流程图5五、部分电路设计及相应的程序7六、附录及参考文献22七、心得体会23一、单片机数字时钟二、课程设计的设计任务及基本要求1. 设计一个利用C-51单片机编程的数字时钟;2. 要求开机运行显示“”;3. 显示部分用6位8八段共阳极数码管;4. 具有显示“时时.分分.秒秒”;5. 具有3个调整按键;6. 按键功能:秒调整,分调整,时调整;7. 调整到哪位那一位具有闪烁;三、课程设计方框图四、主程序流程图本设计中计时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。
2、定时器T0中断服务程序 定时器T0用于时间计时。定时溢出中断周期可设为50ms,中断进入后,时钟计时累计20次(即1s)时,对秒计数单元进行加1操作。时钟计数单元在定义的6个单元70H75H中, 70H71H 存放秒数据, 72H73H存放分数据, 74H75H存放时数据。最大计时值为23小时59分59秒。在计数单元中采用十进制BCD码计数,秒、分、时之间满60进位。 五、部分电路设计及相应的程序芯片与显示部分电路图:P0口为八段共阳极数码管段驱动八段共阳极数码管段驱动接的限流电阻的阻值510P2口为6为数码管的为驱动6为数码管的为驱动所接的电阻阻值为5K位驱动用了6个74HC04来稳定显示效
3、果显示子程序:数码管显示的数据放在内存单元70H75H中,其中70H71H存放秒数据, 72H73H存放分数据, 74H75H存放时数据,每一单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用的十进制BCD码数据的对应段码存放在ROM表中,显示时,先取出70H75H中的某一地址中的数据,然后查表得对应的显示段码从P0口输出,P2口将对应的数码管位选中供电,就能显示该地址单元的数据值。 ORG0000H;主程序起始地址LJMPMAIN;跳转至主程序ORG000BH;TIMERO中断起始地址LJMPINTT0;跳至中断服务程序ORG0030H ;定位起始地址MAIN: MOV
4、SP,#75H;设置堆栈在75H MOV 21H,#0;21H为功能状态标志单元,0为时钟运行 态, 1为秒调节,2为分调节,3为时调节CLR00H;按键消抖标志初始化为0CLR 02H ;02H为显示闪烁标志,1为熄灭,0点亮MOVR5,#100;中断100次MOVTMOD,#01H;T0为方式1 MOV TH0,#0D8H;T0赋初值(10ms,fosc=12MHz)MOV TL0,#0F0H;MOV6DH,#23;“时”寄存器初值为23MOV6EH,#59;“分”寄存器初值为59MOV6FH,#58;“秒”寄存器初值为28SETBEA ;CPU开中断SETBET0 ;T0开中断SETBT
5、R0 ;T0启动运行HERE: SJMPHERE;等待中断DISP: MOV DPTR,#TAB;置共阳字段码首地址MOVA,70H;读显示数MOVC A,A+DPTR;读十位显示符MOVP0,A;输出至P0CLRP2.0;P2.0清零LCALL D1MS;调用1MS显示子程序SETBP2.0;P2.0置1MOVA,71H;读显示数MOVC A,A+DPTR;读十位显示符ANLA,#7FH;点亮DPMOVP0,A;输出至P0CLRP2.1;P2.1清零LCALL D1MS;调用1MS显示子程序SETBP2.1;P2.0置1MOVA,72H;读显示数MOVCA,A+DPTR;读十位显示符MOVP
6、0,A;输出至P0CLRP2.2;P2.2清零LCALL D1MS;调用1MS显示子程序SETBP2.2;P2.2置1MOVA,73H;读显示数MOVC A,A+DPTR;读十位显示符ANLA,#7FH;点亮DPMOVP0,A;输出至P0CLRP2.3;P2.3清零LCALL D1MS;调用1MS显示子程序SETBP2.3;P2.0置1MOVA,74H;读显示数MOVC A,A+DPTR;读十位显示符MOVP0,A;输出至P0CLRP2.4;P2.4清零LCALL D1MS;调用1MS显示子程序SETBP2.4;P2.4置1MOVA,75H;读显示数MOVC A,A+DPTR;读十位显示符MO
7、VP0,A;输出至P0CLRP2.5;P2.5清零LCALL D1MS;调用1MS显示子程序SETBP2.5;P2.5置1RET ;推出循环TAB: DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90H;表格;fosc=12MHz, 1T=1us,1ms=1000T;D1MS: MOVR7,#249;1TDIMSLP: NOP ;2TX249=498TNOP ;DJNZ R7,DIMSLP;2TX249=498T NOP ;1TRET ;2TINTT0: MOVTH0,#0D8H;T0重赋初值MOVTL0,#0F0H;T0重赋初值DJNZ R5,I
8、NTRET;判断INTRET是不是到了MOVR5,#100;到100次CPL02H ;取反 MOV A,21H ;将21H单元数送入累加器CJNEA,#0,INTRET;判断中断到1000次吗INC6FH ;6FH单元加1MOVA,6FH;将6FH数送入累加器ACJNE A,#60,INTRET;判断累加器A中的数等于60MOV6FH,#0;6FH清0INC6EH ;6EH单元加1MOVA,6EH;将6EH数送入累加器A CJNE A,#60,INTRET;判断累加器A中的数等于60MOV6EH,#0;6EH清0INC6DH ;6DH单元加1MOVA,6DH;将6DH数送入累加器ACJNE A
9、,#24,INTRET;判断累加器A中的数等于23MOV 6DH,#0;6DH清0INTRET: LCALL KEYA;调用按键防抖动 LCALL BIN2BCD;调用2位十进制数显示模块LCALL XS_FL;调用闪烁模块LCALL DISP;调用显示模块RETI ;结束中断BIN2BCD: MOV A,6FH;将秒寄存器的内容存入AMOVB,#10;设B累加器的值为10DIVAB ;A/B,商存入A,余数,存入BMOV 74H,A;将A的内容送入74H单元MOV 75H,B;将B的内容送入75H单元MOVA,6EH;将秒寄存器的内容存入AMOVB,#10;设B累加器的值为10DIVAB ;
10、A/B,商存入A,余数,存入BMOV 72H,A;将A的内容送入72H单元MOV 73H,B;将B的内容送入73H单元MOVA,6DH;将秒寄存器的内容存入AMOVB,#10;设B累加器的值为10DIVAB ;A/B,商存入A,余数,存入BMOV 70H,A;将A的内容送入70H单元MOV 71H,B;将B的内容送入71H单元RET ;退出循环END ;结束程序调时功能程序的设计方法是:按下P1.0键,进入调分状态,时钟停止走动;按P1.1或P1.2键可进行加1或减1操作;继续按P1.0键可分别进行分十位、时个位和时十位调整;最后按P1.0键将退出调整状态,时钟开始计时运行。K0键为“秒调整,
11、分调整,时调整”总共有4种状态“0” 为正常运行状态“1” 为正常秒调整状态“2” 为正常分调整状态“3” 为正常时调整状态;通过判断读键值程序K1键为加1功能键:如果当没有键操作则时钟正常运行;如果当KA0为1 秒调整状态秒单元闪烁,按KA1则秒单元加1;如果当KA0为2分调整状态分单元闪烁,按KA1则分单元加1;如果当KA0为3 时调整状态时单元闪烁,按KA1则时单元加1;KA2功能键:通过判断读键值程序KA2键为减1功能键:如果当没有键操作则时钟正常运行;如果当KA0为1 秒调整状态秒单元闪烁,按KA1则秒单元减1;如果当KA0为1分调整状态分单元闪烁,按KA1则分单元减1;如果当KA0
12、为3时调整状态时单元闪烁,按KA1则时单元减1;按键功能程序:=KA0: JB 01H,N4;判断标志位等于4 INC21H ;21H单元加1 MOV A,21H;将21H单元送入累加器A CJNE A,#4,N4 ;判断等于4,不等于4 MOV21H,#0;21H单元清0N4: CLR00H ;标志位,0为下一次按键操作做好准备 SETB 01H;按键功能响应标志 SJMP GRET ;退出;=KA1: JB 01H,KA1END;转01H标志响应 MOVA,21H ;将21H标志送入累加器A CJNEA, #0,N0 ;判断键为0,不等于0 SJMPKA1END ;退出响应N0:CJNEA
13、,#1,N1;判断等于1,不等于1INC 6FH ;6FH单元加1MOV A,6FH ;将6FH单元送入累加器CJNEA,#60,KA1END;判断等于60,不等于60MOV 6FH,#06FH ;6FH清0SJMPKA1END;退出响应N1:CJNEA,#2,N2 ;判断等于2,不等于2INC 6EH ;6EH单元加1MOV A,6EH ;将6FH单元送入累加器ACJNEA,#60,KA1END;判断等于60,不等于60MOV 6EH,#0 ;6EH清0SJMPKA1END;退出响应N2:CJNEA,#3,KA1END;判断等于2,不等于2INC 6DH ;6EH单元加1 MOV A,6DH
14、;将6FH单元送入累加器ACJNEA,#24,KA1END;判断等于60,不等于60MOV 6DH,#0 ;6DH清0KA1END: CLR00H ;标志位,0为下一次按键操作做好准备SETB01H ;按键功能响应标志SJMPGRET;时钟运转;=KA2:JB01H,KA2END ;转01H标志响应MOVA,21H ;将21H标志送入累加器ACJNEA,#0,DN0;判断键为0,不等于0SJMPKA1END;退出响应DN0:CJNEA,#1,DN1 ;判断等于1,不等于1DEC6FH ;6FH单元减1MOVA,6FH ;将6FH单元送入累加器ACJNEA,#255,KA2END;判断等于255
15、,不等于255MOV6FH,#59 ;6FH减59次SJMPKA2END;退出响应DN1:CJNEA,#2,DN2 ;判断等于1,不等于1DEC6EH ;6FH单元加1MOVA,6EH ;将6FH单元送入累加器ACJNEA,#255,KA2END;判断等于255,不等于255MOV6EH,#59 ;6FH减59次SJMPKA2END ;退出响应DN2:CJNEA,#3,KA2END ;判断等于1,不等于1DEC6DH ;6FH单元减1MOVA,6DH ;将6FH单元送入累加器ACJNEA,#255,KA2END;判断等于255,不等于255MOV6DH,#23 ;6FH减23 KA2END:C
16、LR00H ;标志位,0为下一次按键操作做好准备SETB01H ;按键功能响应标志AJMPGRET ;退出循环闪烁部分程序:XS_FL:MOVA,21H;将21H单元送入累加器ACJNEA,#0,FL;判断A中等于0,跳到FLSJMPN3FL;跳转到出口FL:CJNEA,#1,N1FL;判断A中等于1,跳到N1FLJB02H,MFL ;02H为显示闪烁标志,1为熄灭,0点亮LCALLBIN2BCD;调用显示模块SJMPN3FL;退出循环MFL:MOV74H,#10;将74H单元表调用中的熄灭码MOV75H,#10 ;将75H单元调用表中的熄灭码SJMPN3FL;退出循环N1FL:CJNEA,#
17、2,N2FL;判断A中等于1,跳到N2FLJB02H,MFL1;02H为显示闪烁标志,1为熄灭,0点亮LCALLBIN2BCD;调用显示模块SJMPN3FL;跳转到出口MFL1:MOV72H,#10;将73H单元表调用中的熄灭码MOV73H,#10 ;将72H单元调用表中的熄灭码SJMPN3FL;跳转到出口N2FL:CJNEA,#3,N3FL;判断A中等于3,跳到N3FLJB02H,MFL2;02H为显示闪烁标志,1为熄灭,0点亮LCALLBIN2BCD;调用显示模块SJMPN3FL;跳转到出口MFL2:MOV70H,#10;将70H单元表调用中的熄灭码 MOV71H,#10 ;将71H单元表
18、调用中的熄灭码N3FL:RET ;退出循环程序表格中的第十个位熄灭码:TAB:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H,0FFH;表格BIN2BCD:MOVA,6FH;将秒寄存器的内容存入AMOVB,#10;设B累加器的值为10DIVAB ;A/B,商存入A,余数,存入BMOV74H,A;将A的内容送入74H单元MOV75H,B;将B的内容送入75H单元MOVA,6EH;将秒寄存器的内容存入AMOVB,#10;设B累加器的值为10DIVAB ;A/B,商存入A,余数,存入BMOV72H,A;将A的内容送入72H单元MOV73H,B;将B的内容送入73H单元MOVA,6DH;将秒寄存器的内容存入AMOVB,#10;设B累加器的值为10DIVAB ;A/B,商存入A,余数,存入BMOV70H,A;将A的内容送入70H单元MOV71H,B;将B的内容送入71H单元RET ;退出循环六、附录及参考文献AT89C511片74HC046个RES8只 510RES6只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经济体系中的社会公平性研究试题及答案
- 材料疲劳断裂数据校正重点基础知识点
- 养牛场火灾应急预案(3篇)
- 高考数学学习计划与试题及答案
- 行政管理应对策略试题与答案
- 突发高楼火灾应急预案(3篇)
- 防火灾应急预案演练银行(3篇)
- 高速网络设计中的试题及答案总结
- 2025年软件设计师考试关键知识总结及试题及答案
- 法学概论考试备考的团队合作方式试题及答案
- 2024年西安曲江二小教师招聘真题
- 2025瑞典语等级考试B1级模拟试卷
- 2024年全国工会财务知识大赛备赛试题库500(含答案)
- 2025-2030中国贸易融资行业市场发展现状及发展趋势与投资战略研究报告
- 2024年自治区文化和旅游厅所属事业单位招聘工作人员考试真题
- 法院辅警笔试题及答案
- 雇保姆看孩子合同协议
- (四模)长春市2025届高三质量监测(四)语文试卷(含答案详解)
- 《小米营销策略》课件
- 2024年江西省三支一扶考试真题
- 2025年小学语文教师实习工作总结模版
评论
0/150
提交评论