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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

幾根線做的Arduino液晶屏旋轉編碼器帶你進入數字化編程之旅

[復制鏈接]
跳轉到指定樓層
樓主
這個板塊沒有51熱鬧,但是編程簡單,可以有更多的精力去創意,其實沒有創意和靈魂的東西永遠不會成為經典。

制作出來的實物圖如下:


Arduino程序源碼:
  1. #define ENCODER_A_PIN 2
  2. #define ENCODER_B_PIN 3
  3. #define SWITCH_PIN    4
  4. long position;//
  5.       int latchPin = 8;//RS
  6.       int dataPin = 9;//RW
  7.       int clockPin =10;//EN
  8.       unsigned char tabe[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//查表法//0-9數字
  9. void setup()
  10. {
  11.   //setup our pins 初始化我們的需要的引腳
  12.   pinMode(ENCODER_A_PIN, INPUT);
  13.   pinMode(ENCODER_B_PIN, INPUT);
  14.   pinMode(SWITCH_PIN, INPUT);

  15.   attachInterrupt(0, read_quadrature, CHANGE);

  16.         pinMode(latchPin, OUTPUT); //設置引腳為輸出
  17.         pinMode(clockPin, OUTPUT);
  18.         pinMode(dataPin, OUTPUT);  
  19.        Lcdint( );//lcd  

  20. }
  21. ////////////////////////////寫SPI時序,具體參考shiftout 命令使用/////////////////////////////
  22.       void WriteByte(int dat)
  23.       {

  24.           digitalWrite(latchPin, HIGH);         
  25.           shiftOut(dataPin, clockPin, MSBFIRST, dat);
  26.           digitalWrite(latchPin, LOW);
  27.       }
  28.       ///////////////////寫命令/////////////////////////////////////
  29.       void LcdCommandWrite(int value) {  
  30.         int H_data,L_data;
  31.          H_data = value;
  32.          H_data &= 0xf0;           //屏蔽低4位的數據
  33.          L_data = value;             //xxxx0000格式
  34.          L_data &= 0x0f;           //屏蔽高4位的數據
  35.          L_data <<= 4;             //xxxx0000格式
  36.          WriteByte(0xf8);          //RS=0,寫入的是指令;
  37.          WriteByte(H_data);
  38.          WriteByte(L_data);
  39.       }   
  40.       //////////////////////寫數據/////////////////////////////////////
  41.       void LcdDataWrite(int value) {  
  42.         int H_data,L_data;
  43.          H_data = value;
  44.          H_data &= 0xf0;           //屏蔽低4位的數據
  45.          L_data = value;             //xxxx0000格式
  46.          L_data &= 0x0f;           //屏蔽高4位的數據
  47.          L_data <<= 4;             //xxxx0000格式
  48.          WriteByte(0xfa);          //RS=1,寫入的是數據
  49.          WriteByte(H_data);
  50.          WriteByte(L_data);
  51.       }   
  52.     ////////////////////// /////////////////////////////////////
  53.       void Lcdint(void)
  54.       {  
  55.         LcdCommandWrite(0x30);  //  設定為基本指令         
  56.         delay(5);     
  57.         LcdCommandWrite(0x03);  // //允許輸入卷動位址
  58.         delay(5);
  59.         LcdCommandWrite(0x0c);  // //脫離隨眠狀態,顯示打開,關光標,反白關.
  60.         delay(5);
  61.          LcdCommandWrite(0x01);  // 清屏指令.         
  62.         delay(5);     
  63.         LcdCommandWrite(0x06);  // AC自動加一,光標右移,整體顯示不移動  
  64.         delay(5);   
  65.       }
  66.    void LCD_zfc(char *p)//定義一個帶指針的函數?(字符串)
  67. {
  68.         while(*p!=0)//不能用";"
  69.         LcdDataWrite(*p++);
  70. }   
  71. <font style="font-size: 36.9444px"> /************************顯示1 *********************************/                                                           </font>
  72. void display1(void)
  73. {
  74.     int dt1,dt2,dt3,dt4,dt5,dt6,dt7,dt8;

  75.           long temp ;                        //存放溫度值的10倍=12345678;  

  76.         temp=position;//旋轉
  77.         //temp=12345678;   
  78.         dt1 = temp%10;//1位
  79.         dt2 = temp%100/10;//2位
  80.         dt3 = temp%1000/100;//3位
  81.         dt4 = temp%10000/1000;//4位

  82.         dt5 = temp%100000/10000;//5位
  83.         dt6 = temp%1000000/100000;//6位
  84.         dt7 = temp%10000000/1000000;//7位
  85.         dt8 = temp/10000000;//8位             最高位  
  86.         
  87.     LcdCommandWrite(0x98);//LCD12864_W ((0或1),****)  0寫指令  1寫數據
  88.    // 0xCE,0xC2,0xB6,0xC8

  89.          LcdDataWrite(0xd0 );
  90.          LcdDataWrite(0xfd );
  91.          LcdDataWrite(0xd7 );
  92.          LcdDataWrite(0xaa );
  93.          LcdDataWrite(0x3a);// .

  94.     // LcdDataWrite(tabe[dt8]);//8位
  95.      //LcdDataWrite(tabe[dt7]);//7位
  96.     // LcdDataWrite(tabe[dt6]);//6位
  97.      //LcdDataWrite(tabe[dt5]);//5位   
  98.      LcdDataWrite(tabe[dt4]);//4位
  99.      LcdDataWrite(tabe[dt3]);//3位
  100.      //LcdDataWrite(0x2e);// .....
  101.      LcdDataWrite(tabe[dt2]);//2位
  102.      LcdDataWrite(tabe[dt1]);//1位   
  103.      LCD_zfc(" R");  
  104. }
  105. void read_quadrature()
  106. {  
  107.   if (digitalRead(ENCODER_A_PIN) == LOW)
  108.   {        
  109.       if (digitalRead(ENCODER_B_PIN) == LOW)
  110.       position++;
  111.       if(position>1000)position=1000;
  112.   }  
  113.   else
  114.   {   
  115.      if (digitalRead(ENCODER_B_PIN) == LOW)
  116.       position--;
  117.       if(position<0)position=0;
  118.   }  
  119.    if (digitalRead( SWITCH_PIN ) == LOW)
  120.   {
  121.   position=0;
  122.   }
  123. }
  124. void loop()
  125. {
  126.         display1();//旋轉
  127.         read_quadrature();

  128. }
復制代碼

全部資料51hei下載地址:
128顯旋轉編碼器OK2.zip (2.07 KB, 下載次數: 30)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人精品女人久久久 | 国产在线一区观看 | 91亚洲精品久久久电影 | 一区二区精品视频 | 久久久久国产精品午夜一区 | 久久久久久亚洲精品 | 美国十次成人欧美色导视频 | 黄色福利 | 久草网址| 久色网| 国产视频久 | 欧美男人天堂 | 日本一区二区三区在线观看 | 日本福利一区 | 国产精品日日摸夜夜添夜夜av | 激情av网站 | 欧美v片 | 成人免费观看视频 | 精品视频导航 | 99精品国产一区二区三区 | 欧美激情久久久 | 草久在线 | 亚洲免费成人 | 在线第一页 | 天天综合永久入口 | 日日日干干干 | 激情五月婷婷 | 精品久久精品 | 国产精品一区二区欧美黑人喷潮水 | 国产精品v| 国产日韩精品久久 | 99国产精品久久久久 | 日韩欧美一区在线 | 久久久久国产精品免费免费搜索 | 一区二区三区精品视频 | 日韩一级免费电影 | 伊人一区 | 国产视频2021 | 激情欧美一区二区三区 | 综合久久久久 | 亚洲精品国产a久久久久久 午夜影院网站 |