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

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

Arduino驅動NOKIA5110超聲波測距

作者:未知   來源:不詳   點擊數:  更新時間:2014年07月31日   【字體:

 

/
// nokia 5110 arduino驅動程序(中文,圖形顯示。超聲波測距)
// 版本1.1
// 2010.6
/

//端口定義

int lcd_ce=2;
int lcd_rst=3;
int sclk=4;
int sdin=5;
int lcd_dc=6;
int inputpin=8;  // 定義超聲波信號接收接口
int outputpin=9; // 定義超聲波信號發出接口

void setup()
{
  pinmode(inputpin, input);
  pinmode(outputpin, output);
}
//

unsigned char boy_bmp[]=
{


0xff,0x01,0x81,0xc1,0xf1,0xf9,0xf9,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xfd,0xf9,0xf1,0xe1,0x81,0x01,0xff,0xff,0x00,0x1f,0x7f,0xff,0x3f,0x27,0x27,
0x27,0x27,0x3f,0x17,0x3f,0x27,0x27,0x27,0x27,0x3f,0xff,0x3f,0x1f,0x0f,0x00,0xff,
0xff,0xf0,0xfc,0xfc,0xfe,0xff,0xfe,0xfc,0xec,0xf8,0xfa,0x5a,0xfa,0xf8,0xec,0xfc,
0xfe,0xff,0xfe,0xfe,0xfc,0xf8,0xf0,0xff,

};

//


