基于51单片机实现时间显示及闹钟设置

这篇具有很好参考价值的文章主要介绍了基于51单片机实现时间显示及闹钟设置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

本次为大学中的一次创新实验,当时老师叫我自己拿个单片机去玩,为了赶时间就做了个简单的时间显示和闹钟设置,因为比较简单所以也把代码附上了。

二、原理

1.单片机
单片机内部内部资源:Flash——程序存储空间;RAM——数据存储空间;SFR——特殊功能寄存器。51单片机指的是兼容IntelMCS-51体系架构的一系列的单片机。下图为单片机电路。

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

2.LED小灯
LED即发光二极管,俗称 LED 小灯,板子上用的是普通的贴片发光二极管。这种二极管通常的正向导通电压是 1.8V 到 2.2V 之间, 工作电流一般在 1mA~20mA 之间。由于电源从正极到负极有电压差, 并且电路是导通的, 所以就会有电流通过, LED 小灯因为有了电流通过,所以就会直接发光。把右侧的原 GND 处接到单片机 P0.0 引脚上,那么单片机输出一个低电平,就可以让 LED 小灯发光了。
下图为LED电路图。

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

  1. 74HC245芯片
    这个芯片的作用是电流缓冲器,可以稳定小灯和IO口之间的电流,达到稳定电路的作用。74HC245 是个双向缓冲器,1 引脚 DIR 是方向引脚,当这个引脚接高电平的时候,右侧所有的 B 编号的电压都等于左侧 A 编号对应的电压。如果 DIR 引脚接低电平,得到的效果是左侧 A 编号的电压都会等于右侧 B 编号对应的电压。使能引脚 19 脚 OE,叫做输出使能,这个引脚上边有一横,表明是低电平有效,当接了低电平后,74HC245 到双向缓冲器的作用,如果 OE 接了高电平,74HC245 功能不能实现出来。
    下图为74HC245功能图:
    基于51单片机实现时间显示及闹钟设置

  2. 74HC138译码器
    这个芯片由简单的输入逻辑来控制输出逻辑,74HC138 有 1~6 一共是 6 个输入引脚,其中 4、5、6 这三个引脚是使能引脚。ENLED 输入低电平,ADDR3 位置输入高电平,这两个位置都是使能控制端口。
    下图为74HC38原理图:
    基于51单片机实现时间显示及闹钟设置

下图为74HC138真值表:

基于51单片机实现时间显示及闹钟设置

5.定时器
定时器是用来进行定时的。定时器内部有一个寄存器,让它开始计数后,这个寄存器的值每经过一个机器周期就会自动加1,一个机器周期的时间,也就是12/11059200 秒。16位的定时器,也就是2个字节,最大值就是65535, 那么加到65535 后,再加1就溢出,溢出后,这个值会直接变成0。
下图为定时值存储寄存器:
基于51单片机实现时间显示及闹钟设置

下图为TCON定时器控制寄存器的位分配:
基于51单片机实现时间显示及闹钟设置

当TR1 =1定时器值就会每经过一个机器周期自动加1,当TR1 = 0,定时器就会停止加1,其值会保持不变化。TF1是一个标志位,他的作用是告知定时器溢出了。
下图为TMOD——定时器模式寄存器的位分配:

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

下图为定时器模式1示意图:
基于51单片机实现时间显示及闹钟设置

时间的计算方法:
晶振是11.0592M,时钟周期就是1/11059200,机器周期是12/11059200,假如要定时 20ms,就是 0.02 秒,经过18432个时间周期就可以得到0.02秒。16位定时器的溢出值是65536,给它一个初值47104,经过18432个时钟周期后溢出,TF0的值改变,刚好经过0.02s。

6.数码管
数码管分为共阳和共阴两种, 共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的, 阴极是公共端,由阳极来控制单个小灯的亮灭。数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段,而实际上,这 8 个段每一段都是一个 LED 小灯,所以一个数码管就是由 8 个 LED 小灯组成的。
下图为数码管原理图:
基于51单片机实现时间显示及闹钟设置

开发板上一共有8个数码管,它们也都由74HC38控制三极管的导通来控制整个数码管的使能。
下图为6个数码管示意图:
基于51单片机实现时间显示及闹钟设置

下图为数码管硬件驱动原理图:
基于51单片机实现时间显示及闹钟设置

下图为数码管真值表:

基于51单片机实现时间显示及闹钟设置

多个数码管显示数字的时候,使用74HC38轮流点亮数码管(一个时刻内只有一个数码管是亮的) ,利用人眼的视觉暂留现象(也叫余辉效应) ,就可以做到看起来是所有数码管都同时亮了,这就是动态显示,也叫做动态扫描。

