位数码管时钟设计

上传人:豆浆 文档编号:37549520 上传时间:2018-04-18 格式:DOC 页数:11 大小:285.42KB
返回 下载 相关 举报
位数码管时钟设计_第1页
第1页 / 共11页
位数码管时钟设计_第2页
第2页 / 共11页
位数码管时钟设计_第3页
第3页 / 共11页
位数码管时钟设计_第4页
第4页 / 共11页
位数码管时钟设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《位数码管时钟设计》由会员分享,可在线阅读,更多相关《位数码管时钟设计(11页珍藏版)》请在金锄头文库上搜索。

1、xxxxxxxx 职业技术学院职业技术学院计算机控制技术实训报告题 目: 六位数码管时钟设计 专 业:_机电一体化 班 级: 机电 1006 班 学生姓名: 学 号: 06100520 指导教师: 实训时间: 2012 年 12 月 292013 年 1 月 6 日一系统设计要求一系统设计要求(一)设计 1 分钟定时程序选择定时器(T0/T1)选择适当的工作方式(方式 1/方式 2)计算并设定定时器的计数初值要求用中断方式每隔 1 秒钟信号取反一次,输出到 P1.0 引脚所连接的 LED 灯去。(二)设计 6 位数码管显示程序设计 6 位数码管显示程序,用动态扫描方式显示 6 位数字(如日期:

2、121203) 。段码显示由P0 口负责,位码由 P2 口显示(三)实际完成的功能起始值时、分、秒全是零,系统执行初始化程序后,随即开始走时,无须特为启动。当时钟显示为 23:59:59 时,再加 1,时钟从 00:00:00 开始运行,从而达到 24 小时循环。广东机电职业技术学院计算机控制技术实训报告2二系统的硬件设计二系统的硬件设计 CPU-AT89C51 段码驱动芯片段码驱动芯片-74LS245 6 位数码管位数码管-7SEG-MPX6-CC 电阻电阻-3WATT10K 电容电容-AVX0402、GENELECT 晶振晶振-CRYSTAL 按钮按钮-BUTTON6LED 日期显示日期显

3、示广东机电职业技术学院计算机控制技术实训报告3三系统的软件设计三系统的软件设计程序流程图程序流程图主程序 开始置定时器模式及工作方 式 (tmod)=#01h,(ie)=#82h设置初始常数 (T0)=3CH,(Tl)=0B0H,(R2)=#00H (R1)=#00H,(R0)=#00H,(R4)=#14H启动定时器 SETB TR0读取小时显示缓存数据读取秒钟显示缓存数据读取分钟显示缓存数据小时十位显示数据送 P0 口显示分钟值显示小时值秒钟十位显示数据送 P0 口分钟个位显示数据送 P0 口小时个位显示数据送 P0 口秒钟个位显示数据送 P0 口分钟十位显示数据送 P0 口调用读取子程序显

4、示秒钟值广东机电职业技术学院计算机控制技术实训报告4子程序 定时中断子程序读取子程序读取小时(R2)值送 A,送#0AH 到 B显示数据送缓存做除法运算查表把小时 A(十位)B(个位)值转换成显示数 据 读取分钟(R1)值送 A,送#0AH 到 B做除法运算查表把分钟 A(十位)B(个位)值转换成显示数 据显示数据送缓存读取秒钟(R0)值送 A,送#0AH 到 B做除法运算查表把秒钟 A(十位)B(个位)值转换成显示数据显示数据送缓存子程序返回恢复现场小时(r2)清 0秒钟(R0)加 1秒钟(R0)清 0,分钟(R1)加 1设置(R3)下次 20 次计数 值分钟(R1)清 0,小时(R2)加

5、1(R3)20 次计数值 减 1保护现场中断入口(R3)计数值为0秒钟(R0)值=#3CH分钟(R1)值=#3ch小时(R2)值=#18H中断返回广东机电职业技术学院计算机控制技术实训报告0调节分钟中断子程序 调节小时中断子程序源程序源程序(一)(一)定时程序定时程序1 秒定时(模式秒定时(模式 1) ORG 0000H SJMP START ORG 000BH SJMP INTI ORG 0030H START:MOV TMOD,#01HSETB TR0SETB EASETB ET0MOV R6,#10MOV TH0,#15HMOV TL0,#0A0HMOV R6,#0E8HMOV R7,#

6、03HSJMP $INTI:MOV TH0,#15HMOV TL0,#0A0HDJNZ R6,EXITDJNZ R7,EXITMOV R6,#0E8HMOV R7,#03H保护现场(R1)+1R1(R1)=#3CH清零(R1):MOV R1,#00H恢复现场保护现场(R2)+1R2中断入口 0003H中断返回中断入口 0013H(R2)=#18H清零(R2):MOV R2,#00H恢复现场中断返回广东机电职业技术学院计算机控制技术实训报告1CPL P1.0EXIT:RETIEND (二)(二)6 6 位位 LEDLED 显示程序显示程序ORG 0000HLJMP LOOP4ORG 0030HL

