一、矩阵键盘
1、检测按键的方法:
(1)先使1-4全部赋低电平,5-8赋高电平。当有按键按下时,5-8中会有某个点平被拉低。
(2)然后依次将1-4中的某一位置0,其他位置1,观察对应返回值,即可确定哪个按键被按下。
2、对应程序
unsigned char bsp_mkeyscan()
{
unsigned char keyvalue = 0x99;
KEYPORT = 0xF0;
if (KEYPORT != 0xF0)
{
KEYPORT = 0xFE;
if (KEYPORT != 0xFE)
{
keyvalue = KEYPORT;
while(keyvalue == KEYPORT)bsp_segb();;
}
KEYPORT = 0xFD;
if (KEYPORT != 0xFD)
{
keyvalue = KEYPORT;
while(keyvalue == KEYPORT)bsp_segb();;
}
KEYPORT = 0xFB;
if (KEYPORT != 0xFB)
{
keyvalue = KEYPORT;
while(keyvalue == KEYPORT)bsp_segb();;
}
KEYPORT = 0xF7;
if (KEYPORT != 0xF7)
{
keyvalue = KEYPORT;
while(keyvalue == KEYPORT)bsp_segb();;
}
}
return keyvalue; //根据keyvalue的值即可以确定按下的键
}
二、LCD1602
1、LCD原理
LCD(Liquid Crystal Display):液晶显示器的缩写,一种被动式的显示器,即液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。
液晶显示器具有功耗低、抗干扰能力强等优点,广泛用在仪器仪表和控制系统中。
2、LCD分类
按排列形状分:字段型、点阵字符型和点阵图形。
字段型
广泛用于电子表、数字仪表、计算器中。
点阵字符型
显示字母、数字、符号。它是由5×7或5×4点阵组成,广泛应用在单片机应用系统中。
点阵图形型
笔记本电脑和彩色电视等设备中。
1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔 每行之间也有也有间隔 起到了字符间距和行间距的作用。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块。
3、LCD1602的引脚
第1脚接地
第2脚接5V正电源
第3脚VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高, 对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
4、显示地址映射
第一行第一个的地址是:80H
第二行第一个的地址是:C0H
5、字符发生存储器
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了128个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,每一个字符都有一个固定的代码(ASCII字符集字库),比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
6、LCD指令说明
指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效
指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示; C:控制光标的开与关,高电平表示有光标,低电平表示无光标;B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
7、LCD1602的初始化过程。
延时15mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
以后每次写指令、读/写数据操作均需要检测忙信号
写指令38H:显示模式设置
写指令08H:显示开
写指令01H:清屏
写指令06H:显示光标移动设置
写指令0CH:显示开及光标设置
8、自定义字符显示
(1)1602LCD共有8个自定义字符。
上一篇:单片机:中断及定时器工作
下一篇:单片机:IIC总线通信
推荐阅读最新更新时间:2024-03-16 16:08