找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1139|回復: 0
打印 上一主題 下一主題
收起左側

51單片機按鍵調(diào)試程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:567996 發(fā)表于 2019-6-20 15:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機按鍵調(diào)試

單片機源程序如下:
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. unsigned char hanshu();
  4. unsigned char jz = 0;
  5. unsigned char val[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc0};
  6. void delay(uint);

  7. void main()
  8. {       
  9.         unsigned char key = 0;
  10.         while(1)
  11.         {
  12.                 key = hanshu();
  13.                 P2 = 0xf0;
  14.                
  15.                 if(key != 0)       
  16.                 {        WR = 0;
  17.                         P0 = val[jz];
  18.                         WR=1;
  19.                 }
  20.         }               
  21. }



  22. unsigned char hanshu()
  23. {
  24.         unsigned char hang = 0,lie = 0;
  25.         P1 = 0x0f;
  26.         if(P1 != 0x0f)
  27.                 delay(10);
  28.                 if(P1 != 0x0f)
  29.                 {
  30.                         switch(P1)
  31.                         {
  32.                                 case 0x0e:   hang = 1;    break;
  33.                                 case 0x0d:   hang = 2;    break;
  34.                                 case 0x0b:   hang = 3;    break;
  35.                                 case 0x07:   hang = 4;    break;
  36.                                 default:                  break;
  37.                         }
  38.                
  39.                         P1 = 0xf0;
  40.                         delay(10);
  41.                         if(P1 != 0xf0)
  42.                         {
  43.                                 switch(P1)
  44.                                 {
  45.                                         case 0xe0:   lie = 1;     break;
  46.                                         case 0xd0:   lie = 2;     break;
  47.                                         case 0xb0:   lie = 3;     break;
  48.                                         case 0x70:   lie = 4;     break;
  49.                                         default:                  break;
  50.                                 }
  51.                         jz = (lie - 1) * 4 + hang;
  52.                         return jz;          
  53.                         }                               
  54.                 }       
  55.                 return 0;
  56. }


  57. void delay(uint z)
  58. {
  59.         uint x,y;
  60.                 for(x=100;x>0;x--)
  61.                         for(y=z;y>0;y--);
  62. }
復制代碼

所有資料51hei提供下載:
新建文件夾.zip (28.39 KB, 下載次數(shù): 5)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表