7、OOP4:MOV SP,#60HMOV R5,#6MOV R1,#30HMOV R4,#1LOOP2:MOV A,R4MOV R1,AINC R1INC R4DJNZ R5,LOOP2LOOP1:MOV DPTR,#TABMOV R0,#30HMOV R2,#6HMOV R3,#0FEHLOOP:MOV P2,R3MOV A,R0MOVC A,A+DPTRMOV P0,AACALL DEINC R0MOV A,R3RL AMOV R3,ADJNZ R2,LOOP广东机电职业技术学院计算机控制技术实训报告2SJMP LOOP1DE:MOV R7,#0FFHDE12:MOV R6,#0DJNZ R

8、6,DE12DE1:DJNZ R7,DE1RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HEND(三)时钟程序(三)时钟程序ORG 0000HLJMP STARTORG 000BHLJMP NETIORG 0030HSTART:MOV SP,#60HMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SETB TR0MOV R6,#20MOV DPTR,#TABLOOP2:MOV R0,#30HMOV R2,#6HMOV R3,#0FE

9、HLOOP1:MOV P2,R3MOV A,R0MOVC A,A+DPTR广东机电职业技术学院计算机控制技术实训报告3MOV P0,AACALL DELAYINC R0MOV A,R3RL AMOV R3,ADJNZ R2,LOOP1SJMP LOOP2NETI:MOV TH0,#3CHMOV TL0,#0B0HDJNZ R6,EXTI1MOV R6,#20INC 30HD0:MOV A,30HCJNE A,#10,EXTI1MOV 30H,#0MOV A,31HINC AMOV 31H,ACJNE A,#6,EXTI1D2:MOV 31H,#0MOV A,32HINC AMOV 32H,AC

10、JNE A,#10,EXTI1D3:MOV 32H,#0MOV A,33HINC AMOV 33H,A广东机电职业技术学院计算机控制技术实训报告4CJNE A,#6,EXTI1MOV 33H,#0MOV A,34HINC AMOV 34H,AEXTI1:RETIDELAY:MOV R7,#0DE1:DJNZ R7,DE1RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HEND四、实训总结四、实训总结这次单片机的实训有三任务:第一个是一分钟定时器,由 P1 口的一个二极管的闪烁作标示。第二个是

11、显示六个七段数码管,用动态扫描的方式实现。第三个是设定一计数器。这三个任务的前二个是第三个任务的基础。在实训时用 WAVE6000 软件来编程,用 ISIS 7 Professional 来进行彷真。第一个任务我之前是用软件的多个环多实现,但老师说这样是不精准的,因为它们在计算时会有误差,计算出来的时间会比实际要长。为了精确,最后用了中断进行定时。中断的定时思路是首先将定时器各种前奏工作如开中断,开定时器,设定计器的初始值等,做好这些后就用一个原地踏步指令,等待中断的到来。如一分钟到,那么就去处理中断子程,处理中断子程序时要判断是否到一分钟,每到一分钟就将 P1 口的二极管取一次反,来实现标示

12、。第二任务是六个七段码的显示,这个程序的设计思路是位码与段码的同步循环控制。我是用一小循环程序实现将 123456 六个数分别送到数据寄存器的 30H 至 35H 单元内,作为要显示的数。然后就是第一位的段码与位码设设定,每一循环一次就显示一位,当循环一次结束后就用循环程序调整下一次要显示的位码与段码,一定要注意位码与段码是严格一一对应的。这六个七段数码管是循环显示的,当它们循环的频率足够大时人的眼睛就会看到同时显示的效果。第三个任务是记时器的设计,要求是每一秒钟计数一次,满进位就进位,并且用六个七段码来显示记时的时间,从右到左看到去就要看到秒,分,时,每个单位都占二个七段数码管。广东机电职业

13、技术学院计算机控制技术实训报告5这个程序我总的思路是用定时中断来实现,分三个大的模块来设计。第一个模块是定时一秒中断,第二个模块是六个七段的循环显示,第三个模块是数据的处理。总的功能是结合前二个任务来设计的。我的最终确定下来的程序顺序是可分为五个部分,第一个是部分是定位与设定推栈区,第二个部分是开启定时器与定时器中断,并且设定定时器的初始值,第三个部分是六个七段数码管的循环显示,这部分很相似于第二个任务的那原地踏步指令,第四个部分是中断子程序的设计,是这个任务最重要的也是最复杂的部分。它首先是把定时器复位到所设定的初始值,然后再判断是否到了一秒的,没到则继续等待,到了则进行数据的处理,数据处理

14、包括秒位上加一,然后再用判断是否需要进位。第五部分则是简单的延时小程序,是在每次显示每位数码管是要调用的小程序,目的是让数管显示稳定后才到下一个数码管显示。如果将这五个部分紧密的组织起来,就可完成第三个任务了。在组织这五个部分的时候需要很注意几个事项:首先必须明确每个标号的用途,要尽可能的减少标号的使用。第二是要是明确 R0 至 R7 每个寄存器的用途,并且谨慎 R0 和 R1 是可寄存器间接寻址,需要使用间接寻址时才好使用。第三是每个小功能不能有冲突,一但有冲突则容易整个程序的功能都无法实现。第四是输入时一定要细心,不能输错任何一个数字与字母,还有就是在使用十进制与十六进制数时不能搞混。第五一定要有开辟推栈区的习惯。刚开始,程序的设计与调试都是艰难的,一定要相对树立信心,不断的检查不断的调试不断的思考不断的修改,就有很大可能完成任务。教师签名:年 月 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号