const unsigned char hzk[][24]={ 
//深
{0x08,0xf1,0x1a,0x40,0x56,0xca,0x46,0xf2,0xc6,0x4a,0x56,0x00,0x01,0x07,0x00,0x02,0x01,0x00,0x00,0x07,0x00,0x01,0x02,0x00,}, 
//入 
{0x00,0x00,0x00,0xc1,0x31,0x0e,0x30,0xc0,0x00,0x00,0x00,0x00,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x00,}, 
//互 
{0x02,0x02,0x82,0xfe,0x8a,0x8a,0x8a,0xfa,0x02,0x03,0x02,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x00,}, 
//動
{0x92,0x52,0x32,0x52,0x92,0x10,0x08,0xff,0x08,0x08,0xf8,0x00,0x03,0x01,0x01,0x01,0x05,0x02,0x01,0x04,0x04,0x06,0x01,0x00,},
//科
{0x8a,0x6a,0xfe,0x29,0x49,0x80,0x92,0xa4,0x80,0xff,0x40,0x00,0x01,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,},
//技
{0x44,0x44,0xff,0x24,0x00,0x64,0xa4,0x3f,0xa4,0x64,0x04,0x00,0x04,0x04,0x07,0x00,0x04,0x04,0x02,0x01,0x02,0x04,0x04,0x00,},
}; 
//

 
const unsigned char font6x8[][6] = 
{ 
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp 
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // ! 
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // " 
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // # 
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $ 
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // % 
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // & 
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // ' 
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // ( 
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // ) 
    { 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14 },   // * 
    { 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08 },   // + 
    { 0x00, 0x00, 0x00, 0xa0, 0x60, 0x00 },   // , 
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // - 
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // . 
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // / 
    { 0x00, 0x3e, 0x51, 0x49, 0x45, 0x3e },   // 0 
    { 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00 },   // 1 
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2 
    { 0x00, 0x21, 0x41, 0x45, 0x4b, 0x31 },   // 3 
    { 0x00, 0x18, 0x14, 0x12, 0x7f, 0x10 },   // 4 
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5 
    { 0x00, 0x3c, 0x4a, 0x49, 0x49, 0x30 },   // 6 
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7 
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8 
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1e },   // 9 
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // : 
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ; 
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <<SPAN class=apple-converted-space> 
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // = 
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // > 
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ? 
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3e },   // @ 
    { 0x00, 0x7c, 0x12, 0x11, 0x12, 0x7c },   // a 
    { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x36 },   // b 
    { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x22 },   // c 
    { 0x00, 0x7f, 0x41, 0x41, 0x22, 0x1c },   // d 
    { 0x00, 0x7f, 0x49, 0x49, 0x49, 0x41 },   // e 
    { 0x00, 0x7f, 0x09, 0x09, 0x09, 0x01 },   // f 
    { 0x00, 0x3e, 0x41, 0x49, 0x49, 0x7a },   // g 
    { 0x00, 0x7f, 0x08, 0x08, 0x08, 0x7f },   // h 
    { 0x00, 0x00, 0x41, 0x7f, 0x41, 0x00 },   // i 
    { 0x00, 0x20, 0x40, 0x41, 0x3f, 0x01 },   // j 
    { 0x00, 0x7f, 0x08, 0x14, 0x22, 0x41 },   // k 
    { 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40 },   // l 
    { 0x00, 0x7f, 0x02, 0x0c, 0x02, 0x7f },   // m 
    { 0x00, 0x7f, 0x04, 0x08, 0x10, 0x7f },   // n 
    { 0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e },   // o 
    { 0x00, 0x7f, 0x09, 0x09, 0x09, 0x06 },   // p 
    { 0x00, 0x3e, 0x41, 0x51, 0x21, 0x5e },   // q 
    { 0x00, 0x7f, 0x09, 0x19, 0x29, 0x46 },   // r 
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // s 
    { 0x00, 0x01, 0x01, 0x7f, 0x01, 0x01 },   // t 
    { 0x00, 0x3f, 0x40, 0x40, 0x40, 0x3f },   // u 
    { 0x00, 0x1f, 0x20, 0x40, 0x20, 0x1f },   // v 
    { 0x00, 0x3f, 0x40, 0x38, 0x40, 0x3f },   // w 
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // x 
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // y 
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // z 
    { 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00 },   // [ 
    { 0x00, 0x55, 0x2a, 0x55, 0x2a, 0x55 },   // 55 
    { 0x00, 0x00, 0x41, 0x41, 0x7f, 0x00 },   // ] 
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^ 
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _ 
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // ' 
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a 
    { 0x00, 0x7f, 0x48, 0x44, 0x44, 0x38 },   // b 
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c 
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7f },   // d 
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e 
    { 0x00, 0x08, 0x7e, 0x09, 0x01, 0x02 },   // f 
    { 0x00, 0x18, 0xa4, 0xa4, 0xa4, 0x7c },   // g 
    { 0x00, 0x7f, 0x08, 0x04, 0x04, 0x78 },   // h 
    { 0x00, 0x00, 0x44, 0x7d, 0x40, 0x00 },   // i 
    { 0x00, 0x40, 0x80, 0x84, 0x7d, 0x00 },   // j 
    { 0x00, 0x7f, 0x10, 0x28, 0x44, 0x00 },   // k 
    { 0x00, 0x00, 0x41, 0x7f, 0x40, 0x00 },   // l 
    { 0x00, 0x7c, 0x04, 0x18, 0x04, 0x78 },   // m 
    { 0x00, 0x7c, 0x08, 0x04, 0x04, 0x78 },   // n 
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o 
    { 0x00, 0xfc, 0x24, 0x24, 0x24, 0x18 },   // p 
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xfc },   // q 
    { 0x00, 0x7c, 0x08, 0x04, 0x04, 0x08 },   // r 
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s 
    { 0x00, 0x04, 0x3f, 0x44, 0x40, 0x20 },   // t 
    { 0x00, 0x3c, 0x40, 0x40, 0x20, 0x7c },   // u 
    { 0x00, 0x1c, 0x20, 0x40, 0x20, 0x1c },   // v 
    { 0x00, 0x3c, 0x40, 0x30, 0x40, 0x3c },   // w 
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x 
    { 0x00, 0x1c, 0xa0, 0xa0, 0xa0, 0x7c },   // y 
    { 0x00, 0x44, 0x64, 0x54, 0x4c, 0x44 },   // z 
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines 
}; 
  
