×
嵌入式 > 嵌入式开发 > 详情

51单片机-数码管

发布时间:2020-08-24 发布时间:
|



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





如图,这里有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();
}
}
}

想让哪个数码管亮多少就亮多少:


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
一只老鸟的嵌入式ARM学习心得