新颖60秒LED旋转电子钟

上传人:沈*** 文档编号:142090206 上传时间:2022-08-24 格式:DOC 页数:16 大小:626KB
收藏 版权申诉 举报 下载
新颖60秒LED旋转电子钟_第1页
第1页 / 共16页
新颖60秒LED旋转电子钟_第2页
第2页 / 共16页
新颖60秒LED旋转电子钟_第3页
第3页 / 共16页
资源描述:

《新颖60秒LED旋转电子钟》由会员分享,可在线阅读,更多相关《新颖60秒LED旋转电子钟(16页珍藏版)》请在装配图网上搜索。

1、数理与信息工程学院单片机原理及应用短学期课程基于单片机的多功能数字钟 数理与信息工程学院单片机原理及应用课程设计 题 目: 基于单片机的多功能数字钟 专 业: 计算机科学与技术131班 姓 名: 连王伟 学 号: 13191131 指导老师: 余水宝 成 绩: ( 2014.7 )基于单片机的多功能数字钟 数理与信息工程学院 计算机科学与技术 连王伟指导教师:余水宝 第1节 引 言 1.1 电子钟概述 目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。要知道当前的时间,必须先开灯,故较为不便。现在市场上也出现了一些电子钟,它以六只LED数码管来显示时分秒,违背了人们指针式

2、的传统习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。针对以上存在的问题,我们设计了一款采用LED显示器件显示的电子时钟,解决了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。1.2 设计任务本次设计通过对一个实现定时、双时钟显示、闹钟、温度等功能的时间系统的设计,其中结合了数据转换显示、数码

3、管显示、动态扫描、单片机定时中断等技术。系统由AT89C2051、LED数码管、按键、三极管、两片CD4017BE、CD4069BE、DS18B20、电阻等组成。能实现时钟时、分、秒的显示。也具有温度显示、时间设置、闹铃开和关设置、制式切换。文章后附有电路图、程序清单。1.3 系统主要功能 电子钟的外观如图1所示。周边60只发光管顺时旋转来显示秒,中间四只LED数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。其主要功能有: 整点报时; 四只LED数码管显示当前时分; 每隔一秒钟周边的60只LED发光管旋转一格; 当发生停电事件时,由后备电池供电,系统进入低功耗状态,所 有显示部件停

4、止显示,这样即延长了电池的寿命,同时又保证CPU继续计数,不至于因停电而时钟停止运行。 当恢复供电后,系统自动恢复工作状态,不影响计时。图一第2节 电子钟硬件设计2.1 系统的硬件构成及功能 电子钟的原理框图如图2所示。它由以下几个部件组成:单片机89C2051、电源、时分显示部件、60秒旋转译码驱动电路。 时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。时分显示模块、60秒旋转译码驱动电路以及显示驱动都通过89C2051的I/O口控制。 电源:电源部分有二部分组成。一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供

5、电,以保证停电时正常计时。正常情况下电池是不提供电能的,以保证电池的寿命。具体电路参见“新颖的60秒旋转电子钟参考电路原理图”。 2.2 AT89C2051单片机及其引脚说明 AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,

6、提高了系统的性价比。AT89C2051是一个有20个引脚的芯片,引脚配置如图3所示。与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。AT89C2051芯片的20个引脚功能为: 图3.4 AT89C2051引脚配置VCC 电源电压;GND 接地;RST 复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”;XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2 来自反向振荡放大器的输出。 P1口 8位双向I/O口。引脚P1.2P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,

7、它们将输出电流,这是因内部上拉的缘故。P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA的灌电流,并能直接驱动LED显示器;P1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1口也可接收编码数据。P3口引脚P3.0P3.5与P3.7为7个带内部上拉的双向I/0引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用作输入。P3口也可用作特殊功能口,其功能见表1。P3口同时也可为闪速存储器编程和编程校验接收控

8、制信号。2.3 60秒旋转译码驱动原理 按常规传统设计,需60进制译码驱动电路才能实现60秒旋转译码驱动,若用六片十进制计数译码器构成六十进制计数译码电路,则电路连线多(需要120根连图5 CD4017时序图 图4 CD4017引脚图线),硬件电路庞大,开销大。为此,我们巧妙地采用了两片CD4017进行六十进制计数译码,实现60秒旋转译码驱动。既减少了电路的复杂程度又可降低了成本。图4为CD4017功能引脚图,图5为其时序图。CD4017集成电路是十进制计数/时序译码器,共有10个译码输出Q0Q9;每个译码输出通常处于低电平,且在时钟脉冲由低到高的上升沿输出高电平;每个高电平输出维持1个时钟周

