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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機旋轉編碼器模塊KY-040調試程序+仿真 LCD1602顯示

  [復制鏈接]
跳轉到指定樓層
樓主
給大家分享一個51單片機+1602液晶屏顯示 KY-040旋轉編碼器模塊的程序和仿真

程序功能:旋轉編碼器順時針旋轉,顯示數值增加
               旋轉編碼器逆時針旋轉,顯示數值減小
               旋轉編碼器按下,切換顯示ON/OFF

根據旋轉編碼器KY-040模塊資料可知:


在下降觸發模式下,AB進行電平比較:
A觸發的中斷:同加異減
B觸發的中斷:同減異加
反之亦然

那么可以通過手動模擬外部中斷觸發瞬間的電平狀態來進行仿真,
                      CLK(A) ---- P3^2
                      DT(B)  ---- P3^3
                      SW(Z)  ---- P3^4
外部中斷0下降沿觸發后,對B的電平進行判斷即可知道旋轉編碼器
的旋轉方向。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:

  1. #include<reg51.h>
  2. #include"lcd.h"
  3. #include<intrins.h>

  4. //外部中斷的IO
  5. sbit K1=P3^2;
  6. sbit K2=P3^3;
  7. sbit K3=P3^4;

  8. void IntConfiguration();
  9. void Delay(unsigned int n);
  10. unsigned char KeyValue=0;
  11. unsigned char state=0;
  12. /*******************************************************************************
  13. * 函 數 名       : main
  14. * 函數功能                 : 主函數
  15. * 輸    入       : 無
  16. * 輸    出       : 無
  17. *******************************************************************************/
  18. void main(void)
  19. {
  20.         LcdInit();
  21.         IntConfiguration();
  22.         LCDWrite_String(2, 0, 10, "Bian ma qi");
  23.         while(1)
  24.         {
  25.                 if(K3==0)
  26.                 {
  27.                         Delay(1);         //延時消抖
  28.                         if(K3==0)
  29.                         {
  30.                                 state=!state;
  31.                                 while(K3==0);
  32.                         }
  33.                 }
  34.                 if(state==1)
  35.                 {
  36.                         LcdWriteCom(0xc0+13);
  37.                         LcdWriteData('O');
  38.                         LcdWriteData('N');
  39.                         LcdWriteData(' ');
  40.                 }
  41.                 else
  42.                 {
  43.                         LcdWriteCom(0xc0+13);
  44.                         LcdWriteData('O');
  45.                         LcdWriteData('F');
  46.                         LcdWriteData('F');
  47.                 }
  48.                 LcdWriteCom(0xC0+4);
  49.                 LcdWriteData('0'+KeyValue/100%10);
  50.                 LcdWriteData('0'+KeyValue/10%10);
  51.                 LcdWriteData('0'+KeyValue%10);
  52.         }        
  53. }

  54. /*******************************************************************************
  55. * 函 數 名         : IntConfiguration()
  56. * 函數功能                   : 設置外部中斷
  57. * 輸    入         : 無
  58. * 輸    出         : 無
  59. *******************************************************************************/
  60. void IntConfiguration()
  61. {
  62.         //設置INT0
  63.         IT0=1;//跳變沿出發方式(下降沿)
  64.         EX0=1;//打開INT0的中斷允許。
  65.         
  66.         EA=1;//打開總中斷        
  67. }
  68. /*******************************************************************************
  69. * 函 數 名         : Delay(unsigned int n)
  70. * 函數功能                   : 延時
  71. * 輸    入         : n
  72. * 輸    出         : 無
  73. *******************************************************************************/

  74. void Delay(unsigned int n)   //延時50us誤差 0us
  75. {
  76.     unsigned char a,b;
  77.                 for(;n>0;n--)
  78.                 {
  79.             for(b=1;b>0;b--)
  80.         for(a=22;a>0;a--);
  81.                 }
  82. }
  83. /*******************************************************************************
  84. * 函 數 名         : Int0()        interrupt 0
  85. * 函數功能                   : 外部中斷0的中斷函數
  86. * 輸    入         : 無
  87. * 輸    出         : 無
  88. *******************************************************************************/

  89. void Int0()        interrupt 0                //外部中斷0的中斷函數
  90. {
  91.         if(K2==1)
  92.         {
  93.                 KeyValue++;
  94.         }
  95.         if(K2==0)
  96.         {
  97.                 KeyValue--;
  98.         }
  99.         if(KeyValue>200)
  100.         KeyValue=200;
  101.         if(KeyValue<1)
  102.         KeyValue=1;
  103. }


  104. ……………………

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


