数码管显示

来源:互联网 发布:obs点歌软件 编辑:程序博客网 时间:2024/05/21 12:51

一、区分数码管的类别

共阴数码管:即所有数码管的阴极接在一起。要使某个数码管点亮,只需置上高电平,代码中该位置'1'

共阳数码管:即所有数码管的阳极接在一起。要使某个数码管点亮,只需置上低电平,代码中该位置'0'


二、单个数码管显示

a~h:表示单个数码管上面的8个LED。

根据共阴共阳的特性,点亮相应的LED,组成想要的数字(一般由取模软件得到)

如:共阴数码管显示数字'0,即代码中该数码管赋值0x3F (0011 1111)


三、多位数码管显示

1、区分段、位:段指的是单个数码管上的8段LED;位指的是数码管所在的位置

2、存在问题:

a)各个数码管轮流闪烁显示——原因:数码管逐个显示的间隔时间长

b)数码管显示存在乱码残影——原因:数码管显示存在“鬼影”,即没有做消隐处理


四、数码管消隐

对不需要显示的数码管进行关闭操作即可。


五、消除鬼影,残影

1、为什么存在“鬼影”

程序执行代码需要时间,存在瞬态,上一代码数据,会造成下一代码数据的干扰

2、如何消除鬼影

总的来说,就是对端口赋新值时,先清空上一次的数据。

法1)操作段前,先关闭段

//个位DataPort = 0xff;//关闭段DataPort = Data[curNum%10];//设置段,两个段操作之间有其他运算代码,即有时间间隔Location = 0x02;//设置位delay(20);//延时//十位DataPort = 0xff;DataPort = Data[curNum/10];Location = 0x01;delay(20);

法2)操作位前,先关闭位

/*ERRORDataPort = Data[curNum%10];//设置段Location = 0x00;//关闭位Location = 0x02;//设置位,两个位操作没有时间间隔,显示仍然会有残影*///个位DataPort = Data[curNum%10];//设置段Location = 0x02;//设置位delay(20);//延时//十位Location = 0x00;DataPort = Data[curNum/10];Location = 0x01;delay(20);

注意:对段/位的关闭、赋值的操作不能是上下语句关系,必须要有时间间隔


六、连接数码管

1、可以数码管引脚直接与单片机连接,但是对于共阴数码管,因为单片机引脚驱动能力不足,需要外加电源驱动

2、使用74HC573节省I/O口

代码中的位锁存,段锁存(LATCH),其实分别控制两个74HC573的使能端。

哪个使能有效,P0口的数据就往位或者段传送,达到对位和段的分别控制。



0 0
原创粉丝点击