51单片机矩阵键盘控制数码管

我们先了解矩阵键盘的工作原理,掌握编码方法并能够编写出扫描程序,使用矩阵键盘控制数码管输出矩阵键值。

显示内容

在显示模块的八位 LED 数码的个位显示当前使用矩阵键盘所按下的值。
键阵键盘多用于键数目较多的时候。这样可以更多的节省IO口的占用量,
对于矩阵键盘常用的扫描方法为线反转查询法。具体的思路是:首先使行作为输入,使用单片机内部电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个IO口是低,说明有键按下,进行下一步,否则退出扫描。如果有键按下,置列为输入,行输出低电平,读列的状态。最后根据
行列的状态查表就可以知道是那个按键按下。

#include <reg52.h>
#include <absacc.h>#define smgdat P0  //数码管数据口
#define temp P2     //矩阵键盘数据口sbit smgcs1 = P1^5;     //数码管控制
sbit smgcs2 = P1^6;
sbit smgwe = P1^4;#define uchar unsigned char
#define uint  unsigned intuchar keyfhz=255,juzz;       //定义一个返回uchar code  smg_dat[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };void delay(uint i){while(i--);}void juzxs(void);   //矩阵键盘扫描取值
void smgsaom(uchar dat1,uchar dat2,uchar dat3,uchar dat4,uchar dat5,uchar dat6,uchar dat7,uchar dat8);
void t0init(void);
void keyscan(){uchar num;   EA = 0;temp=0x0f;  //拉低4位if(temp!=0x0f)      //判断是否有按键按下{delay(500);     //¸消抖if(temp!=0x0f){temp=0x0f;    switch(temp){case 0x07: num=1; break;case 0x0b: num=2; break;case 0x0d: num=3; break;case 0x0e: num=4; break;}temp=0xf0;   //拉低高4位,在判断switch(temp){case 0x70: num=num+0;  break;case 0xb0: num=num+4;  break;case 0xd0: num=num+8;  break;case 0xe0: num=num+12; break;}}}keyfhz = num;    //把取出来的值附给keyfhznum = 255;  //复位EA=1;      }
void main()
{t0init();     //定时器0为数码管扫描while(1){keyscan();   //矩阵键盘扫描}
}void t0init(void)
{TF0 = 0;      TR0 = 1;   ET0 = 1;EA = 1;
}void smgsaom(uchar dat1,uchar dat2,uchar dat3,uchar dat4,uchar dat5,uchar dat6,uchar dat7,uchar dat8)
{if(dat1!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat1];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xfe;smgwe=1;delay(10);smgwe=0;delay(50);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;smgwe=0; }if(dat2!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat2];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xfd;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }if(dat3!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat3];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xfb;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }if(dat4!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat4];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xf7;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }if(dat5!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat5];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xef;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }if(dat6!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat6];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xdf;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }if(dat7!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat7];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0xbf;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }if(dat8!=11){smgcs1=0;smgcs2=1;smgdat = smg_dat[dat8];smgwe=1;delay(10);smgwe=0;smgcs1=1;smgcs2=0;smgdat = 0x7f;smgwe=1;delay(10);smgwe=0;delay(40);smgcs1=smgcs2=0;smgdat = 0xff;smgwe=1;delay(10);smgwe=0;   }
}void t0zd(void) interrupt 1
{TL0 = 0xA4;       //ÉèÖö¨Ê±³õÖµTH0 = 0xFF;      //ÉèÖö¨Ê±³õÖµsmgsaom(juzz,1,1,1,2,11,11,11);
} 

