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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino-數(shù)碼管和LED顯示十六進(jìn)制數(shù)

作者:快樂的堯   來源:不詳   點擊數(shù):  更新時間:2014年08月02日   【字體:

這個實驗更麻煩,因為要將電位器采樣值map到0~255后以16進(jìn)制顯示,其中高位用數(shù)碼管顯示,低位用4個LED顯示(4位二進(jìn)制)。

 
 
這里主要學(xué)習(xí)了表格的使用方法。第一個參數(shù)是行數(shù),第二個參數(shù)是列數(shù)。如果點亮數(shù)字“5”的話,則要讓table1中的第五行從右向左分別為a~h段輸出,讓b,e和h段不亮。
 
另一個要點為把十進(jìn)制的數(shù)(0~255)變成十六進(jìn)制的數(shù),分別取高低位進(jìn)行顯示,變成兩位十六進(jìn)制數(shù)。將該數(shù)右移4位(8位二進(jìn)制數(shù)右移4位,左邊填0,即取高4位的值);再將二進(jìn)制數(shù)“00001111”進(jìn)行“與”運算,(即取低4位的值)。
 
  程序如下:
#include  
 
#define LED1 9
#define LED2 10
#define LED3 11
#define LED4 12
 
#define SEG_a 2 //IO命名
#define SEG_b 3
#define SEG_c 4
#define SEG_d 5
#define SEG_e 6
#define SEG_f 7
#define SEG_g 8
#define Pot A0
byte i;
byte a;
byte b;
int PotBuffer = 0;
 
 
 
//數(shù)碼管0-9數(shù)字碼值
unsigned char table1[16][8] =         //表格1,16行8列
{
//     h        g       f       e       d       c       b       a
  {    0, 0, 1, 1, 1, 1, 1, 1  }  , //0
  {    0, 0, 0, 0, 0, 1, 1, 0  }  , //1
  {    0, 1, 0, 1, 1, 0, 1, 1  }  , //2
  {    0, 1, 0, 0, 1, 1, 1, 1  }  , //3
  {    0, 1, 1, 0, 0, 1, 1, 0  }  , //4
  {    0, 1, 1, 0, 1, 1, 0, 1  }  , //5
  {    0, 1, 1, 1, 1, 1, 0, 1  }  , //6
  {    0, 0, 0, 0, 0, 1, 1, 1  }  , //7
  {    0, 1, 1, 1, 1, 1, 1, 1  }  , //8
  {    0, 1, 1, 0, 1, 1, 1, 1  }  , //9
  {    0, 1, 1, 1, 0, 1, 1, 1  }  ,        //A
  {    0, 1, 1, 1, 1, 1, 0, 0  }  ,
  {    0, 0, 1, 1, 1, 0, 0, 1  }  ,
  {    0, 1, 0, 1, 1, 1, 1, 0  }  ,
  {    0, 1, 1, 1, 1, 0, 0, 1  }  ,
  {    0, 1, 1, 1, 0, 0, 0, 1  }          //F
};
 
unsigned char table2[16][4] =        //表格2,16行4列
{
//  8     4     2      1
  { 0,    0, 0,     0}  , //0
  { 0,    0, 0,     1}  , //1  
  { 0,    0, 1,     0}  , //2
  { 0,    0, 1,     1}  , //3
  { 0,    1, 0,     0}  , //4
  { 0,    1, 0,     1}  , //5
  { 0,    1, 1,     0}  , //6
  { 0,    1, 1,     1}  , //7
  { 1,    0, 0,     0}  , //8
  { 1,    0, 0,     1}  , //9
  { 1,    0, 1,     0}  , //A
  { 1,    0, 1,     1}  , //B
  { 1,    1, 0,     0}  , //C
  { 1,    1, 0,     1}  , //D
  { 1,    1, 1,     0}  , //E
  { 1,    1, 1,     1}    //F
} ;
  
void setup()
{
  pinMode(SEG_a,OUTPUT); //設(shè)置引腳為輸出
  pinMode(SEG_b,OUTPUT);
  pinMode(SEG_c,OUTPUT);
  pinMode(SEG_d,OUTPUT);
  pinMode(SEG_e,OUTPUT);
  pinMode(SEG_f,OUTPUT);
  pinMode(SEG_g,OUTPUT);
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  pinMode(LED4,OUTPUT);
}
 
void loop()
{
    PotBuffer = analogRead(Pot); //讀取AD值
    i = map(PotBuffer, 0, 1023, 0, 255);
    a = i >> 4;          //a=v右移4位(8位二進(jìn)制數(shù)右移4位,左邊填0,即取高4位的值)
    b = i & 0b1111;      //v和二進(jìn)制數(shù)“00001111”進(jìn)行“與”運算,即取低4位的值)
    
    digitalWrite(SEG_a,table1[a][7]); //數(shù)碼管段a的輸出
    digitalWrite(SEG_b,table1[a][6]);  
    digitalWrite(SEG_c,table1[a][5]);
    digitalWrite(SEG_d,table1[a][4]);
    digitalWrite(SEG_e,table1[a][3]);
    digitalWrite(SEG_f,table1[a][2]);
    digitalWrite(SEG_g,table1[a][1]); //數(shù)碼管段g的輸出
    
    digitalWrite(LED4,table2[b][3]); // LED4(bit0)的輸出
    digitalWrite(LED3,table2[b][2]);
    digitalWrite(LED2,table2[b][1]);
    digitalWrite(LED1,table2[b][0]); // LED1(bit3)的輸出
 
    delay(50);
}
 
測試視頻(為了顯示精確,用了一個多圈電位器):
 
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 午夜免费看视频 | 久久成人免费 | 亚洲精品黄色 | 亚洲午夜av | 日韩和的一区二在线 | 中国一级特黄视频 | 久久久区 | 中文字幕日韩一区二区 | 天堂男人av| 国产精品一区二区av | 欧美日韩中 | 美女久久久久久久久 | 久久精品国产99国产精品 | 成人国产在线视频 | 性生活毛片 | 在线观看中文字幕 | 精品免费国产一区二区三区四区介绍 | 久久久.com | 免费高潮视频95在线观看网站 | 韩日视频在线观看 | 黑人巨大精品欧美一区二区免费 | 欧美成人a | 亚洲欧美日韩久久 | 国产精品不卡 | 色www精品视频在线观看 | 视频二区国产 | 精品美女久久久久久免费 | www.色综合 | 亚洲va欧美va天堂v国产综合 | 欧美色综合一区二区三区 | 一区二区在线不卡 | 国产欧美一级 | 欧美成人精品一区二区男人看 | 久久99精品久久久久久国产越南 | 亚洲一区二区在线播放 | 国产亚洲精品精品国产亚洲综合 | 午夜免费观看体验区 | 日韩一区二区在线免费观看 | 日韩一| 免费观看日韩精品 | 精产国产伦理一二三区 |