void lcd_init(void) 
{ 
    //先設置為輸出 
     pinmode(sclk,output); 
     pinmode(sdin,output);
     pinmode(lcd_dc,output); 
     pinmode(lcd_ce,output);
     pinmode(lcd_rst,output);
    
    // 產生一個讓lcd復位的低電平脈沖 
     digitalwrite( lcd_rst, low); 
    
     delaymicroseconds(1);
     digitalwrite( lcd_rst, high); 
     
    // 關閉lcd 
     digitalwrite( lcd_ce, low); 
     delaymicroseconds(1);

    // 使能lcd 
     digitalwrite( lcd_ce, high); //lcd_ce = 1; 
     delaymicroseconds(1); 
    lcd_write_byte(0x21, 0); // 使用擴展命令設置lcd模式 
    lcd_write_byte(0xc8, 0); // 設置偏置電壓 
    lcd_write_byte(0x06, 0); // 溫度校正 
    lcd_write_byte(0x13, 0); // 1:48 
    lcd_write_byte(0x20, 0); // 使用基本命令 
    lcd_clear();             // 清屏 
    lcd_write_byte(0x0c, 0); // 設定顯示模式,正常顯示 
         
    // 關閉lcd 
   digitalwrite( lcd_ce, low);  //lcd_ce = 0; 
} 
 
void lcd_clear(void) 
{ 
    unsigned int i; 
    lcd_write_byte(0x0c, 0);  
    lcd_write_byte(0x80, 0); 
    for (i=0; i<504; i++) 
      { 
        lcd_write_byte(0, 1); 
      }    
} 

void lcd_set_xy(unsigned char x, unsigned char y) 
{ 
    lcd_write_byte(0x40 | y, 0);// column 
    lcd_write_byte(0x80 | x, 0);// row 
} 
 
