找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

線反轉(zhuǎn)法掃描鍵盤程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-30 01:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit fmq=P3^6;
  5. sbit P27=P2^7;  //位顯示,最右邊
  6. uchar code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};
  7.              //code 的作用是把s8存到8K的ROM中
  8.    //共陽數(shù)碼光顯示字型數(shù)碼組 1011 1111 “-”
  9. uchar code key_code[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };
  10. uchar key;
  11. void delay1ms(uchar n)     //1ms基準(zhǔn)延時程序
  12. {
  13. uchar i;
  14. while(n--)
  15.   for(i=0;i<115;i++);
  16. }

  17. void delay500us()    //   500us延時
  18. {

  19. uchar i;

  20.   for(i=0;i<57;i++);   //500us基準(zhǔn)延時程序

  21. }

  22. void beep() //產(chǎn)生1KHZ頻率聲音的函數(shù)
  23. {
  24.   fmq=0;
  25. delay500us();
  26. fmq=1;
  27. delay500us();

  28. }
  29. uchar key_scan()  //掃描鍵盤
  30. {
  31. uchar scan1,scan2,keycode,i;
  32. P1=0xf0;
  33. scan1=P1;
  34. if((scan1&0xf0)!=0xf0){          //判斷是否按鍵
  35.   delay1ms(15);        //延時消陡
  36.   scan1=P1;
  37.   if((P1&0xf0)!=0xf0){    //二次判斷是否按鍵
  38.    P1=0x0f;           //線反轉(zhuǎn)法德核心
  39.    scan2=P1;
  40.    keycode=scan1|scan2;       //組合成鍵編碼
  41.   }
  42.   for(i=0;i<16;i++){
  43.    if(keycode==key_code[i]){  //查表得鍵值
  44.     key=i;  
  45.     return key;
  46.    }
  47.   }
  48. }
  49. else{
  50.   P1=0xff;   //P1口寫1,輸入狀態(tài)
  51.   return 16;
  52. }
  53.    

  54. }


  55. void main()
  56. {
  57.     uchar t;
  58. P0=0xbf;
  59. P27=0;
  60. P1=0xff;   //寫1,讀狀態(tài)

  61. while(1)
  62. {
  63.   P1=0xf0;
  64.   if((P1&0xf0)!=0xf0){      // 判斷按鍵
  65.    key_scan();
  66.    P0=dis_code[key];
  67.    for(t=0;t<200;t++)
  68.     beep();
  69.    fmq=1;
  70.    delay1ms(200);
  71.   }
  72. }
  73. }
復(fù)制代碼


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表