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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機按鍵模塊與CH9328的使用源程序

[復制鏈接]
跳轉到指定樓層
樓主
我用的是stc系列的單片機(stc89c52rc),現在12和15抗干擾能力更強(推薦使用)。鍵盤模塊用的是ch9328模塊(如下圖)


把單片機最小系統板的RXD與ch9328模塊的TXD相連,TXD與模塊的RXD相連。
按鈕可以接到p0.0到p0.7等等,另一端接的是地,輸出在電腦上的是數字的123......等等。

單片機源程序如下:
  1. #include "reg52.h"
  2. sbit k1=P1^0;//編碼器開關接口               
  3. sbit k2=P1^1;//編碼器開關接口                  
  4. sbit k3=P1^2;//編碼器開關接口
  5. sbit k4=P1^3;//編碼器開關接口               
  6. sbit k5=P1^4;//編碼器開關接口                  
  7. sbit k6=P1^5;//編碼器開關接口        
  8. sbit k7=P1^6;//編碼器開關接口
  9. sbit k8=P1^7;//編碼器開關接口
  10. sbit k9=P2^0;//編碼器開關接口
  11. sbit k10=P2^1;//編碼器開關接口
  12. sbit k11=P2^2;//編碼器開關接口
  13. sbit k12=P2^3;//編碼器開關接口
  14. //編碼器C接口直接接地
  15. unsigned char key[8],i;
  16. void sendbyte(unsigned char b)//串口發送字符                  
  17. {
  18.         SBUF=b;
  19.         while(!TI);
  20.         TI=0;
  21. }                                                                  
  22. void init()//初始化函數
  23. {
  24.         //SCON=0X50;                        //設置為工作方式1
  25.         SCON=0X40;                        //設置為工作方式1                                1123
  26.         TMOD=0X20;                        //設置計數器工作方式2
  27.         PCON=0X80;                        //波特率加倍
  28.         TH1=0Xfa;                        //計數器初始值設置,波特率9600,0xf4:22.1184M;0xfa:11.0592M
  29. //        PCON=0X00;                        //波特率加倍
  30. //        TH1=0Xfd;                        //計數器初始值設置,波特率9600,0xf4:22.1184M;0xfa:11.0592M
  31.         TL1=TH1;        
  32.         TR1=1;        //打開計數器        
  33. }
  34.                                                 
  35. void delay(int x)//延時1Ms函數                  
  36. {
  37.     unsigned char a,b;
  38.         for(x;x>0;x--)
  39.                 for(b=80;b>0;b--)
  40.                         for(a=10;a>0;a--);
  41. }
  42. void keys()
  43. {
  44.           for(i=0;i<8;i++) key[i]=0x00;                                                         
  45.                 if(k1==0)
  46.                 {
  47.                         delay(10);
  48.                         if(k1==0)
  49.                         {
  50.                                 key[2]=0x31;
  51.                                 for(i=0;i<8;i++)
  52.                                         sendbyte(key[i]);
  53.                                 while(!k1);
  54.                         }
  55.                 }
  56.                 if(k2==0)
  57.                 {
  58.                         delay(10);
  59.                         if(k2==0)
  60.                         {
  61.                                 key[2]=0x32;
  62.                                 for(i=0;i<8;i++)
  63.                                         sendbyte(key[i]);
  64.                                 key[2]=0x00;//按下后發送的松開
  65.                                 for(i=0;i<8;i++)
  66.                                         sendbyte(key[i]);
  67.                                 while(!k2);
  68.                         }
  69.                 }
  70.                 if(k3==0)
  71.                 {
  72.                         delay(10);
  73.                         if(k3==0)
  74.                         {
  75.                                 key[2]=0x33;
  76.                                 for(i=0;i<8;i++)
  77.                                         sendbyte(key[i]);
  78.                                 key[2]=0x00;//按下后發送的松開
  79.                                 for(i=0;i<8;i++)
  80.                                         sendbyte(key[i]);
  81.                                 while(!k3);
  82.                         }
  83.                 }
  84.                 if(k4==0)
  85.                 {
  86.                         delay(10);
  87.                         if(k4==0)
  88.                         {
  89.                                 key[2]=0x34;
  90.                                 for(i=0;i<8;i++)
  91.                                         sendbyte(key[i]);
  92.                                 key[2]=0x00;//按下后發送的松開
  93.                                 for(i=0;i<8;i++)
  94.                                         sendbyte(key[i]);
  95.                                 while(!k4);
  96.                         }
  97.                 }
  98.                 if(k5==0)                 
  99.                 {
  100.                         delay(10);
  101.                         if(k5==0)
  102.                         {
  103.                                 key[2]=0x35;
  104.                                 for(i=0;i<8;i++)
  105.                                         sendbyte(key[i]);
  106.                                 key[2]=0x00;//按下后發送的松開                1223445612
  107.                                 for(i=0;i<8;i++)
  108.                                         sendbyte(key[i]);
  109.                                 while(!k5);
  110.                         }
  111.                 }
  112.                 if(k6==0)
  113.                 {
  114.                         delay(10);
  115.                         if(k6==0)
  116.                         {
  117.                                 key[2]=0x36;
  118.                                 for(i=0;i<8;i++)
  119.                                         sendbyte(key[i]);
  120.                                 key[2]=0x00;//按下后發送的松開
  121.                                 for(i=0;i<8;i++)
  122.                                         sendbyte(key[i]);
  123.                                 while(!k6);
  124.                         }
  125.                 }

  126.                 if(k7==0)
  127.                 {
  128.                         delay(10);
  129.                         if(k7==0)
  130.                         {
  131.                                 key[2]=0x37;
  132.                                 for(i=0;i<8;i++)
  133.                                         sendbyte(key[i]);
  134.                                 key[2]=0x00;//按下后發送的松開
  135.                                 for(i=0;i<8;i++)
  136.                                         sendbyte(key[i]);
  137.                                 while(!k7);
  138.                         }
  139.                 }

  140.                 if(k8==0)
  141.                 {
  142.                         delay(10);
  143.                         if(k8==0)
  144.                         {
  145.                                 key[2]=0x38;
  146.                                 for(i=0;i<8;i++)
  147.                                         sendbyte(key[i]);
  148.                                 key[2]=0x00;//按下后發送的松開
  149.                                 for(i=0;i<8;i++)
  150.                                         sendbyte(key[i]);
  151.                                 while(!k8);
  152.                         }
  153.                 }

  154.                 if(k9==0)
  155.                 {
  156.                         delay(10);
  157.                         if(k9==0)
  158.                         {
  159.                                 key[2]=0x39;
  160.                                 for(i=0;i<8;i++)
  161.                                         sendbyte(key[i]);
  162.                                 key[2]=0x00;//按下后發送的松開
  163.                                 for(i=0;i<8;i++)
  164.                                         sendbyte(key[i]);
  165.                                 while(!k9);
  166.                         }
  167.                 }
  168.                
  169.    if(k10==0)
  170.                 {
  171.                         delay(10);
  172.                         if(k10==0)
  173.                         {
  174.                                 key[2]=0x61;
  175.                                 for(i=0;i<8;i++)
  176.                                         sendbyte(key[i]);
  177.                                 key[2]=0x00;//按下后發送的松開
  178.                                 for(i=0;i<8;i++)
  179.                                         sendbyte(key[i]);
  180.                                 while(!k10);
  181.                         }
  182.                 }
  183.                
  184.    if(k11==0)
  185.                 {
  186.                         delay(10);
  187.                         if(k11==0)
  188.                         {
  189.                                 key[2]=0x62;
  190.                                 for(i=0;i<8;i++)
  191.                                         sendbyte(key[i]);
  192.                                 key[2]=0x00;//按下后發送的松開
  193.                                 for(i=0;i<8;i++)
  194.                                         sendbyte(key[i]);
  195.                                 while(!k11);
  196.                         }
  197.                 }

  198.    if(k12==0)
  199.                 {
  200.                         delay(10);
  201.                         if(k12==0)
  202.                         {
  203.                                 key[2]=0x63;
  204.                                 for(i=0;i<8;i++)
  205.                                         sendbyte(key[i]);
  206.                                 key[2]=0x00;//按下后發送的松開
  207.                                 for(i=0;i<8;i++)
  208.                                         sendbyte(key[i]);
  209.                                 while(!k12);
  210.                         }
  211.                 }
  212. }
  213. void main(void)//主函數        1111111111111224399         
  214. {

  215.         P1=0xff;
  216.         init();//初始化函數
  217.         while(1)
  218.         {
  219.                
  220.                 keys();
  221.         }
  222. }
