多功能数字钟课程设计报告

电子时钟课程

设计报告

班级:文通 0741

姓名:***

 学号:2007905121**

多功能数字钟课程设计报告

一、课程设计题目: 多功能数字钟

二、实验目的:

☆ 了解多功能数字电子钟的工作原理。

☆ 学习数字系统设计中自顶向下的设计方法。

☆ 加深利用EDA技术实现数字系统的理解。

三、课程设计任务和基本要求:

☆  设计任务

    采用中规模集成电路设计一台可以显示时、分、秒的数字钟。

☆  基本要求

1、能够正确的连线及下载。

2、能够完成以秒为最小及时单位的时钟设计。

3、设计完成后的时钟能够正常调整时、分、秒。

三、课程设计题目分析:

☆  设计要点

●设计一个精确的秒脉冲信号产生电路

●设计60进制、24进制计数器

●设计译码显示电路

●设计整点报时电路

☆  工作原理

数字电子钟由信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用555构成的振荡器加分频器来实现。将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计数器,可以实现一天24h的累计。译码显示电路将“时、分、秒”计数器的输出状态经七段显示译码器译码,通过六位LED显示器显示出来。整点报时电路是根据计时系统的输出状态产生一个脉冲信号,然后去触发音频发生器实现报时。校时电路是来对“时、分、秒”显示数字进行校对调整。其数字电子钟系统框图如下:

四、课程设计的电路设计部分:

☆  秒、分、时计时器电路设计

秒、分计数器为60进制计数器,小时计数器为24进制计数器。实现这两种模数的计数器采用中规模集成计数器74LS90构成。

●  60进制计数器

由74162构成的60进制计数器,将一片74162设计成10进制加法计数器,另一片设置6进制加法计数器。两片74LS90按反馈清零法串接而成。秒计数器的十位和个位,输出脉冲除用作自身清零外,同时还作为分计数器的输入脉冲CP1。下图电路即可作为秒计数器,也可作为分计数器。

 60

●  24进制计数器

由74162构成的二十进制计数器,将一片74162设计成4进制加法计数器,另一片设置2进制加法计数器。既个位计数状态为Qd Qc Qb Qa = 0100十位计数状态为Qd Qc Qb Qa = 0010时,要求计数器归零。通过把个位Qc、十位Qb相与后的信号送到个位、十位计数器的清零端,使计数器清零,从而构成24进制计数器。电路图如下:

24

☆  译码显示电路

译码电路的功能是将秒、分、时计数器的输出代码进行翻译,变成相应的数字。用与驱动LED七段数码管的译码器常用的有7448。7448是BCD-7段译码器/驱动器,输出低电平有效,专用于驱动LED七段共阴极显示数码管。若将秒、分、时计数器的每位输出分别送到相应七段译吗管的输入端,便可以进行不同数字的显示。在译码管输出与数码管之间串联电阻R作为限流电阻。

译码显示电路

☆  整点报时电路

仿广播电台整点报时电路设计,每当数字钟计时快到整点时发出响声,四低一高并且以最后一声高音结束的时刻为整点时刻。

整点报时电路

☆计时功能模块:

它是由两个60进制计数器和一个24进制计数器连接成的。构成了时钟正常的计时功能。当到达59秒钟的时候,当再来一个CP脉冲的时候,将自动进位,使分针上加一。分针也是一样。当时针到达23点59分59秒的时候,当再次来一个CP脉冲时候,又转化为0点0分0秒。

计时与整点报时模块

☆数据选择器模块:

数据选择器

☆总电路图

五、课程设计心得体会:

这次数字钟的设计与制作,我做的很辛苦。对于以前的数字电子技术软件操作淡忘了,所以开始的时候需要对系统软件进一步熟悉,通过自己慢慢深入学习,让我对于操作软件有了大概的思路。在实际操作中,了解了设计电路的程序,同时也让我了解了关于数字钟的原理与设计理念。看着复杂的程序被我设计完成, 倍感欣慰。当设计电路完成还要实际接线。我在做这项工作的时候,犯了这样一个错误,连线时找不到相应的标示符号,其实老师已将标示的符号写在黑板上了,我却在疑惑。这其实也考验了实验者的细心与动手能力,遇到自己不懂的除了先发动大脑细胞想想之外,询问老师同学的却也受益匪浅,通过讨论,综合几个人的见解,能发现更多的知识。                                     

通过这次学习,让我的视野从课本之外延伸。多看书是好的。可是要想学好一门课光看书是不行的,还要在课外进行多多的实际操作。对于以前遗忘的知识,要抽时间复习,这样才会有更深刻的体会。

 

