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

文章目录
一、介绍
本次为大学中的一次创新实验,当时老师叫我自己拿个单片机去玩,为了赶时间就做了个简单的时间显示和闹钟设置,因为比较简单所以也把代码附上了 。
二、原理
1.单片机
单片机内部内部资源:Flash——程序存储空间;RAM——数据存储空间;SFR——特殊功能寄存器 。51单片机指的是兼容-51体系架构的一系列的单片机 。下图为单片机电路 。
2.LED小灯
LED即发光二极管,俗称 LED 小灯,板子上用的是普通的贴片发光二极管 。这种二极管通常的正向导通电压是 1.8V 到 2.2V 之间, 工作电流一般在 1mA~20mA 之间 。由于电源从正极到负极有电压差, 并且电路是导通的, 所以就会有电流通过, LED 小灯因为有了电流通过,所以就会直接发光 。把右侧的原 GND 处接到单片机 P0.0 引脚上,那么单片机输出一个低电平,就可以让 LED 小灯发光了 。
下图为LED电路图 。
芯片
这个芯片的作用是电流缓冲器,可以稳定小灯和IO口之间的电流,达到稳定电路的作用 。是个双向缓冲器,1 引脚 DIR 是方向引脚,当这个引脚接高电平的时候,右侧所有的 B 编号的电压都等于左侧 A 编号对应的电压 。如果 DIR 引脚接低电平,得到的效果是左侧 A 编号的电压都会等于右侧 B 编号对应的电压 。使能引脚 19 脚 OE,叫做输出使能,这个引脚上边有一横,表明是低电平有效,当接了低电平后, 到双向缓冲器的作用,如果 OE 接了高电平, 功能不能实现出来 。
下图为功能图:
译码器
这个芯片由简单的输入逻辑来控制输出逻辑,有 1~6 一共是 6 个输入引脚,其中 4、5、6 这三个引脚是使能引脚 。ENLED 输入低电平,ADDR3 位置输入高电平,这两个位置都是使能控制端口 。
下图为原理图:
下图为真值表:
5.定时器
定时器是用来进行定时的 。定时器内部有一个寄存器,让它开始计数后,这个寄存器的值每经过一个机器周期就会自动加1,一个机器周期的时间,也就是12/ 秒 。16位的定时器,也就是2个字节,最大值就是65535, 那么加到65535 后,再加1就溢出,溢出后,这个值会直接变成0 。
下图为定时值存储寄存器:
下图为TCON定时器控制寄存器的位分配:
当TR1 =1定时器值就会每经过一个机器周期自动加1,当TR1 = 0,定时器就会停止加1,其值会保持不变化 。TF1是一个标志位,他的作用是告知定时器溢出了 。
下图为TMOD——定时器模式寄存器的位分配:
下图为定时器模式1示意图:
时间的计算方法:
晶振是11.0592M,时钟周期就是1/,机器周期是12/,假如要定时 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 小灯组成的 。
下图为数码管原理图:
开发板上一共有8个数码管,它们也都由控制三极管的导通来控制整个数码管的使能 。
下图为6个数码管示意图:
下图为数码管硬件驱动原理图:
下图为数码管真值表:
多个数码管显示数字的时候,使用轮流点亮数码管(一个时刻内只有一个数码管是亮的) ,利用人眼的视觉暂留现象(也叫余辉效应) ,就可以做到看起来是所有数码管都同时亮了,这就是动态显示,也叫做动态扫描 。