7.独立按键
独立式按键4 条输入线接到单片机的 IO 口上,当按键 K1 按下时,+5V 通过电阻 R1 然后再通过按键 K1 最终进入 GND 形成一条通路,那么这条线路的全部电压都加到了 R1 这个电阻上, KeyIn1 这个引脚就是个低电平。当松开按键后,线路断开,就不会有电流通过,那么 KeyIn1 和+5V 就应该是等电位,是一个高电平。就可以通过 KeyIn1 这个 IO 口的高低电平来判断是否有按键按下。
下图为独立式按键原理图:

基于51单片机实现时间显示及闹钟设置

8.矩阵按键
矩阵按键使用 8 个 IO 口来实现了 16 个按键。
下图为矩阵按键原理图:
基于51单片机实现时间显示及闹钟设置

通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开, 而是在闭合和断开的瞬间伴随了一连串的抖动。抖动时间是由按键的机械特性决定的, 一般都会在 10ms 以内, 为了确保程序对按键的一次闭合或者一次断开只响应一次, 必须进行按键的消抖处理。当检测到按键状态变化时, 不是立即去响应动作, 而是先等待闭合或断开稳定后再进行处理。按键消抖可分为硬件消抖和软件消抖。

基于51单片机实现时间显示及闹钟设置

硬件消抖就是在按键上并联一个电容, 如下图所示, 利用电容的充放电特性来对抖动过程中产生的电压毛刺进行平滑处理,从而实现消抖。
基于51单片机实现时间显示及闹钟设置

软件消抖就是当检测到按键状态变化后,先等待一个 10ms 左右的延时时间,让抖动消失后再进行一次按键状态检测,如果与刚才检测到的状态相同,就可以确认按键已经稳定的动作了。

9.蜂鸣器
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。 按照驱动方式分为有源蜂鸣器和无源蜂鸣器。如下图给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响。 而无源蜂鸣器内部是不带振荡源的, 要让他响必须给 500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目。
基于51单片机实现时间显示及闹钟设置

电路需要用三极管驱动,并且加了一个 100 欧的电阻作为限流电阻。此外还加了一个 D4 二极管,这个二极管叫做续流二极管。当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。电流经过 D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。

三、步骤

1.Keil软件设置
① 新建工程

基于51单片机实现时间显示及闹钟设置

② 选择芯片型号

基于51单片机实现时间显示及闹钟设置

③ 新建文件并添加

基于51单片机实现时间显示及闹钟设置

2.流水灯程序编写

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

3.时间显示及闹钟设置程序编写

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

基于51单片机实现时间显示及闹钟设置

4.矩阵按键主程序编写
基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

5.编译及下载程序
点击keil软件的编译按钮,生成hex文件,使用STC-LSP软件将hex文件下载到单片机上。

基于51单片机实现时间显示及闹钟设置

四、结果

1.时间显示
按下矩阵键盘1后,执行时间显示功能,由于数码管只有8位,所以从左边起第一位到第六位都显示时间,起始时间为23时59分50秒,经过10秒后,会自动归零,显示为0时0分0秒。

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

在时间显示功能下,按下独立键盘K1,K2调整闹钟的小时部分,显示在数码管右边起第一第二位,如下图表示设置闹钟小时部分为23
基于51单片机实现时间显示及闹钟设置

按下独立键盘K3、K4键调整闹钟的分钟部分,下图为调整闹钟分钟部分为59,所以设置的闹钟为23:59。当目前显示的时间为闹钟所设置的时间时,蜂鸣器就会响起,实现闹钟的功能。

基于51单片机实现时间显示及闹钟设置

2.日期显示
按下矩阵键盘2号键,执行日期显示程序,下图为显示日期为2021年1月6日
由于只有4个按键,所以调整日历的时候K3、K4用于调整天数,K1、K2用于调整月份,当月份大于12时,年份自动加一,当月份小于1时,年份自动减一,实现了四个按键调整年月日的功能。

基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置
基于51单片机实现时间显示及闹钟设置

3.流水灯显示
增加流水灯显示提高气氛,如下图按下矩阵键盘3号键进行流水灯显示。
基于51单片机实现时间显示及闹钟设置

五、结果分析

本次实验使用定时器实现了时钟显示和日期显示,并能综合使用独立按键和矩阵按键实现多个功能,提高了该项目的实用性。闹钟设置则能实现按时提醒,丰富了应用场景。通过使用74HC245芯片稳定电流,达到保护电路的作用,使用74HC138译码器,实现数码管的同时显示,由于数码管显示速度过快会导致有残影,所以加上延时函数和p0=0x00语句来达到消影的效果。在进行按键函数编写时,按键往往存在抖动,所以为了提高按键的稳定性,需要进行按键消抖,矩阵按键用于功能选择,独立按键用于闹钟或者日期调整,这样做可以提高程序的实用性,但仍存在优化的空间。文章来源地址https://www.toymoban.com/news/detail-470517.html