第二篇:单片机多功能电子数字钟课程设计报告.doc.deflate

多功能电子数字钟设计


数字钟在日常生活中最常见,应用也最广泛。本文主要就是设计一款数字钟,以89C52单片机为核心,配备液晶显示模块、时钟芯片、等功能模块。数字钟采用24小时制方式显示时间,定时信息以及年月日显示等功能。
文章的核心主要从硬件设计和软件编程两个大的方面。硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几部分组成。软件用C语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。
关键词   单片机    液晶显示器模块    数字钟   

一  硬件电路设计及描述;

1、MCS-51单片机

单片机是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。

8051单片机的结构特点有以下几点:8位CPU;片内振荡器及时钟电路; 32根I/O线;外部存储器ROM和RAM;寻址范围各64KB;两个16位的定时器/计数器; 5个中断源,2个中断优先级;全双工串行口。

定时器/计数器

8051内部有两个16位可编程定时器/计数器,记为T0和T1。16位是指他们都是由16个触发器构成,故最大计数模值为2-1。可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时起来用,并且计数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的。在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。技术工作时,时钟脉冲由TO和T1输入。

中断系统

8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。

外部中断申请通过INTO和INT1(即P3.2和P3.3)输入,输入方式可以使电平触发(低电平有效),也可以使边沿触发(下降沿有效)。

 2、8051的芯片引脚

如图1-2所示

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)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

?

二 设计基本原理简介

数字钟的设计首先要保证其走时尽可能准确,其次再根据人们日常的使用习惯来设定其附加功能。在设计中利用单片机定时计数器来完成走时并用两组输出口控制数码管来显示;通过编程向某一输出口输出方波实现报时及闹铃;利用输入端口外接各种开关来完成对走时及显示的控制(如预置时间等)。

1复位电路

    MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

上电复位:上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。

2时钟电路

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。

电路图如下:

MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。 按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。电路图如下:

4.3 按键电路

    按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。

   电路图如下:

    P1.0口表示功能移位键,按键选择要调整的年、月、日、小时、分、秒。

    P1.1口表示数字“+“键,按一下则对应的数字加1。

P1.2口表示数字“-”键,按一下则对应的数字减1。

P1.3口表示退去选项,时间已经调整好

 总电路原理图

电路的软件设计

1软件程序内容

本设计的软件程序包括主程序、中断子程序、打铃子程序、时钟显示子程序、查询时间表切换程序和延时子程序等等。另外由于电路中有四个按键,还另外设计了防抖动程序来防止干扰。

 系统软件设计流程图这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。

 

图5-1 主程序流程图

按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。

 


               

图5-2 按键处理流程图

定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。

 

 


图5-3 定时器中断流程

时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。

5.3 定时程序设计

单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果MCS-52采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/计数器两种工作模式和4种工作方式。

定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX.

当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。

5.3.1实时时钟实现的基本方法

时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。

秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。

5.3.2 实时时钟程序设计步骤

(1)选择工作方式,计算初值;

(2)采用中断方式进行溢出次数累计;

(3)从秒——分——时的计时是通过累加和数值比较实现的;

