今日学习组内前辈留下的代码,数码管动态扫描显示,发现前辈们用的是联合体定义扫描引脚,如:
typedef union{
unsigned char a[2];
typedef struct{
unsigned char data0;
unsigned char data1;
}data;
}seg;
此时数组a[2]和结构体里的data0和data1共用地址空间,修改数组或者data会产生相同的结果,如果此时将其定义为扫描的引脚,操作单个引脚时使用data位操作,操作全部引脚时直接使用数组操作更加方便。
数码管的阴、阳极扫描,共用口拉低或者拉高,对另外的引脚拉高或者拉低即可实现扫描显示,扫描频率大于等于100HZ即可无闪烁(人眼无法察觉)。