9、期;每输入10个时钟脉冲,输出一个进位脉冲,因此进位输出信号可作为下一级计数器的时钟信号。在清零输入端(R)加高电平或正脉冲时,只有输出端Q0为高电平,其余各输出端均为低电平“0”。 为实现对发光二极管的驱动,将每一个译码输出端口接一只发光二极管,并将二图7 优化后控制LED原理图图6 CD4017控制LED原理图极管串联限流电阻后接地。当译码端口Q0Q9中任一端口为高电平,则对应的发光二极管点亮,如图6所示。 仔细考查CD4017的功能,可发现其10个输出的高电平是相互排斥的,即任一时刻只有一只发光二极管点亮,因此可将图6电路进一步简化为如图7所示,从而简化电路设计。 在本电子钟设计中,每秒

10、点亮一个发光二极管,循环点亮一周共需60个发光二极管,若用上述的6片CD4017实现驱动,显然电路复杂。为此我们选用两片CD4017和一片6反相器,采用“纵横双译码”技术,巧妙地实现60秒旋转译码驱动,其中一片接成10进制,一片接成6进制,实现610=60的功能,具体连接方法如图8所示。图8 发光二极管“纵横双译码”循环点亮LED原理图将周期为1秒的输入脉冲作为其中一片CD4017的时钟脉冲,而此片的级联进位输出端(QC)作为另一片的时钟输入,并将Q6与复位端相连。在两片译码输出端交叉点上接入发光二极管,构成610矩阵。根据CD4017时序特点,在初始状态,作为高位(纵)的CD4017译码器输

11、出端口Q0处于高平,经反相器反相后为低电平。当作为低位(横)的CD4017译码器输出端口Q0Q9依次输出高电平后,则对应的二极管LD1LD10依次点亮;此后由于QC端的进位,高位CD4017译码输出端口Q1输出高电平,反相后输出低电平,当低位的CD4017译码输出端口Q0Q9依次输出高电平后,二极管LD11LD20依次点亮。如此往复,直至高位Q6向复位端输入高电平,CD4017复位,60秒循环点亮重新开始。2.4 时分显示部件 由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图8所示。 二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发

12、光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻 LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7

13、段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态。系统的时分显示部件由4只7段共阳LED数码管构成,前两只用于时的显示,后两只用于分的显示。值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只LED数码管

14、倒置摆放,这样就很巧妙地形成了两个很自然的闪烁点。与此同时,为了能使两点显示能够形象的表示时钟“秒”的变化,设计时,将两个点由P1.7单独控制,每隔一秒使P1.7发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒 第三节 实验核心代码DP BIT 24H.3 ;定义半秒闪烁位单元SECOND EQU 31H ; 定义计数单元MBUF EQU 32H ; 定义分计数单元HBUF EQU 33H ; 定义时计数单元MBUF0 EQU 34H ; 定义分个位计数存储单元MBUF1 EQU 35H ; 定义分十位计数存储单元HBUF0 EQU 36H ; 定义时个位计数存储单元HBUF1 EQ

15、U 37H ; 定义时十位计数存储单元DMBF0 EQU 40H ; 定义分个位显示缓冲单元DMBF1 EQU 41H ; 定义分十位显示缓冲单元DHBF0 EQU 42H ; 定义时个位显示缓冲单元DHBF1 EQU 43H ; 定义时十位显示缓冲单元AMBF10 EQU 44H ; 定义定闹1分个位缓冲单元AMBF11 EQU 45H ; 定义定闹1分十位缓冲单元AHBF10 EQU 46H ; 定义定闹1时个位缓冲单元AHBF11 EQU 47H ; 定义定闹1时十位缓冲单元AMBF1 EQU 48H ; 定义定闹1分计数单元AHBF1 EQU 49H ; 定义定闹1时计数单元AMBF2

