LCD1602的使用

首先LCD1602是外接在开发板上的液晶屏外设,如图所示:

我们主要使用它来代替动态数码管进行显示,因此使用的原理我们可以先略过,而控制它可以使用b站up主提供的驱动程序,即我们只需调用第三方库即可实现对LCD1602的控制了。

(b站对应视频链接:https://www.bilibili.com/video/BV1Mb411e7re,可以在视频下方找到对应的驱动程序资源)

up主提供的驱动程序包括以下的接口:



在使用LCD进行显示之前我们需要先使用LCD_Init()进行初始化,然后如上图所示,我们可以使用LCD来显示字符、字符串、数字的二进制显示、十六进制显示等等。

因此我们先打印一下迟来的“Hello World”。

int main() {
LCD_Init();
LCD_ShowString(1,1,"Hello World");
while (1);
}

运行结果:

矩阵键盘的使用

矩阵键盘相关电路图

按键检测扫描

在默认没有按键按下的情况下P1的7个引脚都会是高电平,这样假设P1[3...0]=0b1110,即使P1^0置为0,此时S4,S8,S12,S16的右边一端的电位都会变成0,此时若我们单击S4按钮,则S4所连接的另一端P1^7的电位也会变为0,此时即可判断S4按钮被按下了。因此我们的扫描过程可以描述如下:

for lowPart in [0111, 1011, 1101, 1110]:
P1的低四位 = lowPart
for i=1 to 4:
if P1的第i位(从左到右数)为 0:
此时即可判断是某按键按下,进行相应的操作

因此代码实现为:

u8 MatrixKey() {
u8 keyNum = 0;
u8 i,j;
u8 highCheck;
for(j=0;j<4;j++) {
P1 = 0xff;
// 设置P1的低4位
P1 &= ~(0x08>>j);
highCheck = 0x80; //1000 0000
for(i=0;i<4;i++) {
// 检查高4位有没有0,若有则说明按键按下
if ((highCheck & P1) ==0) {
deley(1000);
while ((highCheck & P1) ==0);
deley(1000);
keyNum = i*4+j+1;
}
highCheck>>=1;
}
}
return keyNum;
}

这样当我们按动某个按键时就会返回对应的按键编号了。

制作密码输入器

#define BACKSPACE 15
#define REINPUT 16 int main() {
char passWord[20];
u8 i=0;
LCD_Init(); passWord[0] = '\0';
LCD_ShowString(1,1,passWord);
while (1) {
u8 res = MatrixKey();
if (res!=0) {
if (res == REINPUT) {
// 若为按键16则代表清空并重新输入
LCD_Init();
passWord[0] = '\0';
i=0;
}
else if(res == BACKSPACE) {
// 若为按键15则代表删除最后一个字符,即退格
LCD_ShowString(1,i," ");
i--;
passWord[i] = '\0';
}
else {
// 其余情况则添加一个字符并显示出来
passWord[i++]=res+'0';
passWord[i] = '\0';
LCD_ShowString(1,1,passWord);
} }
}
}

运行效果:

