单片机的数码管动态实现
#
单片机数码管实现其实很简单首先你注意两个问题
1:你要控制是哪一个数码管亮(74HC138)
2:你要控制数码管的那个位置亮(74HC245)
74HC138芯片
数码管的位
- 由单片机接口控制输出
下面是单片机各个接口的真值表:
LED |
P2.2 |
P2.3 |
P2.4 |
LED1:
0
0
0
LED2:
0
0
1
LED3:
0
1
0
LED4:
0
1
1
LED5:
1
0
0
LED6:
1
0
1
LED7:
1
1
0
LED8:
1
1
1
- 这是单片机中74HC138芯片的接法
74HC245芯片
数码管各位置代号 |
a |
b |
c |
d |
e |
f |
g |
接口
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
tip:
注意每个接口接低电位时,相应的位置为高亮
一段漂亮的代码片用于自研究,目前尚还不知道为啥数码管不亮—┭┮﹏┭┮
--------------------希望大神指导-------------------
#include <reg52.h>
int code table[]={0x3f,0x03,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f};
sbit HC138A=P2^2;
sbit HC138B=P2^3;
sbit HC138C=P2^4;
void led(int x)
{
if (x==1){ HC138A=0; HC138B=0; HC138C=0; };
if (x==2){ HC138A=0; HC138B=0; HC138C=1; };
if (x==3){ HC138A=0; HC138B=1; HC138C=0; };
if (x==4){ HC138A=0; HC138B=1; HC138C=1; };
if (x==5){ HC138A=1; HC138B=0; HC138C=0; };
if (x==6){ HC138A=1; HC138B=0; HC138C=1; };
if (x==7){ HC138A=1; HC138B=1; HC138C=0; };
if (x==8){ HC138A=1; HC138B=1; HC138C=1; };
}
void main()
{
int x;
while(1)
{
led(1);
P0=table[0];
P0=0Xff;
led(2);
P0=table[1];
P0=0Xff;
led(3);
P0=table[2];
P0=0Xff;
led(4);
P0=table[3];
P0=0Xff;
led(5);
P0=table[4];
P0=0Xff;
led(6);
P0=table[5];
P0=0Xff;
led(7);
P0=table[6];
P0=0Xff;
led(8);
P0=table[7];
P0=0Xff;
};
}
#其实现在我这代码还是有很多小瑕疵,希望大神能致电小白----万分感谢