找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14223|回复: 6
打印 上一主题 下一主题
收起左侧

c51单片机课程设计数字时钟

  [复制链接]
跳转到指定楼层
楼主

目录

1 引言              1

2 设计目的              2

3 系统方案与总体结构设计              2

3.1系统方案设计              2

3.2数字时钟框图设计              3

4数字时钟的硬件构成              4

4.1 选用芯片简介              4

4.2 LED数码显示器简介              9

5各个模块工作原理及原理图              9

5.1计时模块              10

5.2数字时钟控制模块              10

5.3振荡模块              11

5.4显示模块              11

6系统软件设计              12

6.1软件设计的要点              12

6.2 AT89C51内部定时器/计数器0的使用方法              13

6.3 程序设计流程图              13

7系统调试与总结              14

7.1电路调试              14

7.2软件调试              14

8结论与心得              15

附录A系统原理图              16

附录B 源程序              17

参考文献              23

1 引言

数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,无机械装置,具有更长的使用寿命。数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度,远远超过老式钟表,使其得到了广泛的使用。

该课程设计为数字电子钟的设计。以AT89C51为核心,配合8位7段共阴极LED数码管显示实时数据,按键可以进行数据调整,为用户提供长期、连续、可靠、稳定的工作环境。该数字电子钟有时分秒显示功能以及时间的调整的功能。系统软件设计主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储,并且实现键盘、液晶显示器等各模块的功能,采用汇编语言编程。


关键词: 数字电子钟 单片机 汇编语言

2 设计目的

深化和扩充在单片机原理及相关课程方面的基本知识、基本理论和基本技能熟悉设计过程,了解设计步骤,掌握设计内容,培养设计电路、实现软件编程和编写设计说明书能力的目的,为今后从事相关方面的实际工作打下良好基础。

(1)熟悉AT89C51内部定时器/计数器原理和应用,把理论加以实践;

(2)了解使用单片机处理复杂逻辑的方法;

(3)掌握多位数码动态显示的方法;

(4)掌握多个按键的读键和处理方法。

3 系统方案与总体结构设计3.1系统方案设计

系统采用通用的80C51芯片,显示器为8个共阴极LED数码管,用1个八总线接收/发送器74LS245驱动数码管,因为采用了上述两个芯片,所以在对数码管进行扫描显示时,只需要单片机的8条I/O线就能完成显示功能了。

选用P0.0--P0.7作为显示数据值的输出,连接在八总线接收/发送器74LS245输入端。由于LED数据管点亮时耗电量较大,因此使用了排阻作为电源驱动输出,以保证数码管的正常亮度。单片机的P1.0--P1.4口分别接在S1—S4 4个按键上,以控制“时”,“分”,“秒”的调整。

时间以24小时为一个周期,数字时钟钟的格式为:XX-XX-XX,由左向右分别为:“时-分-秒”(由于没有采用小数点,符号 “-”为分隔“时”“分”“秒”的分隔符)。完成显示由秒加1,一直加1至59,再恢复为00;分加1,一直加1至59,再恢复00;时加1,一直加1至23,再恢复00。

***** 按键功能*****

启动时,数字时钟从00-00-00 开始自动计时;

按键S1控制对“秒”的调整,每按一次时计数值加1;

按键S2控制对“分”的调整,每按一次分计数值加1;

按键S3控制对“时”的调整,每按一次秒计数值加1;

  按键S4用做复位键,在计时过程中,如果按下复位键,则返回00-00-00重新计时。

3.2数字时钟框图设计
数字时钟总体结构框图设计如图3-1所示。

图3-1 数字时钟设计框图

  用AT89C51单片机的定时器/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1开始计时。显示00-00-00的时间,开始计时;P1.0口控制“秒”的调整,每次按键加1s;P1.1口控制“分”的调整,每按一次按键加1min;P1.2口控制“时”的调整,每按一次加1h。计时满23-59-59时,返回00-00-00重新计时。P1.3口用作复位键,在计时过程中,如果按下复位键,则返回00-00-00重新计时。

3.2.1计时模块:

①用AT89C51单片机的定时器/计数器T0产生1s的定时时间,作为秒计数时间;

②当1s产生时,秒计数加1,当加到60s时向分钟位进一位,当分钟位加到60时,向时钟位进一;

③开机时,显示00-00-00,并开始连续计时;

④计时满23-59-59时,返回00-00-00重新开始计时。

3.2.2数字时钟控制模块:

在以上设计基础上,在单片机的P1.0~P1.3口分别接入4个按键。

①P1.0口控制“秒”的调整,每次按键加1s;

②P1.1口控制“分”的调整,每按一次按键加1min;

③P1.2口控制“时”的调整,每按一次加1h;

④P1.3口用作复位键控制,在计时过程中,如果按下复位键,则返回00-00-00重新计时。

3.2.3振荡模块:

晶体振荡器电路给数字时钟提供一个频率稳定准确的12MHz的方波信号,不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。

3.2.4显示模块:

显示电路采用8位7段共阴极LED数码管显示实时数据,采用74LS245增加I/O口的驱动能力。

