51單片機(jī)入門之靜態(tài)數(shù)碼管
LED數(shù)碼管是單片機(jī)外圍接口設(shè)備中常用的顯示設(shè)備,有七段管和米字管兩種,實(shí)驗(yàn)室中常用的是七段管。其工作方式有兩種:共陰極和共陽極。所謂共陰極是把LED的com端都接地,而共陽極就是把com端都接高電平。其驅(qū)動(dòng)顯示方式也有兩種:靜態(tài)顯示和動(dòng)態(tài)顯示。
靜態(tài)顯示中每個(gè)數(shù)碼管占用單片機(jī)的一個(gè)八位口I/O口,工作時(shí)點(diǎn)亮的段常亮。于該種方式而言,硬件電路簡單,編程簡單,但是浪費(fèi)單片機(jī)的I/O口。下面簡單演示一下該種驅(qū)動(dòng)方式。
P2口接一個(gè)數(shù)碼管,數(shù)碼管顯示的數(shù)字每秒鐘自動(dòng)加一,加到9后清0,一直循環(huán),本實(shí)驗(yàn)中數(shù)碼管采用共陰極接法。
實(shí)驗(yàn)原理圖如下:
實(shí)驗(yàn)程序如下:
[cpp] view plain copy
#include
#define uchar unsigned char;
#define uint unsigned int;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極數(shù)碼管數(shù)據(jù)表
uchar a,i,j,z;
void delay(z) //延時(shí)子函數(shù)
{
for(j=z;j>0;j--)
for(i=110;i>0;i--);
}
void main() //主函數(shù)
{
while(1)
{
for(a=0;a<10;a++)//從0到9,共10次循環(huán)
{
P2=table[a]; //P2口從數(shù)據(jù)表中取數(shù)據(jù)
delay(1000); //延時(shí)大約1s
}
}
}
試驗(yàn)結(jié)果如下: