您的当前位置:首页电子钟实训报告

电子钟实训报告

2021-09-09 来源:乌哈旅游


电子钟实训报告

《单片机原理及应用》

课程设计报告

课题名称:基于单片机的电子钟的设计姓 名:院 系:专 业:学 号:指导教师:

李 伟 应 用 技 术 学 院 电子信息工程(仪器仪表) 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:实训产品照片

因篇幅问题不能全部显示,请点此查看更多更全内容