单片机学习(五)LCD1602和矩阵键盘的使用

一、LCD1602介绍

LCD1602液晶显示器,是一种常用的字符型液晶显示器,其显示区域可分为两行,每行可显示16个字符(共32个字符),各字符由5×8点阵的字符构成。它有很广泛的用途,如嵌入式系统、小型计算机以及家用电器等,用于显示文字、数字、符号等的信息。

二、LCD1602的原理

液晶显示原理是通过液晶材料的扭转控制光线的透射,从而完成显示效果。LCD1602液晶显示屏架体内部主要由驱动芯片、显示控制器、显示板组成。其中驱动芯片是通过与单片机通信来控制LCD1602的显示,显示控制器则是根据驱动芯片发来的指令对显示板进行控制。

三、LCD1602的使用

1.硬件连接

LCD1602液晶显示器与单片机的连接需要使用8位数据线、RS、RW、EN、VSS、VDD等引脚,具体连线方式如下图所示:

![image.png](attachment:image.png)

2.编程方式

LCD1602的控制是通过指令进行的,具体的指令可以参考LCD1602数据手册。下面是一个基础的LCD1602驱动程序的例子:

```

#include//头文件,因为使用:“SFR”关键字要定义在reg51.h库中,同时P1寄存器也需要定义,因此要引用reg51.h中定义的头文件

#define LCD_data P1 //定义要连接到LCD模块数据总线的单片机端口,因为12864液晶模块是8位数据传输,因此用8个引脚连接(P1)

sbit RS = P2^0; //把RS口定义为P2^0位,用于区分指令数据,高电平为数据,低电平为指令

sbit RW = P2^1; //把RW口定义为P2^1位,用于读写选择。高电平为读模式,低电平为写模式

sbit EN = P2^2; //把EN口定义为P2^2位,用于发送一个8位数据或者一个指令,给液晶的一个时钟信号(由高变低)。

void Delay_1ms(unsigned int c) //用于延时函数,大致为1ms

{

unsigned char a,b;

for(b=0;b for(a=0;a<120;a++);

}

void Lcd_Write_Cmd(unsigned char command) //写入指令函数

{

RS = 0;

RW = 0;

EN = 0;

EN = 1;

LCD_data = command;

EN = 0;

Delay_1ms(5);

}

void Lcd_Init() //初始化函数

{

Lcd_Write_Cmd(0x38);

Lcd_Write_Cmd(0x0c);

Lcd_Write_Cmd(0x06);

Lcd_Write_Cmd(0x01);

Delay_1ms(5);

}

void Lcd_Write_Data(unsigned char dat) //写数据函数

{

RS = 1;

RW = 0;

EN = 0;

EN = 1;

LCD_data = dat;

EN = 0;

Delay_1ms(5);

}

void Lcd_Write_String(unsigned char x,unsigned char y,unsigned char *s) //写入字符串函数

{

unsigned char i;

if(x<16)

{

x = x + 0x80;

Lcd_Write_Cmd(x);

}

else

{

x = x + 0x80 + 0x40;

Lcd_Write_Cmd(x);

}

for(i=0;s[i]!='\0';i++)

Lcd_Write_Data(s[i]);

}

void main() //主函数

{

Lcd_Init(); //初始化LCD1602

Lcd_Write_String(0,0,"Hello World!"); //显示字符串

while(1); //循环

}

```

四、矩阵键盘的介绍

矩阵键盘是一种电子组件,多用于嵌入式系统的输入设备之中,相对于普通按键可以节省很多IO口。它采用行列式的布局,由行、列导线组成,按键被接在交叉点上,通过扫描行、列来判断按键的输入情况。

矩阵键盘一般可分为4X4和3X4两种不同规格的矩阵键盘,其中4X4矩阵键盘可输入16种不同的按键编码,3X4矩阵键盘可输入12种不同的按键编码。

五、矩阵键盘的使用

1.硬件连接

矩阵键盘的硬件接线方式比较简单,只需要将行、列导线分别连接到单片机的指定引脚即可。下面是一般矩阵键盘的连接方式:

![image-2.png](attachment:image-2.png)

2.编程方式

矩阵键盘的编程方式也比较简单,可以通过扫描行、列的方式来检测按键是否按下。一般的矩阵键盘可以通过给定按键编码进行识别。下面是一个基础的矩阵键盘驱动程序的例子:

```

#include

#define uint unsigned int

sbit K1 = P2^0;

sbit K2 = P2^1;

sbit K3 = P2^2;

sbit K4 = P2^3;

sbit K5 = P2^4;

sbit K6 = P2^5;

sbit K7 = P2^6;

sbit K8 = P2^7;

uint ReadKey()

{

uint KeyStatus = 0xffff;

P2 |= 0xF0;

if(K1 == 0)

{

KeyStatus &= 0xFEFF;

while(!K1);

}

if(K2 == 0)

{

KeyStatus &= 0xFDFF;

while(!K2);

}

if(K3 == 0)

{

KeyStatus &= 0xFBFF;

while(!K3);

}

if(K4 == 0)

{

KeyStatus &= 0xF7FF;

while(!K4);

}

P2 &= 0x0F;

if(K5 == 0)

{

KeyStatus &= 0xEFFF;

while(!K5);

}

if(K6 == 0)

{

KeyStatus &= 0xDFFF;

while(!K6);

}

if(K7 == 0)

{

KeyStatus &= 0xBFFF;

while(!K7);

}

if(K8 == 0)

{

KeyStatus &= 0x7FFF;

while(!K8);

}

return KeyStatus;

}

void main()

{

while(1)

{

uint KeyStatus = ReadKey();

if(KeyStatus != 0xFFFF)

{

if(KeyStatus == 0xFEFF)

{

//执行按键1的操作

}

else if(KeyStatus == 0xFDFF)

{

//执行按键2的操作

}

//...

}

}

}

```

六、案例说明

结合上述两种电子组件的使用,我们可以实现多种有趣的嵌入式应用,例如:

1.实现一个简单的计算器

在LCD1602液晶显示器和4X4矩阵键盘的帮助下,我们可以实现一个简单的计算器。用户通过4X4矩阵键盘输入数字和运算符,程序在计算过程中,将计算结果实时显示在LCD1602液晶显示器上。

2.实现一个密码锁

在LCD1602液晶显示器和4X4矩阵键盘的帮助下,我们可以实现一个简单的密码锁。当用户输入正确的密码时,程序会显示一个提示,告知用户解锁成功。反之,解锁失败。

3.实现一个温度监测器

在通过温度传感器采集到温度数据后,我们可以通过LCD1602液晶显示器将实时温度值显示在屏幕上,并通过4X4矩阵键盘设置一个阈值。如果实时温度值超过阈值,程序会显示一个警告提示。

4.实现一个简单的游戏

通过4X4矩阵键盘进行角色移动,并通过LCD1602液晶显示器显示游戏进程。例如,一个赛车游戏,按下“上”键后车辆向前移动,按下“左”键后车辆向左移动,依次类推。

以上仅是一些有趣的嵌入式应用示例,只要你的想象和创新,就可以实现更多精彩的项目。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(53) 打赏

评论列表 共有 1 条评论

静听你哼唱的旋律ヽ 1年前 回复TA

别人越嫉妒你,你要感到越幸运,因为你的生活本身就是别人的梦想!

立即
投稿
发表
评论
返回
顶部