#基于单片机AT89C51的电子时钟的课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

苏州市职业大学
课程设计任务书课程名称:单片机原理和使用课程设计
起讫时间:2011年6月22日----6月28日
院系:电子信息工程系
班级:09电子3班
指导教师:金小华
系主任:张红兵
一、课程设计课题
基于单片机的电子时钟的设计
1.掌握使用proteus软件的方法。

2.理解单片机的时钟显示方法。

3.明确设计指标,写出设计方案,设计出硬件原理图。

4.基于硬件的软件设计和调试。

5.将结果向指导教师演示,由教师提问验收通过;
6.打印程序清单,撰写程序说明,完成课程设计报告书,进行分组讨论
设计心得。

1.第一天:明确课程设计任务和目标,熟悉单片机系统调试软件仿真实
现。

2.第二天:明确设计指标,设计电路原理图。

3.第三、四天:基于硬件的软件设计和调试。

4.第五天:学生演示设计调试结果,教师提问验收。

打印程序清单,撰
写程序说明,完成课程设计报告书。

四、课程设计说明书内容(有指导书的可省略)
1,单片机结构、原理。

2,电子时钟硬件设计(原理图,原理图分析)。

3,软件设计(软件简介,调试过程)。

4,硬件、软件程序清单。

苏州市职业大学课程设计说明书
名称基于单片机的电子时钟的设计
2011年6月22日至2011年6月28日共一周院系电子信息工程系
班级09电子3班
姓名于宁
学号097302340
系主任张红兵
教研室主任陆春妹
指导教师金小华
目录
第一章电子时钟 (1)
1.1电子时钟简介 (1)
1.2电子时钟的基本特点 (1)
1.3电子时钟的原理 (1)
第二章单片机识的相关知识 (2)
2.1单片机简介 (2)
2.2单片机的发展史 (2)
2.3单片机的特点 (3)
2.489C51单片机介绍 (3)
第三章控制系统的硬件设计 (6)
3.1单片机型号的选择 (6)
3.2数码管显示工作原理 (6)
3.3键盘电路设计 (7)
3.4系统工作原理 (7)
3.5整个电路原理图 (9)
第四章控制系统的软件设计 (10)
4.1程序设计 (10)
4.2程序流程图 (13)
4.3伟福硬件仿真器简介 (14)
4.4仿真图及结果分析 (15)
第五章附录程序 (17)
第六章结束语 (19)
参考文献 (20)
第一章电子时钟
1.1 电子时钟简介
本作品采用Atmel公司的AT89C51单片机,以汇编语言为程序设计的基础,设计一个用四位数码管显示时、分的时钟。

现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而达到计时的功能,是人民日常生活补课缺少的工具。

1.2 电子时钟的基本特点
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

1.3 电子时钟的原理
该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。

而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

第二章单片机识的相关知识
2.1单片机简介
单片机是指一个集成在一块芯片上的完整计算机系统。

尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

2.2单片机的发展史
单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。

起初模型
1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。

“创新模式”获得成功,奠定了SCM 和通用计算机完全不同的发展道路。

在开创嵌入式系统独立发展道路上,Intel公司功不可没。

Micro Controller Unit
2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式使用时,对象系统要求的各种外围电路和接口电路,突显其对象的智能化控制能力。

它所涉及的领域都和对象系统相关,因此,发展MCU
的重任不可避免地落在电气、电子技术厂家。

从这一角度来看,Intel逐渐淡出MCU 的发展也有其客观因素。

在发展MCU方面,最著名的厂家当数Philips公司。

Philips公司以其在嵌入式使用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。

因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel 和Philips的历史功绩。

嵌入式系统
单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求使用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。

随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机使用系统设计会有较大的发展。

因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片使用系统。

2.3 单片机的特点
1 . 单片机的存储器ROM和RAM时严格区分的。

ROM称为程序存储器,只存放程序,固定常数,及数据表格。

RAM则为数据存储器,用作工作区及存放用户数据。

2 . 采用面向控制的指令系统。

为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。

3 . 单片机的I/O口通常时多功能的。

由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。

4 . 单片机的外部扩展能力很强。

