#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键盘矩阵键盘程序相关推荐

  1. c语言 矩阵转置_C语言中的矩阵转置

    c语言 矩阵转置 Here is the program for transpose of matrix in C. 这是在C中转置矩阵的程序. We first read a matrix of s ...

  2. java 驱动级模拟键盘,易语言开源驱动级模拟键盘工具(可绕过wegame屏蔽)

    易语言开源驱动级模拟键盘工具目前一个可以绕过腾讯检测的模拟键盘工具,使用易语言开发,内含开源模块,支持调式修改,有需要模拟键盘的同学可以下载这个驱动模拟键盘来无视腾讯的wegame屏蔽! 相关阅读 手 ...

  3. c语言矩阵存储,C语言实现特殊矩阵存储

    下面实现的特殊矩阵存储方法 三元组顺序存储方法&转置 #include #include #define MAXSIZE 12500 // 三元组顺序表示稀疏矩阵 // written at ...

  4. 矩阵键盘逐行扫描C语言,矩阵键盘C语言编程.pdf

    矩阵键盘C语言编程.pdf 矩阵键盘 [例12] 根据原理图12 所示,编写程序实现以下功能:用7 段数码管显示矩阵非编码键 盘的键名.例如,按1 键则显示"1",按2 键则显示& ...

  5. 从键盘输入一个4x4整数矩阵,以主对角线为对称轴,将右上角元素中较大元素代替左下角对应元素,并将左下角元素

    从键盘输入一个4x4整数矩阵,以主对角线为对称轴,将右上角元素中较大元素代替左下角对应元素,并将左下角元素(含对角线元素)输出.注意处理输入输出显示 #include <stdio.h> ...

  6. 【Proteus仿真】Arduino UNO +74C922键盘解码驱动4X4矩阵键盘

    [Proteus仿真]Arduino UNO +74C922键盘解码驱动4X4矩阵键盘 Proteus仿真 本例因为使用了74C922解码芯片,使得程序代码非常简单,在按下不同按键时,数码管将显示对应 ...

  7. 【STM32扫描4x4矩阵键盘模块】 4x4 matrix keypad interface

    [STM32扫描4x4矩阵键盘模块] 4x4 matrix keypad interface 4x4矩阵键盘模块 矩阵键盘是将多个按键排布成类似矩阵形式的键盘组.为了减少IO资源的占用,将键盘组的每一 ...

  8. 4x4按键c语言,52单片机C语言4X4键盘.docx

    52单片机C语言4X4键盘 4*4#include#include#define ulong unsigned long宏定义#define uint unsigned int#define ucha ...

  9. c语言程序设计对角矩阵,从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计...

    从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

最新文章

  1. for循环 lamda python_Python中if-else判断语句、while循环语句以及for循环语句的使用...
  2. 电子商务和ERP的关系主要体现
  3. 我的HTTP/3学习笔记
  4. Linux vim光标移动命令
  5. jQuery实现获取选中复选框的值
  6. BZOJ1835: [ZJOI2010]base 基站选址(线段树优化Dp)
  7. 电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?
  8. PWA(Progressive Web App)入门系列:Notification
  9. Knative 驾驭篇:带你 '纵横驰骋' Knative 自动扩缩容实现
  10. linux能运行英魂之刃吗,英魂之刃需要什么电脑配置
  11. html中立体丝带菜单,使用CSS3实现绚丽的飘带样式菜单方法介绍
  12. 【笔记】汇编..寄存器和地址的概述
  13. 游戏党,iQOO Neo5这部手机能玩目前流行的大型手游吗?
  14. HISI3536安装交叉编译工具链
  15. 面试题之cookie和session区别
  16. 苹果sf字体_全网首发丨iOS13越狱系统字体分析+iOS13新字体分享
  17. 反黄软件测试工程师,谁才是反黄卫士?五款反黄软件横向评测
  18. 路由器dhcp服务异常不能上网_路由器关闭dhcp之后无法上网怎么办?
  19. android休闲游戏,休闲放松是王道 六款安卓休闲游戏推荐
  20. 高盛发布区块链报告:从理论到实践(中文版)三

热门文章

  1. 使用Masonry让cell高度自适
  2. 理解 with递归调用 Sqlserver 树查询
  3. GO语言练习:网络编程 ICMP 示例
  4. [Unity菜鸟] Character控制移动
  5. [转载] Linux+树莓派3开发总结——cx_Freeze打包Python3程序(工程文件)
  6. [转载] python复数类型-Python 复数属性和方法操作实例
  7. (数论)51NOD 1136 欧拉函数
  8. 【Linux】【Services】【Package】编译安装
  9. String写时拷贝实现
  10. spingMVC问题小结