教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

51单片机 矩阵键盘 C语言 程序

来源:网络收集 时间:2026-08-25
导读: 51单片机 矩阵键盘 C语言 程序 /****************************************************************************** ** * 描述: * * 矩阵键盘1602液晶显示键值 * * 连接方法:JP8(P1) 与JP4(矩阵键盘接口) 连接 * * 矩阵键盘定义: * * P1.1-P1.4为列线,

51单片机 矩阵键盘 C语言 程序

/******************************************************************************

**

* 描述: *

* 矩阵键盘1602液晶显示键值 *

* 连接方法:JP8(P1) 与JP4(矩阵键盘接口) 连接 *

* 矩阵键盘定义: *

* P1.1-P1.4为列线,P1.4-P1.7为行线 *

* 喇叭接P1.5口 矩阵键盘P1口, *

* 注意:请将JP165短路冒断开 *

*******************************************************************************

*/

#include <reg51.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar dis_buf; //显示缓存

uchar temp;

uchar key; //键顺序吗

void delay0(uchar x); //x*0.14MS

sbit LCD_RW = P2^5;

sbit LCD_RS = P2^6;

sbit LCD_EN = P2^7;

uchar cdis1[16] = {" KEY NUMBER "};

uchar cdis2[16] = {" KEY-CODE: H "};

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

/*************************************************************/

/* */

/* 延时子程序 */

/* */

/*************************************************************/

51单片机 矩阵键盘 C语言 程序

void delay(uchar x)

{ uchar j;

while((x--)!=0)

{ for(j=0;j<125;j++)

{;}

}

}

/*************************************************************/ /* */ /*检查LCD忙状态 */ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据 */ /* */ /*************************************************************/

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delayNOP();

result = (bit)(P0&0x80);

LCD_EN = 0;

return(result);

}

/*******************************************************************/ /* */ /*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */ /* */ /*******************************************************************/

void lcd_wcmd(uchar cmd)

{

while(lcd_busy());

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 0;

_nop_();

_nop_();

P0 = cmd;

51单片机 矩阵键盘 C语言 程序

delayNOP();

LCD_EN = 1;

delayNOP();

LCD_EN = 0;

}

/*******************************************************************/ /* */ /*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 /* */ /*******************************************************************/

void lcd_wdat(uchar dat)

{

while(lcd_busy());

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 0;

P0 = dat;

delayNOP();

LCD_EN = 1;

delayNOP();

LCD_EN = 0;

}

/*************************************************************/ /* */ /* LCD初始化设定 */ /* */ /*************************************************************/

void lcd_init()

{

delay(15);

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据

delay(5);

lcd_wcmd(0x38);

delay(5);

lcd_wcmd(0x38);

delay(5);

lcd_wcmd(0x0c); //显示开,关光标

delay(5); */

51单片机 矩阵键盘 C语言 程序

lcd_wcmd(0x06); //移动光标

delay(5);

lcd_wcmd(0x01); //清除LCD的显示内容

delay(5);

}

/*************************************************************/ /* */ /* 设定显示位置 */ /* */ /*************************************************************/

void lcd_pos(uchar pos)

{

lcd_wcmd(pos | 0x80); //数据指针=80+地址变量

}

/*************************************************************/ /* */ /* 键扫描子程序 (4*3 的矩阵) P1.4 P1.5 P1.6 P1.7为行 */

/* P1.1 P1.2 P1.3为列 */ /* */ /*************************************************************/

void keyscan(void)

{ temp = 0;

P1=0xF0; //高四位输入 行为高电平 列为低电平 delay(1);

temp=P1; //读P1口

temp=temp&0xF0; //屏蔽低四位

temp=~((temp>>4)|0xF0);

if(temp==1) // p1.4 被拉低

key=0;

else if(temp==2) // p1.5 被拉低

key=1;

else if(temp==4) // p1.6 被拉低

key=2;

else if(temp==8) // p1.7 被拉低

key=3;

else

key=16;

P1=0x0F; //低四位输入 列为高电平 行为低电平 delay(1);

51单片机 矩阵键盘 C语言 程序

temp=P1; //读P1口 …… 此处隐藏:2458字,全部文档内容请下载后查看。喜欢就下载吧 ……

51单片机 矩阵键盘 C语言 程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/134855.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)