在内部的各种功能部件不能满足使用的需求时,均可在外部进行扩展,和许多通用的微机接口芯片兼容,给使用系统设计带来了很大的方便。

2.4 89C51单片机介绍
VCC:电源。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1
口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可
以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH
进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE 端以不变的频率周期
输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC 指令是
ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

o
图2.1 89C51单片机
第三章控制系统的硬件设计
3.1 单片机型号的选择
通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。

89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,和工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它和MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。

3.2 数码管显示工作原理
数码管是一种把多个LED显示段集成在一起的显示设备。

有两种类型,一种是共阳型,一种是共阴型。

共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。

共阴型就是把多个LED显示段的阴极接在一起,即为公共商。

阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。

通常的数码管又分为8段,即8
个LED显示段,这是为工程使用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。

而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。

即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。

数码管显示方法可分为静态显示和动态显示两种。

静态显示就是数码管的8段输入及其公共端电平一直有效。

动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。

利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。

图 3.1 共阴数码管
3.3 键盘电路设计
该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。

当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

达到时间调节的目的。

图3.2 多功能控制键
经多方论证硬件我们小组采用AT89C51单片机和7SED六位共阴极数码管等来实现单片机电子时钟的功能,详细元器件列表如表3.1所示:
表3.1 详细元器件列表
AT89c51 1片
7SED六位共阴极数码管1片
NPN三极管6个
10uf电容1个
30p电容2个
10K电阻11个
360欧姆电阻8个
1.5k欧姆电阻8个
开关1个
3.4系统工作原理
(1)单片机发送的信号通过程序控制最终在数码管上显示出来。

(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。

(3)为使时钟走时和标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。

(4)设计的电路主要由三模块构成:单片机控制电路,显示电路、及校正电路。

此设计原理框图如图3-3所示,此电路包括以下三个部分:单片机,键盘及显示电路
图3.3 设计原理框图
本设计采用汇编语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。

时、分、秒的计数结果经过数据处理可直接送显示器显示。

当计时发生误差的时候可以用校时电路进行校正。

设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示
3.5整个电路原理图
图3.4 系统电路原理图
第四章控制系统的软件设计
4.1 程序设计
本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。

在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。

我们用定时器1采用方式1定时,M=65536,如果要求定时时间为50ms,采用12MHz 晶振,则机器周期为1us,由(65536—Z)*1=50*1000得
Z=65536-50000=15536=3CB0H
将3C、B0H分别预置给TH1、TL1,即TH1=3CH,TH=0B0H
根据需要开始定时器/计数器工作------将TR0或TR1置“1”。

GATE=0时,直接由软件置位启动,即SETB TR0或SETB TR1;GATE=1时,除软件置位外,还必须在外中断引脚(P3.3)处输入高电平值才能启动。

定时计数中断程序:
MOV TMOD,#11H ;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)
MOV TH1,#3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;开启T0定时器
AJMP $
时间调整程序:
SETMM: cLR ET0 ;关定时器T0中断
CLR TR0 ;关闭定时器T0
LCALL DL1S ;调用1秒延时程序
JB P3..3,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值
SETB ET1 ;允许T1中断
SETB TR1 ;开启定时器T1
SET2: JNB P3.3,SET1 ;P3.7口为0(键未释放),等待
SETB 00H ;键释放,分调整闪烁标志置1
SET4: JB P3.3,SET3 ;等待键按下
LCALL DL05S ;有键按下,延时0.5秒
JNB P3.3,SETHH ;按下时间大于0.5秒转调小时状态
MOV R0,#77H ;按下时间小于0.5秒加1分钟操作
LCALL ADD1 ;调用加1子程序
MOV A,R3 ;取调整单元数据
CLR C ;清进位标志
CJNE A,#60H,HHH ;调整单元数据和60比较
HHH: JC SET4 ;调整单元数据小于60转SET4循环
LCALL CLR0 ;调整单元数据大于或等于60时清0
CLR C ;清进位标志
AJMP SET4 ;跳转到SET4循环
CLOSEDIS:SETB ET0 ;省电(LED不显示)状态。

开T0中断
SETB TR0 ;开启T0定时器(开时钟)
CLOSE: JB P3.3,CLOSE ;无按键按下,等待。

LCALL DISPLAY ;有键按下,调显示子程序延时削抖
JB P3.3,CLOSE ;是干扰返回CLOSE等待
WAITH: JNB P3.3,WAITH ;等待键释放
LJMP START1 ;返回主程序(LED数据显示亮)
SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)SETHH1: JNB P3.3,SET5 ;等待键释放
SETB 01H ;小时调整标志置1
SET6: JB P3.3,SET7 ;等待按键按下
LCALL DL05S ;有键按下延时0.5秒
JNB P3.3,SETOUT ;按下时间大于0.5秒退出时间调整MOV R0,#79H ;按下时间小于0.5秒加1小时操作LCALL ADD1 ;调加1子程序
MOV A,R3 ;
CLR C ;
CJNE A,#24H,HOUU ;计时单元数据和24比较
HOUU: JC SET6 小于24转SET6循环
LCALL CLR0 ;大于或等于24时清0操作
AJMP SET6 ; 跳转到SET6循环
SETOUT: JNB P3.3,SETOUT1 ;调时退出程序。

