目录
一、LED数码管介绍
中间是二极管,电流只能从下面流向上面,所有接口共用一个阴极,上面接口接地,
给下面接口输入1时,LED二极管亮;输入0时,LED二极管灭
4、四位一体的数码管
原理:控制DIG1~DIG4接地,选中我们想要点亮数码管LED灯,因为我们是共阴极的方式,所以另一端进行输入1高电平操作,可以点亮我LED灯,下端接出来的引脚控制我们8字数码管的某一个LED发光二极管,在我们选中DIG1接地时,我们给下端0110 0000时,LED段B,C亮,这是第一个LED数码管会显示1;
二、数码管点亮的基本原理与思路
1、数码管的模块原理图详解
(1)想要点亮数码管的LED灯首先我们要先选中你想要点亮的第几个数码管,也就是图中所示的LED1~LED8
(2)LED1~LED8的另一个端口接在了我们138译码器上面,由138译码器进行控制
138译码器的工作原理:Y0~Y7 有上划线,代表低电平有效,如果没有上划线,表示高电平有效。通过138译码器,能够使由左侧P22、P23、P24三个端口来控制选择右边的8个端口LED1~LED8.左下角G1、G2A和G2B为使能端,当G1接VCC,G2A和G2B接地,138译码器才会工作。
(3)我们选中想要点亮的第几个数码管后,输入我们想要点亮的数字
我们的开发板接在了74HC245芯片上,74HC245为双向数据缓冲器,右上角VDD是电源接VCC,OE为使能端口,低电平有效,接地时芯片才开始工作,左下角GND为接地。左侧A0和右侧B0为一 一对应的关系,左上角DIR为控制数据方向端口,如果DIR接高电平是将左侧数据A0~A8送到右侧B0~B8,如果DIR接低电平,是将右侧数据B0~B8送到左侧A0~A8,由于在电路板上LE始终与VCC连接,因此这里74HC245的作用是将左侧数据A0~A8送到右侧B0~B8
数码管段码表
(4)使用74HC245芯片的作用
由于数码管为共阴极,给数码管下面接口输入阳码时,LED才亮,但是直接将P0~P7的高电平输入到数码管时,89C52RC单片机的I/O口是弱上拉类型,单片机高电平驱动能力有限,输出的最大电流不能太大,而低电平驱动能力更强一些。因此通过从P0~P7的数据,经过74HC245,就会使输入数码管的电流更小,这样驱动能力会更强一些
三、代码的实现
1、静态数码管的显示
2、动态数码管的显示
(1)数码管的消影
在Nixite(Location,Number)函数中,Location左边数字,段选控制选择哪个数码管亮;Number右边数字,位选控制数码管显示的值
函数运行过程为(第一个函数)位选、段选、(第二个函数)位选、段选、(第三个函数)位选、段选。
由于人的视觉暂留效果,并且没有加延时,单片机运行速度太快,在上个函数的段选和下个函数位选之间会发生显示数据串位的问题,如下图所示
所以为了消除串位的现象,需要在每一个函数段选后,将其消0,这样就能实现动态数码管显示