4数字时钟的硬件构成4.1 选用芯片简介

4.1.1 89C51简介

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机,其引脚图如图4-1所示。

AT89C51提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

1.管脚说明

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写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的一些特殊功能口,如下表所示:

2.口管脚 备选功能

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:来自反向振荡器的输出。

                  

图4-1 89C51单片机引脚图

4.1.2  74LS245简介

74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据,其引脚图如图4-5。当片选端/CE有效时,74LS245的输入/输出方向由DIR控制。74LS245还具有双向三态功能,既可以输出,也可以输入数据。其工作方式如表4-1所示。

                      表4-1 74LS245的工作方式

控制信号

数据传输方向

/E

DIR

L

L

B→A

L

H

A←B

L

X

高阻


由表4-1可知,当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输(接收);DIR=“1”,信号由 A 向 B 传输(发送);当/CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。

图4.3 74LS245管脚图

    若将DIR接固定TTL逻辑电平(高或低),则74LS245变为单向缓冲器,但这种方式是极少采用的。一般都是使用它的双向输出功能。为此,DIR必须可控,使其根据需要变为高电平或低电平,并与/E相结合控制数据传输方向。在单片机系统中,可采用读信号或者写信号实现控制。当/WR有效时数据通过74LS245的B(B0~B7)端输入,由(A1~A8)输出;当/RD有效时数据由A端输入,B端输出。由此可见,由于74LS245芯片具有双向缓冲和驱动作用,很适合作单片机的数据总线的收发器。

4.2 LED数码显示器简介

LED数码显示器是1种由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,在本设计中用不到小数点,故不予考虑。

LED数码显示器有两种连接方法。 (1)共阳极接法。把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。当阴极端输入低电平时,段发光二极管就导通点亮,而输入高电平时则不点亮。(2)共阴极接法。把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。当阳极端输入高电平时,段发光二极管就导通点亮,而输入低电平时则不点亮。在本设计中所采用的是共阴极LED数码显示器,其引脚排列如图7所示:

  •                       (b)

图4-4 (a)典型LED数码显示器 (b) 典型LED数码显示器共阴极、共阳极接法

5各个模块工作原理及原理图

用AT89C51单片机的定时器/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1开始计时。显示00-00-00的时间,开始计时;P1.0口控制“秒”的调整,每次按键加1s;P1.1口控制“分”的调整,每按一次按键加1min;P1.2口控制“时”的调整,每按一次加1h。计时满23-59-59时,返回00-00-00重新计时。P1.3口用作复位键,在计时过程中,如果按下复位键,则返回00-00-00重新计时。

5.1计时模块

①用AT89C51单片机的定时器/计数器T0产生1s的定时时间,作为秒计数时间;

②当1s产生时,秒计数加1,当加到60s时向分钟位进一位,当分钟位加到60时,向时钟位进一;

③开机时,显示00-00-00,并开始连续计时;

④计时满23-59-59时,返回00-00-00重新开始计时。

5.2数字时钟控制模块

在以上设计基础上,在单片机的P1.0~P1.3口分别接入4个按键S1、S2、S3、S4。控制模块的原理图如图5-1

①P1.0口控制“秒”的调整,每次按键加1s,;

②P1.1口控制“分”的调整,每按一次按键加1min;

③P1.2口控制“时”的调整,每按一次加1h;

④P1.3口用作复位键控制,在计时过程中,如果按下复位键,则返回00-00-00重新计时。

                图5-1  数字时钟控制模块原理图

5.3振荡模块

晶体振荡器电路给数字时钟提供一个频率稳定准确的12MHz的方波信号,不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路振荡模块的原理图如图5-2。

图5-2 振荡模块电路原理图

5.4显示模块

显示电路采用8位7段共阴极LED数码管显示实时数据,采用74LS245增加I/O口的驱动能力。

图5-3显示模块电路原理图

6系统软件设计6.1软件设计的要点

由于电路设计得极其巧妙,许多功能都可以由硬件完成,因此软件设计就比较简单了。下面介绍软件设计的要点:

主程序:首先进行初始化,设置数字时钟的计时初值为00-00-00,启动T0进行50ms定时,且允许T0中断。然后检测S1—S4是否按下,当按键S1—S4按下时,转入时、分、秒计数值的调整程序。

定时器T0中断子程序:中断服务子程序的作用是进行时、分、秒的计时与显示。定时器T0用于定时,定时周期设为50ms,中断累计20次(即1s)。

时、分、秒计数值调整子程序TIME:时间计数单元在30H(s),31H(min),32H(h)内存单元中,在计数单元中采用组合BCD码计数。TIME子程序的作用是当满1秒时,对秒计数单元进行加1操作,满60向分进位;对分计数单元进行加1操作,满60向时进位;对时计数单元进行加1操作,满24清零。

显示子程序VIEW:VIEW子程序的作用是分别将时间计数单元30H(s),31H(min),32H(h)中的十进制时间值转化为个位和十位存放在显示缓冲区中,显示缓冲区地址为30H--34H。其中30H--31H存放秒数据,31H--32H存放分数据,33H--33H存放时数据。