51单片机矩阵键盘控制数码管相关推荐

  1. 单片机入门-矩阵键盘控制数码管显示

    任务简述:通过按下4X4矩阵键盘实现数码管对应显示数字 实现方式:通过行列分接法,可以节省使用单片机的I/O口,扫描矩阵键盘是否有按下,判断P2端口得到的值. protues 硬件系统 单片机晶振复位 ...

  2. 【蓝桥杯-单片机学习笔记(六)】矩阵键盘控制数码管显示0~F

    一.要求 在CT107D单片机训练平台上,首先将J5处的跳线帽接到1~2引脚,使按键S4~S19组成4*4的矩阵键盘.在扫描按键的过程中,发现有按键触发信号后,待按键松开后,数码管显示相应的数字.按键 ...

  3. 51单片机矩阵键盘——数码管显示

    1.前言 当我们熟悉了数码管的位选与段选,并了解的矩阵键盘的扫描之后就可以编写程序了. 1.1实验现象 按下矩阵键盘S1并松开,数码管第一位(LED8)显示0:按下矩阵键盘S2并松开,数码管第一位显示 ...

  4. 51单片机矩阵键盘的控制原理-扫描及使用方式

    矩阵键盘 矩阵键盘一般和之前学的LCD1602液晶屏一起控制,建议先看一下之前的博客学习一下液晶屏的使用. 当然矩阵键盘也可以和数码管和LED等一起操作,但是数码管需要扫描,很费CPU,LED又不能直 ...

  5. 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示

    一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源.本例用移位寄存器74HC164作为数码管驱动进行控制. 74HC164特性   是一种8位串转并口的控制 ...

  6. 51单片机矩阵键盘扫描及使用方法

    一.矩阵键盘简介 矩阵键盘,也称矩阵按键,是为了节约单片机IO口占用所引入的一种外设. (图片截取至普中A2开发板原理图) (图片截取至普中A2开发板实物图) 我们知道,一个独立按键需要1个IO口.但 ...

  7. c51单片机矩阵键盘1602计算器_基于51单片机矩阵键盘的简易计算器制作

    1. 运算过程.符号公式实时显示在显示屏上(I2C 1602). 2. 自带三角函数.开根号.平方运算. 3. 计算得出的结果可设置保存并用以下一次计算. 4. 所有运算结果精确到至少小数点后两位. ...

  8. 51单片机矩阵键盘——LCD1602显示

    1.前言 本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86 ...

  9. 51单片机矩阵键盘C程序

    飞哥语录:别高估关系,别低估人心. 主程序1: void main() {uchar i,j,ki=0;j=0;while(1){i=key();//键盘循环扫描,其值赋给变量数组tableif(i! ...

  10. c51单片机矩阵键盘1602计算器_51单片机矩阵键盘计算器.doc

    51单片机矩阵键盘计算器 51单片机矩阵键盘计算器 /**********413暑假作品*********12864液晶显示屏,结合4*4矩阵键盘,简易计算器*,存储地址:STC-hex2 , LCD ...

最新文章

  1. 车载以太网之权威指南_awk权威指南之 终结篇!
  2. 新型内存攻击,专治制程提高的芯片
  3. pytorch基于卷积层通道剪枝的方法
  4. Windows 编程[5] - 学习窗体生成的过程五
  5. Googletest 实现简要分析
  6. 诺奖经济学家:中国与世界可找到差异化空间推动合作共赢
  7. php 上传大文件400,PHP fastcgi模式上传大文件(大约有300多K)报错
  8. 使用kibana客户端工具操作ElasticSearch(增删改查一)
  9. Android Timer编写方式深解
  10. SAP License:SAP CWM功能及限制
  11. 【图像处理】MATLAB:图像压缩
  12. 登 GitHub 趋势榜首德国疫情追踪 App 号称可保疫情隐私数据无忧,你信吗?
  13. 关于Xcode的Other Linker Flags
  14. 气象数据的简单数据分析处理——基于Notebook
  15. 服务器系统0 c000000f,win10系统提示错误代码0xc000000f的三种解决方法
  16. 苹果电脑自带截图工具怎么用?mac自带截屏工具使用技巧分享
  17. html网页简单实现图片轮播效果,html+css+js简单实现图片轮播效果
  18. 五、肿瘤全基因组学体细胞结构突变特征(Patterns of somatic structural variation in human cancer genomes)
  19. python2练习题——迭代出1~100以内8的倍数
  20. 作文:The Harm of Divorce

热门文章

  1. 无线Wifi密码之暴力破解篇(WPA)
  2. javascript查看详情与收起详情
  3. [寻找环链表入口点] 快慢指针数学原理剖析
  4. SequelizeAccessDeniedError的原因和解决方式
  5. 雷云3计算机不满足系统要求,电工进网作业许可考试(高压类)4、5、6章题库(无答案)...
  6. go及IDE LiteIDE的安装及环境变量配置
  7. 深度学习进阶,Keras视频分类
  8. python读取rtf文件_基于 RTF specification v1.7 的 RTF 文件解析及 OLE 对象提取(使用 Python 开发)...
  9. Golang系列(四)之面向接口编程
  10. OpenNESS OpenVINO Demo 部署