




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳工程学院课 程 设 计设计题目:多功能时钟程序设计沈阳工程学院课程设计任务书课程设计题目: 多功能时钟程序设计多功能时钟程序设计成绩评定表指导教师评审意见评价内容具体要求权重评分加权分论 证独立查阅文献,制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作。0.25432工作量按期圆满完成规定的设计任务,工作量饱满, 0.25432说明书的质量说明书立论正确,论述充分,文字通顺,技术用语准确,符号统一,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12)分加权分合计指导教师签名:年 月 日评阅教师评审意见评价内 容具体要求权重评分加权分查文献查阅文献有广泛性,有综合归纳资料的能力0.25432工作量工作量饱满,难度适中0.55432说明书的质量说明书立论正确,论述充分,文字通顺,技术用语准确,符号统一,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评阅教师签名:年 月 日课程设计总评成绩分系部: 班级: 学生姓名: 中文摘要 时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。 数字电子钟的设计方法有多种,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点,同时可以用该电子钟发出各种控制信号。 该数字钟采用液晶显示屏显示其时间与定时时间,即采用p6口输入,p7口输出,由r0输入需显示的时间,再通过延时程序将时间稳定的显示在液晶屏上。校准时间由外部中断4及开关按键控制;定时时间由外部中断3及开关按键控制 ,key3、key4键每按一次其时分秒的数字增加一。 关键字: 单片机, 数字钟, 校时, 定时器目录1课程设计要求11.1设计主要内容及要求11.2对设计论文撰写内容、格式及字数的要求11.3时间进度安排12课程设计思路22.1计时22.2校时22.3闹铃23设计流程图34各模块设计44.1时钟部分4时钟程序分析4时钟部分程序44.2定时部分6定时程序分析6定时部分程序64.3校时部分8校时程序分析8校时部分程序84.4显示部分10显示程序分析10显示部分程序105工作过程分析165.1时钟程序分析165.2定时程序分析175.3校时程序分析195.4显示程序分析206主要元器件介绍236.1c8051f020单片机236.2液晶显示器24总结26致谢27参考文献27附录2835多功能时钟程序设计1 课程设计要求1.1 设计主要内容及要求1) 编写多功能时钟程序2) 能够显示时、分、秒的时钟程序。3) 具有闹钟功能。4) 能够进行时间调整。1.2 对设计论文撰写内容、格式及字数的要求1) 课程设计论文是体现和总结课程设计成果的载体,一般不应少于 3000字。2) 学生应撰写时应做到文理通顺,内容正确完整,书写工整,装订整齐。3) 论文要求打印,打印时按沈阳工程学院毕业设计(论文)撰写规范的要求4) 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。1.3 时间进度安排顺序阶段日期计 划 完 成 内 容地址11月7日教师讲解题目,学生查阅相关资料实训f42221月8日查阅相关资料、进行方案论证实训f42231月9日确定闹钟设置时间调整方法实训f42241月10、11、14日编写程序实训f42251月15、16日调试程序实训f42261月17日撰写论文实训f42271月18日论文答辩实训f4222 课程设计思路 本文主要介绍用单片机编程来实现多功能时钟的方法,本设计由单片机c8051f芯片、led灯液晶显示屏为核心,辅以必要的程序,构成了一个单片机数字时钟。与传统时钟相比,它具有走时精确,显示直观等特点。它的计时周期为12小时,分上下午,显满刻度为“11时59分59秒”,然后上下午交替,另外具有校时、闹钟显示星期等功能等特点。2.1 计时当t0进入中断后,先给t0计时1s,再计时60s;当秒计数满60s后开始分的计数,同时将秒清零,否则返回程序继续执行;同理当分计数到60min,开始时的计时并共计数12次,与此同时分、秒清零。当完成12小时的计时后,切换上下午,当从下午切换到上午时为12:00:00星期加一,加到8时再变到1,然后返回主程序继续。2.2 校时校时就是对时间进行调整,现将其赋一初值,然后将初值带入计时程序中,然后将其作为初值,计时从该值开始显示.。其中初值的设置由外部中断key3和开关按键设定,k1、k2、k3、k4、k6分别控制时、分、秒 、上下午、星期。2.3 闹铃定时程序实则就是让系统设定一个闹铃时间,并使led灯在到达时间时亮。先判断秒是否相等,不等则继续,相等则判断分,同理分相等时判断时、上下午、星期,当系统设定的秒、分、时、上下午、星期与显示的时间都相等时跳到程序tsr使led亮。其中初值的设置由外部中断key4和开关按键设定,k1、k2、k3、k4、k6分别控制时、分、秒、上下午、星期 。3 设计流程图主程序定时50ms显示秒加一校时判断是否为60s分加一定时判断是否为60m时加一判断是否相等判断是否为12时加一时加一灯亮上下午翻转时加一判断是否为下午星期变为1返回主程序判断是否为8星期加一4 各模块设计4.1 时钟部分 时钟程序分析主程序主要是使各端口使能,保证各端口正常使用(主程序请参考附录)。t0工作于定时方式1,进行16位计数。其中秒的地址为30h,分的地址为31h,小时的地址为32h,上下午的地址是50h,星期的地址是34h。当t0进入中断后,先给t0赋初值3cb0,定时50ms,循环20次计时1s,再跳入子程序abc中循环60次计时60s;当秒计数满60s后开始分的计数,同时将秒清零重新计时,否则返回程序继续执行;同理当分计数到60min,程序开始时的计时并共计数12次,当计数满12次时,上下午翻转,计满13次时时针变为1,与此同时分、秒清零需重新开始计数,当从下午变成上午时,星期加1,星期计满7次变为1。 时钟部分程序$include(c8051f020.inc)org 0000h ajmp main org 000bh ajmp t0 org 0093hljmp key3org 009bhljmp key4org 0100h main: mov wdtcn,#0deh ;关看门狗 mov wdtcn,#0adh mov oscicn,#05h ;内部振荡4mhz mov p1mdout,#0ffh ;设置p1的输出方式 mov p74out, #0f0h ;端口6、端口7输出方式为推挽输出 mov ckcon,#00h ;t0定时器12分频 mov tmod,#01h ;t0处于工作方式一,16位 mov tcon,#10h ;tr0=1,允许t0计数 mov xbr2,#40h ;交叉开关总使能 mov eie2,#30h ;中断6、中断7使能 mov p3if,#0ch ;中断7上升沿触发 mov 50h,#00h mov 60h,#00h mov th0,#3ch ;赋初值 mov tl0,#0b0h mov 30h,#00h ;秒存储地址 mov 31h,#00h ;分存储地址 mov 32h,#12h ;时存储地址 mov 33h,#00h ;上下午储存地址 mov 34h,#01h ;星期储存地址 mov 40h,#00h mov 41h,#00h mov 42h,#12hmov 43h,#00h mov 44h,#01h mov r1,#04h ;1s循环次数 mov ie,#82h ;中断使能 ajmp $t0: mov tl0,#0b0h ;定时50ms mov th0,#3ch djnz r1,x ;计时1s mov r1,#04h lcall abc ;跳转到计时程序 lcall ding ;跳转到定时程序 lcall time ;跳转到显示程序 x: retiabc: mov a,30h add a,#1 ;秒加1 da a ;做十进制调整 mov 30h,a cjne a,#60h,y ;是否等于60s?若不是,则跳至y mov 30h,#00h ;若是,则30h清零 mov a,31h add a, #1 ;分加1 da a ;做十进制调整 mov 31h,a cjne a,#60h,y ;是否等于60s?若不是,则跳至y mov 31h,#00h ;若是,则31h清零 mov a,32h add a,#1 ;时加1 da a ;做十进制调整 mov 32h,a cjne a,#12h,l mov a,31h cjne a,#00h,l mov a,30h cjne a,#00h,lmov a,50h cpl a mov 50h,acjne a,#00h,ymov a,34hadd a,#01hda a mov 34h,a cjne a,#08h,ymov 34h,#01hl: mov a,32h cjne a,#13h,y mov 32h,#01h y:ret4.2 定时部分 定时程序分析定时程序实则就是人为设定一个闹铃时间,并使led灯在到达时间时亮。将秒赋予a,判断系统是否与设定的一致,不等则继续执行下一条指令,相等则跳转到lop1判断分;再将分赋予a,判断系统是否与设定的一致,不等则继续执行下一条指令,相等则跳转到lop2判断时;然后将时赋予a,判断系统是否与设定的一致,不相等则继续下一条指令,相等则跳到lop3判断上下午;再将上下午赋予a,判断系统是否与设定的一致,不相等则继续下一条指令,相等则跳到lop4判断星期,将星期赋予a,判断系统是否与设定的相等,不相等则继续下一条指令,相等时跳转到tsr子程序。定时时间由外部中断4控制,每按一下,其值增加一,时、分、秒、上下午星期由开关按键k1,k2,k3,k4、k6控制。判断位00h、01h、02h、03、05是否为0,哪个不为0跳转到相应的时、分、秒、上下午、星期程序中。在42h、41h、40h、60h、44h中存放时、分、秒、上下午、星期。当系统设定的秒、分、时、上下午、星期与显示的时间都相等时led灯亮,表示闹铃时间到。将k1拨到0时,按下key4,可熄灭led灯。 定时部分程序ding: mov a,30h ;定时程序 cjne a,40h,n ajmp lop1lop1: mov a,31h cjne a,41h,n ajmp lop2lop2: mov a,32h cjne a,42h,n ajmp lop3lop3: mov a,50h cjne a,60h,n ajmp lop4lop4:mov a,34h cjne a,44h,n ajmp tsr n: rettsr: mov p1,#00h retkey4: lcall t2 lcall time mov p3if,#00h retit2: mov 20h,p5 ;定时程序jnb 00h,shi1jnb 01h,fen1jnb 02h,miao1jnb 03h,xingqi1jnb 05h,zhou1ret zhou1: mov a,44h add a,#1 da amov 44h,acjne a,#08h,mbmov 44h,#01hretxingqi1:mov a,60h cpl amov 60h,a retshi1: mov p1,#0ffh mov a,42h add a,#1 da a mov 42h,a cjne a,#13h ,mb mov 42h,#1 retfen1: mov a,41h add a,#1 da a mov 41h,a cjne a,#60h ,mb mov 41h,#0 retmiao1:mov a,40h add a,#1 da a mov 40h,a cjne a,#60h ,mb mov 40h,#0mb: ret4.3 校时部分 校时程序分析校时部分就是在系统时间不准确的情况下,给系统赋定值,使系统时间可以从该值开始变化,使用外部中断key3,先给30h、31h、32h、50h、34h赋所需时间,然后调用程序将其显示。其中进入中断后调用子程序t1可以由key3键设置所定时间每按一次key3键值增加一,是调整时还是分或秒,可由开关量输入键k1、k2、k3、k4、k5分别控制。其主程序中加入了外不中断的有关指令.但需注意的是,在调解时除打开时、分、秒上下午、星期控制键外还需打开k11键。(主程序只给出所加指令) 校时部分程序 key3: lcall t1 lcall time mov p3if,#00hretit1: mov 20h,p5 ;校准程序 jnb 00h,shi jnb 01h,fen jnb 02h,miao jnb 03h,xingqi jnb 05h,zhou retzhou: mov a,34h add a,#1 da a mov 34h,a cjne a,#08h,mnmov 34h,#01hretxingqi:mov a,50h cpl a mov 50h,a ret shi:mov a,32h add a,#1 da a mov 32h,a cjne a,#13h ,mn mov 32h,#01h retfen: mov a,31h add a,#1 da a mov 31h,a cjne a,#60h ,mn mov 31h,#0ret miao:mov a,30h add a,#1 da a mov 30h,a cjne a,#60h ,mn mov 30h,#0mn: ret 4.4 显示部分 显示程序分析显示程序就是将程序中的时分秒显示在液晶显示屏上使其看起来更直观、方便。其中第一行显示系统运行时间,第二行显示定时时间。该程序主要根据老师所给程序改编,利用子程序line设定显示屏的主要参数.让时间显示在上一行且只显示一个时分秒,如“12:12:12pmxq1”,不造成显示多个的后果。ncd为常函数表,将0-9、a、p、m、x、q数字和字母依次存放到以左边标号为起始地址的存储单元中。time中就是将时分秒的十位、各位分别赋予r0,还有判断50h中是00h还是0ffh,如果是00h就显示上午am,然后星期加一,如果是0ffh就显示下午pm,然背后调用查表程序将其显示在液晶屏上。值得注意的是:时与分、分与秒之间需将冒号也显示出来。同理,定时时间的显示在第二行,由time1控制。 显示部分程序time: clr a mov xbr0, a lcall lcd mov dptr,#ncd mov a,32h swap a mov r0,a lcall line1 lcall delay mov r0,32h lcall line1 lcall delay mov r0,#10 lcall line1 lcall delay mov a,31h swap a mov r0,a lcall line1 lcall delay mov r0,31h lcall line1 lcall delay mov r0,#10 lcall line1 lcall delay mov a,30h swap a mov r0,a lcall line1 lcall delay mov r0,30h lcall line1 lcall delay mov a,50h cjne a,#0ffh,lopa mov r0,#12 lcall line1 lcall delay mov r0,#13 lcall line1 lcall delay ajmp lopplopa: mov r0,#11 lcall line1 lcall delay mov r0,#13 lcall line1 lcall delay lopp: mov r0,#14 lcall line1 lcall delay mov r0,#15 lcall line1 lcall delay mov r0,34h lcall line1 lcall delay mov dptr,#ned mov p7,#0c0h mov p6,#1h mov p6,#0h mov r0,#11 lcall line1 lcall delay mov a,42h swap a mov r0,a lcall line1 lcall delay mov r0,42h lcall line1 lcall delay mov r0,#10 lcall line1 lcall delay mov a,41h swap a mov r0,a lcall line1 lcall delay mov r0,41h lcall line1 lcall delay mov r0,#10 lcall line1 lcall delay mov a,40h swap a mov r0,a lcall line1 lcall delay mov r0,40h lcall line1 lcall delay mov a,60h cjne a,#0ffh,lopa1 mov r0,#12lcall line1 lcall delay mov r0,#13 lcall line1 lcall delay ljmp lop44 lopa1:mov r0,#11 lcall line1 lcall delay mov r0,#13 lcall line1 lcall delay lop44:mov r0,#14 lcall line1 lcall delay mov r0,#15 lcall line1 lcall delay mov r0,44h lcall line1 lcall delay1 retline1: mov a,r0 anl a,#0fh movc a,a+dptr mov p7,a mov p6,#05h mov p6,#04h retlcd: lcall delay mov p7, #38h mov p6, #01h mov p6, #00h lcall delay mov p7, #0eh mov p6, #01h mov p6, #00h lcall delay mov p7, #06h mov p6, #01h mov p6, #00h lcall delay mov p7, #01h mov p6, #01h mov p6, #00h lcall delay retdelay: mov r6,#50delay0: mov r5,#50 djnz r5,$ djnz r6,delay0 ret delay1: mov r4,#35 ;dddelay2: mov r3,#150delay3: mov r2,#250 djnz r2,$ djnz r3,delay3 djnz r4,delay2 ret ncd:db0,1,2,3,4,5,6,7,8,9,:,a,p,m,x,q, ;常数表ned:db0,1,2,3,4,5,6,7,8,9,:,a,p,m,x,q, ;常数表end5 工作过程分析5.1 时钟程序分析在设计时分秒的程序时,首先定时1s,然后循环60次,则计时60秒,再判断是否循环60次,没有则继续执行以完成秒的计时,若完成60次循环则分加一,同理当分计数满60时,时加一,在判断是否计数满12次,若完成12次则上下午翻转,在判断是否由下午变成上午,若是则星期加1,以此完成时时分秒上下午星期的计时并据此编写程序。(主程序未给出)t0: mov tl0,#0b0h ;定时50ms mov th0,#3ch djnz r1,x ;计时1s mov r1,#04h lcall abc ;跳转到计时程序 lcall ding ;跳转到定时程序 lcall time ;跳转到显示程序 x: retiabc: mov a,30h add a,#1 ;秒加1 da a ;做十进制调整 mov 30h,a cjne a,#60h,y ;是否等于60s?若不是,则跳至y mov 30h,#00h ;若是,则30h清零 mov a,31h add a, #1 ;分加1 da a ;做十进制调整 mov 31h,a cjne a,#60h,y ;是否等于60s?若不是,则跳至y mov 31h,#00h ;若是,则31h清零 mov a,32h add a,#1 ;时加1 da a ;做十进制调整 mov 32h,acjne a,#12h,lmov a,31hcjne a,#00h,lmov a,30hcjne a,#00h,l ;是否为12:00:00?若不是,跳lmov a,50h cpl a mov 50h,a ;上下午翻转cjne a,#00h,ymov a,34h ;判断是否是下午变成上午,若不是,跳yadd a,#01h ;星期加1da a mov 34h,a cjne a,#08h,ymov 34h,#01hl: mov a,32h ;时钟是否为13,若不是,跳y cjne a,#13h,y mov 32h,#01h ;若是,时钟变成1y:rett0进入中断,开始时分秒上下午星期的计时。最大显示为“11:59:59pmxq7”。5.2 定时程序分析定时程序实则就是让时钟设定一个闹铃时间,当系统时间与设定的时间一致时显示时间并使led灯亮。先判断秒是否相等,不等则继续,相等则跳转到lop1判断分,同理相等时跳转到lop2、lop3、lop4判断时上下午、星期,当系统设定的与显示的时间都相等时跳到程序tsr使led亮。闹钟时间由k4调整。ding: mov a,30h cjne a,40h,n ;判断秒是否相等 ajmp lop1lop1: mov a,31h cjne a,41h,n ;判断分是否相等 ajmp lop2lop2: mov a,32h cjne a,42h,n ;判断时是否相等 ajmp lop3lop3: mov a,50h cjne a,60h,n ;判断上下午是否相等ajmp lop4lop4: mov a,34h cjne a,44h,n ;判断星期是否相等 ajmp tsr n: rettsr: mov p1,#00h retkey4: lcall t2 lcall time mov p3if,#00h retit2: mov 20h,p5 ;定时程序 jnb 00h,shi1 jnb 01h,fen1 jnb 02h,miao1 jnb 03h,wu1jnb 05h,zhou1 ;判断加1的是哪个ret zhou1:mov a,44h add a,#1 ;星期加1da amov 44h,acjne a,#08h,mbmov 44h,#01hretwu1:mov a,60h cpl a ;上下午翻转 mov 60h,a retshi1: mov p1,#0ffh mov a,42h add a,#1 ;时加1 da a mov 42h,a cjne a,#13h ,mbmov 42h,#1 retfen1: mov a,41h add a,#1 ;分加1 da a mov 41h,a cjne a,#60h ,mb mov 41h,#0retmiao1:mov a,40h add a,#1 ;秒加1 da a mov 40h,a cjne a,#60h ,mb mov 40h,#0mb: ret开始我用p0和p1控制系统时间和闹钟时间的上下午,但是不成功,因为判断是否相等的时候没有适合的指令,之后我改用50h、60h分别控制,上下午切换时直接cpl50h、60h。5.3 校时程序分析校时程序在校时的时候,时间是不会停止走的,按下key3、key4,再根据k1、k2、k3、k4、k6的值分别时、分、秒、上下午、星期加1或翻转。key3: lcall t1 lcall time mov p3if,#00hretit1: mov 20h,p5 ;校准程序 jnb 00h,shi jnb 01h,fen jnb 02h,miao jnb 03h,wu jnb 05h,zhou ;判断调整哪个retzhou: mov a,34h add a,#1 ;星期加1 da a mov 34h,a cjne a,#08h,mn mov 34h,#01hretwu:mov a,50h cpl a mov 50h,a ret shi:mov a,32h add a,#1 da a mov 32h,a cjne a,#13h ,mn mov 32h,#01h retfen: mov a,31h add a,#1 da a mov 31h,a cjne a,#60h ,mn mov 31h,#0 ret miao: mov a,30h add a,#1 da a mov 30h,a cjne a,#60h ,mn mov 30h,#0mn: ret ;5.4 显示程序分析该部分主要是将随时变化的时间及定时时间显示到液晶显示屏上,开始我用ascii表示,但是太麻烦,而且网上找的ascii表有些还不适合我们这款单片机,因此我用 这种方法,直接往里面打上需要显示的字母和数字,然后按排列顺序往lcd显示屏上送,便可以方便的将要显示的东西显示出来。time: clr a ;累加器清零 mov xbr0, a lcall lcd mov dptr,#ncd mov a,32h swap a ;高地位交换 mov r0,a lcall line1 ;显示小时的十位 lcall delay mov r0,32h lcall line1 ;显示小时的个位 lcall delaymov r0,#10 ;显示(:) lcall line1 lcall delay mov a,31h swap a mov r0,a lcall line1 lcall delay mov r0,31h lcall line1 lcall delay mov r0,#10 lcall line1 lcall delay mov a,30h swap a mov r0,a lcall line1 lcall delay mov r0,30h lcall line1 lcall delay mov a,50h cjne a,#0ffh,lopa ;判断上下午 mov r0,#12 lcall line1 lcall delay mov r0,#13 lcall line1 lcall delay ajmp lopplopa:mov r0,#11 lcall line1 lcall delay mov r0,#13 lcall line1 lcall delay lopp:mov r0,#14 lcall line1 lcall delay mov r0,#15 lcall line1 lc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权入股利润分红合同
- 2025【合同范本】项目管理服务招标代理合同模板
- 2025供应商采购合同
- 2025YY物业服务合同(示范文本)
- 2025【合同范本】补充协议工期延迟赔偿预售版
- 2025土地征收补偿合同
- 2025废铜材买卖合同范本
- 2025关于房屋买卖合同模板
- 2025全球合同协议书范本
- 得物鉴别师考试题目及答案
- 2024玻璃钢贮罐拆除解体施工合同
- 智能建造施工技术 课件 项目1 智能建造施工概论
- 2024年成人高考成考(高起专)语文试题与参考答案
- 门诊部成本控制与费用优化
- 幼儿园师德师风宣誓
- P.E.T.父母效能训练
- 全尺寸测量结果报告
- 仲裁员的仲裁裁决书撰写技巧
- MBTI量表完整版本
- 《检验手册》全文
- 肿瘤科-护理常规(全)
评论
0/150
提交评论