所谓的动态显示就是数码管不断变化,当变化速度超过人眼的识别范围时看起来就像数码管一直显示。
数码管动态显示时需要用到两个锁存器,一个是段锁存,一个是位锁存。一般开发板上使用的数码管动态显示,一组为八个数码管,这里可以称之为八位,每个数码管为一位,位锁存器就是决定哪一位亮起来,而位锁存器决定亮的那一位显示什么。动态显示一般先传段码,决定下一次显示什么内容,再传位码,使下一位亮起,段码和位码的内容都是事先定义一个全局数组,然后查表实现,一般位码数组内容是不做变化的,想改变显示内容只要改变相应位的段码就行。
定义段码
unsigned char regport[8] = {}; //显示内容自定义
定义位码
unsigned char bitport[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //因为位码的作用是让数码管一个一个按顺序亮,所以一般不做改变。
定义使用的I/O口
#define SEGPORT P0
sbit bit_select = P2^0;
sbit seg_select = P2^1;