完整word版4X4键盘输入LCD1602输出.docx
- 文档编号:8046004
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:15
- 大小:66.90KB
完整word版4X4键盘输入LCD1602输出.docx
《完整word版4X4键盘输入LCD1602输出.docx》由会员分享,可在线阅读,更多相关《完整word版4X4键盘输入LCD1602输出.docx(15页珍藏版)》请在冰豆网上搜索。
完整word版4X4键盘输入LCD1602输出
物理与电信工程学院
专业课程设计报告
2学期2018~2019学年第
lcd16024*4矩形键盘输入,显示
业:
专
班级:
学号:
姓名:
指导教师姓名:
日年月
1
课程设计报告
【课题名称】4*4矩形键盘输入,lcd1602显示
【摘要】键盘输入与液晶显示系统是单片机应用中最常见的一种形式,几乎涉及到人们日常生产和生活中的各个方面。
键盘是用于实现单片机应用系统中的数据和命令的输入,液晶显示器LCD能使人直观的获得需要了解的信息。
实现人机的交流互动。
本次课程设计作为实践教学的一个重要环节,以4*4矩阵键盘按键输入数据,以1602液晶显示。
并使用Proteus软件对所设计的电路进行仿真,仿真结果是在1602液晶上显示所按下的键值。
因此,对液晶显示与键盘系统的研究与应用是很有必要的,对于我们今后的学习有着很强的推动作用。
【关键词】Proteus仿真,AT89C51,lcd1602,4*4矩阵键盘
一、引言
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
[1][2]
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
lcd1602:
16字×2行的字符型液晶显示器显示模块可以与8位或4位微处理器直接接口,
其内置式字符发生器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或地,看是上拉还是下拉,其他接要操作的端口。
。
排阻通常都有一个公共端,在封装表面用一个小白点表示。
其颜色通常为黑色或黄色。
排阻一般应用在数字电路上,比如:
作为某个并行口的上拉或者下拉电阻用。
使用排阻比用若干只固定电阻更方便。
[3]
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*
0
0
0
0
0
0
0
1
0
并且将游标移到开头原点位ぜ?
DDRAM的内个指令不改增,光标或闪烁向右移动A进入模I/D=S1
0000000I/D
AI/D=,光标或闪烁向左移动设置指整个显示移减显示开BC01D00000ON[C=1:
游[D=1:
整体显ON控制指]
游标位置反白允[B=1光标或显示移位指令可使光标或显示光标或*
0
R/L
0
1
0
0
*
0
S/C
没有读写数据的情况下,向左或向右示移位的内指令不改DDRAM双单功能设],[N=0/1[DL=0/4/位数*0000*NF1DL
]
],[F=0/1,5*8/5*1点阵显示模显地址设置指令设CGRACGRAAC0AC4
0
AC1
0
AC3
0
1
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
#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>0;y--);
}
voidwrite_com(ucharcom)
{
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_date(uchardate)
{
rs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
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]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(5);
}
write_com(0x80);
write_date('');
}
unsignedcharcoding(unsignedcharm)
{
unsignedchark;
switch(m)
{
case(0x18):
k='f';break;
case(0x28):
k='e';break;
case(0x48):
k='d';break;
case(0x88):
k='c';break;
case(0x14):
k='b';break;
case(0x24):
k='a';break;
case(0x44):
k='9';break;
case(0x84):
k='8';break;
case(0x12):
k='7';break;
case(0x22):
k='6';break;
case(0x42):
k='5';break;
case(0x82):
k='4';break;
case(0x11):
k='3';break;
case(0x21):
k='2';break;
case(0x41):
k='1';break;
case(0x81):
k='0';break;
}
return(k);
}
10
//=====================按键检测并返回按键值==========================
unsignedcharkeynum(void)
{
unsignedcharrow,col,i;
P1=0xf0;
setting=1;
if((P1&0xf0)!
=0xf0)
{
delay(20);
if((P1&0xf0)!
=0xf0)
{
row=P1^0xf0;//确定行线
i=0;
P1=a[i];//精确定位
while(i<4)
{
if((P1&0xf0)!
=0xf0)
{
col=~(P1&0xff);//确定列线
break;//已定位后提前退出
}
else
{
i++;
P1=a[i];
}
}
}
else
{
return0;
}
while((P1&0xf0)!
=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(0x0f);//开闪烁
write_com(0x80+0x47);
}
elseif(location==2)
{
write_com(0x80+0x47);
write_com(0x0c);//开闪烁
}
location++;
if(location>=3)
location=0;
}
return0;
}
else
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);
write_com(0x80+0x46);
}
elseif(location==2)
{
write_com(0x80+0x47);
write_date(NUM1);
12
write_com(0x80+0x47);
}
}
}
}
仿真图:
13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word X4 键盘输入 LCD1602 输出