我发一个C的给你参考一下

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

*  描述:                                                                       *

*         矩阵键盘数码管显示键值                                               *

*                                                                              *

*         矩阵键盘定义:                                                       *

*         P1.0-P1.3为列线,P1.4-P1.7为行线                                      *

*        喇叭接P3.7口  矩阵键盘P1口, 数码管数据P0口,数码管控制P2口           *

#include

#define uchar unsigned char

#define uint  unsigned int

uchar table[17]= {0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa9,0x26,0xa1,0xb1};//数码管代码

sbit BEEP = P3^7;         //蜂鸣器驱动线

uchar dis_buf;            //显示缓存

uchar  temp;

uchar  key;               //键顺序吗

void beep();              //蜂鸣器

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

//--------------------------------------------------

/* 延时子程序*/

void  delay(uchar x)

{ uchar j;

while((x--)!=0)

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

{;}

}

}

//--------------------------------------------------

/*键扫描子程序*/

void  keyscan(void)

{

P1=0x0F;         //低四位输入

delay(1);

temp=P1;         //读P1口

temp=temp&0x0F;

temp=~(temp|0xF0);

if(temp==1)

key=0;

else if(temp==2)

key=1;

else if(temp==4)

key=2;

else if(temp==8)

key=3;

else

key=16;

P1=0xF0;        //高四位输入

delay(1);

temp=P1;          //读P1口

temp=temp&0xF0;

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

if(temp==1)

key=key+0;

else if(temp==2)

key=key+4;

else if(temp==4)

key=key+8;

else if(temp==8)

key=key+12;

else

key=16;

dis_buf=table[key]; //查表得键值

}

//--------------------------------------------------

/*判断键是否按下*/

void  keydown(void)

{

&nbsp

1=0xF0;

if(P1!=0xF0)

{

keyscan();

beep();

// while(P1!=0xF0);  //等待键释放

}

}

//--------------------------------------------------

void beep()

{

unsigned char i;

for (i=0;i<100;i++)

{

delay0(4);

BEEP=!BEEP;       //BEEP取反

}

BEEP=1;           //关闭蜂鸣器

delay(250);       //延时

}

//--------------------------------------------------

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

{

unsigned char i;

while(x--)

{

for (i = 0; i<13; i++) {}

}

}

//--------------------------------------------------

main()

{

P0=0xFF;        //置P0口

P2=0xFF;        //置P2口

dis_buf=0xBF;

while(1)

{

keydown();

P0 = dis_buf;   //键值送显示

delay(2);

P2 = 0x7F;

}

}

//--------------------------------------------------

[此贴子已经被作者于2007-7-17 16:07:18编辑过]

c语言4x4矩形列互换,线反转法4x4键盘C语言程序问题.急...相关推荐

  1. lisp语言画阿基米德线_如何用VB语言Line方法绘制阿基米德螺线

    展开全部 我是用picturebox实现的 (1)先用打开notepad,粘贴下面e69da5e887aa3231313335323631343130323136353331333236393832的 ...

  2. 矩阵键盘线反法C语言,矩阵键盘线反转法实现

    ;project: 线反转法扫描键盘,一位数码显示 ;version:20130611 ;problems: 1.有时出现数码管显示相应数字后变暗闪烁,键盘失灵 ;a.尝试加全部键盘检测完,没有找到则 ...

  3. 用c语言编写线反转法键盘输入,电子密码锁的方案设计书与实现[1]

    <电子密码锁的方案设计书与实现[1]>由会员分享,可在线阅读,更多相关<电子密码锁的方案设计书与实现[1](21页珍藏版)>请在技术文库上搜索. 1.沈阳理工大学创新实践周课程 ...

  4. C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中

    C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中 #include <stdio.h> int main(){int a[2][3]={{1,2,3},{4,5,6}}; // ...

  5. r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分

    r语言怎么以第二列绘制线图 Part I of this blog series is here. 本博客系列的第一部分 在这里 . At the UKHO we are interested in ...

  6. 蓝桥杯单片机学习日记3-矩阵键盘的使用,线反转法,三步消抖,按键长按与短按

    此片文章用于记录蓝桥杯单片机的学习 篮球杯单片机上的矩阵按键原理图如下: 使用矩阵键盘时,要将跳线帽J5跳至KBD模式. 值得注意的是,若开发板上的单片机使用的为STC15,那么以上原理图适用.如果单 ...

  7. R语言ggplot2可视化在lines线图的尾端添加线图标签、并且去除图例实战

    R语言ggplot2可视化在lines线图的尾端添加线图标签实战 目录 R语言ggplot2可视化在lines线图的尾端添加线图标签实战 #仿真数据

  8. R语言dataframe数据列中的缺失值NA的个数统计实战:特定数据列的NA值统计、所有特征的NA值统计

    R语言dataframe数据列中的缺失值NA的个数统计实战:特定数据列的NA值统计.所有特征的NA值统计 目录

  9. R语言将数据列中的多种日期格式统一变化为一种固定格式实战:使用lubridate包中的parse_date_time函数

    R语言将数据列中的多种日期格式统一变化为一种固定格式实战:使用lubridate包中的parse_date_time函数 目录

最新文章

  1. python气象数据可视化_python grib气象数据可视化
  2. 通信与信号处理杂文目录
  3. 缺少物联网杀手级应用的运营商,到底该怎么办?
  4. VC++ .Net 实例学习
  5. 在MFC框架下使用osg报内存泄露的解决办法
  6. IIS 7.5绑定中文域名转码启动站点报“值不在预期的范围内”
  7. iOS ReactiveCocoa 最全常用API整理(可做为手册查询)
  8. ORACLE--Connect By、Level、Start With的使用(Hierarchical query-层次查询)
  9. 微服务笔记(二) 服务发现
  10. No Pain No Game
  11. C# SOCKE通信
  12. NumPy库--数组的索引和切片
  13. 联合概率分布与边缘分布
  14. 北京市居住证办理问题的整理
  15. Mantis 安装与配置及使用
  16. windows手动清理垃圾文件
  17. 医疗是什么?AI医疗概念解析AI
  18. springboot导入后Spring包飘红问题解决
  19. 轮盘赌算法原理(ACO算法概率选择方法)
  20. MyEclipse优化、常用设置、快捷键

热门文章

  1. 【报告分享】中国营销数字化行业趋势报告:全渠道时代,品牌商如何抓住消费者?(附下载链接)...
  2. 【报告分享】2020年重点行业薪酬趋势指南.pdf(附下载链接)
  3. 159挑战 | 1:59:40,基普乔格打开人类新时代!
  4. leetcode力扣647. 回文子串
  5. 娓娓道来!那些BERT模型压缩方法(一)
  6. 搜索推荐广告中的Position Bias:美团DPIN
  7. EMNLP 2021 | 百度:多语言预训练模型ERNIE-M
  8. python类和对象的定义_day15_python_类和对象
  9. signature=c0c1b69f720d190a4a817d6bf2ff57c3,Fungicidal substituted N-(1-iodopropargyl)thiazolidinones
  10. 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN