当前位置:首页 > 申请书大全 > 电子钟实训报告:电子钟实训内容与步骤
 

电子钟实训报告:电子钟实训内容与步骤

发布时间:2019-07-20 10:40:23 影响了:

《单片机原理及应用》

课程设计报告

课题名称:基于单片机的电子钟的设计姓 名:院 系:专 业:学 号:指导教师: 李 伟 应 用 技 术 学 院 谢 辉

完成时间: 2009 年 12 月 28 日

目 录

第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 电子钟计时器的显示程序„„„„„„„„„„„„„„„„„„ 6 3.3 定时器中断服务程序„„„„„„„„„„„„„„„„„„„„ 7 3.5 延时功能子程序„„„„„„„„„„„„„„„„„„„„„„10 第4章 控制源程序„„„„„„„„„„„„„„„„„„„„„„„„10 第5章 设计心得„„„„„„„„„„„„„„„„„„„„„„„„„13 第6章 附 录„„„„„„„„„„„„„„„„„„„„„„„„„„14

附录1 元器件清单表„„„„„„„„„„„„„„„„„„„„„„15 附录2 实训产品照片„„„„„„„„„„„„„„„„„„„„„„16

基于单片机的电子钟的设计

重庆三峡学院应用技术学院

摘要:介绍了基于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 电子钟的硬件电路

图2.1硬件系统的总体设计框架

2.2电路原理图设计

电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理

的前提下力求美观。 设计电路原理图:

2.3 AT89C2051单片机引脚及其说明

AT89C51单片机,是一种低功耗、高性能的、片内含有4KB ROM 的8位CHMOS 单片机,

工作电压范围为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 MOV R3,A AJMP LD0

;未到, 扫描码左移1位

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小时,则对时单元清零,最后中断返回。 T0中断服务程序执行流程见下图:

PIT0: PUSH PSW ; 中断服务程序, 现场保护 PUSH ACC

SETB PSW.3 ;RS1 RS0=01,选1组通用寄存器 MOV A, 30H ;循环次数减1 DEC A MOV 30H,A

JNZ RET0 ;不满100次, 转RETO 返回 MOV 30H, #100

MOV A , 31H DEC A MOV 31H, A JNZ RET0

MOV 31H,#20 ;满20次,1s 时间到, 开始计时操作

MOV R0, #7AH ;移显示缓冲单元地址 ACALL DAAD1 ;移加1

MOV A, R2 ;加1后秒值在R2中 XRL A, #60H ;判是否到60秒

JNZ RET0 ;不到, 转RETO 返回 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

AJMP MAIN

ORG 000BH 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 ; MOV TH0,#06H ; MOV TL0, #06H

MOV 30H , #100 MOV 31H , #20

SETB EA ;EA SETB ET0 ;ET0 SETB TR0 ;TR0ML0: LCALL DIS ; SJMP ML0

PIT0: PUSH PSW ; PUSH ACC

SETB PSW.3 ;RS1 RS0=01, MOV A, 30H ; DEC A MOV 30H,A

JNZ RET0 ; MOV 30H, #100 MOV A , 31H DEC A MOV 31H, A

JNZ RET0

MOV 31H,#20 ; MOV R0, #7AH ; ACALL DAAD1 ; MOV A, R2 ; XRL A, #60H ;定时器0, 工作方式2

定时器定时500μs 20×500μs 置1, 中断总允许 置1, 定时器0中断允许 置1, 定时开始 调用显示子程序 中断服务程序, 现场保护 选1组通用寄存器 循环次数减1 不满100次, 转RETO 返回 满20次,1s 时间到, 开始计时操作移显示缓冲单元地址 移加1

加1后秒值在R2中 判是否到60秒

; 1s=100×

JNZ RET0 ;不到, 转RETO 返回 ACALL CLR0 ;到60, 秒显示缓冲单元清0 MOV R0, #7CH ;分显示缓冲单元地址 ACALL DAAD1 ;分加1 MOV A, R2

XRL A, #60H ;判是否到60分 JNZ RET0

ACALL CLR0 ; MOV R0, #7EH ; ACALL DAAD1 ; MOV A, R2

XRL A, #24H ; JNZ RET0

ACALL CLR0 ;RET0: CLR PSW.3 ;RS1 RS0=00, POP ACC ; POP PSW RETI

DAAD1: MOV A, @R0 ; DEC R0

SWAP A ; ORL A, @R0 ; ADD A, #01H ; DA A ; MOV R2, A ; ANL A, #0FH ; MOV @R0,A ; INC R0

MOV A , R2 ; ANL A, #0F0H ; SWAP A ; MOV @R0,A ; RET

CLR0: CLR A ;判60, 分显示缓冲单元清0

时显示缓冲单元清0 时加1 判是否到24时 判24时, 时显示缓冲单元清0 恢复0组通用寄存器现场恢复 加1子程序, 十位数送A 十位占高4位 个位占低4位 加1 十位制调整 全值暂存R2中 取出个位数

个位值送显示缓冲单元 取出十位数 使十位数占低4位 返回 清缓冲单元子程序

MOV @R0,A ;十位数缓冲单元清0 DEC R0

MOV @R0,A ;个位数缓冲单元清0 RET

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 MOV R3,A AJMP LD0

;未到, 扫描码左移1位

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:元器件清单

附录2:实训产品照片

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3