16、0 EQU 4AH ; 定义定闹2分个位缓冲单元AMBF21 EQU 4BH ; 定义定闹2分十位缓冲单元AHBF20 EQU 4CH ; 定义定闹2时个位缓冲单元AHBF21 EQU 4DH ; 定义定闹2时十位缓冲单元AMBF2 EQU 4EH ; 定义定闹2分计数单元AHBF2 EQU 4FH ; 定义定闹2时计数单元AA EQU 50HLED BIT P1.7 ; LED脉冲ORG 0000HLJMP MAINORG 000BHMOV TL0, #0DCH ; 125毫秒定时器初值低8位MOV TH0, #0BH ; 125毫秒定时器初值高8位PUSH ACC ; 系统主定时,每125

17、毫秒中断1次PUSH PSWDEC R4 ; 软件计数器减1INT01: DJNZ R2, INT02 ; 1秒计数MOV R2, #08HCPL DP ; 小数点半秒闪烁ACALL BEEP ; 1秒到, 发“笛嗒”声和LED旋转脉冲DJNZ SECOND, OUTT0MOV SECOND, #10H ; 1分到ACALL ADD1 ; 分十进制加1子程序INT02: MOV A, R2CJNE A, #08H, OUTT0 ; 判断是否半秒CPL DP ; 是半秒,秒闪动一次OUTT0: POP PSWPOP ACCRETIMAIN: MOV SP, #6FHMOV R2, #08H ;

18、定时器1秒中断次数MOV R4, #08H ; 快校时定时计数,8X125ms后快校时MOV SECOND, #3CH ; 秒计数单元MOV MBUF0, #0 ; 分个位计数存储单元0 初值MOV MBUF1, #0 ; 分十位计数存储单元1 初值MOV HBUF0, #4 ; 时个位计数存储单元0 初值MOV HBUF1, #1 ; 时十位计数存储单元1 初值MOV MBUF, #00H ; 分计数存储单元 初值MOV HBUF, #14H ; 时计数存储单元 初值MOV AMBF10, #1 ; 定闹1分个位计数存储单元0 初值MOV AMBF11, #0 ; 定闹1分十位计数存储单元1

19、 初值MOV AHBF10, #4 ; 定闹1时个位计数存储单元0 初值MOV AHBF11, #1 ; 定闹1时十位计数存储单元1 初值MOV AMBF1, #01H ; 定闹1分计数存储单元 初值MOV AHBF1, #14H ; 定闹1时计数存储单元 初值MOV AMBF20, #3 ; 定闹2分个位计数存储单元0 初值MOV AMBF21, #5 ; 定闹2分十位计数存储单元1 初值MOV AHBF20, #0 ; 定闹2时个位计数存储单元0 初值MOV AHBF21, #2 ; 定闹2时十位计数存储单元1 初值MOV AMBF2, #53H ; 定闹2分计数存储单元 初值MOV AH

20、BF2, #20H ; 定闹2时计数存储单元 初值MOV IE, #10000010B ; 允许定时器0中断MOV TMOD, #00100001B ; T0方式1MOV TL0, #0DCH ; 125毫秒定时器初值低8位MOV TH0, #0BH ; 125毫秒定时器初值高8位MOV IP, #00000010B ; 定时器0高优先级SETB TR0 ; 启动T0计时LOOP: MOV R4, #08 ; 喂狗MOV A, HBUF ; 取时整点SUBB A, #7JC LOOP1 ; 判断是否早7时前MOV A, HBUF ; 早7时前-晚22时后为夜间SUBB A, #22HJNC L

21、OOP1 ; 判断是否晚22时后ACALL DISPAJMP ALARM1LOOP1: ACALL NDISP ; 是夜间,调用夜间显示子程序ALARM1: MOV A, AHBF1 ; 判定闹1CJNE A, HBUF, ALARM2 ; 判定闹1的小时是否与系统时间相等?MOV A, AMBF1CJNE A, MBUF, ALARM2 ; 判定闹1的分是否与系统时间相等?MOV C, DPMOV P3.3, C ; 蜂鸣器响半秒,停半秒MOV A, SECOND ; 定闹1分钟JNZ LOOPALARM2: MOV A, AHBF2CJNE A, HBUF, LOOP2 ; 判定闹2的时是

22、否与系统时间相等?MOV A, AMBF2CJNE A, MBUF, LOOP2 ; 判定闹2的分是否与系统时间相等?MOV C, DPMOV C, DPMOV P3.3, C ; 蜂鸣器响半秒,停半秒MOV A, SECOND ; 定闹1分钟JNZ LOOPLOOP2: JB P3.2, LOOP7 ; 判断校时键是否按下?LOOP3: ACALL DISP ; 用于长时间按键时的显示MOV A, R4 ; 有校时键按下CJNE A, #00H, LOOP6 ; 校时键按下有1秒吗?LOOP4: ACALL ADD1 ; 校时键按下有1秒,则快调MOV R1, #40LOOP5: ACALL