所有資料51hei附件下載,注意仿真是用Proteus7.5畫的,高版本可能無法打開,請安裝7.5或7.8版本,擴展名為dsn的那個:
旋轉編碼器.zip (369.52 KB, 下載次數: 1105)

評分

參與人數 5黑幣 +104 收起 理由
殘...月 + 6 很給力!
euxbjfjfjcn + 30
stkh + 8 贊一個!
zkele + 10 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:164988 發表于 2017-9-7 17:34 | 只看該作者
好資料,一定要分享學習
回復

使用道具 舉報

板凳
ID:276790 發表于 2018-1-16 23:20 | 只看該作者
看看,不知道如何?
回復

使用道具 舉報

地板
ID:283686 發表于 2018-2-27 09:09 | 只看該作者
好東西  正是需要的
回復

使用道具 舉報

5#
ID:290052 發表于 2018-3-10 14:59 | 只看該作者
找了一圈沒有旋轉編碼器,原來要這么搞
回復

使用道具 舉報

6#
ID:289947 發表于 2018-3-16 20:42 | 只看該作者
Hwinnie 發表于 2018-3-10 14:59
找了一圈沒有旋轉編碼器,原來要這么搞

可以分享下 嗎  
還沒賺夠黑幣
回復

使用道具 舉報

7#
ID:146874 發表于 2018-4-30 11:10 | 只看該作者
謝謝分享,正在用這個編碼器,很好的參考資料
回復

使用道具 舉報

8#
ID:313702 發表于 2018-5-10 13:45 | 只看該作者
謝謝分享
回復

使用道具 舉報

9#
ID:231918 發表于 2018-5-24 20:45 | 只看該作者
真好  我正在找,就看到了
回復

使用道具 舉報

10#
ID:370819 發表于 2018-7-13 12:15 | 只看該作者
正需要謝謝樓主
回復

使用道具 舉報

11#
ID:67312 發表于 2018-7-18 15:09 | 只看該作者
謝謝,樓主好人,我學了很久都看不明白,你這是雪中送炭啊
回復

使用道具 舉報

12#
ID:353063 發表于 2018-9-3 16:17 | 只看該作者
好資料,一定要學習學習
回復

使用道具 舉報

13#
ID:393920 發表于 2018-9-5 15:32 | 只看該作者
很棒的思路
回復

使用道具 舉報

14#
ID:331575 發表于 2018-10-21 19:02 來自手機 | 只看該作者
謝謝。值得學習
回復

使用道具 舉報

15#
ID:307643 發表于 2018-11-11 19:22 | 只看該作者
很詳細,贊一個
回復

使用道具 舉報

16#
ID:424642 發表于 2018-11-11 19:45 | 只看該作者

謝謝分享,正在用這個編碼器,很好的參考資料
回復

使用道具 舉報

17#
ID:466509 發表于 2019-1-11 15:28 | 只看該作者
謝謝,很好,很實用
回復

使用道具 舉報

18#
ID:396487 發表于 2019-1-12 01:17 來自手機 | 只看該作者
正好需要
回復

使用道具 舉報

19#
ID:467304 發表于 2019-1-13 16:57 | 只看該作者
感謝樓主大佬啊,簡潔明了!
回復

使用道具 舉報

20#
ID:483488 發表于 2019-3-2 23:18 | 只看該作者
get!非常棒!
回復

使用道具 舉報

21#
ID:239855 發表于 2019-4-7 00:08 來自手機 | 只看該作者
好東西!!!
回復

使用道具 舉報

22#
ID:516413 發表于 2019-6-27 08:59 | 只看該作者
樓主,我試了你的仿真。點擊SW2的時候編碼器的值并沒有減小,沒反應,是程序有BUG嗎?還是什么地方沒操作對?
回復

使用道具 舉報

