完整word版4X4键盘输入LCD1602输出Word下载.docx
- 文档编号:21182265
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:15
- 大小:66.90KB
完整word版4X4键盘输入LCD1602输出Word下载.docx
《完整word版4X4键盘输入LCD1602输出Word下载.docx》由会员分享,可在线阅读,更多相关《完整word版4X4键盘输入LCD1602输出Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
其内置式字符发生器ROM可提供160种符合工业标准的字符,包括全部英文大小写字母,阿拉伯数字,以及32个特殊字符或符号,其内置的RAM可以根据用户需要,由用户自行设计字符或符号,其指令系统为用户提供了方便的操作指令,点阵字符型液晶显示模块采用了+5V单电源供电,功耗低。
二、总体方案设计
单片机的P1口的P30~P3.7连接4X4矩阵键盘,P00~P0.7连接lcd1602,当4X4矩阵键盘中的某一按键按下时,lcd1602上显示对应的键号。
例口,1号键按下时,数码管显示“1”;
2号键按下时,数码管显示“2”等等。
2
根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计,LED实时显示按键信息,采用软伴扁程的方法实现按键信息的提职和显示。
电子技术应用方向,单片机应用。
可以实现两位数的输入,及修改。
每位可以是1-f的任意位输人。
[2]
我们先读懂了书上的参考程序,掌握了LCD液晶显示器的功能及使用方法。
在此基础上,对源程序进行改编,加工,填入了能满足实验要求的子程序。
通过调用这些子程序,最终使我们的程序实现我们要求的功能。
我们对每个子程序进行了详细的分析和编写,在确定方案之后,我们对每个程序进行了单独的调试,并在综合起来之后进行了系统的仿真,解决意料之外的问题比如LCD的显示,4*4矩阵键盘触碰无反应问题等等,最终实现了基本的操作功能。
三、设计原理分析
AT89C52:
AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz
晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39
脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的
方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
3
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),
引脚号功能特性
T2,时钟输出P1.0
T2EX(定时/P1.1
计数器2
表2-1P1.0和P1.1的第二功能
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
[3]
respack:
排阻接在51单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。
排阻就是好多电阻连载一起,他们有一个公共端。
1端为公共端接VCC或地,看是上拉还是下拉,其他接要操作的端口。
。
排阻通常都有一个公共端,在封装表面用一个小白点表示。
其颜色通常为黑色或黄色。
排阻一般应用在数字电路上,比如:
作为某个并行口的上拉或者下拉电阻用。
使用排阻比用若干只固定电阻更方便。
4
:
Lcd16021602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
[4]
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
[5]
1602采用标准的16脚接口,其中:
第1引脚:
GND为电源地。
第2引脚:
VCC接5V电源正极。
第3引脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4引脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5引脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6引脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第7~14引脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
第15引脚背光正极,第16引脚背光负极。
四、具体电路实现
把一个多功能的复杂程序划分为若干简单的,功能单一的程序模块,各程序模块完成明确的任务,实现某个具体功能,再具体需要时调用相应的模块即可。
4、1.矩阵键盘
矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×
4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。
5
矩阵键盘图4-1
AT89C52
2.4、个外中断口,2同时内含输出(I/O)端口,40AT89C52有个引脚,32个外部双向输入/可以按AT89C522个读写口线,个全双工串行通信口,3个16位可编程定时计数器,2存储器结合在一Flash照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器可有效地降低开发成本。
起,特别是可反复擦写的
引脚图4-2AT89C52图液晶LCD1602、43.个不同的点阵字符160(液晶模块内部的字符发生存储器CGROM)已经存储了1602图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号等,显示时模块把地中的点阵字符图形显示出来,下图为功能令。
址41H6说明D0D1D5D4D3D2RSR/WD7D6
并且设定填满_x0010_H,将DDRAM清显示1000000000ぜ?
(ACDDRA的地址计数的地址计数(AC归设DDRA*
1
并且将游标移到开头原点位ぜ?
DDRAM的内个指令不改增,光标或闪烁向右移动A进入模I/D=S1
0000000I/D
AI/D=,光标或闪烁向左移动设置指整个显示移减显示开BC01D00000ON[C=1:
游[D=1:
整体显ON控制指]
游标位置反白允[B=1光标或显示移位指令可使光标或显示光标或*
R/L
*
S/C
没有读写数据的情况下,向左或向右示移位的内指令不改DDRAM双单功能设],[N=0/1[DL=0/4/位数*0000*NF1DL
]
],[F=0/1,5*8/5*1点阵显示模显地址设置指令设CGRACGRAAC0AC4
AC1
AC3
AC2
AC5
设,
址指CGRA地地址设置指令设DDRA设DDRAAC0AC1
010AC5AC4AC3AC20
两00H~4FH址。
一行地址范DDRA第二DDRA地地址第一00H~2780位一行40H~67H加上E7H]
二行C0A7H,模块正在进行:
忙标志,BF=B读忙标AC0AC2AC1AC401BFAC6AC5AC3
部操作,此时模块不接受任何外部指和地
模块可以接受外部的BF=和数据同时可以读出地址计数令和数的值(ACRAMD7-D写入到内部将数RAD0D2D3D1D610D7D5D4
将(DDRAM/CGRAM/IRAM/GRAM)
中CGRA户自定义的字符写点的字D4~DD7~D00数指令4-1
7
实验流程图如下
开始
N
有无按键?
Y
lc显示所按数字
结束
总结和体会五、
通过了本次的课程设计,我们成功的将课堂上学习的知识通过软件仿真出来,通过的使用。
我们也学会如何使用我们学会了LCD运用课堂上学习到的分析元器件的方法,联合进行单片机系统的程序调试及仿真开发。
这些实践大大地加深了我和keilproteus们对单片机使用过程的理解,也让我们对单片机程序的编程更加熟悉。
虽然在这个过程中也遇到了一些无法预料到的的困难,但是经过学习和讨论,我们都将其一一克服。
总仿真软件的了解和使用,还学到之,经过这次的研究性教学,我们不仅加深了Proteus了许多课本上没有涉及知识,练习了电路原理图的设计和仿真运行,同时对本学期学习的单片机课程进行了一次全面的复习和巩固,收益很大。
【参考文献】清华大学出版社.单片机原理与接口技术.[1]赵嘉蔚,张家栋,霍凯,肖燕彩.单片机原理、接口及应用南京大学出版社[2]朱大奇,李念强.。
清华大学出版社(单片机原理及其接口技术第二版)[3]胡汉才.,
.机械工业出版社.[4]张家田液晶显示器件应用技术机械工业出版社..[5]刘法治常用电子元器件及典型芯片的应用技术
8
【附件】实验程序:
#include<
REG51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitrs=P2^4;
sbitlcden=P2^5;
sbitsetting=P3^0;
ucharlocation=0;
ucharnum,NUM1;
charKEY;
ucharcodetable[]=DISPLAY;
ucharcodetable1[]=;
unsignedcharcodea[]={0xFE,0xFD,0xFB,0xF7};
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidwrite_com(ucharcom)
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
voidwrite_date(uchardate)
rs=1;
P0=date;
voidinit()
write_com(0x38);
9
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;
num<
15;
num++)
{
write_date(table[num]);
}
write_com(0x80+0x40);
12;
write_date(table1[num]);
write_date('
'
);
unsignedcharcoding(unsignedcharm)
unsignedchark;
switch(m)
case(0x18):
k='
f'
;
break;
case(0x28):
e'
case(0x48):
d'
case(0x88):
c'
case(0x14):
b'
case(0x24):
a'
case(0x44):
9'
case(0x84):
8'
case(0x12):
7'
case(0x22):
6'
case(0x42):
5'
case(0x82):
4'
case(0x11):
3'
case(0x21):
2'
case(0x41):
1'
case(0x81):
0'
return(k);
10
//=====================按键检测并返回按键值==========================
unsignedcharkeynum(void)
unsignedcharrow,col,i;
P1=0xf0;
setting=1;
if((P1&
0xf0)!
=0xf0)
delay(20);
row=P1^0xf0;
//确定行线
i=0;
P1=a[i];
//精确定位
while(i<
4)
col=~(P1&
0xff);
//确定列线
break;
//已定位后提前退出
else
i++;
return0;
while((P1&
=0xf0);
return(row|col);
//行线与列线组合后返回
elseif(setting==0)
delay(150);
if(setting==0)
if(location==0)
11
write_com(0x0f);
//开闪烁
write_com(0x80+0x46);
elseif(location==1)
write_com(0x80+0x47);
elseif(location==2)
location++;
if(location>
=3)
location=0;
0无键按下时返回//return0;
voidmain(void)
init();
while
(1)
KEY=keynum();
if(KEY!
=0)
NUM1=coding(KEY);
if(location==1)
write_com(0x80+0x46);
write_date(NUM1);
elseif(location==2)
write_com(0x80+0x47);
12
仿真图:
13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word X4 键盘输入 LCD1602 输出
![提示](https://static.bdocx.com/images/bang_tan.gif)