1602LCD显示电话拨号键盘按键.dwgWord文档下载推荐.docx
- 文档编号:13173917
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:19
- 大小:555.75KB
1602LCD显示电话拨号键盘按键.dwgWord文档下载推荐.docx
《1602LCD显示电话拨号键盘按键.dwgWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《1602LCD显示电话拨号键盘按键.dwgWord文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
单片机1602LCD显示屏键盘系统
一、设计预达目标
要求以51单片机作为微控制器,通过1602LCD显示屏显示拨号键盘,键值包括数字0-9及“*”“#”等12个按键,数字显示为逐个显示方式。
二.设计方案
首先构建单片机最小系统、键盘输入系统及1602LCD显示系统。
通过单片机扫描键值,将其结果输入到1602LCD显示屏上。
(一)单片机最小系统
单片机最小系统主要由电源、复位、震荡电路以及扩展部分等部分组成。
1
图2.1单片机最小系统
(二)输入按键系统
独立的键盘与单片机相连时,每个按键都需要单片机的一个I/O线,若按键较多时,占用的I/O口资源就会过多,为此就引入了矩阵键盘。
本次设计共有0~9、#、*共12个按键,因此引入3*4的矩阵键盘,共需要7个I/O口,7条线分别与单片机P3口相连。
{注:
当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;
所以P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
}
图2.2输入按键系统
9欢迎下载
(三)1602LCD显示系统
AT89C51单片机,P0口输出时,必须使用上拉电阻,提高电压,否则无法得到输出结果。
51单片机的P0口在做IO时需要上拉电阻,使其避免悬空,因为P0口内部是漏集开路输出的。
其他口则不需要上拉电阻。
图2.31602LCD显示系统
1LCD1602原件显示原理
图2.3.1LCD1602引脚图
表1LCD1602引脚功能
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
D8
背光源正极
8
D1
16
D9
背光源负极
2LCD1602引脚说明
第1脚:
VSS为地电源;
第2脚:
VDD接+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脚:
背光源负极[2]。
3LCD1602指令
1602液晶模块内部的控制器共有11条指令,如下表所示
表2液晶模块内部控制其指令
序
号
指令
R
S
清显示
0
光标返回
*
置输入模式
I/D
显示开/关控制
D
C
B
光标或字符移位
S/C
R/L
置功能
DL
N
F
置字符发生存贮器地址
字符发生存贮器地址
只数据存贮器地址
显示数据存贮器地址
读忙标志或地址
BF
计数器地址
写数到CGRAM或DDRAM
要写的数据内容
从CGRAM或DDRAM读数
读出的数据内容
指令说明:
指令1:
清显示,指令码01H,光标复位到地址00H位置;
指令2:
光标复位,光标返回到地址00H;
指令3:
光标和显示位置设置I/D,光标移动方向,高电平向右移,低电平向左移,S:
屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效;
指令4:
显示开关控制。
D:
控制整体的显示开与关,高电平表示开显示,低电平表示关显示。
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标。
B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁;
指令5:
光标或显示移位S/C,高电平时显示移动的文字,低电平时显示移动的光标;
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线。
N:
低电平时为单位行显示,高电平时为双行显示。
F:
低电平时显示5*7的点阵字符,高电平时显示5*10的显示字符。
指令7:
字符发生器RAM地址设置;
指令8:
DDRAM地址设置;
指令9:
读忙信号和光标地址。
BF:
忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙[2]。
4LCD1602数字代码
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,其中阿拉伯数字的代码为:
代码 数字
001100000
001100011
001100102
001100113
001101004
001101015
001101106
001101117
001110008
001110019
(四)设计原理图
根据设计要求画出原理图:
电路图中的扬声器也就是LS1在这个系统中起到了读出按键的数值及拨号与接听的传递功能
图2.4设计原理图
三分析与编程
(一)系统流程图
图3.1为系统总流程图。
首先系统进入初始化,系统开始运行,当检测键盘没有按下时,则返回继续检测直至有键盘按下;
当扫描到键盘按下时,读取按键值,并检测是否超过10位,若没有超过则送入液晶显示;
若超过10位则系统重新初始化。
(二)LCD显示程序流程图
显示程序流程图如图3.2流程图分析:
首先对1602显示屏进行初始化,然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;
若BF=1,则代表模块正在进行内部操作,不接受人和外部指令和数据,知道BF=0为止。
开始
系统初始化
对1602初始化
写入显示设置命令
键盘扫描
延时
N
检查忙信号
Y
读取按键
BF=0?
获得显示RAM地址
显示
写入相应数据
图3.1系统流程
图
数据显示
完毕?
结束
3.2LCD显示程序流程图
(三)设计程序
#include<
reg51.h>
#include<
intrins.h>
#defineucharunsignedchar#defineuintunsignedint
#defineDelayNOP(){_nop_();
_nop_();
}
sbitBEEP=P1^0;
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
voidDelayMS(uintms);
bitLCD_Busy_Check();
voidLCD_Set_Position(ucharPosition);
voidWrite_LCD_command(ucharcmd);
voidWrite_LCD_data(uchardat);
//--标题字符串
charcodeTitle_Text[]={"
--phoneCode--"
};
//--键盘拔号与键盘符号映射表
uchar code
key_Table[]={'
1'
'
2'
3'
4'
5'
6'
7'
8'
9'
*'
0'
#'
//--键盘拔号数字缓冲
ucharDial_Code_Str[]={"
"
此处空格太少,会在屏幕上显示一个字符出来
ucharkeyNo=0xff;
inttCount=0;
//
//延时
voidDelayMS(uintx)
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1602 LCD 显示 电话 拨号 键盘 按键 dwg