數碼管(Segment Displays)由多個發光二極管封裝在一起組成“8”字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。數碼管實際上是由七個發光管組成8字形構成的,加上小數點就是8個。這些段分別由字母a,b,c,d,e,f,g,dp來表示。
數碼管原理圖:
數碼管共陰極接法:
數碼管共陽極接法:
數碼管中有位選和段選,位選就是選擇哪個數碼管,段選就是被選擇的數碼管要顯示什么數字!
根據數碼管的段選,可以總結出數碼管的顯示數據表:
符號 | 不顯示 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | . |
編碼 | 0x00 | 0x3F | 0x06 | 0x5B | 0x4F | 0x66 | 0x6D | 0x7D | 0x07 | 0x7F | 0x6F | 0x77 | 0x7C | 0x39 | 0x5E | 0x79 | 0x71 | 0x80 |
數碼管的靜態顯示:
/*======================================================*/
/*時間:2015年8月3日21:19:03*/
/*功能:數碼管的靜態顯示*/
/*目的:51單片機學習*/
/*^_^……!*/
/*======================================================*/
#include
#include"commLib.h"
sbitWLE=P2^7;//位選
sbitDLE=P2^6;//段選
#defineDIGITAL_ARR_NUM18
unsignedcharcodedigital[DIGITAL_ARR_NUM]={//數碼管顯示數據表
/*0,1,2,3,4,5,6,7,8,*/
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
/*9,A,B,C,D,E,F,.,不顯示*/
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x80,0x00
};
intmain(void)
{
unsignedinti;
//位選
WLE=1;//位選端鎖存器置高,送數據
P0=0xC0;//送數據
WLE=0;//位選端鎖存器置低,保存數據
while(1)
{
for(i=0;i
{
//段選
DLE=1;//段選端鎖存器置高,送數據
P0=digital[i];//送數據
DLE=0;//位選端鎖存器置低,保存數據
delay(500);//延時500ms
}
}
return0;
}
效果截圖:
數碼管的動態顯示:
/*======================================================*/
/*時間:2015年8月6日20:45:09*/
/*功能:數碼管的動態顯示*/
/*目的:51單片機學習*/
/*^_^……!*/
/*======================================================*/
#include
#include"commLib.h"
sbitWLE=P2^7;//位選
sbitDLE=P2^6;//段選
#defineDIGITAL_ARR_NUM18
unsignedcharcodedigital[DIGITAL_ARR_NUM]={//數碼管顯示數據表
/*0,1,2,3,4,5,6,7,8,*/
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
/*9,A,B,C,D,E,F,.,不顯示*/
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x80,0x00
};
intmain(void)
{
unsignedinti;
while(1)
{
for(i=0;i6;?i++)??
{
P0=0xFF;//消影(必須有)
WLE=1;//位選端鎖存器置高,送數據
P0=ccCrol(0xFE,i);//送數據
WLE=0;//位選端鎖存器置低,保存數據
DLE=1;//段選端鎖存器置高,送數據
P0=digital[i];//送數據
DLE=0;//位選端鎖存器置低,保存數據
delay(1);
}
}
return0;
}
效果截圖:
-
單片機
+關注
關注
6039文章
44582瀏覽量
636479 -
數碼管
+關注
關注
32文章
1882瀏覽量
91245
原文標題:51單片機:數碼管的靜態顯示和動態顯示
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論