?
數(shù)碼管靜態(tài)顯示其實(shí)在實(shí)際應(yīng)用中很少,除非項(xiàng)目中就只用到了一位數(shù)碼管顯示,否則的話靜態(tài)顯示非常占用IO口。但是,靜態(tài)顯示又是動(dòng)態(tài)顯示的基礎(chǔ),所以,在這里我打算跟大家分享一下,數(shù)碼管靜態(tài)顯示的工作原理和編程方法。
一、電路原理圖

備注:這是一個(gè)6位數(shù)碼管的電路,在本項(xiàng)目中我們只用到其中的一個(gè),電路中74LS04電路在這里主要是用作驅(qū)動(dòng)芯片,用于提高單片機(jī)IO口的驅(qū)動(dòng)能力。
二、相關(guān)知識(shí)
1、數(shù)碼管的結(jié)構(gòu)


數(shù)碼管內(nèi)部結(jié)構(gòu)其實(shí)就是由8顆LED按照8自形排列組成,而根據(jù)結(jié)構(gòu)的不同,數(shù)碼管可分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管,其中把所有LED的陰極連接到一起做引出端的成為共陰極數(shù)碼管,其中把所有LED的陽(yáng)極連接到一起做引出端的成為共陽(yáng)極數(shù)碼管。
2、取碼方式
數(shù)碼管的使用過(guò)程中,我們通過(guò)點(diǎn)亮數(shù)碼管的不同筆段組合,來(lái)達(dá)到顯示不同數(shù)字的效果,這就是取碼,段碼一般按照16進(jìn)制書(shū)寫。而共陰極數(shù)碼管和共陽(yáng)極數(shù)碼管的的段碼也不一樣。
(1)共陰極數(shù)碼管的取碼方式
“0”的段碼:取碼時(shí)a為對(duì)應(yīng)地位,h對(duì)應(yīng)高位

“1”的段碼:取碼時(shí)a為對(duì)應(yīng)地位,h對(duì)應(yīng)高位

根據(jù)這種方式我們可以總結(jié)得出,共陰極數(shù)碼管的段碼表
| 0x3f | 0x06 | 0x5b | 0x4f | 0x66 | 0x6d | 0x7d | 0x07 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 0x7f | 0x6f | 0x77 | 0x7c | 0x39 | 0x5e | 0x79 | 0x71 |
| 8 | 9 | A | B | C | D | E | F |
如果將段碼表使用c語(yǔ)言數(shù)組的方式書(shū)寫則為:
unsigned char table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0~f
(2)共陽(yáng)極數(shù)碼管的取碼方式
“0”的段碼:取碼時(shí)a為對(duì)應(yīng)地位,h對(duì)應(yīng)高位

“1”的段碼:取碼時(shí)a為對(duì)應(yīng)地位,h對(duì)應(yīng)高位

根據(jù)這種方式我們可以總結(jié)得出,共陽(yáng)極數(shù)碼管的段碼表
| 0xc0 | 0xf9 | 0xa4 | 0xb0 | 0x99 | 0x92 | 0x82 | 0xf8 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 0x80 | 0x90 | 0x88 | 0x83 | 0xc6 | 0xa1 | 0x86 | 0x8e |
| 8 | 9 | A | B | C | D | E | F |
如果將段碼表使用c語(yǔ)言數(shù)組的方式書(shū)寫則為:
unsigned char table[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0~f
3、數(shù)顯方式
如果我們想要在數(shù)碼管上顯示數(shù)字,只需要把相應(yīng)的段碼送到IO口,即可讓數(shù)碼管顯示。
三、例程
?#include?reg52.h??>
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P2^0;
uchar table_K[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//共陰極數(shù)碼管段碼表
/*-------微秒延時(shí)--------*/
void delay_us(uint z)
{
uint x;
for(x=z;x>0;x--);
}
/*--------毫秒延時(shí)--------*/
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*----------主函數(shù)-----------*/
void main()
{
uchar i=1;
P0=0x00;P1=0xff;P2=0x00;P3=0x00; //IO口狀態(tài)初始化
while(1)
{
LED1=1;
for(i=0;i?16;i++) //循環(huán)16次 i從0~15
{
P0=table_K[i]; //把0~f的段碼一次送到P0口
delay_ms(1000);//等待1秒
}
}
}
審核編輯 黃宇
-
51單片機(jī)
+關(guān)注
關(guān)注
277文章
5713瀏覽量
131624 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
93572 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7636瀏覽量
144277
發(fā)布評(píng)論請(qǐng)先 登錄
級(jí)聯(lián)動(dòng)態(tài)掃描顯示數(shù)碼管問(wèn)題
基于51單片機(jī)的多功能萬(wàn)年歷設(shè)計(jì)
C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍
新概念51單片機(jī)C語(yǔ)言教程入門、提高、開(kāi)發(fā)、拓展全攻略
數(shù)碼管和單片機(jī)的連接方式
數(shù)碼管的結(jié)構(gòu)與原理
數(shù)碼管共陰和共陽(yáng)的區(qū)別
中斷實(shí)現(xiàn)數(shù)碼管顯示930
通過(guò)C51單片機(jī)控制數(shù)碼管顯示
89C52單片機(jī)控制直流24V電機(jī)輸出,數(shù)碼管顯示亂碼?
基于51單片機(jī)的7人多數(shù)投票表決器設(shè)計(jì)
51單片機(jī)實(shí)現(xiàn)數(shù)碼管顯示6934的代碼
細(xì)節(jié)決定品質(zhì) | 芯海科技CSU38F20優(yōu)化數(shù)碼管顯示新體驗(yàn)

51單片機(jī)數(shù)碼管靜態(tài)顯示
評(píng)論