电子钟实训报告
《单片机原理及应用》
课程设计报告
课题名称:基于单片机的电子钟的设计姓 名:院 系:专 业:学 号:指导教师:
李 伟 应 用 技 术 学 院 电子信息工程(仪器仪表) 200615190128 谢 辉
完成时间: 2009 年 12 月 28 日
07
目 录
第1章 引 言…………………………………………………………………… 1
1.1 电子钟概述…………………………………………………………………1 1.2 设计目的……………………………………………………………………1 1.4 设计任务……………………………………………………………………1 1.3 系统主要功能………………………………………………………………1 第2章 系统的硬件设计………………………………………………………… 2
2.1 电子钟的硬件电路……………………………………………………… 2 2.2 电路原理图……………………………………………………………… 3 2.3 AT89C51单片机及其引脚说明………………………………………… 3 2.4 74LS707芯片的介绍…………………………………………………… 5 2.5 74LS706芯片的介绍…………………………………………………… 5 第3章 系统软件设计…………………………………………………………… 6 3.1 电子钟的主程序………………………………………………………… 6
3.2 3.3
电定子
钟时
计器
时中
器断
的服显
示务
程程
序……………………………………………… 6 序…………………………………………………… 7
3.5 延时功能子程序…………………………………………………………10 第4章 控制源程序………………………………………………………………10 第5章 设计心得…………………………………………………………………13 第6章 附 录……………………………………………………………………14
件
表…………………………………………………………15 附录2 实训产片…………………………………………………………16
附
录
1
元器清品
单照
基于单片机的电子钟的设计
重庆三峡学院应用技术学院
摘要:介绍了基于ATMEL公司的AT89C51系列单片机的数字式电子钟的路设计与制作,包括硬件电路原理、设计与制作,并分析了相应的软件的设计及其要点,包括软件设计流程、整机仿真与调试.
关键词: 数字式电子钟; 蜂鸣器; 数码管; ; 51系列单片机; AT89C51; 晶振;
第1章
引 言
单片机具有体积小,成本低,抗干扰能力强,面向控制,可以实现分机各分布式控制等优点。本电子钟设计就是利用单片机的上述优点,采用目前市场上性能价格比较高的AT89C51单片机设计而成的最小系统。它在实际生活中具有广泛的应用。
1.1 电子钟的概述
介绍了一种基于AT89C51单片机设计数字电子钟的方法,数字电子钟的硬件设计和软件设计,以及它的性能和特点,该电子钟可以实现时间的显示,具有硬件成本低、计时准确特点。
LED数码管时钟电路采用24小时计时方式,时、分、秒用六位数码管显示。该电路采用AT89C51单片机,使用5V电池供电,只使用一个按键进行复位状态的控制以及正常显示等状
态。.段选和位选是针对数码管而言的,位选是表示要让哪一片数码管工作,而段选就是要让选通的那片数码管显示什么样的内容。而对于时钟电路的硬件部分:LED显示采用动态扫描方式实现,P0口输出段码数据, P2口做位控口,采用6M晶振。
1.2 设计目的
(1) 通过课程设计,使学生深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养学生综合运用所学理论知识分析和解决实际问题的能力。
(2) 提高学生全局考虑问题,综合应用专业知识的能力,锻炼学生的独立工作能力,也是对前期理论与实践教学效果的检验。
(3) 掌握用单片机进行实际产品开发的基本过程,加强模块化设计思想的培养,养成良好的设计和编程习惯,增加对本专业的兴趣,为学生今后在电子、测控、通信、机电等领域从事单片机技术工作打下良好基础。
1.3 设计任务
1.3.1显示部分
设计一个时钟系统,时钟时间在六位数码管上进行显示,如下图。从左到右依次为“时:分:秒”。
一上电,数码管显示起始时间为0时0分0秒,即数码管显示00.00.00,以后每秒钟时钟系统加1,最大显示值为23.59.59。
数码管可采用并口扩展也可采用串口扩
展。设计方案自定。
1.3.2扩展要求
(1) 设计键盘电路,可从键盘进行显示初值设置,也可在系统运行过程中随时进行时间调整。设计方案自定。 (2) 显示电路也可选择液晶显示器。 1. 增加附加功能模块的课程设计,根据难度系数,适当增加分数。 (1)
(2) 根据具体题目要求,设计以单片机为控制核心的测量系统或控制系统,完成对指定目标或对象的测量及控制。
(3) 设计单片机与测量及控制对象的接口并进行硬件调试。
(4) 针对要求测量或控制的对象完成程序的编制。
(5) 硬件软件联调,完成指导教师布置的各个具体题目所要求完成的功能。
1.4 设计方案
1.5 系统主要功能
1.5.1.时钟功能
对于时钟功能,需要在数码管上显示小时、分钟和秒钟,因此,可以在内部存储空间分别定义它们的显示缓存空间,来存放小时、分钟和秒钟的BCD码,各2个字节。 由于时钟是不能停止的,因此需要采用内部定时器自动计时,并使用定时器中断处理程序来定时进行时间数值的刷新。51单片机的2个定时器都具有8位定时器的工作模式。当晶振为6MHz时,8位定时器的最大定时值为512us;要达到1秒钟,可以采用两种方法:采用一个定时器定时与软件计数相结合的方法;或者采用两个定时器级联的方法。考虑到资源问题,我们采用第一个方法,只使用1个定时器T0,并使T0的溢出时间为500us,和两重循环计数一起来实现1秒钟定时。
1.5.2.计时功能
当该电子钟用作计时功能时,只需要一个定时器进行500uS的定时,在本设计中使用单片机的T0定时计数中断。在T0的中断处理程序中对时、分、秒的缓存空间进行更新。
1.5.3.功能按键
在本次设计中,我们只用到了一个按键,并且
此按键是用来控制电路复位的,我们将设计好的复位电路直接接在单片机的复位引脚(RST)上,这样程序在运行过程中就会自动查询该引脚上的电平,当该引脚电平为高电平时,则电路恢复初始状态,反之,则程序正常运行。
第2章 系统硬件设计
电子钟的计时器的硬件电路如图所示,采用AT89C51单片机,最小化应用设计;采用共阳八段LED显示器,P0口输出段码数据,P2.0-P2.5
口作列扫描输出。为了提供共阳LED数码管的驱动电压,用74LS06作为位控驱动输出。用74LS07作为段控驱动。采用6M晶振,有利于提高计时的精确性。
2.1 电子钟的硬件电路
复位 晶振
AT89C51 P0 位控驱动 段控六位图2.1硬件系统的总体设计框架
2.2电路原理图设计
电路原理图设计最基本的要求是正确性,其
次是布局合理,最后在正确性和布局合理的前提下力求美观。
设计电路原理图:
2.3 AT89C2051单片机引脚及其说明
单片机,是一种低功耗、高性能的、
片内含有4KB ROM的8位CHMOS单片机,工作电
AT89C51
压范围为2.7~6V(实际使用+5V供电),8位数据总线。它有一个可编程的全双工串行通信接口,能同时进行串行发送和接收。通过RXD引脚(串行数据接收端)和TXD引脚(串行数据发送端)与外界进行通信。引脚图如下:
AT89C51单片机采用双列直插式Chip Carrier)的形式封装。这里仅介绍最常用的有总线扩展引脚的(DIP),QFP44(Quad Flat Pack)和LCC(Leaded DIP40封装,AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含5个中断,2个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 主要功能特性:
• 兼容MCS51指令系统 • 4k ROM
• 32个双向I/O口 • 128B内部RAM
• 2个16位可编程定时/计数器中断 • 时钟频率0-12MHz
• 1个串行中断 • 2个外部中断源 • 共5个中断源
• 2个读写中断口线 • 低功耗空闲和掉电模式
2.4 74LS707的介绍
74ls07为六高压正向驱动芯片,引脚图如下
74ls07
主要电气特性:
电源电压 7V 输入电压 5.5V 输出截止态电压 30V
工作环境温度 -55~125℃ 引出端符号: 1A-6A 输入端 1Y-6Y 输出端
2.5 74LS706的介绍
引脚图
74ls06为六高压反向驱动芯片,引脚图如下
第3章 系统软件的设计
电子钟系统的软件设计,采用主程序和子程序结构。主程序流程图如下,主程序依次调用显示子程序,调用定时器中断服务程序,调用延时子程序。显示程序完成时、分、秒各位的显示功能,定时器中断服务程序完成中断定时功能,延时子程序实现软件延时,完成校准时间等功能。
3.1 电子钟的主程序
本设计中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。其主程序执行流程见下图。
开启动
初始化常数及定时模式调用显示子
主程序代码如下: ORG 0100H
MAIN: MOV SP,#60H ;确立堆栈区 MOV R0,#79H ;显示缓冲区首地址
MOV R7,#06H ;显示位数
ML1: MOV @R0,#00H ;显示缓冲单元清0
INC R0 DJNZ R7, ML1
MOV TMOD,#02H ;定时器0,工作
方式2
MOV TH0,#06H ;定时器定时500μs
MOV TL0, #06H
MOV 30H , #100 ; 1s=100×20×500μs MOV 31H , #20
SETB EA ;EA置1,中断总允许
SETB ET0 ;ET0置1,定时器0中断允许
SETB TR0 ;TR0置1,定时开始
ML0: LCALL DIS ;调用显示子程序
SJMP ML0
3.2电子钟定时器的显示程序
数码管显示的数据存放在内存单元
79H~
7EH中。其中79H~7AH存放秒数据,7BH~7CH存放分数据,7DH~7EH存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM代码表中。显示时,先取
出79H~7EH某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
显示子程序代码如下:
DIS: MOV R0,#79H ;显示数据缓冲区首地址送R0
MOV R3,#0FEH ;使显示器最右边位亮
MOV A,R3
LD0: MOV p2,A ;送扫描值 MOV A,@R0 ;取欲显示的数据
ADD A,#18H ;加上偏移量 MOVC A,@A+PC ;取出字型码 CJNE R3, #3BH, LD1 AJMP LD2
LD1: CJNE R3, #2FH, LD3 LD2: ANL A, #7FH
LD3: MOV P0,A ;送显示
ACALL DL1 ;调用延时子程序 INC R0 ;指向下一个显示段数据地址
MOV A,R3
JB ACC.5,ELD1 ;扫描到第六个显示器否?
RL A ;未到,扫描码左移1位 MOV R3,A AJMP LD0 ELD1: RET DESG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;共阳极代码
3.3定时器中断服务程序
定时器TO用于时间计时,定时溢出中断周期设为500us,中断进入后,判断是否到1秒钟,到了,则调用加法子程序对秒进行加1处理,处理完后返回断点地址,同时判断秒是否到了60秒,到了则对秒单元清零,同时对分进行加1操作,同样对分进行判断,到60分则对分单元清零,同时对时加1,同样也对时进行判断,到24小时,则对时单元清零,最后中断返回。断服务程序执行流程见下图: 保护现 100次 100N 20次计Y 20次 N Y
秒值 中 T0
是否N Y 秒清分加是否N Y 分清小时是否N Y 小时 恢复
中断服务程序如下:返回PIT0: PUSH PSW ;
程序,现场保护
PUSH ACC
SETB PSW.3 RS0=01,选1组通用寄存器
MOV A, 30H ;减1
DEC A MOV 30H,A
JNZ RET0 ;次,转RETO返回
MOV 30H, #100 MOV A , 31H DEC A
MOV 31H, A JNZ RET0
MOV 31H,#20 ;时间到 MOV R0, #7AH ;,开始计时操作
单元地址
ACALL DAAD1 ; MOV A, R2 ;在R2中
XRL A, #60H ;秒
JNZ RET0 ;RETO返回
中断服务 ;RS1 循环次数不满100满20次,1s
移显示缓冲移加加1后秒值1 判是否到60不到,转 ACALL CLR0 ;到60,秒显示缓冲单元清0
MOV R0, #7CH ;分显示缓冲单元地址
ACALL DAAD1 ;分加1 MOV A, R2
XRL A, #60H ;判是否到60分
JNZ RET0
ACALL CLR0 ;判60,分显
示缓冲单元清0
MOV R0, #7EH ;时显示缓冲单元清0
ACALL DAAD1 ;时加1 MOV A, R2
XRL A, #24H ;判是否到24时
JNZ RET0 ;
ACALL CLR0 ;判24时,时显示缓冲单元清0
RET0: CLR PSW.3 ;RS1 RS0=00,恢复0组通用寄存器
POP ACC ;现场恢复 POP PSW RETI
3.4延时功能子程序
当我们调用显示子程序的过程中,我们需要调用延时子程序来控制显示时间,假如我们不调用延时,那么我们将会看到数码管闪烁不停,这对我们的眼睛非常不利,假如调用一定时间的延时,我们的眼睛就不会很累了。 延时子程序如下:
DL1: MOV R7,#01H ;延时1ms子程序 DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
第4章 控制源程序清单
ORG 00H
ORG 000BH AJMP MAIN AJMP PIT0 ORG 0100H
MAIN: MOV SP,#60H ;栈区
MOV R0,#79H ;冲区首地址
MOV R7,#06H ;数ML1: MOV @R0,#00H ;
冲单元清0
INC R0 DJNZ R7, ML1
MOV TMOD,#02H ;0, MOV TH0,#06H ;工作方式2
定时500μs
MOV TL0, #06H
MOV 30H , #100 1s=100×20×500μs MOV 31H , #20
SETB EA ;EA中断总允许
SETB ET0 ;ET0定时器0中断允许
SETB TR0 ;TR0定时开始
确立堆显示缓显示位显示缓定时器
定时器 ; 置1,置1,置1, ML0: LCALL DIS ;调用显示子程序
SJMP ML0
PIT0: PUSH PSW ; 中断服务程序,现场保护
PUSH ACC
SETB PSW.3 ;RS1 RS0=01,选1组通用寄存器
MOV A, 30H ;数减 DEC A 1
MOV 30H,A
JNZ RET0 ;100次,转RETO返回
MOV 30H, #100 MOV A , 31H DEC A
MOV 31H, A JNZ RET0 MOV 31H,#20 ;
次,1s时间到,开始计时操作
MOV R0, #7AH ;缓冲单元地址
ACALL DAAD1 ; MOV A, R2 ;秒值在R2中
XRL A, #60H ;到 JNZ RET0 ;60秒
转RETO返回
ACALL CLR0 ;秒显示缓冲单元清0
MOV R0, #7CH ;缓冲单元地址
循环次不满满20
移显示移加1 加1后判是否不到,到60,分显示 ACALL DAAD1 ;分加1 MOV A, R2
XRL A, #60H ;判是否到60分
JNZ RET0
ACALL CLR0 ;判60,分
显示缓冲单元清 MOV R0, #7EH ;0
缓冲单元清0
ACALL DAAD1 ; MOV A, R2
XRL A, #24H ;到 JNZ RET0
24时
ACALL CLR0 ;时显示缓冲单元清RET0: CLR PSW.3 0
RS0=00,恢复0组通用寄存器
POP ACC ;复
POP PSW RETI
DAAD1: MOV A, @R0 ;序,十位数送A
DEC R0
SWAP A ;4位
ORL A, @R0 ;4位
ADD A, #01H ; DA A ;整
MOV R2, A ;R2中
时显示时加1 判是否判24时, ;RS1 现场恢加1子程十位占高个位占低加1 十位制调全值暂存 ANL A, #0FH ;取出个位数
MOV @R0,A ;个位值送显示缓冲单元
INC R0
MOV A , R2 ; ANL A, #0F0H ;取出十位数
SWAP A ;占低 MOV @R0,A ;4位
RET
CLR0: CLR A ;元子程序
MOV @R0,A ;缓冲单元清 DEC R0
0
MOV @R0,A ;冲单元清 RET
0
DIS: MOV R0,#79H 据缓冲区首地址送 MOV R3,#0FEH ;R0
右边位亮
MOV A,R3 LD0: MOV p2,A ;
MOV A,@R0 ;的数据 ADD A,#18H
;量
CJNE R3, #3BH, LD1 MOVC A,@A+PC ; AJMP LD2
LD1: CJNE R3, #2FH, LD3
使十位数返回 清缓冲单十位数个位数缓 ;显示数使显示器最送扫描值 取欲显示加上偏移取出字型码 LD2: ANL A, #7FH
LD3: MOV P0,A ;送显示 ACALL DL1 ;调用延时子程序
INC R0 ;指向下一个显示段数据地址
MOV A,R3
JB ACC.5,ELD1 ;扫描到第六个显示器否? RL A ;未到,扫描码左移1位
MOV R3,A AJMP LD0 ELD1: RET DESG: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;共阳极代码
DL1: MOV R7,#01H ;延时1ms子程序
DL: MOV R6,#0FFH DL6: DJNZ R6,DL6
DJNZ R7,DL RET
END
第5章 设计心得
两周的课程设计很快就要过去了,虽然时
间很短,但留下了很多的心得体会。
我们组共有4个人,有各自的分工,也有
全面的合作。我主要负责的是程序的设计与修改。程序属于单片机的软件部分,有了软件就必须有硬件作基础。所以从开始我主要对硬件进行
设计,确定每个端口的作用,以及每个元件的之间衔接,这样才能为软件的设计铺好思路。
硬件链接设计好后就开始设计软件,同时
我们负责焊接的同学开始焊接,这样可以提高工作效率。元件的设计是一个比较复杂的过程,所以我们不得不参考一些资料。在设计过程中我遇到一些问题,比如有关键盘的程序。这个程序应该怎么和主程序衔接是个很大的难点。这让我认识到了自己的不足,所以我得加把油。虽然键盘程序遇到了困难,但通过两周的学习让我受益颇丰。比如对显示程序的理解就让我建立了很好的信心。
通过这一次的课程设计,让我对单片机有了更加深刻的认识,并决心一辈子就走电子这条路了,永不后悔。
第6章 附 录
附录1:元器件清单
序号 名称 型号规格 数量 1 单片机 AT89C51 1 2 六高压正向驱动74LS07 2 芯片 3 六高压反向驱动74LS06 1 芯片 4 共阳极数码管 无 6 5 40引脚的芯片无 3 座子 6 14引脚的芯片无 3 座子 7 电阻器 0.3K 8 8 9 10 11 12 13 14
电阻器 电阻器 电解电容 晶振 瓷片电容 发光二极管 微动开关 1K 5K 10uF 6M 30pF 红 无 1 2 1 1 2 1 1
附录2:实训产品照片
因篇幅问题不能全部显示,请点此查看更多更全内容