扫描子程序SCAN:SCAN子程序的作用是把显示缓冲区中的数据依次送往显示器显示。,所以用10H和40H单元存放扫描指针,即10H和40H中存放的是数码管的序号,显示时,只需取出30H--34H某一地址中的数据,P0口作为扫描值输出,就能保证数码管的正常工作。  

6.2 AT89C51内部定时器/计数器0的使用方法

AT89C51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位的定时方式或8位的定时方式,只要通过特殊功能寄存器TMOD即可完成。定时/计数器何时工作也是通过TCON特殊功能寄存器来设置的。

在本课程设计中,选择16位定时工作方式。对于T0来说,系统时钟为12MHZ,最大定时时间65.536ms,无法达到1s的定时,因此必须通过软件处理来解决这个问题。假设取T0的最大定时时间为50ms。既要定时1s的需要经过20次的50ms定时。对于这20次计数,可采用软件的方法来统计。

设定TMOD=00000001H,即设置定时/计数器0工作在方式1。

给定时/计数器T0的TH0、TL0预置初值,通过下面的公式可以计算出来,即             TH0=(65536-50000)/256

            TL0=(65536-50000)MOD 256

这样,当定时/计数器0计满50ms时,产生一个中断,可以在中断服务程序中对中断次数加以统计,以实现数字钟的逻辑功能。

6.3 程序设计流程图

综合以上内容设计出数字钟程序设计流程图,如图6-1所示。

                         图6-1 数字钟程序设计流程图
7系统调试与总结7.1电路调试

把相应编译好的目标源程序代码加载到单片机芯片AT89C51,可接+5V电压电源即开始进行硬件电路的调试工作。如果显示结果不符合设计要求,即检查代码程序是否符合硬件电路的设计,若有错即进行相应的修改,编译后,再进行硬件电路的调试工作。如此反复操作,直到调试出正确的结果。

7.2软件调试

(1)在计算机上运行程序调试软件Keill,进行程序调试,若显示0错误(S), 0警告(S)即证明程序代码正确。

(2)在Protel软件画好的电路原理图中加载程序代码到单片机芯片AT89C51中,进行模拟仿真。若出现错误,查看错误后进行相应的修改再进行调试与模拟仿真,直到调试出正确的结果。

系统调试完成之后,系统上电进行功能测试,通过测试观察到,系统上电后数码管上显示时间:00-00-00。

按下S1键进行“秒”的调整,每次按键加1s如图按S1两次,LED数码管由00-00-00显示为00-00-02,如图7-1所示

        图7-1 系统由初始状态进行秒调整两次后的仿真图

按下S3键进行“时”的调整,每按一次加1h;

按下S4键进行复位键控制,在计时过程中,按下复位键,则返回00-00-00重新计时。

通过测试,本设按下S2键进行“分”的调整,每按一次按键加1min;

计实现了数字电子钟的基本功能,且系统工作稳定。

8结论与心得

本单片机数字电子钟系统的功能显示格式为XX-XX-XX即时-分-秒,采用24小时制显示,并且设置4个独立式按键进行时间的调整,并且可以按自己的要求设置扩展小键盘个数,经过测试,系统的可靠性基本上能够达到数字电子钟的设计要求,同时本单片机数字电子钟系统具有扩展性。

课程设计是培养学生综合运用所学知识,发现实际问题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。

在此次课程设计中,在学习新知识的同时,把在课程中学到的理论和知识运用到了实践中去,更进一步地熟悉掌握了单片机的结构及掌握了其工作原理和具体的使用方法与相关元件的计算方法、使用方法,了解了电路的开发和制作及课程设计报告的的编写。加深了相关理论知识及专业知识的掌握度,增强了自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题、的能力,更深刻的体会到了理论联系实际的重要性,进一步掌握画图软件的使用和提高相应的画图操作水平及技巧。

附录A系统原理图

附录B 源程序

【汇编语言源程序代码】

见附件:


完整的Word格式文档51黑下载地址:

17高.doc (522.5 KB, 下载次数: 151)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:362435 发表于 2018-6-30 21:02 | 只看该作者
感谢大神 好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:373059 发表于 2018-7-17 09:59 | 只看该作者
xiexie
回复

使用道具 举报

地板
ID:320832 发表于 2018-9-13 16:20 | 只看该作者
下载后变成了乱码

图片1.png (125.88 KB, 下载次数: 120)

图片1.png
回复

使用道具 举报

5#
ID:473728 发表于 2019-1-31 20:24 | 只看该作者
您好,楼主,emm下载了附件,但是我学的是c语言,没学过汇编看不懂怎么办,,程序能发一个c语言版本的么?求回复求私聊
回复

使用道具 举报

6#
ID:583479 发表于 2019-12-11 08:27 来自手机 | 只看该作者
加一,能发一个c语言版本吗,求私聊,在线等
回复

使用道具 举报

7#
ID:924259 发表于 2021-5-26 22:53 | 只看该作者
仿真不行,垃圾
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表