日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 51單片機(jī),要求用 8 位數(shù)碼管動(dòng)態(tài)顯示 12 位學(xué)號(hào)。還要用按鍵調(diào)整走動(dòng)速度,C語(yǔ)言的。//-------------------------------------------#include #include sbit k_add = P3^1;sbit k_sub = P3^4;//------

51單片機(jī),要求用 8 位數(shù)碼管動(dòng)態(tài)顯示 12 位學(xué)號(hào)。


還要用按鍵調(diào)整走動(dòng)速度,C語(yǔ)言的。


//-------------------------------------------

#include

#include


sbit k_add = P3^1;

sbit k_sub = P3^4;

//-------------------------------------------

unsigned char code SEG7[] = {

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};

unsigned char DISP_BUFF[] = {

10, 10, 10, 10, 10, 10, 10, 10,

1, 3, 9, 2, 5, 8, 0, 7, 4, 6, 3, 2,

10, 10, 10, 10, 10, 10, 10, 10};


unsigned char j = 0, k = 1;

//-------------------------------------------

void DelayMS(unsigned int x)

{

unsigned char i;

while(x--) for(i = 200; i > 0; i--);

}

//-------------------------------------------

void display(unsigned char x)

{

unsigned char i, w = 128;


for(i = 0; i < 8; i++) { //顯示八位數(shù)碼

P0 = SEG7[DISP_BUFF[i + k]];

P2 = w; DelayMS(1); P2 = 0;

w = _cror_(w, 1);

}


j++;

if (j > x) { //顯示遍數(shù)達(dá)到了預(yù)置數(shù)

j = 0;

k++; //那么從下一位開始顯示

if (k == 20) k = 0;

}

}

//-------------------------------------------

void main()

{

unsigned char d = 30;//顯示30遍,移動(dòng)一位

while(1) {

if (!k_add) {

display(d); //延時(shí)

if (!k_add) { //消抖

d += 2; if (d > 50) d = 50;//遍數(shù)增加,移位就變慢

while (!k_add) display(d);

} }

if (!k_sub) {

display(d);

if (!k_sub) {

d -= 2; if (d < 10) d = 10;

while (!k_sub) display(d);

}}

display(d);

P1 = d; //顯示當(dāng)前遍數(shù)

}

}

//-------------------------------------------


程序仿真運(yùn)行時(shí)的截圖:



說(shuō)明:


程序中的顯示部分,也是輪流顯示八位數(shù),也是屬于常見(jiàn)的動(dòng)態(tài)顯示。


但是,稍有不同的是:做而論道給它增加了一個(gè)參數(shù) k。


k = 0 時(shí),就和一般的顯示程序相同,顯示 DISP_BUFF[] 的第 0~7 個(gè)元素。


調(diào)用顯示程序 x 遍后(x 預(yù)設(shè)值為 30),再令 k 加一。


k = 1 時(shí),就要顯示 DISP_BUFF[] 的第 1~8 個(gè)元素。


這樣就可以在數(shù)碼管上看到數(shù)據(jù)移動(dòng)了一位。


以此類推,k 不斷的加一,就會(huì)使得 DISP_BUFF[] 中各個(gè)元素,依照先后順序,每次都取出 8 個(gè)元素,顯示在數(shù)碼管上。


當(dāng) k + 8 為 DISP_BUFF[] 中最末尾的元素時(shí),再令 k = 0,這時(shí)就又會(huì)從頭開始移位顯示。


利用按鍵,對(duì)變量 x (在主函數(shù)中的變量是 d)的大小進(jìn)行修改,即可控制數(shù)碼滾動(dòng)顯示的速度。


d 的范圍設(shè)定為 10~50,數(shù)值越大則滾動(dòng)越慢。


d 的當(dāng)前值,可以在 P1 口看到。



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