當前位置:編程學習大全網 - 編程語言 - C51單片機:用數碼管顯示從0到999的數值。找到C語言的程序和原理

C51單片機:用數碼管顯示從0到999的數值。找到C語言的程序和原理

# include & ltreg 51 . h & gt;

#定義uchar無符號字符

uchar溫度;

int key1,key,disbuf//這個表是LED 0 1 23456 789 A B C D E F的字體。

無符號字符碼LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x 71 };

無符號字符ledx[8];

比特?s0,s 1;

無效延遲(uchar z)

{

uchar i,j;

for(I = 0;我& lt120;i++)

for(j = 0;j & ltz;j++);

}

Void scan() //如果按鍵被按下,掃描鍵盤代碼值。

{

p 1 = 0xf 0;

延時(1);

temp = p 1;

開關(溫度)

{

case 0xe 0:key 1 = 0;

打破;

case 0xd 0:key 1 = 1;

打破;

case 0xb 0:key 1 = 2;

打破;

case 0x 70:key 1 = 3;

打破;

}

p 1 = 0x0f;

延時(1);

temp = p 1;

開關(溫度)

{

case 0x0E:key = key 1+0;

打破;

case 0x0D:key = key 1+4;

打破;

case 0x0B:key = key 1+8;

打破;

case 0x 07:key = key 1+12;

打破;

默認:key =-1;?

}

if((key 1+1)& amp;& amp(key+1))disbuf = key;

}

void ejjc()?//判斷是否按鍵。

{

p 1 = 0xf 0;

if(P1!= 0xf 0){ scan();s0 = 1;}

else { s0 = 0;s 1 = 1;}

}

void main()

{

烏恰爾壹世;

while(1)

{

ejjc();

if(s0==1?& amp& amps1==1)

?{

?s0 = 0;s 1 = 0;

?for(I = 0;我& lt8;i++)

{ ledx[I]= ledx[I+1];ledx[8]= disbuf;}

?}

P0 = 0xff

P2 = led 7 code[ledx[0]];

P0 = 0xfe

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[1]];

P0 = 0xfd

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[2]];

P0 = 0xfb

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[3]];

P0 = 0xf7

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[4]];

P0 = 0xef

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[5]];

P0 = 0xdf

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[6]];

P0 = 0xbf

延遲(5);

P0 = 0xff

P2 = led 7 code[ledx[7]];

P0 = 0x7f

延遲(5);

}

}?

  • 上一篇:妳壹定要知道的30個常見“面試問題套路”和“破解之法”!
  • 下一篇:Inus編程
  • copyright 2024編程學習大全網