六、总结

 本次实验感觉工程量还是不小的,由于时间也比较紧迫,所以在这几段时间内都花了比较长的时间来做实验,前期主要是学习单片机各种芯片的功能,首先掌握了74HC245芯片的稳流功能,知道它在LED显示中的重要作用。为了实现数码管同时显示时间,需要用到数码管的动态扫描,所以也学习了数码管的知识。闹钟的实现这一块想了好久,因为没有足够的数码管来显示闹钟,最后折中想出用六个数码管显示时间,剩余的两位来显示闹钟的小时部分和分钟部分,当按下的按键要调整闹钟的小时时,则显示小时部分,当按下的按键要调整闹钟的分钟时,则显示分钟部分。一开始想通过点阵来显示日期,但发现8X8的点阵没办法显示完整的日期,最后还是显示在数码管上,通过矩阵按键来选择要显示的是时间还是日期。一开始编写代码的时候总是报错,但最后也通过软件的提示信息找出报错的原因,也学会了使用extern关键字来使用其他文件的函数,提高了程序各个文件的关联性,这次实验让自己学习到了很多东西,锻炼了使用C语言编写程序的能力,也是自己收获最大的一次实验,虽然实验过程中会犯错,但只有肯学习、肯下功夫,就没有解决不了的困难。

到了这里,关于基于51单片机实现时间显示及闹钟设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)

    wx供重浩:创享日记 对话框发送:单片机浇花 获取完整源码源文件+仿真源文件+原理图源文件+论文报告等 单片机土壤湿度检测及自动浇花系统仿真(带时间显示) 具体功能: (1)液晶第一行显示实际湿度,液晶第二行显示当前时间; (2)按键说明:减键、加键、设置键。

    2024年02月05日
    浏览(48)
  • 51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真+程序+原理图+报告+讲解视频)

    51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真+程序+原理图+报告+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0046 本设计旨在设计一个基于51单片机的多功能数字时钟闹钟proteus仿真设计,可以显示时、分、秒,并且可以设置时

    2024年02月09日
    浏览(45)
  • 51单片机实验三:数码管显示时钟 按键调节时间时闪烁提示

    功能效果:1.时分秒的动态显示。2.用三个按键实现时分秒的修改,调节的数字闪烁提示。  

    2024年02月11日
    浏览(41)
  • 7.基于51单片机1602显示

    目录 一,什么是1602?  二,管脚功能 特性 特征应用  三,字符集 五,显示汉字和数字代码 六,仿真 602液晶也叫 1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,

    2024年02月03日
    浏览(44)
  • 51单片机基于时间片轮转的简单rtos

    早就想写写这个了,正好赶上有点时间,写了一下基于51单片机的时间片轮转调度系统,简单的rtos,呵呵。直接上代码。 虽然简单,也可以继续学习了。

    2024年02月02日
    浏览(38)
  • C51单片机的电子时钟(数码管显示+独立按键模块修改及暂停时间)

    IMG_1120 通过查看这三个原理图我们可以得知控制K1、K2、K3及K4是通过P31、P30、P32及P33来实现的,控制8个数码管是P22、P23及P24来实现, 控制发光二极管则由P00-P07来实现。 代码分为三部分分别为main.c、key.h、key.c scankey()函数的主要代码,通过软件入手提高系统的可靠性,防止外

    2024年02月05日
    浏览(54)
  • 基于51单片机点阵汉字显示程序设计

    本次实践是用51单片机最小系统为核心,并使用4块8×8LED点阵组成的16×16LED点阵、2块74HC595位移寄存器芯片作为16×16LED点阵的行驱动、2块74HC138译码器芯片作为16×16LED点阵的列驱动、和8个独立按键组成的51单片机系统,实现汉字在LED点阵屏幕上进行多种功能的显示:实现静态显

    2024年02月05日
    浏览(44)
  • 基于51单片机的超声波测距及温度显示

    (仿真+程序+PCB+原理图+设计报告) 功能介绍 具体功能: 1.超声波测距传感器HC-SR04、温度传感器DS18B20将检测的数据传给51单片机; 2.LCD1602实时显示测得的距离和温度; 3.按键可以设置距离的上下限; 4.距离超过设定范围,蜂鸣器+LED产生声光报警; ​演示视频: 基于5

    2024年04月24日
    浏览(51)
  • 基于51单片机带显示器的音乐盒设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87512938?spm=1001.2014.3001.5503 源码获取 摘 要 单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。他的

    2024年02月06日
    浏览(48)
  • 基于51单片机驱动MPU6050模块(LCD1602显示)

    @TOC MPU-6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,可用IIC接口连接一个第三方的数字传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包