新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)碼管(STC89C52): 第一個(gè)數(shù)碼管循環(huán)顯示0~F

數(shù)碼管(STC89C52): 第一個(gè)數(shù)碼管循環(huán)顯示0~F

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
一.硬件設(shè)計(jì)


本文引用地址:http://www.2s4d.com/article/201611/319912.htm

說(shuō)明:

選通一個(gè)數(shù)碼管分兩步,

第一步是位選,即選擇哪個(gè)數(shù)碼管亮,這里位選是通過(guò)鎖存器U2的WE1~WE6來(lái)選擇第一個(gè)數(shù)碼管到第六個(gè)數(shù)碼管,由于數(shù)碼管為共陰極(相對(duì)于8位數(shù)碼管),那么這里WE端為0代表位選選通,

第二步是段選,即選擇數(shù)碼管的哪位亮,這里段選是通過(guò)鎖存器U1的a~h來(lái)選擇數(shù)碼管的8位管子,這里DUAN端為1代表段選選通.

二.程序設(shè)計(jì)

1.程序功能

第一個(gè)數(shù)碼管循環(huán)顯示0~F

2. 程序源碼

#include

#define uchar unsigned char

#define uint unsigned int

sbit duan = P2 ^ 6;

sbit wela = P2 ^ 7;

uchar code led1[] = {

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

lenLed1 = sizeof(led1)/sizeof(led1[0]);

void delayms(uint xms);

void main()

{

uchar i;

wela = 1;

P0 = 0xfe;

wela = 0;

while (1)

{

for (i = 0; i < lenLed1; i++)

{

duan = 1;

P0 = led1[i];

duan = 0;

delayms(1000);

}

}

}

void delayms(uint xms)

{

uint i, j;

for (i = xms; i > 0; i--)

for (j = 110; j > 0; j--)

;

}



評(píng)論


技術(shù)專區(qū)

關(guān)閉