久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1227|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stc89c52rc單片機(jī)矩陣鍵盤 線反轉(zhuǎn)法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:812531 發(fā)表于 2021-1-12 11:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 朝朝1 于 2021-1-14 17:56 編輯
  1. #include<reg52.h>


  2. #define DataPort P0
  3. sbit LATCH1=P2^6;
  4. sbit LATCH2=P2^7;
  5. sbit BEEP=P2^3;
  6. sbit key=P3^4;
  7. unsigned char num1;
  8. unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  9.                                                    0x77,0x7c,0x39,0x5e,0x79,0x71};
  10. unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  11. unsigned char TempData[8];

  12. void DelayUs2x(unsigned char t);
  13. void DelayMs(unsigned char t);
  14. void Display(unsigned char FirstBit,unsigned char Num);
  15. unsigned char KeyScan(void);
  16. unsigned char KeyPro(void);
  17. void Init_Timer0(void);
  18. void beep();


  19. void main (void)
  20. {

  21. unsigned char num;                  
  22. Init_Timer0();

  23. while (1)         
  24.   {


  25.         
  26.         KeyPro();        
  27. num=KeyPro();

  28. if(num!=0xff)
  29.    {        
  30.                                 TempData[1]=dofly_DuanMa[num1];


  31.                

  32.   }


  33.         
  34.         
  35.         }
  36.         
  37. }
  38.         
  39.         
  40. void DelayUs2x(unsigned char t)
  41. {   
  42. while(--t);
  43. }
  44. void DelayMs(unsigned char t)
  45. {

  46. while(t--)
  47. {
  48.      //????1mS
  49.      DelayUs2x(245);
  50.          DelayUs2x(245);                                                              
  51.          
  52. }
  53. }
  54. void Display(unsigned char FirstBit,unsigned char Num)
  55. {
  56.       static unsigned char i=0;
  57.          

  58.            DataPort=0;   //????,???????
  59.        LATCH1=1;     //???
  60.        LATCH1=0;

  61.        DataPort=dofly_WeiMa[i+FirstBit]; //???
  62.        LATCH2=1;     //???
  63.        LATCH2=0;

  64.        DataPort=TempData[i]; //?????,??
  65.        LATCH1=1;     //???
  66.        LATCH1=0;

  67.            i++;
  68.        if(i==Num)
  69.               i=0;


  70. }
  71. void Init_Timer0(void)
  72. {
  73. TMOD |= 0x01;          //????1,16????,??"|"?????????????????                     
  74. //TH0=0x00;              //????
  75. //TL0=0x00;
  76. EA=1;            //?????
  77. ET0=1;           //???????
  78. TR0=1;           //???????
  79. }
  80. void Timer0_isr(void) interrupt 1
  81. {
  82. TH0=(65536-2000)/256;                  //???? 2ms
  83. TL0=(65536-2000)%256;

  84. Display(0,8);       // ???????

  85. }

  86. unsigned char KeyScan(void)  //??????,?????????
  87. {
  88. unsigned char temp,num;//???????
  89. P3=0x0f;            //??????0
  90. temp=P3&0x0f;     //?????
  91. if(temp!=0x0f)    //?????????
  92. {
  93.   DelayMs(10);        //??
  94.   if((P3&0x0f)!=0x0f)
  95.   {
  96.    temp=P3&0x0f;  //?????
  97.     P3=temp|0xf0;  //???????
  98.     num=P3&0xf0;  //?????

  99.     while((P3&0xf0)!=0xf0);//???????

  100.     return(temp+num);//????????
  101.    }
  102.   }     //????
  103. }
  104. /*
  105. unsigned char KeyPro(void)
  106. {
  107. switch(KeyScan())
  108. {
  109.   case 0x7e:return 0;break;//0 ??????????????
  110.   case 0x7d:return 1;break;//1
  111.   case 0x7b:return 2;break;//2
  112.   case 0x77:return 3;break;//3
  113.   case 0xbe:return 4;break;//4
  114.   case 0xbd:return 5;break;//5
  115.   case 0xbb:return 6;break;//6
  116.   case 0xb7:return 7;break;//7
  117.   case 0xde:return 8;break;//8
  118.   case 0xdd:return 9;break;//9
  119.   case 0xdb:return 10;break;//a
  120.   case 0xd7:return 11;break;//b
  121.   case 0xee:return 12;break;//c
  122.   case 0xed:return 13;break;//d
  123.   case 0xeb:return 14;break;//e
  124.   case 0xe7:return 15;break;//f
  125.   default:return 0xff;break;
  126. }
  127. }
  128. */
  129. void beep()
  130. {
  131.     unsigned char y;

  132.         BEEP=0;
  133.           DelayMs(0.8);

  134.     BEEP=1;                      //?????
  135. }



  136. unsigned char KeyPro(void)
  137. {
  138. switch(KeyScan())
  139. {
  140.   case 0x7e:num1=0;break;//0 ??????????????
  141.   case 0x7d:num1=1;break;//1
  142.   case 0x7b:num1=2;break;//2
  143.   case 0x77:num1=3;break;//3
  144.   case 0xbe:num1=4;break;//4
  145.   case 0xbd:num1=5;break;//5
  146.   case 0xbb:num1=6;break;//6
  147.   case 0xb7:num1=7;break;//7
  148.   case 0xde:num1=8;break;//8
  149.   case 0xdd:num1=9;break;//9
  150.   case 0xdb:num1=10;break;//a
  151.   case 0xd7:num1=11;break;//b
  152.   case 0xee:num1=12;break;//c
  153.   case 0xed:num1=13;break;//d
  154.   case 0xeb:num1=14;break;//e
  155.   case 0xe7:num1=15;break;//f
  156.   default:return 0xff;break;
  157. }
  158. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费毛片网站 | 日朝毛片 | 欧美精品一区三区 | 中文字幕一区在线观看视频 | 欧美手机在线 | www成人免费视频 | 午夜视频在线免费观看 | 日本人和亚洲人zjzjhd | 天天干视频在线 | 毛片网站在线观看视频 | 久久极品 | 日韩视频a| 国产电影精品久久 | 国产激情在线 | 欧美日韩精品一区 | 最新日韩在线视频 | 国产精品久久久久久久久久久免费看 | 天天操天天射天天舔 | 欧美日韩在线一区二区 | 国产成视频在线观看 | 欧美一级黄色片 | 日韩视频在线免费观看 | 欧美精品1区 | 久久伊人一区二区 | 成人免费一区二区 | 日本一区二区不卡 | www.久久艹 | 久久免费视频观看 | 日韩久久中文字幕 | av在线一区二区三区 | 亚洲黄色av | 午夜免费在线观看 | 99国产精品视频免费观看一公开 | 青青草精品视频 | 伊人看片| 97成人免费| 国产精品免费一区二区三区四区 | 欧美 日韩 中文 | 国产日韩欧美在线 | 99r在线| 国产一级视频在线播放 |