當前位置:編程學習大全網 - 源碼下載 - 如何給初學arduino編程的人寫壹個程序在LCD上顯示文字?

如何給初學arduino編程的人寫壹個程序在LCD上顯示文字?

//端口定義諾基亞5110顯示

int LCD _ CE = 2;

int LCD _ RST = 3;

int SCLK = 4;

int SDIN = 5;

int LCD _ DC = 6;

int input pin = 8;//定義超聲波信號接收接口。

int output pin = 9;//定義發送超聲波信號的接口。

/****************************************************************/

無效設置()

{

pinMode(inputPin,INPUT);

pinMode(outputPin,輸出);

}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

/**********************************

6 x 8字體

左側和底部的1像素間距

index = ASCII - 32

***********************************/

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 },//& amp;

{ 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 },//& lt;

{ 0x00,0x14,0x14,0x14,0x14,0x14 },// =

{ 0x00,0x00,0x41,0x22,0x14,0x08 },//& gt;

{ 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行

};

* * * * * * * * * * * * * * * * * * * * * * LCD初始化功能* * * * * * * * * * * * * * * * * * * * * * * *

void LCD_init(void)

{

//設置為先輸出。

pinMode(SCLK,輸出);

pinMode(SDIN,輸出);

pinMode(LCD_DC,輸出);

pinMode(LCD_CE,輸出);

pinMode(LCD_RST,輸出);

//產生壹個低電平脈沖來復位LCD。

digitalWrite( LCD_RST,低);

delayMicroseconds(1);

digitalWrite( LCD_RST,高);

//關閉LCD。

digitalWrite( LCD_CE,低);

delayMicroseconds(1);

//啟用LCD

digitalWrite( LCD_CE,高);//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,低);//LCD _ CE = 0;

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

void LCD_clear(void)

{

無符號int I;

LCD_write_byte(0x0c,0);

LCD_write_byte(0x80,0);

for(I = 0;我& lt504;i++)

{

LCD_write_byte(0,1);

}

}

/* * * * * * * * * * * * * * * * * * * * * *設置字符位置功能* * * * * * * * * * * * * * * *

void LCD_set_XY(無符號字符X,無符號字符Y)

{

LCD_write_byte(0x40 | Y,0);//列

LCD_write_byte(0x80 | X,0);//行

}

* * * * * * * * * * * * * * * * * * * * * ASCII字符顯示功能* * * * * * * * * * * * * * * * * *

void LCD_write_char(無符號字符c)

{

無符號字符行;

c-= 32;

for(line = 0;line & lt6;line++)

{

LCD _ write _ byte(font 6x 8[c][line],1);

}

}

/*******************************************************************/

/* -

LCD_write_english_String:英文字符串顯示函數。

輸入參數:*s:英文字符串指針;

x,y:顯示字符串的位置,x 0-83,y 0-5。

- */

void LCD_write_english_string(無符號字符X,無符號字符Y,字符*s)

{

LCD_set_XY(X,Y);

while (*s)

{

LCD _ write _ char(* s);

s++;

}

}

/******************************************************************/

/* -

LCD_write_byte:將數據寫入LCD。

輸入參數:數據:書面數據;

命令:寫數據/命令選擇;

- */

void LCD_write_byte(無符號字符數據,無符號字符命令)

{

無符號字符I;

digitalWrite( LCD_CE,低);//使能LCD_CE = 0

if(命令== 0)

{

digitalWrite( LCD_DC,低);//傳輸命令LCD _ DC = 0;

}

其他

{

digitalWrite( LCD_DC,高);//傳輸數據LCD _ DC = 1;

}

for(I = 0;我& lt8;i++)

{

if(dat & amp;0x80)

{

digitalWrite( SDIN,高);//SDIN = 1;

}

其他

{

digitalWrite( SDIN,低);//SDIN = 0;

}

digitalWrite( SCLK,低);//SCLK = 0;

dat = dat & lt& lt1;

digitalWrite( SCLK,高);//SCLK = 1;

}

digitalWrite( LCD_CE,高);//LCD _ CE = 1;

}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

無效循環()

{

LCD _ init();//初始化液晶

LCD _ clear();

LCD_write_english_string(0,0,“-Arduino-”);

LCD_write_english_string(0,2," Renge:");

LCD_write_english_string(0,4,“肯特設計”);

LCD_write_english_string(0,5," 2010.6 ");

while(1)

{

digitalWrite(outputPin,低);//使發出超聲波信號的接口低電平2 μ s。

delay微秒(2);

digitalWrite(outputPin,高);//使發出超聲波信號的接口為高電平10μ s,這裏至少為10μs。

delayMicroseconds(10);

digitalWrite(outputPin,低);//保持發送超聲波信號的接口為低電平。

int distance = pulseIn(inputPin,HIGH);//讀取脈沖時間

距離=距離/58;//將脈沖時間轉換為距離(單位:厘米)

if(距離& gt120)

{

LCD_write_english_string(35,2,“?”);

}

其他

{

LCD_write_english_string(60,2,“cm”);

LCD_set_XY(35,2);

LCD _ write _ char(0x 30+距離% 1000/100);//顯示百位數

LCD _ write _ char(0x 30+距離% 100/10);//顯示十位數

LCD _ write _ char(0x 30+距離% 10);//顯示個位數

}

延時(10);

}

}

  • 上一篇:dnorm在r語言中什麽意思
  • 下一篇:北京全盛時代追溯碼
  • copyright 2024編程學習大全網