等待键释放LCALL DISPLAY ;延时削抖
JNB P3.3,SETOUT ;是抖动,返回SETOUT再等待
CLR 01H ;清调小时标志
CLR 00H ;清调分标志
CLR 02H ;清闪烁标志
CLR TR1 ;关闭定时器T1
CLR ET1 ;关定时器T1中断
SETB TR0 ;开启定时器T0
SETB ET0 ;开定时器T0中断(计时开始)LJMP START1 ;跳回主程序
SET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分)AJMP SET2 ;防止键按下时无时钟显示
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
AJMP SET4
SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时)AJMP SETHH1 ;防止键按下时无时钟显示
SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用
AJMP SET6
SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待
AJMP SETOUT ;防止键按下时无时钟显示
延时程序:
1MS延时程序,LED显示程序用
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
DS20MS: ACALL DISPLAY
ACALL DISPLAY
ACALL DISPLAY
RET
4.2程序流程图
主程序
主程序主要是循环调用显示子程序及键盘扫描功能设置子程序,其流程图如图4.1所示。

图4.1 主程序框图
定时中断子程序
时间计时使用定时器t0完成,中断定时周期设为50ms。

中断进入后,判断时钟计时累计中断到20次(即1s)时,对秒计数单元进行加1操作。

计时单元的最大值为23时59分59秒。

在计数单元中采用十进制BCD码计数,满60进位。

T0中断服务程序流程图如图4.2所示。

图4.2 中断服务程序流程图
T1中断服务程序用于指示调整单元数字的亮闪。

