欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)矩陣鍵盤控制LED數(shù)碼管的proteus仿真和源碼 [打印本頁(yè)]

作者: wdfabc    時(shí)間: 2018-6-19 17:09
標(biāo)題: 單片機(jī)矩陣鍵盤控制LED數(shù)碼管的proteus仿真和源碼
鍵盤行列掃描所按按鍵,顯示到顯示屏上,循環(huán)左移位


單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define keyport P2
  4. unsigned char code ledmap[] = {        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  5.                                                                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  6. unsigned char led[] = {0,0,0,0,0,0};
  7. unsigned char select = 0xfe;
  8. unsigned char index = 0;
  9. unsigned char keyvalue = 0;
  10. bit flag = 0;
  11. void delay1ms(unsigned char c)  
  12. {
  13.     unsigned char a,b;
  14.     for(c;c>0;c--)
  15.         for(b=142;b>0;b--)
  16.             for(a=2;a>0;a--);
  17. }

  18. void keyscan(){
  19.         keyport = 0xf0;
  20.         if(keyport != 0xf0){
  21. //                delay1ms(10);
  22.                 if(keyport != 0xf0){
  23.                         switch(keyport){//掃描列判斷列
  24.                                 case(0xe0):keyvalue = 0;break;//1110 0000
  25.                                 case(0xd0):keyvalue = 1;break;//1101 0000
  26.                                 case(0xb0):keyvalue = 2;break;//1011 0000
  27.                                 case(0x70):keyvalue = 3;break;//0111 0000
  28.                         }
  29.                         keyport = 0x0f;
  30.                         switch(keyport){//掃描行判斷行
  31.                                 case(0x0e):keyvalue = keyvalue + 0 ; flag = 1 ; break;//0000 1110
  32.                                 case(0x0d):keyvalue = keyvalue + 4 ; flag = 1 ; break;//0000 1101
  33.                                 case(0x0b):keyvalue = keyvalue + 8 ; flag = 1 ; break;//0000 1011
  34.                                 case(0x07):keyvalue = keyvalue + 12; flag = 1 ; break;//0000 0111
  35.                         }
  36.                         while((keyport&0x0f) != 0x0f){
  37.                
  38.                         }
  39.                 }
  40.         }       

  41. }
  42. void ledbuffer(){// 循環(huán)左移
  43.         if(flag){
  44.                 unsigned char i = 0;
  45.                 unsigned char index;
  46.                 for(index = 5 ; index > 0 ; index--){
  47.                         led[index] = led[index-1];
  48.                 }
  49.                 led[index] = keyvalue;
  50.                 flag = 0;

  51.         }
  52. }

  53. void ledfresh()interrupt 1{// 刷新動(dòng)態(tài)數(shù)碼管
  54.         P0 = 0xff;//初始為0
  55.         P1 = ledmap[led[index]];
  56.         P0 = select;
  57.         select = _crol_(select,1);//左移
  58.         index++;
  59.         if(index == 6){
  60.                 index = 0;
  61.                 select = 0xfe;
  62.         }
  63.         TH0  = (65536-4000)>>8;
  64.         TL0  = (65536-4000)&0xff;
  65. }
  66. void main(){
  67.         SP = 0x50;
  68.         TMOD = 0x21;//定時(shí)器1,方式0,定時(shí)器2,方式1
  69.         TH0  = (65536-4000)>>8;//延時(shí)4ms
  70.         TL0  = (65536-4000)&0xff;
  71.         ET0  = 1;
  72.         TR0  = 1;
  73.         EA   = 1;
  74.         SCON = 0x40;
  75.         TH1  = 0xfd;
  76. ……………………

  77. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
矩陣鍵盤.zip (139.92 KB, 下載次數(shù): 45)



作者: 愛(ài)學(xué)123    時(shí)間: 2018-10-18 16:52
厲害厲害 給力




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1