您的当前位置:首页正文

电子时钟Microsoft Word 文档

2021-09-28 来源:客趣旅游网


郑州学院

单片机课程设计说明书

题目: 单片机电子时钟设计

姓 名: 院 系: 机电工程学院 专业班级:电气工程及其自动化三班 学 号: 1002120324 指导老师:

成 绩:

时间:2012年11月20日---2013年1月5日

郑州学院

单片机课程设计任务书

题目: 单片机电子时钟设计

专 业:

电气工程及其自动化

姓 名: 班 级: 电气工程三班 学 号: 1002120324

完 成 日 期 :2013年1月4日 指导老师签名: 课程负责人签名: 2012年11月21日

2

目 录

第1章 引 言„„„„„„„„„„„„„„„„„3 第2章 设计概论„„„„„„„„„„„„„„„„4 2.1 设计内容及设计思想…………………………………‥4

2.2 MCS-51单片机系统简介……………………………… 4 2.3 MCS-51内部定时器\\计数器、中断系统简介…………5 2.4 键盘和LED数码管显示器介绍…………………………5

第3章 总体设计„„„„„„„„„„„„„„„„7

3.1设计目的……………………………………………………7 3.2设计要求……………………………………………………7 3.3设计基本原理………………………………………………7

第4章 系统设计„„„„„„„„„„„„„„„„8

4.1 硬件设计…………………………………………………8 4.2 系统软件程序的设计……………………………………9

第5章 仿真与调试„„„„„„„„„„„„„„„15

5.1 程序调试…………………………………………………15 5.2 程序仿真…………………………………………………17

第6章 设计与总结„„„„„„„„„„„„„„„17

6.1 总结与感想………………………………………………17 6.2 功能介绍…………………………………………………18

3

第1章 引 言

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。

时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。

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

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。

本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。

4

第2章 设计概论

2.1 设计内容及设计思想

该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。

用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理。

2.2 MCS-51单片机系统简介

单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展

的存储器、I\\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。

在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\\O接口,使单片机应用系统能够运行。

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD

显示器,还可以使用CRT显示器。单片机应用系统中键盘一般用的比较多的是矩阵键盘,显示器用

5

的比较多的是LED数码管还LCD显示器。

2.3 MCS-51内部定时器\\计数器、中断系统简介

2.3.1定时器\\计数器

MCS-51系列中51子系列有两个16位的可编程定时\\计数器可:定时\\计数器T0和

定时\\计数器T1。它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动、停止进行控制。

每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通过编程设定来实现。

每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。四种工作方式为:13位定时\\计数器、16位定时\\计数器、8位自动重置定时\\计数器、两个8位定时\\计数器(只有T0有)

每一个定时计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。

2.3.2中断系统:

MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。

MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。中断允许寄存器IE的字节地址为A8H,可以进行位寻址。系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断允许位置“1”。

MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制,高优先级和低优先级。通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址。如果某位被置“1”,则对应的中断源被设为高优先级;如果某位被清零,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0、定时计数器T0中断、外部中断1、定时计数器T1中断、串行口中断。通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。

MCS-51单片机响应中断的条件为:中断源有请求且中断允许。

2.4 键盘和LED数码管显示器简介

2.4.1键盘

6

键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘的结构形式一般有两种:独立式键盘和矩阵式键盘。矩阵式键盘的工作方式有3种:查询工作方式、定时扫描工作方式和中断工作方式。 2.4.2 LED数码管显示器

在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。所谓译码方式是指由显示字符转换得到对应的字段码的方式。对于LED数码管显示器,通常的译码方式有两种:硬件译码方式和软件译码方式。LED数码管在显示时,通常有两种显示方式:静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。

2.4.3 基本概述

软时钟是利用单片机内部的定时器\\计数器来实现的,它的处理过程如下:首先设定单片机内部的一个定时器\\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来即可。

数码管显示可以采用静态显示方法或动态显示方法。静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一般用6个或8个数码管。由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式。动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。