在时间调整状态下,每过0.3秒,将对应单元的显示数据换成“熄灭符”数据(#0AH)。

这样在调整时间时,对应调整单元的显示数据会间隔闪亮。

T1中断服务程序流程图如图4.3所示。

图4.3 中断服务程序
4.3伟福硬件仿真器简介
主机+POD(仿真头)组合,通过更换POD,可以对各种CPU进行仿真。

对待不同的使用场合,用户往往会选择不同的CPU,从而需要更换仿真器,伟福仿真软件WINDOWS版本支持本公司多种仿真器。

支持多类CPU仿真。

仿真器则采用主机+POD 组合,通过更换不同的POD,可对各种不同类型的单片机进行仿真。

为用户提供了一种灵活的多CPU仿真系统。

1.双平台
DOS版本,WINDOWS版本。

其中WINDOWS版本功能强大。

中文界面,英文界面可任选,用户源程序的大小不再有任何限制,支持ASM,C,PLM语言混合编程,具有项目管理功能,为用户的资源共享,课题重组提供强有力的手段。

支持点屏显示,用鼠标左键点一下源程序中的某一变量,即可显示该变量的数值。

有丰富的窗口显示方式,多方位,动态地显示仿真的各种过程,使用极为便利。

本操作系统一经推出,立即被广大用户所喜爱。

2.双工作模式
1 软件模拟仿真(不要仿真器也能模拟仿真)。

2 硬件仿真。

双CPU结构,100% 不占用户资源。

全空间硬件断点,不受任何条件限制,支持地址、数据、外部信号、事件断点、支持
实时断点计数、软件运行时间统计。

3.双集成环境
编辑、编译、下载、调试全部集中在一个环境下。

飞利蒲公司的552.LPC764.DALLAS320,华邦438等51增强型CPU。

为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。

他们由不多种仿真器,多类CPU仿真全部集成在一个环境下。

可仿真51系列,196系列,PIC系列,同的厂家开发,相互不兼容,使用不同的界面。

学习使用都很吃力。

伟福 WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个和第三方编译器的接口。

4.4仿真图及结果分析
单片机右上角红色发光二极管秒灯,每闪烁一次表示时间走动一秒钟;按键正下方黑色按键是设置灯,当时间正常走动时此时灯亮,当第一次按下设置键时,同时秒时熄灭,且分钟的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行分钟的调整,当按一次加一键(调整键)可实现分钟的加一功能,分钟以60分为极限,超出60分则返回数值0,从0再重新算起;如果再次按下设置键时,这时秒灯和设置灯仍旧保持熄灭和点亮状态,表示分钟的数码管停止闪烁,反过来表示小时的两位数码
管则开始闪烁,此时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,同样超出24小时则从新回0;当第三次按下设置键时,数码管停止闪烁,设置灯熄灭,秒灯重新闪烁,时间以设定值计时。

图4.4 伟福软件模拟图
第五章附录程序
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
START:MOV R0, #70H
MOV R7, #0BH
MOV 20H, #00H
CLEARDISP: MOV @R0, #00H
INC R0
DJNZ R7,CLEARDISP MOV 7AH,#0AH
MOV TMOD,#11H
MOV TL0, #0B0H
MOV TH0, #3CH
MOV TL1, #0B0H
MOV TH1, #3CH
SETB EA
SETB ET0
SETB TR0
MOV R4,#14H
START1:LCALL DISPLAY JNB P3.3,SETMM1 SJMP START1
SETMM1:LJMP SETMM
INTT0:PUSH ACC
PUSH PSW
CLR ET0
CLR TR0
MOV A,#0B7H
ADD A,TL0
MOV TL0,A
MOV A,#3CH
ADD A,TH0
MOV TH0,A
SETB TR0
DJNZ R4,OUTT0
ADDSS:MOV R4,#14H
MOV R0,#71H
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,ADDMM ADDMM:JC OUTT0
ACALL CLR0 MOV R0,#77H
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,ADDHH
ADDHH:JC OUTT0
ACALL CLR0
MOV R0,#79H
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUR
HOUR:JC OUTT0
ACALL CLR0
OUTT0:MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
POP PSW
POP ACC
SETB ET0
RETI
INTT1: PUSH ACC
PUSH PSW
MOV TL1, #0B0H
MOV TH1, #3CH
DJNZ R2,INTT1OUT
MOV R2,#06H
CPL 02H
JB 02H,FLASH1
MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
INTT1OUT: POP PSW
POP ACC
RETI
FLASH1: JB 01H,FLASH2
MOV 72H,7AH
MOV 73H,7AH
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
FLASH2: MOV 72H,76H
MOV 73H,77H
MOV 74H,7AH
MOV 75H,7AH
AJMP INTT1OUT
ADD1:MOV A,@R0
DEC R0
SWAP A
ORL A,@R0
ADD A,#01H
DA A
MOV R3,A
ANL A,#0FH
MOV @R0,A
MOV A,R3
INC R0
SWAP A
ANL A,#0FH
MOV @R0,A
RET
CLR0:CLR A
MOV @R0,A
DEC R0
MOV @R0,A
RET
SETMM: CLR ET0
CLR TR0
LCALL DL1S
JB P3.3,CLOSEDIS
MOV R2,#06H
SETB ET1
SETB TR1
SET2: JNB P3.3,SET1
SETB 00H
SET4: JB P3.3,SET3
LCALL DL05S
JNB P3.3,SETHH
MOV R0,#77H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,HHH
HHH:JC SET4
LCALL CLR0
CLR C
AJMP SET4
CLOSEDIS: SETB ET0
SETB TR0
CLOSE:JB P3.3,CLOSE
LCALL DISPLAY
JB P3.3,CLOSE
WAITH: JNB P3.3,WAITH
LJMP START1
SETHH: CLR 00H
SETHH1:JNB P3.3,SET5
SETB 01H
SET6: JB P3.3,SET7
LCALL DL05S
JNB P3.3,SETOUT
MOV R0,#79H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUU
HOUU:JC SET6
LCALL CLR0
AJMP SET6
SETOUT: JNB P3.3,SETOUT1 LCALL DISPLAY
JNB P3.3,SETOUT CLR 01H
CLR 00H
CLR 02H
CLR TR1
CLR ET1
SETB TR0
SETB ET0
LJMP START1
SET1:LCALL DISPLAY
AJMP SET2
SET3:LCALL DISPLAY
AJMP SET4
SET5:LCALL DISPLAY
AJMP SETHH1
SET7:LCALL DISPLAY
AJMP SET6 SETOUT1:LCALL DISPLAY
AJMP SETOUT
DISPLAY:MOV DPTR,#TAB SETB P1.0
MOV A,70H
MOVC A,@A+DPTR ANL A,#7FH ;
MOV P0,A
LCALL DL1MS CLR P1.0
SETB P1.1
MOV A,71H
MOVC A,@A+DPTR
ANL A,#7FH ;
MOV P0,A
LCALL DL1MS
CLR P1.1
SETB P1.2
MOV A,72H
MOVC A,@A+DPTR
ANL A,#7FH ;
MOV P0,A
LCALL DL1MS
CLR P1.2
SETB P1.3
MOV A,73H
MOVC A,@A+DPTR
ANL A,#7FH ;
MOV P0,A
LCALL DL1MS
CLR P1.3
SETB P1.4
MOV A,74H
MOVC A,@A+DPTR
ANL A,#7FH ;
MOV P0,A
LCALL DL1MS
CLR P1.4
SETB P1.5
MOV A,75H
MOVC A,@A+DPTR
ANL A,#7FH ;
MOV P0,A
LCALL DL1MS
CLR P1.5
MOV P0,#00H
RET
TAB:DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07
H,7FH,6FH,00H
;
DL1MS:MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
DS20MS:ACALL DISPLAY
ACALL DISPLAY
ACALL DISPLAY
RET
DL1S:LCALL DL05S
LCALL DL05S
RET
DL05S:MOV R3,#20H
DL05S1:LCALL DISPLAY
DJNZ R3,DL05S1
RET
END
第六章结束语
开始的时候由于没有经验,不知如何下手,所以就去图书馆找了一些书看,尽管有许多设计方案,可是总觉得自己还有许多的东西弄不太清楚,于是就请教同学。

他尝做一些设计,有了一些经验。

经过他的努解释分析之后决定用查表,中断的方法来做这样可以降低一些硬件的难度,初次设计应切合自己的水平。

我以为这些做好了,构思也有了写程序应该是相对容易的。

谁知道,写起程序来才想到中断程序不会写,我真的感到很难,那是真的有点想放弃,于是就去请教了老师,老师帮忙分析了一下。

自己有查阅了一些资料。

终于明白了中断程序是怎么写的。

于是在自己的努力下,程序很快就写好了,功能上基本达标:时钟的显示,秒表显示,定时功能,调时功能。

时钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷;硬件设施合乎要求,软件设计可以配合硬件实现要求功能。

这次是我第一个设计器件,尽管经李了不少艰辛,但给我积累了一点设计的经验,最后也以有点小小的成就感。

后面的路还很长,我还得努力。

参考文献
[1] 丁向荣、贾平。

《单片机使用系统和开发技术》.清华大学出版社,2009
[2] 第二版.51系列单片机设计实例.北京航空航天大学出版社(81—89页数码管时钟电路的设计).
[3] 黄庆华、张永格.单片机开发和实例.电子工业出版社(127-162页数字式电子时钟的设计)
[4] 李叶紫.王喜斌.胡辉.孙东辉.编著MCS_51单片机使用教程清华大学出版社.2008.6.。

相关文档
最新文档