單片機的數位管動态實作
- 74HC138晶片
- 74HC245晶片
# 單片機數位管實作其實很簡單首先你注意兩個問題
1:你要控制是哪一個數位管亮(74HC138)
2:你要控制數位管顯示什麼(74HC245)
74HC138晶片
數位管的位
-
由單片機接口控制輸出
下面是單片機各個接口的真值表:
LED | P2.2 | P2.3 | P2.4 |
---|---|---|---|
LED1: | |||
LED2: | 1 | ||
LED3: | 1 | ||
LED4: | 1 | 1 | |
LED5: | 1 | ||
LED6: | 1 | 1 | |
LED7: | 1 | 1 | |
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};
//顯示的數字0, 1, 2, 3。。。。。
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); //第一個數位管顯示數字0
P0=table[0]; //第一個數位管顯示數字0
P0=0Xff; //第一個數位管顯示數字0
led(2);
P0=table[1];
P0=0Xff;
led(3); //第三個數位管顯示數字2
P0=table[2]; //第三個數位管顯示數字2
P0=0Xff; //第三個數位管顯示數字2
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;
};
}
#有任何意見,希望大家私信指明。