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);
}
}