23、 DISPDJNZ R1, LOOP5JNB P3.2, LOOP4 ; 校时键未放开,继续快调AJMP LOOP7 ;LOOP6: JNB P3.2, LOOP3 ; 校时键按下不到1秒,返回再判ACALL ADD1 ; 单次慢调MOV TL0, #0DCH ; 校时结束,秒初值置0MOV TH0, #0BHMOV SECOND, #00LOOP7: JB P3.3, LOOPALAM11: ACALL ADSP1 ; 用于设置定闹1时,长时间按键的显示MOV A, R4 ; 有定闹1键按下CJNE A, #00H, ALAM16 ; 定闹1键按下有1秒吗?ALAM12: ACALL AAD

24、1 ; 定闹1键按下有1秒,则快调MOV R1, #50ALAM13: ACALL ADSP1DJNZ R1, ALAM13JNB P3.3, ALAM12MOV R1, #10 ; 定闹1快调结束,闪烁显示定闹时间8秒ALAM14: MOV R3, #40ALAM15: ACALL ADSP1DJNZ R3, ALAM15ACALL D400MSDJNZ R1, ALAM14AJMP AGAINALAM16: NOPJNB P3.3, ALAM11 ; 定闹1键按下不到1秒,返回再判ALAM17: ACALL AAD1 ; 定闹1单次慢调MOV R1, #10 ; 定闹1慢调结束,闪烁显示定

25、闹时间12秒ALAM18: MOV R3, #40ALAM19: ACALL ADSP1DJNZ R3, ALAM19ACALL D400MSDJNZ R1, ALAM18AGAIN: JB P3.3, RETUN ; 返回主程序MOV R4, #08ALAM21: ACALL ADSP2 ; 用于设置定闹2时,长时间按键的显示MOV A, R4 ; 有定闹2键按下CJNE A, #00H, ALAM26 ; 定闹2键按下有1秒吗?ALAM22: ACALL AAD2 ; 定闹2键按下有1秒,则快调MOV R1, #50ALAM23: ACALL ADSP2DJNZ R1, ALAM23JNB

26、 P3.3, ALAM22MOV R1, #10 ; 定闹2快调结束,闪烁显示定闹时间9秒ALAM24: MOV R3, #40ALAM25: DJNZ R3, ALAM25ACALL D400MSDJNZ R1, ALAM24AJMP LOOPALAM26: JNB P3.3, ALAM21 ; 定闹2键按下不到1秒,返回再判ALAM27: ACALL AAD2 ; 定闹2单次慢调MOV R1, #10 ; 定闹2慢调结束,显示定闹时间9秒ALAM28: MOV R3, #40ALAM29: ACALL ADSP2DJNZ R3, ALAM29ACALL D400MSDJNZ R1, ALA

27、M28RETUN: AJMP LOOP ; 返回主程序ADD1: MOV A, MBUF ; 分加1子程序,ADD A, #01 ; 分十进制加1DA AMOV MBUF, AANL A, #0FHMOV MBUF0, AMOV A, MBUFSWAP AANL A, #0FHMOV MBUF1, AMOV A, MBUFCJNE A, #60H, ADDOUTMOV MBUF0, #0MOV MBUF1, #0MOV MBUF, #0MOV A, HBUFADD A, #01 ; 时十进制加1DA AMOV HBUF, AANL A, #0FHMOV HBUF0, AMOV A, HBUFS

28、WAP AANL A, #0FHMOV HBUF1, AMOV A, HBUFCJNE A, #24H, ADDOUTMOV HBUF0, #0MOV HBUF1, #0MOV HBUF, #0ADDOUT:MOV A,MBUF0CJNE A,#01H,T1MOV AA,MBUF1MOV MBUF1,#11T1: CJNE A,#02H,T2MOV MBUF1,AAMOV MBUF0,#11T2: RETAAD1: MOV A, AMBF1 ; 定闹1,分加1子程序,ADD A, #01DA AMOV AMBF1, AANL A, #0FHMOV AMBF10, AMOV A, AMBF1SW

