51单片机-数码管

共阴极是指所有发光二极管阴极连接在一起,这个共阴极可以用来做片选。

如图,这里有8个发光二极管,到底哪个亮需要进行片选。
段选:8段数码管每一段的控制段叫段选
位选:就是进行哪个8段数码管亮的选择
TX-1C使用两片锁存器74HC573实现位选和段选

这里的D0"7是连在单片机的I/O口上,当为高电平时,Q与D中的数据一致,遇到负跳变沿时Q中的
数据保持住,D中的数据即使变化也不会影响Q。
MCUVersion2使用的是74HC245和38译码器74HC138


74HC245有一个缓冲和驱动的作用,这样可以使led显示的更加稳定,
数码管显示分动态显示和静态显示,每个数码管的状态都是被不断更新的,利用的人的视觉暂留,
使看上去数值保持在一个固定的位置上,人的视觉是有延续性的,当一个东西不断变化时,变化
的时间小于人眼的视觉暂留时间的话,人的眼睛会以为这个东西是连续的。静态显示是一幅画面
放在那看上去是不动的而它确实是不动的。动态扫描显示即轮流向各位数码管送出字型码和相应
位选,利用发光管的余晖和视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
静态显示:
数码管从左向右依次点亮:
#include <reg52.h>
void delay(){
int i,j;
for(i = 0; i < 0xff; i++)
for(j = 0; j < 0xff; j++)
;
}
unsigned int code duan[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07};
unsigned int code wei[]={
0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
void main(){
while(1){
int i;
P2 = 0x39;
for(i = 0; i < 8; i++){
P2 = duan[ i];
P1 = wei[ i];
delay();
}
}
}
想让哪个数码管亮多少就亮多少:
评论