復制代碼
以上程序51hei下載地址:
按鍵模塊.zip (33.99 KB, 下載次數: 38)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:249503 發表于 2020-10-12 23:57 | 只看該作者
老哥,你的鍵值怎么對應的啊,我按照給的鍵值表寫進去顯示出來的不一樣
回復

使用道具 舉報

板凳
ID:272158 發表于 2020-10-13 16:47 | 只看該作者
51小板卡不錯,哪里買的。
回復

使用道具 舉報

地板
ID:661763 發表于 2020-12-25 11:25 | 只看該作者
feixue2007 發表于 2020-10-13 16:47
51小板卡不錯,哪里買的。

τ 寶,我看這個晶振是貼片的就感覺還行,還有GND和5V接口
回復

使用道具 舉報

5#
ID:661763 發表于 2020-12-25 11:34 | 只看該作者
無極令 發表于 2020-10-12 23:57
老哥,你的鍵值怎么對應的啊,我按照給的鍵值表寫進去顯示出來的不一樣

鍵碼值對應的是鍵盤上的104鍵,分數字鍵盤的123....和主鍵盤的123.....我這程序寫的是主鍵盤的123....


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区不卡视频 | 亚洲一区二区久久 | www.av在线 | 欧美日韩黄色一级片 | 成人精品一区二区三区中文字幕 | 色婷婷综合久久久久中文一区二区 | 999观看免费高清www | www.婷婷 | 国产精品99免费视频 | 日本男人天堂 | 91精品国产91久久综合桃花 | 欧美黄色网 | 亚洲精品久久久蜜桃网站 | 97起碰| 中国毛片免费 | 一本一道久久a久久精品综合蜜臀 | 国产精品久久久久永久免费观看 | 精品九九 | 亚洲一区中文字幕 | 中文字幕在线观看 | 蜜桃视频在线观看www社区 | 国产情侣激情 | 三级视频在线观看 | 欧美极品少妇xxxxⅹ免费视频 | 日日干夜夜干 | 最新91在线 | 黑人性hd| av天天操 | 久久久99精品免费观看 | 国产片网站| www,黄色,com| 成人超碰 | 91国内视频在线 | 国产成人影院 | 成人综合一区二区 | 成人免费大片黄在线播放 | 在线色网 | 99爱国产| 精品国产一区一区二区三亚瑟 | 涩涩视频在线观看 | 一a一片一级一片啪啪 |