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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

上傳個單片機鍵盤掃描的源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:276550 發表于 2018-1-16 14:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    隨手上傳

單片機源程序如下:
  1. /****************************************************

  2. 電路圖說明:
  3.         使用P3口做為矩陣鍵盤的輸入端,前四位控制行線,后
  4. 四位控制列線。
  5. 程序功能:逐列掃描識別法 + 定時查詢方式
  6.         使用數碼管顯示,4*4矩陣鍵盤,按下的鍵號,鍵盤鍵號
  7. 使用行掃描法。
  8.        
  9. ****************************************************/

  10. #include<reg52.h>
  11. #define uint unsigned int
  12. #define uchar unsigned char

  13. sbit duan=P2^0;
  14. sbit wei=P2^1;
  15. uchar num;//存放數碼管顯示數值
  16. uchar code d_table[]={
  17. 0x3f  , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
  18. 0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c ,
  19. 0x39 , 0x5e , 0x79 , 0x71 , 0x00};//共陰0~F段碼
  20. uchar code w_table[]={
  21. 0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//1-6位選碼

  22. void init();//啟動定時器0
  23. void delay(uint);//最小1ms延遲

  24. uchar keyscan();//鍵盤是否按下掃描函數,
  25.                                 //函數返回按下按鍵鍵值,無按鍵按下時返回16

  26. void display_2wei(uint);//數碼管兩位動態顯示函數

  27. void main()
  28. {
  29.         init();
  30.         while(1)
  31.         {
  32.                 ;       
  33.         }
  34. }

  35. void init()
  36. {
  37.         num=16;

  38.         EA=1;
  39.         ET0=1;
  40.     ET1=1;
  41.         PT0=1;//將數碼管刷新定時器中斷定為高優先級
  42.           //以保證數碼管正常顯示
  43.         TMOD=0x11;
  44.         TH0=(65535-20000)/256;
  45.         TL0=(65535-20000)%256;
  46.         TH1=(65535-10000)/256;
  47.         TL1=(65535-10000)%256;
  48.         TR0=1;
  49.         TR1=1;
  50. }
  51. void delay(uint z)
  52. {
  53.         uint i,j;
  54.         for(i=z;i>0;i--)
  55.                 for(j=110;j>0;j--);       
  56. }

  57. uchar keyscan()//如果無按鍵按下返回16
  58. {
  59.         uchar temp,i,key_read;
  60.     static uchar key_value=16;

  61.     temp=0xef;//預置第0列輸出0的設置值
  62.     for(i=0;i<4;i++)//4次列掃描
  63.         {
  64.           P3=temp;//4次循環,依次置0->1->2->3列輸出0
  65.           if((key_read=P3)!=temp)//判斷該列上有無按鍵按下
  66.           {
  67.                 delay(10);
  68.                 if((key_read=P3)!=temp)
  69.                 {
  70.                         key_read=~key_read;
  71.                         while(P3!=temp);
  72.                         switch(key_read&0x0f)//只留行值
  73.                     {
  74.                      case 0x01:key_value=i; break;//得第0行按鍵鍵號
  75.                            
  76.                          case 0x02:key_value=4+i; break;//得第1行按鍵鍵號
  77.                          
  78.                          case 0x04:key_value=8+i; break;//得第2行按鍵鍵號
  79.                          
  80.                          case 0x08:key_value=12+i;break;//得第3行按鍵鍵號
  81.                          
  82.                          default:  key_value=16;break;       
  83.                         }
  84.                         return key_value;               
  85.             }       
  86.       }
  87.           temp=(temp<<1)|0x01;        //得使下一列輸出0的設置值
  88.         }
  89.         return key_value;
  90. }

  91. void display_2wei(uint m_num)
  92. {
  93.         uchar ge,shi;
  94.         ge=m_num%10;
  95.         shi=(m_num/10)%10;
  96.        
  97.         //十位數
  98.         P0=w_table[1];
  99.         wei=1;
  100.         wei=0;
  101.        
  102.         P0=d_table[shi];
  103.         duan=1;
  104.         duan=0;
  105.        
  106.         delay(5);
  107.        
  108.         //個位數
  109.         P0=w_table[2];
  110.         wei=1;
  111.         wei=0;
  112.        
  113.         P0=d_table[ge];
  114.         duan=1;
  115.         duan=0;
  116.        
  117.         delay(5);
  118. }

  119. void timer0_20ms() interrupt 1
  120. ……………………

  121. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
矩陣.rar (12.49 KB, 下載次數: 10)


評分

參與人數 1黑幣 +6 收起 理由
vktpas + 6

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线欧美一区二区 | 99精品99久久久久久宅男 | 男女网站视频 | 成人福利网站 | 国产98色在线 | 日韩 | 亚洲视频在线观看一区二区三区 | 国产午夜精品一区二区三区 | 日韩欧美国产一区二区三区 | 欧美天堂一区 | 高清视频一区 | 91高清视频在线观看 | 国产激情视频 | 久久久久亚洲国产| 91精品国产91久久久久久吃药 | 午夜影院在线观看版 | 日韩精品三区 | 午夜精品久久久久久久星辰影院 | 四虎最新地址 | 一区二区免费高清视频 | 青青草av在线播放 | 91福利网| 伊人二区 | 精品视频一区二区三区在线观看 | 日本天天操 | 中文字幕 国产 | 国产精品毛片无码 | 亚洲一区二区三区在线视频 | 久久伊人久久 | 男人久久天堂 | av网站在线播放 | 欧美男人天堂 | 国产高清视频在线观看 | 中文精品一区二区 | 少妇精品亚洲一区二区成人 | 国产综合精品 | 一区二区三区免费 | 成人欧美一区二区三区色青冈 | 视频在线一区 | 欧美日韩电影免费观看 | 亚洲精品美女视频 | 精品视频在线一区 |