单片机学习(五)LCD1602和矩阵键盘的使用的更多相关文章

  1. 芯航线FPGA学习套件之4*4矩阵键盘模块测试手册

    芯航线FPGA学习套件之4*4矩阵键盘模块测试手册   本手册以简明扼要的方式介绍芯航线FPGA学习套件提供的矩阵键盘模块的测试方法:   连接开发板,如下所示: 2.将矩阵键盘模块与开发板按如下图所 ...

  2. 【STM32学习笔记】STM32f407 使用4*4矩阵键盘

    作者:李剀 出处:https://www.cnblogs.com/kevin-nancy/ 欢迎转载,但也请保留上面这段声明.谢谢! 写在前面: 这是本人第一次开始写博客,可能写的不是很好,也请大家谅 ...

  3. AVR单片机教程——矩阵键盘

    本文隶属于AVR单片机教程系列.   开发板上有4个按键,我们可以把每一个按键连接到一个单片机引脚上,来实现按键状态的检测.但是常见的键盘有104键,是每一个键分别连接到一个引脚上的吗?我没有考证过, ...

  4. 十天学会单片机Day2键盘检测(独立键盘、矩阵键盘)

    1.键盘的分类 编码键盘:键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘 非编码键盘:靠软件编程来识别的称为非编码键盘.独立键盘.矩阵键盘 2.按键消抖   ...

  5. 「雕爷学编程」Arduino动手做(26)——4X4矩阵键盘模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  6. Win10 IoT C#开发 6 - 4x4矩阵键盘扫描

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...

  7. 4x4矩阵键盘扫描

    4x4矩阵键盘扫描 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架 ...

  8. 基于FPGA的4x4矩阵键盘驱动调试

    好久不见,因为博主最近两个月有点事情,加上接着考试,考完试也有点事情要处理,最近才稍微闲了一些,这才赶紧记录分享一篇博文.FPGA驱动4x4矩阵键盘.这个其实原理是十分简单,但是由于博主做的时候遇到了 ...

  9. 单片机显示原理(LCD1602)

    一.接口 LCD1602是很多单片机爱好者较早接触的字符型液晶显示器,它的主控芯片是HD44780或者其它兼容芯片.与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD ...

随机推荐

  1. 自定义组件开发:使用v-model封装el-pagination组件

    1.前言 通过封装el-pagination组件开发自定义分页组件的类似文章网上已经有很多了,但看了一圈,总是不如意,于是决定还是自己动手搞一个. 2.背景 2.1.常规分页处理方法 利用el-pag ...

  2. SpringCloud 微服务最佳开发实践

    Maven规范 所有项目必须要有一个统一的parent模块 所有微服务工程都依赖这个parent,parent用于管理依赖版本,maven仓库,jar版本的统一升级维护 在parent下层可以有 co ...

  3. springBoot-Quartz快速入门

    springBoot-Quartz快速入门 开发环境 JDK1.8.Maven.Idea 技术栈 SpringBoot 2.1.6.quartz 2.3.0等 数据库准备 说明:数据库脚本由Quart ...

  4. 【网络编程】HTTP简介&URL

    目录 前言 1. http 简介 1.1 概念 1.2 原理 1.3 特点 2. URL 简介 2.1 概念 2.2 URL 通用格式 2.3 网页地址 实例说明 3. HTTP 消息结构 3.1 客 ...

  5. 在线CRM系统对企业的好处有哪些

    随着信息技术的飞速发展,每个企业都希望通过互联网技术来让自身发展壮大.由于强大的管理能力和技术手段,在线CRM系统成为了企业用来管理自身获得发展的最佳选择.那么在线CRM系统对企业来说有哪些好处呢?本 ...

  6. Docker:Docker部署postgresql数据库

    环境 Centos-7  Postgresql-10 docker-19 yum加载Postgresql yum install https://download.postgresql.org/pub ...

  7. WPF教程十一:简单了解并使用控件模板

    WPF教程十一:简单了解并使用控件模板 这一章梳理控件模板,每个WPF控件都设计成无外观的,但是行为设计上是不允许改变的,比如使用Button的控件时,按钮提供了能被点击的内容,那么自由的改变控件外观 ...

  8. WORD2010

    WORD2010表格,利用公式计算第一行,将光标定位到第二行相应位置,点F4即可进行相应的运算,第三行,相应位置,再点F4,继续计算

  9. qtscrcpy使用

    点击"USB线"一栏中的"刷新设备列表"按钮,随后设备序列号会显示出来: ·点击"获取设备IP",随后在"无线"一栏中会 ...

  10. mysql 远程登录 10038提示,无法连接

    mysql 默认使用端口3306 MYSQL服务器:WIN7 控制面板,WINDOWS防火墙--高级设置--入站规则--新建规则--端口--TCP-特定本地端口--3306--允许连接--下一步,至完 ...