4×4矩阵键盘数码管显示按键值程序

//电路说明如下。

//单片机:使用51系列兼容的即可;

//4×4矩阵键盘:接在P1口;

//两位数码显示器: P0口输出七段码,P2口输出位选码。

//==============================================================

//C语言程序如下。

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

* 文件名: KEY_LED.c

* 功能 : 对4×4矩阵键盘进行输出,在数码管后两位显示按键值。

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

#include

#include

#define uint unsigned int

#define uchar unsigned char

//uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};

uchar code table[10] = {0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

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

* 名称 : Delay_1ms()

* 功能 : 延时子程序,延时时间为 1ms * x

* 输入 : x (延时一毫秒的个数)

* 输出 : 无

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

void Delay_1ms(uint x)

{

uint i;

uchar j;

for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);

}

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

* 名称: Keyscan()

* 功能: P1外接4×4按键, 按照扫描法读出键值

* 输出: 按键值0~15/如无键按下, 返回16

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

uchar Keyscan(void)

{

uchar i, j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};

for(j = 0; j < 4; j++) { //循环四次

P1 = Buffer[j];         //在P1高四位分别输出一个低电平

temp = 0x01;            //计划先判断P1.0位

for(i = 0; i < 4; i++) { //循环四次

if(!(P1 & temp))      //从P1低四位,截取1位

return (i + j * 4); //返回取得的按键值

temp <<= 1;           //判断的位,左移一位

} }

return 16;                //判断结束,没有键按下,返回16

}   //呵呵,实质性的语句不过8行,就是这么简练!

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

* 名称: Display(uchar k)

* 功能: 将参数分成十位、个位分别显示

* 输入: k (键盘数值)

* 输出: P0口输出七段码,P2口输出位选码

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

void Display(uchar k)

{

P2 = 0;                    //消隐

P0 = table[k / 10];

P2 = 0x02; Delay_1ms(5);   //显示5ms十位

P2 = 0;                    //消隐

P0 = table[k % 10];

P2 = 0x01; Delay_1ms(5);   //显示5ms个位

}

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

* 名称 : Main()

* 功能 : 主函数

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

void Main(void)

{

uchar Key_Value = 16, Key_Temp1, Key_Temp2;   //两次读出的键值

while(1) {

//---------以下读入按键、消抖、等待按键释放

P1 = 0xff;

Key_Temp1 = Keyscan();       //先读入按键

if(Key_Temp1 != 16) {        //如果有键按下

//Delay_1ms(10);           //延时一下

Display(Key_Value);        //可用显示代替延时

Key_Temp2 = Keyscan();     //再读一次按键

if (Key_Temp1 == Key_Temp2) {//必须是两次相等

Key_Value = Key_Temp1;   //才保存下来,这就是消除抖动

while(Keyscan() < 16)    //等待按键释放

Display(Key_Value);    //等待期间显示键值

//---------以下是对按键的处理

Display(Key_Value);      //显示键值

}  }

Display(Key_Value);          //没有按键按下,也显示键值

}

}

//用PROTEUS仿真运行时的屏幕截图如下:

4矩阵键盘c语言程序,4×4矩阵键盘数码管显示按键值程序相关推荐

  1. 矩阵键盘数 码管显示多位数 c语言,4×4矩阵键盘数码管显示按键值程序

    4×4矩阵键盘数码管显示按键值程序本文引用地址:http://www.eepw.com.cn/article/201607/294422.htm //电路说明如下. //单片机:使用51系列兼容的即可 ...

  2. 4*4矩阵键盘扫描c语言,用扫描法读出4×4矩阵键盘,在数码管显示按键值

    原标题:用扫描法读出4×4矩阵键盘,在数码管显示按键值 //电路说明如下. //:使用51系列兼容的即可: //4×4:接在P1口: //两位数码显示器: P0口输出七段码,P2口输出位选码. //= ...

  3. c语言键盘控制数码管显示,3*4矩阵键盘控制4位数码管显示的C程序

    这个很简单 ;******************************************************************************** ;*  标题:  伟纳电 ...

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

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

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

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

  6. c语言让数码管显示时间,请问51单片机肿么编写程序让8个数码管显示时间(时分秒)...

    //*******时间程序**************// //*******2010-7-14 00:31:39 *******// //******* Z X C **************** ...

  7. 3641bs数码管C语言程序,树莓派控制3641BS数码管显示数字

    3641BS数码管是一个小LED显示器,可以显示4位数字和4个小数点.它是没有驱动的,使用它的方法就是控制每一个LED灯的亮起和熄灭.这个型号的数码管长这个样子: 硬件准备 树莓派 显像管 – 不是3 ...

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

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

  9. 8255数码管显示c语言,用汇编语言编写七段数码管显示1~9,用8255A接口芯片,用中断方式控制。...

    满意答案 vgvm7321 2013.07.19 采纳率:52%    等级:11 已帮助:11521人 正好我们做了这个实验 你知道的,把数据段中的端口地址改为你的计算机可识别的8255A的端口地址 ...

  10. 小程序改了服务器域名无法显示,微信小程序显示不支持打开非业务域名的解决方法...

    随着科技时代的进步,无论是软件还是硬件都在飞速的成长和创新,从以前大多数都是软件到现在快应用小程序的出现,都是经历了非常多的时间演变,才慢慢的到了如今这个地步. 快应用:九大手机厂商基于硬件平台共同推 ...

最新文章

  1. 数字化?智能化?中国企业智能制造现状究竟如何 李炳积 工信头条 昨天
  2. 三思笔记_使用反射前先三思
  3. 【计算机组成原理】磁盘存储器
  4. java leader 选举_简述ZK的fastleaderelection选举leader的算法
  5. sperling指标 matlab,sperling指标计算实验报告
  6. uva146-ID码
  7. redis订阅怎么退出_关于redis,学会这8点就够了
  8. datagridview的数据存取
  9. hive分桶表join_Hive知识梳理
  10. js 函数节流和防抖
  11. 《凤凰项目 一个IT运维的故事传奇》读后感
  12. 游戏音效的作用以及未来发展
  13. Sharding Sphere实现数据“一键脱敏”
  14. 大数据下的空气监测如何改变你的生活方式?
  15. Paypal账户注册教程!
  16. std::thread介绍
  17. 获取数组array的第一个元素
  18. ADM周期-阶段目标说明
  19. 3CLpro蛋白酶抑制剂,如何靠实力进入新冠病毒诊疗方案
  20. 仿36氪(iOS版附源代码)

热门文章

  1. idea下搭建vue开发环境
  2. linux 找不到libaio.h,POSIX AIO和Linux上的libaio之间的区别?
  3. Mysql-索引优化
  4. Vue - 最新网页 H5 分享到微信朋友圈 / 转发分享给朋友好友 / 分享到手机 QQ / 分享到 QQ 空间,Vue.js Nuxt.js uni-app 通用公众号页面解决方案(超级详细教程)
  5. 数据结构/排序/归并排序/二路归并排序
  6. error C279: ‘parament‘: multiple initialization
  7. centos内存压力测试软件,教你在CentOS下的CPU、内存、IO、网络的压力测试工具与方法...
  8. 优秀的Git客户端:Tower for mac
  9. jQuery表单提交
  10. MySQL5.5安装教程+SQLyog安装