




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告实验名称:电子时钟学院:电子信息工程学院班级:通信1103班学号:11211054姓名:陈胜彪指导老师:付文秀2013 12 15设计题目电子时钟一、 实验目的 1掌握单片机编程的流程,Keil软件的使用方法,以及程序的调试方式。2了解LED动态显示原理及动态显示程序设计方法。3学习8051定时器时间计时处理、按键扫描的设计方法。二、设计任务和要求 利用实验平台上4个LED数码管, 设计带有闹铃功能的数字时钟,要求:1 在4位数码管上显示当前时间。显示格式“时时分分”。2 由LED闪动做秒显示。3 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。 4 当闹玲时间到由P1.7控制蜂鸣器发出声响,并可通过按键使它停止。三、设计原理与分析步骤数码管的显示:在ZKS-03实验仪上共有4位共阳LED数码管,其标号分别为LED1LED4。为了节省MCU的I/O口,采用串行接口方式,它仅占用系统2个I/O口,一个用作数据线SDA,另一个用作时钟信号线CLK。4位共阳LED数码管与P87C52X2的连接如下图所示,其中,KD_Q0KD_Q7为LED显示器数据线即段码线,EBIT1EBIT4为LED显示器的位码扫描线,它们通过跳线选择器JP1与P1.3P1.6相连。由它们发送扫描信号,低电平有效,且任何时候仅有1位输出低电平。由于P1口的驱动能力有限,在此采用9012三极管来增加其驱动能力。由于采用共阳LED数码管,它的阴极分别通过限流电阻R20R27连接到控制端KD_Q0KD_Q7。这样控制8个发光二极管,就需要8个I/O口。但由于单片机的I/O口资源是有限的,因此常采用实验电路所示的串并转换电路来扩充系统资源。串并转换电路其实质是一个串入并出的移位寄存器,串行数据在同步移位脉冲CLK的作用下经串行数据线SDA把数据移位输出到KD_Q0KD_Q7端,这样仅需2根线就可以分别控制8个发光二极管的亮灭。LED动态显示的原理:数码管的动态显示利用视觉暂留作用,使人眼看到的是静态的显示,视觉暂留时间约为0.01秒,因而每次显示的时间间距要比较短。本实验选择的是每5毫秒显示一个比特。定时时间为t=(216 - EC78H)1us = 5000 * 1us = 5 ms(其中机器周期为1us)即延时5ms。T(213计数初值x)机器周期首先以串行方式由SDA口向LED显示器数据端口发送第一个8位数据,这时发送位码数据0BFH到P1口,此时由于P1.6位低电平而其他口都为高电平,因此只有LED1数码管显示该数码。这样就可以发送第二个数据,同时应使其对应的位码为低电平且保证其他位为高电平。依次类推,对各显示器进行扫描,显示器分时轮流工作。虽然每次只有一个显示器显示,但由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。它的优点是硬件电路简单,占用的I/O口较少,但其传送速度相对较慢。 由数码管显示原理,数码管上显示的数字对应一个八位的二进制数,09一共十个,把这些数存到程序存储器TABLE表中, DPTR作为指针,用R1R4分别存储实际的时和分的数字,寄存器存储的数字作为偏移量,这样就把实际的数字和数码管中显示的数字对应起来了。软件设计部分:1.闹铃设置:通过P3.2,P3.4和3.5分别控制闹铃,分和时的设置,与逻辑开关连接,低电平有效,当P3.2口变成低电平时,进入闹铃设置,当P3.2变成高电平时回到主程序。2.时间设定:通过P3.3,P3.4和3.5分别控制时间,分和时的设置,与逻辑开关连接,低电平有效,当P3.3口变成低电平时,进入时间设置,当P3.3口变成高电平时回到主程序。3.蜂鸣:用四个地址50H-53H存储闹铃时间的偏移量,判断当前的时间R1-R4与闹铃时间50H-53H是否完全一样,相同时驱动闹铃,实验板上的蜂鸣器是交流驱动的,因此当到达闹铃时刻时,给P1.7口几个脉冲,频率控制在人耳可以听到的范围内。I/O口的说明:1)P1口用来控制数码管的显示,其中未用到的P1.2作为秒脉冲输出口,P1.7控制蜂鸣器。2)P3口中的P3.2控制闹铃设定,与逻辑开关相连,低电平有效;3)P3.3控制时间设定,与逻辑开关相连,低电平有效;4)P3.4控制设定中的分钟的设定,与逻辑开关相连,低电平有效;5)P3.5控制设定中的小时的设定,与逻辑开关设定,低电平有效寄存器说明:R0作为秒计数寄存器;R1作为分的低位的偏移量存储的寄存器;R2作为分的高位的偏移量存储的寄存器;R3作为时的低位的偏移量存储的寄存器;R4作为时的高位的偏移量存储的寄存器。R5,R6,R7用来设定循环的次数;DPTR用来作为TABLE表地址的指针.硬件设计部分:数码管显示的电路实验仪上已连接好,我们只需通过跳线选择器JP1将单片机的P1口的控制线与数码管显示电路相连,即将JP1中的P10、P11、P13、P14、P15、P16接至A位;P1.7控制蜂鸣器并且连接至C位。P1.2口作为秒脉冲输出端,不接入跳线,将P1.2口连到LED数码管,P3.2,P3.3,P3.4,P.5都与逻辑开关相接。四、实验电路图五、实验程序延时子程序 DELAY: MOV TH1,#0ECH MOV TL1,#78H CLR TF1 SETB TR1 WAIT: JNB TF1,WAIT RETR0=60R0清零R1=9实验程序:ORG 4000HMAIN: CLR EA ;程序初始化 CLR PSW.3 ;选择寄存器组0 CLR PSW.4 ;PSW.4和PSW.3同时为零,则为寄存器0组 MOV TMOD,#10H ;定时器1,方式1,定时方式 MOV 50H,#00H ;闹铃初始时间 08:00 MOV 51H,#00H ;分别对应分的低、高位,时的低、高位 MOV 52H,#08H ;时的低位 MOV 53H,#00H ;时的高位 MOV R0,#00H ;设置时间初值 07:59 MOV R1,#09H ;分别对应分的低、高位,时的低、高位 MOV R2,#05H ;分的高位 MOV R3,#07H ;时的低位 MOV R4,#00H ;时的高位 CLR TF1 ;清标志START: ACALL ALARM ;判断是否闹铃 MOV R5,#02H ;两层外循环,每层循环500msSTART1: MOV R7,#20 ;20次内循环,20*25ms=500msSTART2: ACALL DELAY ;调用延时 5ms ACALL DISPLAY ;调用延时 20ms M0: JB P3.2,M1 ;是否设闹铃,查询3.2口,为一转到M1,为0设置闹铃 ACALL SETALARM ;调用设置闹铃子程序 M1: JB P3.3,M2 ;是否设时间 ACALL SETCLOCK ;调用设置时间子程序 M2: DJNZ R7,START2 ;R7=20减1循环 CPL P1.2 ;每500ms给P1.2一个正负交替的电平信号 DJNZ R5,START1 ;R5为2,循环两次后为1s INC R0 ;R0加1 CJNE R0,#60,START ;判断R0为60,跳转 MOV R0,#00H ;R0清零 M3: CJNE R1,#09H,L1 ;时间逻辑,如果为23:59分,则全部清零 CJNE R2,#05H,L2 ;分的十位为5 CJNE R4,#02H,L3 ;时的十位为5 CJNE R3,#03H,L4 ;时的个位为9 MOV R1,#00H ;将分的个位清零 MOV R2,#00H ;将分的十位清零 MOV R3,#00H ;将时的个位清零 MOV R4,#00H ;将时的十位清零 AJMP START ;绝对转移到START L1: INC R1 ;上面的几个分支,分的个位加一 AJMP START ;绝对转移到START L2: INC R2 ;分的十位加一 MOV R1,#00H ;分的个位置0 AJMP START ;绝对转移到START L3: CJNE R3,#09H,L4 ;时的个位为9跳转 INC R4 ;时的十位加一 MOV R3,#00H ;将时的个位清零 MOV R2,#00H ;将分的十位清零 MOV R1,#00H ;将分的个位清零 AJMP START ;绝对转移到START L4: INC R3 ;时的个位加一 MOV R2,#00H ;将分的十位清零 MOV R1,#00H ;将分的个位清零 AJMP START ;绝对转移到STARTDISPLAY: MOV DPTR,#TABLE ;显示子程序,把TABLE的首地址送给DPTR MOV A,R1 ;将偏移量给A MOVC A,A+DPTR ;将对应地址中的量给A ACALL BIT1 ;显示第一个字节,也就是分的低位 MOV A,R2 ;显示第二个字节,分的高位 MOVC A,A+DPTR ;将对应地址中的量给A ACALL BIT2 ;显示第二个字节,分的高位 MOV A,R3 ;显示第三个字节,时的低位 MOVC A,A+DPTR ;将对应地址中的量给A ACALL BIT3 ;显示第三个字节,时的低位 MOV A,R4 ;显示第四个字节,时的高位 MOVC A,A+DPTR ;将对应地址中的量给A ACALL BIT4 ;显示第四个字节,时的高位 RET BIT1: MOV R6,#08H ;显示第一个字节(分的低位)的子程序 LOOP1: RLC A ;A带进位左移,移出的最高位存到C中 MOV P1.0,C ;把C的值给P1.0口 CLR P1.1 ;在P1.1产生一个上升沿,将P1.0的值输入 SETB P1.1 ;置位 DJNZ R6,LOOP1 ;8次循环,输入第一个字节8段的值 CLR P1.3 ;给P1.3一个低电平,点亮对应的数码管 ACALL DELAY ;延时 5ms SETB P1.3 ;置位 RET BIT2: MOV R6,#08H ;显示第二个字节(分的高位)的子程序 LOOP2: RLC A ;A带进位左移,移出的最高位存到C中 MOV P1.0,C ;把C的值给P1.0口 CLR P1.1 ;在P1.1产生一个上升沿,将P1.0的值输入 SETB P1.1 ;置位 DJNZ R6,LOOP2 ;8次循环,输入第一个字节8段的值 CLR P1.4 ;给P1.4一个低电平,点亮对应的数码管 ACALL DELAY ;延时 5ms SETB P1.4 ;置位 RET BIT3: MOV R6,#08H ;显示第三个字节(时的低位)的子程序 LOOP3: RLC A ;A带进位左移,移出的最高位存到C中 MOV P1.0,C ;把C的值给P1.0口 CLR P1.1 ;在P1.1产生一个上升沿,将P1.0的值输入 SETB P1.1 ;置位 DJNZ R6,LOOP3 ;8次循环,输入第一个字节8段的值 CLR P1.5 ;给P1.5一个低电平,点亮对应的数码管 ACALL DELAY ;延时 5ms SETB P1.5 ;置位 RET BIT4: MOV R6,#08H ;显示第四个字节(时的高位)的子程序 LOOP4: RLC A ;A带进位左移,移出的最高位存到C中 MOV P1.0,C ;把C的值给P1.0口 CLR P1.1 ;在P1.1产生一个上升沿,将P1.0的值输入 SETB P1.1 ;置位 DJNZ R6,LOOP4 ;8次循环,输入第一个字节8段的值 CLR P1.6 ;给P1.6一个低电平,点亮对应的数码管 ACALL DELAY ;延时 5ms SETB P1.6 ;置位 RET ALARM: MOV A,R1 ;闹铃判断子程序,判断闹铃是否与时间各位相等 CJNE A,50H,RETURN ;分别判断,若不等则跳出 MOV A,R2 ;把分的十位给A CJNE A,51H,RETURN ;判断分的十位是否相等,若不等则跳出 MOV A,R3 ;把时的个位给A CJNE A,52H,RETURN ;判断时的个位是否相等,若不等则跳出 MOV A,R4 ;把时的时位给A CJNE A,53H,RETURN ;判断时的十位是否相等,若不等则跳出 MOV R6,#03H ;预置循环次数三次 MING: ;若各位都相等,则驱动闹铃,激活蜂鸣器 SETB P1.7 ;P1.7控制蜂鸣器,置位 ACALL DELAY ;延时 5ms CLR P1.7 ;P1.7清零 ACALL DELAY ;再延时5ms,使频率为100赫兹,可调 DJNZ R6,MING ;循环三次 RETURN:RET TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H RET ;将数码管中显示的09分别对应的数存入TABLE开始的一段程序存储器中SETALARM:MOV 40H,R1 ;闹铃设定子程序,保存当前时间 MOV 41H,R2 ;把分的十位保存在41H MOV 42H,R3 ;把时的个位保存在42H MOV 43H,R4 ;把时的十位保存在43H MOV R1,50H ;将初始设定的闹铃时间赋给偏移量R1R4 MOV R2,51H ;将分的十位的闹铃时间给偏移量R1 MOV R3,52H ;将时的个位的闹铃时间给偏移量R2 MOV R4,53H ;将时的十位的闹铃时间给偏移量R3 ACALL DISPLAY ;显示闹铃时间 KS: JB P3.4,LK0 ;闹铃设置逻辑,当P3.4口为低电平时,设定分(LK0为DISPLAY子程序) CJNE R1,#09H,LL0 ;当分的个位不为9时,跳转到子程序LL0 MOV R1,#00H ;清零分的个位 CJNE R2,#05H,LL1 ;当分的十位不为5时,跳转到子程序LL1 MOV R2,#00H ;当为59分时,清零 AJMP LK0 ;绝对转移到LK0 LL1: INC R2 ;分的十位加一 AJMP LK0 ;绝对转移到LK0 LL0: INC R1 ;分的个位加一 LK0: ACALL DISPLAY ;设定一次显示一次时间 JB P3.5,LK1 ;P3.5口为低电平时,设定时(LK1为子程序) CJNE R4,#02H,KK0 ;当时的十位不为2时,跳转到子程序KK0 CJNE R3,#03H,KK1 ;当时的个位不为3时,跳转到子程序KK1 MOV R3,#00H ;当时为23时,清零 MOV R4,#00H ;清零时的十位 AJMP LK1 ;绝对转移到LK1 KK1: INC R3 ;时的个位加一 AJMP LK1 ;绝对转移到LK1 KK0: CJNE R3,#09H,KK1 ;当时的个位不为9时,跳转到子程序KK1 MOV R3,#00H ;将时的个位清零 INC R4 ;时的十位加一 AJMP LK1 ;绝对转移到LK1 LK1: ACALL DISPLAY ;设定结束,显示设定时间 JNB P3.2,KS ;当控制闹铃设置的P3.2口变为高电平时,退出设定 MOV 50H,R1 ;保存闹铃时间 MOV 51H,R2 ;将分的十位保存到51H MOV 52H,R3 ;将时的个位保存到52H MOV 53H,R4 ;将时的十位保存到53H MOV R1,40H ;恢复时间 MOV R2,41H ;将分的十位还回给R2 MOV R3,42H ;将时的个位还回给R3 MOV R4,43H ;将时的十位还回给R4 ACALL DISPLAY ;显示时间 RET SETCLOCK:JB P3.4,MN0 ;用P3.4口设定分,原理同闹铃设定,低电平有效 CJNE R1,#09H,MM0 ;当分的个位不为9时,跳转到子程序MM0 MOV R1,#00H ;将分的个位清零 CJNE R2,#05H,MM1 ;当分的十位不为5时,跳转到子程序MM1 MOV R2,#00H ;将分的十位清零 AJMP MN0 ;绝对转移到MN0 MM1: INC R2 ;分的十位加一 AJMP MN0 ;绝对转移到MN0 MM0: INC R1 ;分的个位加一 MN0: ACALL DISPLAY ;调用显示子程序 JB P3.5,MN1 ;用P3.5口设定时,低电平有效 CJNE R4,#02H,NN0 ;当时的十位不为2时,跳转到子程序MN0 CJNE R3,#03H,NN1 ;当时的个位不为3时,跳转到子程序MN1 MOV R3,#00H ;将时的个位清零 MOV R4,#00H ;将时的十位清零 AJMP MN1 ;绝对转移到MN1 NN1: INC R3 ;时的个位加一 AJMP MN1 ;绝对转移到MN1 NN0: CJNE R3,#09H,NN1 ;当时的个位不为9时,跳转到子程序MN1 MOV R3,#00H ;将时的个位清零 INC R4 ;时的十位加一 AJMP MN1 ;绝对转移到MN1 MN1: ACALL DISPLAY ;调用显示子程序 JNB P3.3,SETCLOCK ;若P3.3口仍处于低电平,继续处于时间设定状态 RET DELAY: MOV TH1,#0ECH ;5ms延时子程序 MOV TL1,#78H ;赋初值60536,实现5000次计数,历时5ms CLR TF1 SETB TR1 WAIT: JNB TF1,WAIT RET END六、实验连接图七、实验调试八、实验程序写入九、实验误差分析由于实验程序中过多地使用软件定时,使用查询方式定时,而不是采用中断方式,所以在实验程序执行过程中,语句执行占用了一些时间,所以导致时间计算上存在误差,在数码显示时也存在一些不理想的因素。以下为各程序段的误差分析。1, 程序开始就判断闹铃时间是否到,子程序中判断时间大约为3us到12us,若响铃,就还会有每秒30ms的延时,即30ms加12us.2, 判断P3.2和P3.3口需要4us,但如果进入设置时间,则时间计时停止,不计入误差。而每个1s里面的两次循环里有3us*2=6us的误差。1秒结束到判断秒数是否为60中还有3us,所以共13us.3, 显示子程序延时,因为有四个字节的显示,除去4个5ms的延迟,误差粗略估计为:2us + 6us * 4 = 26us.4, 如果秒数等于60,则进入时间逻辑,根据各位数字的不同情况,产生5us33us的误差。综上所述: 若不响闹铃且秒不到60,误差
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 扇形课件教学课件
- 慢性肺心病课件
- 情绪的力量课件
- 色彩绘画考试试题及答案
- 混凝土安全考试卷及答案
- 海底捞内部考试题及答案
- 工人安全考试试题及答案
- 母婴保健考试试题题库及答案
- 2025年中国香文化智能应用师认证考试指南及预测题
- 2025年中职专业课教育教学理论试题预测
- 2025宁波宁海县国有企业招聘52人考试参考试题及答案解析
- 2025年本科院校团委笔试备考手册
- GB/T 45940-2025网络安全技术网络安全运维实施指南
- 敦煌课件讲解稿子
- 教育与宗教分离课件
- 2025年环境工程师初级职称考试试题及答案解析
- 眼科特检基础知识培训课件
- 高考历史一轮复习资料(人教版)专题二古代中国的农耕经济专题质量检测(A卷)
- 2025 年小升初沈阳市初一新生分班考试数学试卷(带答案解析)-(人教版)
- 统编版高中思想政治必修1第一课社会主义从空想到科学、从理论到实践的发展1.2科学社会主义的理论与实践 教学课件
- 摄影剪辑基本知识培训课件
评论
0/150
提交评论