4x4矩阵键盘c语言,4X4键盘矩阵键盘程序
#include//包含单片机内部资源预定义
__CONFIG(0x1832);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
intresult;
voiddelay();//delay函数申明
voidinit();//I/O口初始化函数申明
voidsCAN();//按键扫描程序申明
voiddisplay(intx);//显示函数申明
//---------------------------------------------------
//主程序
voidmain()
{
while(1)//循环工作
{
init();//调用初始化子程序
scan();//调用按键扫描子程序
display(result);//调用结果显示子程序
}
}
//---------------------------------------------------
//初始化函数
voidinit()
{
ADCON1=0X07;//设置A口为普通I/O口
TRISA=0X0f;//设置A口高2位为输出,低4位为输入
TRISC=0XF0;//设置C口高4位为输入,低4位为输出
TRISD=0X00;//设置D口为输出
PORTA=0XFF;
PORTD=0XFF;//先清除所有显示
}
//---------------------------------------------------
//按键扫描程序
voidscan()
{
PORTC=0XF7;//C3输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高4位是否为全1(全1代表没按键按下)?
{
result=result|0x07;//否,加上低4位0x07,做为按键扫描的结果
}
else//是,改变低4位输出,重新判断是否有按键按下
{
PORTC=0XFb;//C2输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高4位是否为全1(全1代表没按键按下)
{
result=result|0x0b;//否,加上低4位0xb,做为按键扫描的结果
}
else//是,改变低4位输出,重新扫描
{
PORTC=0XFd;//C1输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高4位是否为全1(全1代表没按键按下)
{
result=result|0x0d;//否,加上低4位0x0d,做为按键扫描的结果
}
else//是,改变低4位的输出,重新扫描
{
PORTC=0XFe;//C0输出低电平,其他三位输出高电平
asm("nop");//插入一定延时,确保电平稳定
result=PORTC;//读回C口高4位结果
result=result&0xf0;//清除低4位
if(result!=0xf0)//判断高四位是否为全1(全1代表没有按键按下)
{
result=result|0x0e;//否,加上低4位0x0e,做为按键扫描的结果
}
else//是,全部按键扫描结束,没有按键按下,置无按键按下标志位
{
result=0xff;//扫描结果为0xff,做为没有按键按下的标志
}
}
}
}
}
//----------------------------------------------------------
//显示程序
voiddisplay(intx)
{
switch(result)
{
case0xe7:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xc0;PORTA=0X1F;delay();break;//K10
case0xeb:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xf9;PORTA=0X1F;delay();break;//K11
case0xed:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xa4;PORTA=0X1F;delay();break;//K12
case0xee:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0xb0;PORTA=0X1F;delay();break;//K13
case0xd7:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0x99;PORTA=0X1F;delay();break;//K14
case0xdb:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0x92;PORTA=0X1F;delay();break;//K15
case0xdd:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X82;PORTA=0X1F;delay();break;//K16
case0xde:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0XF8;PORTA=0X1F;delay();break;//K17
case0xb7:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X80;PORTA=0X1F;delay();break;//K18
case0xbb:
PORTD=0xf9;PORTA=0X2F;delay();PORTD=0X90;PORTA=0X1F;delay();break;//K19
case0xbd:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xc0;PORTA=0X1F;delay();break;//K20
case0xbe:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xf9;PORTA=0X1F;delay();break;//K21
case0x77:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xa4;PORTA=0X1F;delay();break;//K22
case0x7b:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0xb0;PORTA=0X1F;delay();break;//K23
case0x7d:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0x99;PORTA=0X1F;delay();break;//K24
case0x7e:
PORTD=0xa4;PORTA=0X2F;delay();PORTD=0x92;PORTA=0X1F;delay();break;//K25
case0xff:
PORTD=0x8e;PORTA=0X2F;delay();PORTD=0x8e;PORTA=0X1F;delay();//无按键按下
}
}
//------------------------------------------------------------------
//延时程序
voiddelay()//延时程序
{
inti;//定义整形变量
for(i=0x100;i--;);//延时
}
4x4矩阵键盘c语言,4X4键盘矩阵键盘程序相关推荐
- c语言 矩阵转置_C语言中的矩阵转置
c语言 矩阵转置 Here is the program for transpose of matrix in C. 这是在C中转置矩阵的程序. We first read a matrix of s ...
- java 驱动级模拟键盘,易语言开源驱动级模拟键盘工具(可绕过wegame屏蔽)
易语言开源驱动级模拟键盘工具目前一个可以绕过腾讯检测的模拟键盘工具,使用易语言开发,内含开源模块,支持调式修改,有需要模拟键盘的同学可以下载这个驱动模拟键盘来无视腾讯的wegame屏蔽! 相关阅读 手 ...
- c语言矩阵存储,C语言实现特殊矩阵存储
下面实现的特殊矩阵存储方法 三元组顺序存储方法&转置 #include #include #define MAXSIZE 12500 // 三元组顺序表示稀疏矩阵 // written at ...
- 矩阵键盘逐行扫描C语言,矩阵键盘C语言编程.pdf
矩阵键盘C语言编程.pdf 矩阵键盘 [例12] 根据原理图12 所示,编写程序实现以下功能:用7 段数码管显示矩阵非编码键 盘的键名.例如,按1 键则显示"1",按2 键则显示& ...
- 从键盘输入一个4x4整数矩阵,以主对角线为对称轴,将右上角元素中较大元素代替左下角对应元素,并将左下角元素
从键盘输入一个4x4整数矩阵,以主对角线为对称轴,将右上角元素中较大元素代替左下角对应元素,并将左下角元素(含对角线元素)输出.注意处理输入输出显示 #include <stdio.h> ...
- 【Proteus仿真】Arduino UNO +74C922键盘解码驱动4X4矩阵键盘
[Proteus仿真]Arduino UNO +74C922键盘解码驱动4X4矩阵键盘 Proteus仿真 本例因为使用了74C922解码芯片,使得程序代码非常简单,在按下不同按键时,数码管将显示对应 ...
- 【STM32扫描4x4矩阵键盘模块】 4x4 matrix keypad interface
[STM32扫描4x4矩阵键盘模块] 4x4 matrix keypad interface 4x4矩阵键盘模块 矩阵键盘是将多个按键排布成类似矩阵形式的键盘组.为了减少IO资源的占用,将键盘组的每一 ...
- 4x4按键c语言,52单片机C语言4X4键盘.docx
52单片机C语言4X4键盘 4*4#include#include#define ulong unsigned long宏定义#define uint unsigned int#define ucha ...
- c语言程序设计对角矩阵,从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计...
从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...
最新文章
- for循环 lamda python_Python中if-else判断语句、while循环语句以及for循环语句的使用...
- 电子商务和ERP的关系主要体现
- 我的HTTP/3学习笔记
- Linux vim光标移动命令
- jQuery实现获取选中复选框的值
- BZOJ1835: [ZJOI2010]base 基站选址(线段树优化Dp)
- 电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?
- PWA(Progressive Web App)入门系列:Notification
- Knative 驾驭篇:带你 '纵横驰骋' Knative 自动扩缩容实现
- linux能运行英魂之刃吗,英魂之刃需要什么电脑配置
- html中立体丝带菜单,使用CSS3实现绚丽的飘带样式菜单方法介绍
- 【笔记】汇编..寄存器和地址的概述
- 游戏党,iQOO Neo5这部手机能玩目前流行的大型手游吗?
- HISI3536安装交叉编译工具链
- 面试题之cookie和session区别
- 苹果sf字体_全网首发丨iOS13越狱系统字体分析+iOS13新字体分享
- 反黄软件测试工程师,谁才是反黄卫士?五款反黄软件横向评测
- 路由器dhcp服务异常不能上网_路由器关闭dhcp之后无法上网怎么办?
- android休闲游戏,休闲放松是王道 六款安卓休闲游戏推荐
- 高盛发布区块链报告:从理论到实践(中文版)三