29、AP AANL A, #0FHMOV AMBF11, AMOV A, AMBF1CJNE A, #60H, AAD1OTMOV AMBF10, #0MOV AMBF11, #0MOV AMBF1, #0MOV A, AHBF1ADD A, #01DA AMOV AHBF1, AANL A, #0FHMOV AHBF10, AMOV A, AHBF1SWAP AANL A, #0FHMOV AHBF11, AMOV A , AHBF1CJNE A, #24H, AAD1OTMOV AHBF10, #0MOV AHBF11, #0MOV AHBF1, #0AAD1OT: RETAAD2: MOV

30、A, AMBF2 ; 定闹2分加1子程序,ADD A, #01DA AMOV AMBF2, AANL A, #0FHMOV AMBF20, AMOV A, AMBF2SWAP AANL A, #0FHMOV AMBF21, AMOV A, AMBF2CJNE A, 60H, AAD2OTMOV AMBF20, #0MOV AMBF21, #0MOV AMBF2, #0MOV A, AHBF2ADD A, #01DA AMOV AHBF2, AANL A, #0FHMOV AHBF20, AMOV A, AHBF2SWAP AANL A, #0FHMOV AHBF21, AMOV A, AHBF

31、2CJNE A, #24H, AAD2OTMOV AHBF20, #0MOV AHBF21, #0MOV AHBF2, #0AAD2OT: RETDSPM0: MOVC A, A+DPTR ; 白天分个位显示子程序SETB ACC.7MOV P1, ACLR P3.5ACALL DY1MSSETB P3.5ACALL DY1MSRETDSPM1: MOVC A, A+DPTR ; 白天分十位显示子程序MOV C, DPMOV ACC.7, CMOV P1, ACLR P3.4ACALL DY1MSSETB P3.4ACALL DY1MSRETDSPH0: MOVC A, A+DPTR ; 白天

32、时个位显示子程序MOV C, DPMOV ACC.7, CMOV P1, ACLR P3.1ACALL DY1MSSETB P3.1ACALL DY1MSRETDSPH1: MOVC A, A+DPTR ; 白天时十位显示子程序SETB ACC.7MOV P1, ACLR P3.0ACALL DY1MSSETB P3.0ACALL DY1MSRETDISP: MOV DPTR , #TAB1 ; 显示子程序,指向个位顺置管段码表首地址MOV A, MBUF0 ; 取分个位ACALL DSPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, MBUF1 ; 取分十位ACAL

33、L DSPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, HBUF0 ; 取时个位ACALL DSPH0 ; 调用时个位显示子程序MOV DPTR, #TAB1MOV A, HBUF1 ; 取时十位ANL A, #0FFHJNZ DISP1MOV A, #0AHDISP1: ACALL DSPH1 ; 调用时十位显示子程序RETNDPM0: MOVC A, A+DPTR ; 夜间分个位显示子程序SETB ACC.7MOV P1, ACLR P3.5ACALL DY1MSSETB P3.5ACALL DY2MSRETNDPM1: MOVC A, A+DPTR ; 夜间分

34、十位显示子程序MOV C, DPMOV ACC.7,CMOV P1, ACLR P3.4ACALL DY1MSSETB P3.4ACALL DY2MSRETNDPH0: MOVC A, A+DPTR ; 夜间时个位显示子程序MOV C, DPMOV ACC.7,CMOV P1, ACLR P3.1ACALL DY1MSSETB P3.1ACALL DY2MSRETNDPH1: MOVC A, A+DPTR ; 夜间时十位显示子程序SETB ACC.7MOV P1, ACLR P3.0ACALL DY1MSSETB P3.0ACALL DY2MSRETNDISP: NOPMOV DPTR, #

35、TAB1 ; 显示子程序,指向个位顺置管段码表首地址MOV A, MBUF0 ; 取分个位ACALL NDPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, MBUF1 ; 取分十位ACALL NDPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, HBUF0 ; 取时个位ACALL NDPH0 ; 调用时个位显示子程序MOV DPTR , # TAB1MOV A, HBUF1 ; 取时十位ANL A, #0FFHJNZ NDISP1MOV A, #0AHNDISP1: ACALL NDPH1 ; 调用时十位显示子程序RETADSP1: NOPM