在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。另外,为了使用方便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中

7

就加入了键盘设置子程序。

第三章 总体设计

3.1实验目的

1学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。 2利用实验仪器, 设计数字时钟

3.2实验要求

1. 在数码管上显示当前时间。显示格式“时时分分秒秒” 2. 由LED闪动做秒显示。

3.3实验基本原理

利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

8

第4章 系统设计

4.1硬件设计

利用单片机(80C52)制作简易的电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。

从上往下依次为第一个按钮,第二个按钮,第三个按钮。第一个按钮为模式选择键,按第一次暂停,设小时;按第二次暂停,设分钟;按第三次,重新开始走动。

9

4.2 系统软件程序的设计

电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,

4.2.1 主程序

主程序执行流程如图1,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。

4.2.2数码管显示模块

本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位横线、时个位和时十位。采用软件译码动态显示。

4.2.3.定时器/计数器T0中断服务程序

定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。定时器/计数器T0中断服务程序流程图如图2。

否 允许T0中断 调用显示子程序 按下键否? 是 进入功能程序 显示单元清零 T0、T1设为16位计数模式 开始

图1 主程序流程图 、

10

开始

中断返回 时单元清0 是 否 否 否 否 现场保护,重置初值 启动下一个50ms 50ms 计数器加1 50ms 计数器=20? 是 秒单元加1,50ms计数器清0,秒写入秒个位和秒十位 秒单元=60? 是 分单元加1,秒单元清0,分写入分个位和分十位 分单元=60? 是 时单元加1,分单元清0,时写入时个位和时十位 时单元=24?

图2 定时器/计数器T0中断服务程序流程图

11

4.2.4 按键处理模块

按键处理设置为:如没有按键,则时钟正常走时。当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行。

4.2.5 汇编语言源程序清单.

;采用8位LED软件译码动态显示程序

;使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳 ;LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。 ;片内RAM的70H到77H单元为LED数码管的显示缓冲区 ;78H,79H,7AH分别为秒、分、小时计数单元 ;7BH为50ms计数器,7CH为调时按键计数器

ORG 0000H LJMP START

ORG 000BH ;定时器/计数器T0中断程序入口 LJMP INTT0

;主程序

START:MOV R0,#70H MOV R7,#0CH INIT: MOV @R0,#00H INC R0

DJNZ R7,INIT MOV 72H,#10 MOV 75H,#10 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB TR0 START1:LCALL SCAN LCALL KEYSCAN SJMP START1 ;延时1MS子程序 DL1MS:MOV R6,#14H

DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET

;延时20MS子程序 DL20MS:ACALL SCAN

12

ACALL SCAN

ACALL SCAN RET

;数码管显示程序

SCAN: MOV A,78H ;时间存入显示缓冲区相应位置 MOV B,#0AH DIV AB MOV 71H,A MOV 70H,B MOV A,79H

MOV B,#0AH DIV AB MOV 74H,A MOV 73H,B

MOV A,7AH

MOV B,#0AH DIV AB MOV 77H,A

MOV 76H,B

MOV R1,#70H ;循环扫描显示 MOV R5,#80H MOV R3,#08H SCAN1:MOV A,R5 MOV P2,A MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV A,R5 LCALL DL1MS INC R1 MOV A,R5 RR A

MOV R5,A

DJNZ R3,SCAN1 MOV P2,#00H MOV P0,#0FFH RET

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;“0~9”,“-”的共阳极字段码

;定时器/计数器T0中断服务程序 INTT0: PUSH ACC PUSH PSW

13

CLR ET0

CLR TR0

MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 INC 7BH MOV A,7BH

CJNE A,#14H,OUTT0 MOV 7BH,#00 INC 78H

MOV A,78H

CJNE A,#3CH,OUTT0 MOV 78H,#00

INC 79H MOV A,79H

CJNE A,#3CH,OUTT0 MOV 79H,#00

INC 7AH MOV A,7AH

