## 數碼管顯示原理
根據數碼管共陰共陽連線,通過微控制器給微控制器I/O口送高低電平就可以控制數碼管每一段的顯示。
## 共陰級數碼管編碼
符號 | 編碼 | 符號 | 編碼 | 符號 | 編碼 | 符號 | 編碼 |
---|---|---|---|---|---|---|---|
0 | 0x3f | 4 | 0x66 | 8 | 0x7f | c | 0x39 |
1 | 0x06 | 5 | 0x6d | 9 | 0x6f | d | 0x5e |
2 | 0x5b | 6 | 0x7d | A | 0x77 | E | 0x79 |
3 | 0x4f | 7 | 0x07 | b | 0x7c | F | 0x71 |
#include <reg51.h>
unsigned char code LED[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};//數碼管顯示0-9數位編碼,寫成陣列直接給I/O口送進陣列元素就歐克
void main(){
P1=LED[1];//可以根據電路圖所接微控制器I/O口改變向數碼管介面
}
當數碼管多位一體時,它們內部的公共端是獨立的,而負責顯示什麼數位的段線全部連線在一起, 獨立的公共端可以控制多位 一體中的哪一 位數碼管點亮,連線在-起的段線可以控制這個能點亮數碼管亮什麼數位,通常我們把公共端叫做「位選線」,連線在一起的段線叫做「段選線」,有了這兩個線後,通過微控制器及外部驅動電路,就可以控制任意的數碼管顯示任意的數位了。
一般單位數碼管有10個引腳,二位數碼管也是10個引腳,四位數碼管是12個引腳,關於具體的引腳及段、位標號大家可以查詢相關資料,最簡單的辦法是用數位萬用表測量。 若沒有數位萬用表,也可用直流電源串接1k電阻後測量,將測量結果進行記錄,通過統計便可繪製出引腳標號。
多位數碼管顯示需要用到段選與位選訊號,也就是當你用到那一位數碼管的時候,需要開啟位選端,只有這樣才可以向那一位傳輸資料,傳輸段選訊號時還要開啟段選段,這樣才能可控的任意選擇給哪一位數碼管送入那一段資料;
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint x);
sbit wela = P2^7; //定義位選IO口
sbit dula = P2^6‘、//定義段選IO口
uchar code D[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};//0-9段選編碼
uchar code W[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//I/O口位選編碼
void main()
{
uint i;
for(i=0;i<8;i++)//i可以控制幾位數碼管
{
delay(500);
wela=1;
P0=W[i];
wela=0;
P0=0xff;//消隱防止數碼管亮的不均衡
dula=1;
P0=D[i];
dula=0;
}
}
//延時函數 這裡是軟體程式碼空執行延時
void delay(uint x){
uint i,j;
for(i=0;i<x;i++){
for(j=0;j<110;j++);
}
}