36、OV DPTR, #TAB1 ; 定闹1显示子程序,指向个位顺置管段码表首地址MOV A, AMBF10 ; 取定闹1分个位ACALL DSPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, AMBF11 ; 取定闹1分十位ACALL DSPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, AHBF10 ; 取定闹1时个位ACALL DSPH0 ; 调用时个位显示子程序MOV DPTR, #TAB1MOV A, AHBF11 ; 取定闹1时十位ANL A, #0FFHJNZ ADSP11MOV A, #0AHADSP11: ACALL DSPH1

37、 ; 调用时十位显示子程序RETADSP2: MOV DPTR, #TAB1 ; 定闹2显示子程序,指向个位顺置管段码表首地址MOV A, AMBF20 ; 取定闹2分个位ACALL DSPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, AMBF21 ; 取定闹2分十位ACALL DSPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, AHBF20 ; 取定闹2时个位ACALL DSPH0 ; 调用时个位显示子程序MOV DPTR, #TAB1MOV A, AHBF21 ; 取定闹2时十位ANL A, #0FFHJNZ ADSP21MOV A,

38、 #0AHADSP21: CLR ACC.7ACALL DSPH1 ; 调用时十位显示子程序RETDY1MS: MOV R6, #250 ; 延时1ms子程序DY1M1: DJNZ R6, DY1M1RETDY2MS: MOV R6, #250 ; 延时2ms子程序DY2M1: NOPNOPDJNZ R6, DY2M1RETD100MS: MOV R7, #100 ; 延时100ms子程序D100M1: MOV R6, #250D100M2: DJNZ R6, D100M2DJNZ R7, D100M1RETD400MS: MOV R7, #200 ; 延时400ms子程序D400M1: MO

39、V R6, #250D400M2: NOPNOPDJNZ R6, D400M2DJNZ R7, D400M1RETBEEP: CLR P3.3CPL LED ; LED旋转脉冲CPL LEDMOV R6, #10BEEP1: DJNZ R6, BEEP1SETB P3.3RETINTT1: NOPRETITAB1: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 段码DB 92H, 82H, 0F8H, 80H, 90H, 0FFH,08HTAB2: DB 0C0H, 0F9H, 0A4H, 86H, 8BH ; 倒置段码DB 92H, 42H, 0F8H, 40H, 50H

40、, 0FFH,01HEND 第四节 实验总结体会 来到师大的第一次短学期,忙忙碌碌的三天,总的来说在余老师的指导下基本完成了实验的基本要求,但是离精通还差得很远,在以后的学习中还要继续努力。第一天是硬件的完成,第一次拿到电路板,还有很多小零件,但是最大的问题是要把这些零件组装起来,组装成一个成品的数字钟,其中要经过的工序很多,也是一个比较考验耐心和细心的过程,这其中最关键的一道工序就是焊接,虽然大专的时候也接触过焊接,但是大专时候的焊接工作量很小,只是象征性地焊一两个零件,可是这次要重复焊接这种动作N次,这其中还涉及到LED灯的正负极,LED灯焊接的顺序,蜂鸣器的正负极,电阻的种类,特别是CD

41、4017和CD4069,一个是八个引脚,一个是七个引脚,这其中最难的我感觉是USB座的焊接,注意力必须高度集中,稍微一马虎就会弄坏USB座,成品做好后,可以运行,但没有声音,仔细检查原来是蜂鸣器正负极焊反了,又重新拆下来焊了一次,第二次焊难度加大。硬件制作过程中我总结出:尽量一次做好,哪怕慢一些,返工的话很容易弄坏电路板。最好实验还是回到了编程,编程时单片机的灵魂,单片机是一个软硬结合的科目,反映到实验上也是这样,要想很好地完成实验的要求,编出适合的程序就必须对实验已经给出的编程基本框架理解,吃透。只有在这个基础上才可以编出满足你要求的程序,刚开始看程序比较头大,程序有五页,后来才慢慢发现结合电路图看程序比较容易一点,下午老师验收出的题目是14点01的时候小时的各位遍C,14点02的时候分钟的十位变C这个问题确实是个挑战对我,第一次我用SET把LED灯的b,g,c关掉成功的变出了C,可是怎么让下一分钟跳到分钟的十位,冥思苦想,最后还是推倒重来,在ADD1后面重新加了一个程序片段ADDOUT,最后修改TAB,加入C倒置和正置的代码,用闹钟的方法完成了老师的要求,这些要得益于自己对以往知识的温故,和老师的交流取经,和同学的讨论。实验成功之余,感谢余老师对我的栽培。16

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!