CJNE A,#18H,OUTT0 MOV 7AH,#00 OUTT0:

SETB ET0 POP PSW POP ACC

RETI ;按键处理程序 KEYSCAN:CLR EA

JNB P1.0,KEYSCAN0 JNB P1.1,KEYSCAN1 JNB P1.2,KEYSCAN2 KEYOUT:SETB EA

RET

KEYSCAN0:LCALL DL20MS

JB P1.0,KEYOUT

WAIT0:JNB P1.0,WAIT0 INC 7CH MOV A,7CH CLR ET0 CLR TR0

CJNE A,#03H,KEYOUT MOV 7CH,#00 SETB ET0 SETB TR0

14

SJMP KEYOUT

KEYSCAN1:LCALL DL20MS

JB P1.1,KEYOUT

WAIT1:JNB P1.1,WAIT1 MOV A,7CH

CJNE A,#02H,KSCAN11 INC 79H

MOV A,79H

CJNE A,#3CH,KEYOUT

MOV 79H,#00

SJMP KEYOUT

KSCAN11:INC 7AH

MOV A,7AH

CJNE A,#18H,KEYOUT

MOV 7AH,#00

SJMP KEYOUT

KEYSCAN2:LCALL DL20MS

JB P1.2,KEYOUT

WAIT2:JNB P1.2,WAIT2 MOV A,7CH

CJNE A,#02H,KSCAN21 DEC 79H

MOV A,79H

CJNE A,#0FFH,KEYOUT

MOV 79H,#3BH

SJMP KEYOUT

KSCAN21:DEC 7AH

MOV A,7AH

CJNE A,#0FFH,KEYOUT

MOV 7AH,#17H

SJMP KEYOUT END

15

第5章 仿真与调试

5.1 程序调试

本程序通过Keil单片机开发平台实现程序的编译,链接,生成HEX文件。程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使错误被扼杀在摇篮中。

通过Keil和硬件仿真平台Proteus的联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。

5.1.2 利用Keil软件实验过程截图:

a创建一个工程和新建一个文件并写入程序

16

b编译写入的程序,看是否有误,若有错误,将其纠正

c汇编程序,并生成HEX文件

17

5.2程序仿真

利用Proteus仿真试验过程截图

普通时间显示模式仿真图,表示:14点11分25秒

最上面的一个按钮为K0,中间的一个按钮为K1,最下面的按钮为K2,(K1为加,K2为减)

第6章 设计总结

6.1 总结与感想

通过这次的课程设计,我了解了Keil C51集成环境和PROTEUS仿真软件的使用,用此软件练习电子时钟的设计,不仅能够掌握此软件的使用方法,而且复习了原来的汇编语言,对电子时钟的原理和电子时钟的汇编程序有了更进一步的理解。仿真实现了把抽象的东西具体化,把理论和实际结合起来,更利于对单片机程序的理解掌握。并且,在这次的课程设计中,我知道了,要自己熟练地掌握一个软件,不能光看老师的演示过程,得自己去学习这个软件,明白每一个步骤的确切含

义,自己逐步的亲手去进行演示,这样才能变成自己的知识来熟练应用。

18

6.2功能介绍

本设计能够很准确的走时,并能够通过硬件对时钟进行时间调整。

6.2.1显示XX:XX:XX时间

时间可调:点击运行按钮,始终显示示数并开始运行;点击一下K0,时钟暂停,此时可以调整小时,K1为加,K2为减;再次点击K0,可以调整分钟,同样的K1为加,K2为减。。。。。

6.2.2制作心得

在这次课程设计的调试过程中,我遇到很多问题,如:编译程序是总是有很多的错误,与正确的程序一行行的比对,最后才解决这个问题。还有就是仿真的过程中没有仿真成功,然后将所有的文件从桌面移到其他的硬盘中 ,再进行调试就成功了,虽然调试成功了,但是我总感觉有那里不对。。在设计的过程中学到了很多,还增加了同学之间的友谊。。

19

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