void lcd_write_char(unsigned char c) 
{ 
    unsigned char line; 
    c -= 32; 
    for (line=0; line<6; line++) 
    { 
        lcd_write_byte(font6x8[c][line], 1); 
    } 
} 
 
 
void lcd_write_english_string(unsigned char x,unsigned char y,char *s) 
{ 
    lcd_set_xy(x,y); 
    while (*s)  
    { 
     lcd_write_char(*s); 
     s++; 
    } 
} 
 
 
void lcd_write_byte(unsigned char dat, unsigned char command) 
{ 
    unsigned char i; 
   digitalwrite( lcd_ce, low); // 使能lcd_ce = 0 
    if (command == 0) 
    { 
     digitalwrite( lcd_dc, low);// 傳送命令 lcd_dc = 0; 
    } 
    else 
    { 
      digitalwrite( lcd_dc, high);// 傳送數據lcd_dc = 1; 
    } 

  for(i=0;i<8;i++) 
  { 
     if(dat&0x80) 
     { 
        digitalwrite( sdin, high);//sdin = 1; 
     } 
    else 
    { 
     digitalwrite( sdin, low);//sdin = 0; 
     } 
   digitalwrite( sclk, low);//sclk = 0; 
   dat = dat << 1; 
   digitalwrite( sclk, high);//sclk = 1; 
  } 
    digitalwrite( lcd_ce, high);//lcd_ce = 1; 
        
} 
 
                         
void lcd_write_chinese_string(unsigned char x, unsigned char y, 
                              unsigned char ch_with,unsigned char num, 
         unsigned char line,unsigned char row) 
{ 
    unsigned char i,n; 
    lcd_set_xy(x,y);                             //設置初始位置 
    for (i=0;i 
    { 
       for (n=0; n 
       {  
           if (n==ch_with)                      //寫漢字的下半部分 
           { 
               if (i==0) lcd_set_xy(x,y+1); 
               else 
    { 
                  lcd_set_xy((x+(ch_with+row)*i),y+1); 
    } 
            } 
           lcd_write_byte(hzk[line+i][n],1); 
       } 
       i++; 
       lcd_set_xy((x+(ch_with+row)*i),y); 
    } 
} 
 
 
void lcd_draw_bmp_pixel(unsigned char x,unsigned char y,unsigned char *map, 
                        unsigned char pix_x,unsigned char pix_y) 
{ 
    unsigned int i,n; 
    unsigned char row; 
    if (pix_y%8==0) 
{ 
     row=pix_y/8;      //計算位圖所占行數 
    } 
    else 
{ 
        row=pix_y/8+1; 
    } 
    for (n=0;n 
    { 
       lcd_set_xy(x,y); 
        for(i=0; i 
          { 
            lcd_write_byte(map[i+n*pix_x], 1); 
          } 
        y++;                         //換行 
    }       
} 


void loop()
{
   lcd_init();//初始化液晶     
   lcd_clear();//清屏 
  

   lcd_draw_bmp_pixel(30,0,boy_bmp,24,24);        //調入上面的圖像
   lcd_write_english_string(4,2,"----");          //寫入ascii字符
   lcd_write_english_string(55,2,"----"); 
   lcd_write_chinese_string(6,3,12,6,0,0);        //寫入中文字符
   lcd_write_english_string(20,5,"arduino");      
   delay(5000);

   lcd_clear();                                  //清屏 

   lcd_write_english_string(0,0," --arduino-- ");
   lcd_write_english_string(0,2,"renge:");
   
   lcd_write_english_string(0,4,"design by kent"); 
   lcd_write_english_string(0,5,"    2010.6    "); 

  //以下進入超聲波測距

   while(1)
  {
      digitalwrite(outputpin, low); // 使發出發出超聲波信號接口低電平2μs
      delaymicroseconds(2);
      digitalwrite(outputpin, high); // 使發出發出超聲波信號接口高電平10μs,這里是至少10μs
      delaymicroseconds(10);
      digitalwrite(outputpin, low);    // 保持發出超聲波信號接口低電平
      int distance = pulsein(inputpin, high);  // 讀出脈沖時間
      distance= distance/58;           // 將脈沖時間轉化為距離(單位:厘米)
         if(distance>120)              //如果距離大于120cm
        {
      
         lcd_write_english_string(35,2,"???"); //在(35, 2)坐標上顯示“???”
        }
         else
        {
          lcd_write_english_string(60,2,"cm");     //如果小于120cm
          lcd_set_xy(35, 2);                       //在(35, 2)坐標上顯示測出數值
          lcd_write_char( 0x30+distance00/100); //顯示百位數
          lcd_write_char( 0x30+distance0/10);   //顯示十位數
          lcd_write_char( 0x30+distance);       //顯示個位數
        }

  }


}
關閉窗口

相關文章

主站蜘蛛池模板: 日本一卡精品视频免费 | 国产视频1区 | 日韩成人在线观看 | 国产精品一区二区三区四区五区 | 2018天天干天天操 | 麻豆国产一区二区三区四区 | 亚洲国产欧美一区二区三区久久 | 久久免费小视频 | 久久国产精品久久久久久久久久 | 国产精品久久久久久久久久久久冷 | 亚洲日本成人 | 精品久久精品 | 涩涩视频网站在线观看 | 亚洲午夜视频 | 欧美一页 | 日韩在线精品强乱中文字幕 | 日韩在线国产精品 | 久久综合成人精品亚洲另类欧美 | 午夜激情视频在线 | 亚洲一页 | 亚洲一区二区三区在线 | 一级片在线观看 | 自拍偷拍视频网 | 欧美中文字幕一区 | 亚洲高清在线观看 | 国产中文一区二区三区 | 免费在线国产视频 | 欧美激情在线精品一区二区三区 | 黄色成人在线 | 亚洲国产成人精品久久久国产成人一区 | 久久精品 | 久久久久久av | 久久久久无码国产精品一区 | 91av视频| 成人免费在线观看 | 免费黄色录像片 | 亚洲天堂中文字幕 | 国户精品久久久久久久久久久不卡 | 国产99久久精品 | 最大av在线| 久久精品国产一区二区电影 |