基于51单片机的矩阵键盘和LCD的应用

上传人:夏** 文档编号:469378454 上传时间:2023-09-18 格式:DOC 页数:14 大小:311.50KB
返回 下载 相关 举报
基于51单片机的矩阵键盘和LCD的应用_第1页
第1页 / 共14页
基于51单片机的矩阵键盘和LCD的应用_第2页
第2页 / 共14页
基于51单片机的矩阵键盘和LCD的应用_第3页
第3页 / 共14页
基于51单片机的矩阵键盘和LCD的应用_第4页
第4页 / 共14页
基于51单片机的矩阵键盘和LCD的应用_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《基于51单片机的矩阵键盘和LCD的应用》由会员分享,可在线阅读,更多相关《基于51单片机的矩阵键盘和LCD的应用(14页珍藏版)》请在金锄头文库上搜索。

1、基于51单片机的矩阵键盘和LCD的应用摘要:随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。LCD液晶显示技术作为人机交互的主流方式,正广泛应用于家电、手机、个人电脑等显示终端。随着电子技术的发展,单片机技术的应用产品日益增多,研究以单片机作为主控制器的LCD液晶显示器控制系统意义重大。展望未来,急速的响应速度将会成为个性化LCD的发展趋势,越来越多的单片机正如雨后春笋般涌现。关键词:单片机 智能化控制 液晶显示 本课题重点对键盘模

2、块和液晶显示模块分别做了详细介绍。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程。 1.LCD液晶显示简介在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。数

3、字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。2.矩阵键盘简介矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。独立按键具有编程简单但占用I/O口资源的特点,不适合在按键较多的场合应

4、用。在实际应用中经常要用到输入数字、字母等功能,如电子密码锁、电话机键盘等一般都至少有12到16个按键,在这种情况下如果用独立按键的话显然太浪费I/O口资源,为此我们就有必要使用矩阵键盘了。3.应用实例通过具体实验可体现出它们各自在应用中的优势,设计的这个系统的最终完成的功能和特点是:首先成本低廉核心系统成本低廉。其次操作简单,本系统最大的特点是有友好的人机界面它通过串口与PC机相连接,用户在使用时只要按动键盘上的数字就可以显示了。除了上述特点以外本系统还具有结构轻巧系统的硬件设计上充分考虑了便携性,整个系统的主要就是单片机,LCD和键盘,而它们的所占空间小,重量轻等特点。本设计利用按键控制及

5、LCD显示,以实现一个电子时钟,且具有实时修改显示等功能。 以下实验中的最小系统模块中包括CPU、复位电路和晶振,其最小系统原理图如下所示。 CPU时钟与复位电路图4*4矩阵键盘电路 本次设计中采用的4*4的非编码键盘。矩阵式非编码键盘的电路原理图如下图所示。当没有键按下时,行线和列线之间是不相连。若第N行第M列的键被按下,那么第N行与第M列的线就被接通。如果在行线上加上信号,根据列线的状态,便可得知是否有键按下。如果在行线上逐行加上一个扫描信号(本实验中用的低电平),就可以判断按键的位置。常用的按键识别有两种方法:一种是传统的行扫描法;另一种是速度较快的线反转法,这种方法必须采用可编程并行接

6、口。本实验中采用的是行扫描法进行识键。矩阵键盘原理图LCD显示电路 由于用1602液晶显示数据有限,显示数据的可读性不好,所以本实验采用ST7920控制器的LCD液晶显示器,其具有低电压,字迹清晰、能够显示汉字和字符等特点,且编程方便,易于查看、修改。本实验中主要用到了VSS、VDD、RS、RW、CS引脚。ST7920液晶显示器与MCU接口电路原理图如下所示。LCD显示电路原理图软件设计根据功能将软件系统分为四部分,主程序、按键扫描程序、中断程序、显示程序以及延时函数。主函数流程图如下图主函数流程图按键扫描程序设计用行扫描法先将行拉低,再读取值,若读回的值与输出值不一致则表示有键按下,再根据读

7、回的值判断具体按键,返回该按键的值。流程图如下图按键扫描程序流程图显示程序设计该函数主要在主函数中被调用。流程图如下图显示程序流程图中断子程序设计中断子程序主要计时和设置相应的标志位,流程图如下图中断程序流程图延时函数该函数主要用于延时,在多处都有调用。其流程图如下图所示。延时函数流程图参考文献 1汪德彪. MCS-51单片机原理及接口技术M. 北京电子工业出版社. 2004.2张毅刚,彭喜元,董继成. 单片机原理及应用M. 重庆大学出版社. 2003.源程序代码:#include reg52.h#define THCO 0xee#define TLCO 0x0#define Keyscan

8、P1#define u8 unsigned char#define rowkey() (P1)&0x0f/读入P1低4位(列按键值)宏u8 KeyScanner(void); /键盘函数值调用unsigned char Hour=0,Min=0,Sec=0;u8 Returnnumber = 0;/按键值返回bit flag=0;/1分时间到标志bit Brush_flag = 0;/更新显示器 1:更新sbit LED1=P23; /二个指示灯sbit LED2=P24;sbit CS =P25; /液晶接口 sbit SID=P26; sbit SCLK=P27; sbit B_light

9、=P27; /背光控制void delay(unsigned int j) unsigned char i; do for(i=0;i100;i+); while(j-);void send_command(unsigned char command_data) /发送命令 unsigned char i; unsigned char i_data,temp_data1,temp_data2; i_data=0xf8; /操作命令,可以查看资料delay(10); CS=1; SCLK=0; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK

10、=1; i_data=i_data1; i_data=command_data; i_data&=0xf0; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data=4; temp_data2=4; i_data=temp_data1|temp_data2; i_data&=0xf0; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data1; CS=0; void send_data(unsigned char command_d

11、ata) /发送数据 unsigned char i; unsigned char i_data,temp_data1,temp_data2;i_data=0xfa; /操作命令,可以查看资料delay(10); CS=1; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data1; i_data=command_data; i_data&=0xf0; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data=4; temp_data

12、2=4; i_data=temp_data1|temp_data2; i_data&=0xf0; for(i=0;i8;i+) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data1; CS=0; void InitLCD() /液晶初始化 send_command(0x30); /功能设置:一次送8位数据,基本指令集 send_command(0x06); /点设定:显示字符/光标从左到右移位,DDRAM地址加1 send_command(0x0c); /显示设定:开显示,显示光标,当前显示位反白闪动 send_command(0x04)

13、; /显示设定:开显示,显示光标,当前显示位反白闪动 send_command(0x01); /清DDRAM send_command(0x02); /DDRAM地址归位 send_command(0x80); /把显示地址设为0X80,即为第一行的首位/*x,y为起始座标 x(0=x=3),y(0=y=7),x为行座标,y为列座标; how为要显示汉字的个数; str是要显示汉字的地址 */void DispHanzi(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri)unsigned char hi=0; /汉字显示if(x=0) send_command(0x80+y); /else if(x=1) send_command(0x90+y);else if(x=2) send_command(0x88+y);else if(x=3) send_command(0x98+y);for(hi=0;hihow;h

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号