(4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部RAM中要设置显示缓冲区,共6个地址单元。显示缓冲区从左到右依次存放时、分、秒数值;

(5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示

子程序的方法等待中断的到来。

(6)中断服务程序:进行计时操作

(7)加1子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、

分、时加1时共有三种条调用加1子程序,包括三项内容:合字、加1并进行十进制调整、分字。

5.4程序说明

在整个系统中,在单片机的30H、31H和32H中存储当前时间的小时、分钟和秒。由于要用数码管显示当前的时间,必须用到分字和合字,因此在33H、34H、35H、36H、37H和38H中存储当前时间的时十位、时个位、分十位、分个位、秒十位和秒个位,方便显示。

本设计有由四个轻触按键组成的小键盘,这些按键可以任意改变当前的状态。按功能移位键一次,表示当前要校对小时的十位;按第二次,表示当前校对的是小时的个位;按第三次,则表示校对的是分钟的十位;第四次,表示的校对的是分钟的个位。按下数字“+” 键和数字“-”键可在当前校对的数字上相应加上1或者减去1。

本设计采用查表方式,在程序里预先存储两个表格,即日常作息时间表和考试时间表,可以通过手动按键来选择所要执行的时间表。并且用红、绿发光二极管来区别当前所执行的时间表。系统开机后,按功能移位键就可以调整当前的时间,整个系统操作简单,功能明确。

显示数据时,先把要显示的数据送到数据缓冲区SBUF中,再从SBUF中显示。串行口缓冲寄存器SBUF器是可直接寻址的专用寄存器。在物理上,它对应着两个寄存器,一个发送寄存器,一个接收寄存器。CPU写SBUF,就是修改发送寄存器;读SBUF,就是读接收寄存器。接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生写重叠的问题。

总程序

ORG 0000H ;程序入口地址
LJMP START
ORG 000BH ;定时器0中断入口地址
LJMP TIMER_0
K1 BIT P1.0 ;定义调时按键
K2 BIT P1.1 ;定义调分按键
START:
MOV TMOD,#01H ;定时器0,工作模式1
MOV TH0,#03CH
MOV TL0,#0B0H ;赋初值,定时50ms
SETB EA ;开中断总开关
SETB TR0 ;开启定时器0
SETB ET0 ;定时器0中断允许位
MOV R6,#0 ;用于控制走时的基准时钟源,计中断次数
MOV R5,#0 ;R5用于控制扫描按键的时间间隔
MOV 20H,#0 ;秒个位寄存器清零
MOV 21H,#0 ;秒十位寄存器清零
MOV 22H,#0 ;分个位寄存器清零
MOV 23H,#0 ;分十位寄存器清零
MOV 24H,#0 ;时个位寄存器清零
MOV 25H,#0 ;时十位寄存器清零
LJMP DISPLAY
TIMER_0:
CLR EA
INC R6
INC R5

MOV TH0,#03CH
MOV TL0,#0B0H ;重新赋初值,定时50ms
SETB EA
RETI
ADD_TIME:
CJNE R6,#20,EXIT ;定时器中断20次,1秒到
MOV R6,#0
INC 20H
MOV A,20H
CJNE A,#10,EXIT ;如果秒个位等于10,清零
MOV 20H,#00H
INC 21H
MOV A,21H
CJNE A,#6,EXIT ;如果秒十位等于6,清零
MOV 21H,#00H
INC 22H
MIN:
MOV A,22H
CJNE A,#10,EXIT ;如果分个位等于10,清零
MOV 22H,#00H
INC 23H
MOV A,23H
CJNE A,#6,EXIT ;如果分十位等于6,清零
MOV 23H,#00H
INC 24H
HOUR:
MOV A,25H
CJNE A,#2,LOOP ;如果时十位等于2,检查时个位
MOV A,24H
CJNE A,#4,EXIT ;如果时个位等于4,清零
MOV 24H,#00H ;清零时个位
MOV 25H,#00H ;清零时十位
LJMP EXIT
LOOP:
MOV A,24H
CJNE A,#10,EXIT ;如果时个位等于10,清零
MOV 24H,#00H
INC 25H
LJMP EXIT
EXIT:
LJMP DISPLAY ;刷新完毕,跳转到显示
DISPLAY:
MOV DPTR,#TABLE
MOV A,20H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.7
LCALL DELAY
SETB P2.7 ;显示秒个位
MOV A,21H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
LCALL DELAY
SETB P2.6 ;显示秒十位
MOV A,#0BFH
MOV P0,A
CLR P2.5
LCALL DELAY
SETB P2.5 ;显示“-”
MOV A,22H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.4
LCALL DELAY
SETB P2.4 ;显示分个位
MOV A,23H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
LCALL DELAY
SETB P2.3 ;显示分十位
MOV A,#0BFH
MOV P0,A
CLR P2.2
LCALL DELAY
SETB P2.2 ;显示“-”
MOV A,24H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
LCALL DELAY
SETB P2.1 ;显示时个位
MOV DPTR,#TABLE1 ;该位使用TABLE1以消除前置0
MOV A,25H
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
LCALL DELAY
SETB P2.0 ;显示时十位
CJNE R5,#4,EXIT0 ;当R5到4时,扫描按键
MOV R5,#0
KEY_SCAN:
JNB K1,ADD_HOUR
JNB K2,ADD_MIN
LJMP ADD_TIME ;无键按下,跳至走时
ADD_HOUR:
INC 24H ;小时加1
LJMP HOUR ;更新
ADD_MIN:
INC 22H ;分钟加1
LJMP MIN ;更新
EXIT0:
LJMP ADD_TIME
DELAY:
MOV R7,#150 ;扫描延时
DJNZ R7,$
RET
TABLE: ;数码管字形显示编码表
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;字形显示编码
TABLE1:
DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;小时位的十位数编码,该位如果为0则不显示

END ;程序结束

相关推荐