23#
ID:579065 發表于 2019-7-6 18:11 | 只看該作者
感謝樓主分享,很受用
回復

使用道具 舉報

24#
ID:241416 發表于 2019-7-8 17:24 | 只看該作者
學習一下好東西
回復

使用道具 舉報

25#
ID:582247 發表于 2019-7-11 19:33 | 只看該作者
厲害,必須贊一個
回復

使用道具 舉報

26#
ID:606488 發表于 2019-9-2 17:03 | 只看該作者
點贊。。。。
回復

使用道具 舉報

27#
ID:521117 發表于 2019-10-6 21:31 | 只看該作者
編碼器看似很簡單的一個器件,其時一點都不簡單。學習下,感謝
回復

使用道具 舉報

28#
ID:34298 發表于 2019-10-7 13:51 | 只看該作者
ElecC 發表于 2019-6-27 08:59
樓主,我試了你的仿真。點擊SW2的時候編碼器的值并沒有減小,沒反應,是程序有BUG嗎?還是什么地方沒操作對 ...

就是 我也試了 值不會減 ,只會增加  不會減少,程序可能有問題。
回復

使用道具 舉報

29#
ID:171036 發表于 2019-12-8 11:00 | 只看該作者
如何下載
回復

使用道具 舉報

30#
ID:171036 發表于 2019-12-8 11:00 | 只看該作者
如何下載
回復

使用道具 舉報

31#
ID:221051 發表于 2020-1-16 21:56 | 只看該作者
謝謝樓主的分享。
回復

使用道具 舉報

32#
ID:440637 發表于 2020-2-18 16:11 | 只看該作者

好資料,一定要分享學習
回復

使用道具 舉報

33#
ID:626079 發表于 2020-2-18 17:24 | 只看該作者
想不到這兒有這個資料, 之前看了這個東東,不知道原理,也沒敢下手買。 先標記下,空了好好學習學習。
回復

使用道具 舉報

34#
ID:298008 發表于 2020-2-19 15:44 | 只看該作者
謝謝樓主分享!!!!
回復

使用道具 舉報

35#
ID:145036 發表于 2020-4-12 21:51 | 只看該作者
好資料,一定要分享學習
回復

使用道具 舉報

36#
ID:747767 發表于 2020-5-9 16:35 | 只看該作者
謝謝!!正好需要
回復

使用道具 舉報

37#
ID:261560 發表于 2020-6-20 16:33 | 只看該作者
這個是測角度的嗎
回復

使用道具 舉報

38#
ID:785326 發表于 2020-6-20 22:21 | 只看該作者
很好用,很詳細
回復

使用道具 舉報

39#
ID:688460 發表于 2020-7-2 07:05 | 只看該作者
好東西,好好學習,天天向上!感謝樓主的無私奉獻!
回復

使用道具 舉報

40#
ID:757976 發表于 2020-7-2 08:56 | 只看該作者
編碼器,io口捕捉脈沖,很好的資料,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久久久久久 | 久久久国产一区 | 午夜免费精品视频 | 国产日韩精品视频 | 日韩中文字幕 | 99热在线播放 | 久草新视频 | 91视频中文 | 国产精品久久久久久婷婷天堂 | 中文字幕精品一区 | 日韩欧美成人一区二区三区 | 激情久久网 | 精品影院 | 欧美一级大片免费观看 | 国产免费一二三区 | 精品国产乱码久久久久久丨区2区 | 日韩精品一区二区三区 | 免费视频一区二区 | 亚洲天堂免费在线 | 亚洲成人www | 国产成人精品一区二区三区网站观看 | 欧美成人精品在线 | 日本在线视频一区二区 | 综合欧美亚洲 | 精品一区二区不卡 | 国产我和子的乱视频网站 | www.天天干.com| 一区视频 | 中文字幕高清av | 国产精品美女久久久 | 精品综合 | 日本不卡视频在线播放 | 天天综合成人网 | av黄色在线| 日本精品一区 | 成人黄色在线观看 | 欧美一级二级在线观看 | 成人免费一区二区三区视频网站 | 91香蕉视频在线观看 | 国产美女自拍视频 | 久久精品亚洲精品国产欧美 |