初学者arduino编程在LCD上显示文字 应该怎么写程序 ?

初学者arduino编程在LCD上显示文字 应该怎么写程序 ?,第1张

//端口定义 诺基亚5110显示屏

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

}

//定义ASCII字符//

/

6 x 8 font

1 pixel space at left and bottom

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

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

{ 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

};

/LCD初始化函数/

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;

}

/LCD清屏函数/

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

}

/ASCII字符显示函数/

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

}

}

//

/-------------------------------------------------

LCD_write_english_String : 英文字符串显示函数

输入参数:s :英文字符串指针;

X、Y : 显示字符串的位置,x 0-83 ,y 0-5

--------------------------------------------------/

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++;

}

}

//

/---------------------------------------------

LCD_write_byte : 写数据到LCD

输入参数:data :写入的数据;

command :写数据/命令选择;

---------------------------------------------/

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 loop()

{

LCD_init();//初始化液晶

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," 20106 ");

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)

{

LCD_write_english_string(35,2,"");

}

else

{

LCD_write_english_string(60,2,"cm");

LCD_set_XY(35, 2);

LCD_write_char( 0x30+distance%1000/100); //显示百位数

LCD_write_char( 0x30+distance%100/10); //显示十位数

LCD_write_char( 0x30+distance%10); //显示个位数

}

delay(10);

}

}

一般使用fir滤波器进行平滑低通处理,简单地说就是取历史值做平均即可。

FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器,与IIR对应。

FIR滤波器,顾名思义,其脉冲响应由有限个采样值构成。长度(抽头数)为NN、阶数为N−1N−1的FIR系统的转移函数、差分方程和单位冲激响应分别如下列三式所示。 

from pyfirmata import Arduino, util

import time

board = Arduino('COM8')

pin1 = 5

pin2 = 6

boarddigital[pin1]write(0) #向端口13写入0

if boarddigital[pin2]read() == 0:

boarddigital[pin1]write(1) #向端口13写入1

if boarddigital[pin2]read() == 1:

print("两引脚已接通")

exit(0)

print("两引脚未接通")

#未测试,应该可用

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13496185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存