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


7.独立按键
独立式按键4 条输入线接到单片机的 IO 口上,当按键 K1 按下时,+5V 通过电阻 R1 然后再通过按键 K1 最终进入 GND 形成一条通路,那么这条线路的全部电压都加到了 R1 这个电阻上,这个引脚就是个低电平 。当松开按键后,线路断开,就不会有电流通过,那么和+5V 就应该是等电位,是一个高电平 。就可以通过这个 IO 口的高低电平来判断是否有按键按下 。
下图为独立式按键原理图:
8.矩阵按键
矩阵按键使用 8 个 IO 口来实现了 16 个按键 。
下图为矩阵按键原理图:
通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开, 而是在闭合和断开的瞬间伴随了一连串的抖动 。抖动时间是由按键的机械特性决定的, 一般都会在 10ms 以内, 为了确保程序对按键的一次闭合或者一次断开只响应一次, 必须进行按键的消抖处理 。当检测到按键状态变化时, 不是立即去响应动作, 而是先等待闭合或断开稳定后再进行处理 。按键消抖可分为硬件消抖和软件消抖 。
硬件消抖就是在按键上并联一个电容, 如下图所示, 利用电容的充放电特性来对抖动过程中产生的电压毛刺进行平滑处理,从而实现消抖 。
软件消抖就是当检测到按键状态变化后,先等待一个 10ms 左右的延时时间,让抖动消失后再进行一次按键状态检测,如果与刚才检测到的状态相同,就可以确认按键已经稳定的动作了 。
9.蜂鸣器
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器 。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小 。按照驱动方式分为有源蜂鸣器和无源蜂鸣器 。如下图给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响 。而无源蜂鸣器内部是不带振荡源的, 要让他响必须给 500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响 。无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目 。
电路需要用三极管驱动,并且加了一个 100 欧的电阻作为限流电阻 。此外还加了一个 D4 二极管,这个二极管叫做续流二极管 。当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器 。电流经过 D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击 。
三、步骤
1.Keil软件设置
①新建工程
②选择芯片型号
③新建文件并添加
2.流水灯程序编写
3.时间显示及闹钟设置程序编写

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

文章插图
4.矩阵按键主程序编写
5.编译及下载程序
点击keil软件的编译按钮,生成hex文件,使用STC-LSP软件将hex文件下载到单片机上 。
四、结果
1.时间显示
按下矩阵键盘1后,执行时间显示功能,由于数码管只有8位,所以从左边起第一位到第六位都显示时间,起始时间为23时59分50秒,经过10秒后,会自动归零,显示为0时0分0秒 。
在时间显示功能下,按下独立键盘K1,K2调整闹钟的小时部分,显示在数码管右边起第一第二位,如下图表示设置闹钟小时部分为23
按下独立键盘K3、K4键调整闹钟的分钟部分,下图为调整闹钟分钟部分为59,所以设置的闹钟为23:59 。当目前显示的时间为闹钟所设置的时间时,蜂鸣器就会响起,实现闹钟的功能 。
2.日期显示
按下矩阵键盘2号键,执行日期显示程序,下图为显示日期为2021年1月6日