试验效果如下:
#include
#define duan P0//段选
#define wei P2//位选
unsigned char code wei1[8] = {
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制
unsigned char code duan1[17] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char ge;
unsigned int temp;
void keys(); //键盘扫描函数
void s(unsigned char xms); //延时函数
void DigDisplay(); //动态显示函数
void main(void)
{
while(1)
{
DigDisplay();
keys();
}
}
[page]
void DigDisplay()
{
unsigned char i;
unsigned int j;
wei = wei1[i]; //发送位选
duan = duan1[ge]; //发送段码
j = 10; //扫描间隔时间设定
while(j--);
duan = 0x00; //消隐
}
void s(unsigned char xms)
{
unsigned char x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
void keys()
{
P1=0x7f;
temp=P1;
if(temp!=0x7f)
{
s(5);
temp=P1;
if(temp!=0x7f)
{
temp=temp&0x0f;
switch(temp)
{
case 0x07:ge=0;break;
case 0x0b:ge=1;break;
case 0x0d:ge=2;break;
case 0x0e:ge=3;break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
DigDisplay();
}
}
}
P1=0xbf;
temp=P1;
if(temp!=0xbf)
{
s(5);
temp=P1;
if(temp!=0xbf)
{
temp=temp&0x0f;
switch(temp)
{
case 0x07:ge=4;break;
case 0x0b:ge=5;break;
case 0x0d:ge=6;break;
case 0x0e:ge=7;break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
DigDisplay();
}
}
}
P1=0xdf;
temp=P1;
if(temp!=0xdf)
{
s(5);
temp=P1;
if(temp!=0xdf)
{
temp=temp&0x0f;
switch(temp)
{
case 0x07:ge=8;break;
case 0x0b:ge=9;break;
case 0x0d:ge=10;break;
case 0x0e:ge=11;break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
DigDisplay();
}
}
}
P1=0xef;
temp=P1;
if(temp!=0xef)
{
s(5);
temp=P1;
if(temp!=0xef)
{
temp=temp&0x0f;
switch(temp)
{
case 0x07:ge=12;break;
case 0x0b:ge=13;break;
case 0x0d:ge=14;break;
case 0x0e:ge=15;break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
DigDisplay();
}
}
}
}
关键字:矩阵键盘 实验程序
引用地址:
矩阵键盘实验程序
推荐阅读最新更新时间:2024-03-16 14:00
Proteus C51仿真学习板8——矩阵键盘
矩阵键盘,Proteus提供了多种矩阵键盘,有计算器,电话机,以及自定义的布局,封装多个按键更形象生动。为了理清内部连线图,还是使用按键进行搭建。 再讲矩阵键盘的原理前,还是讲讲为什么用矩阵键盘? 当按键数量很多时,为了节约IO的资源,通常会将按键排列成矩阵形式,每个按键通过行和列来识别,例如8个IO可识别4*4=16个按键,比直接驱动8个按键多了一倍。 原理1-反转扫描法: 默认状态P10-7全部输出高电平1; 首先P1=0x0F,行线输出为0,如果按键7按下后,P10=P14=0,再读行的值&0x0F=0x0E;再读列的值&0xF0=0xE0,2个值相加=0xEE,就可以检测到16个按键中的一个按键按下。
[单片机]
实验二:MSP430简单程序设计
1.实验目的 学会用C语言进行简单程序设计。 2.实验要求 掌握编写排序程序。 3.实验内容 (1)设计一个对8个数据(0-255,任意设置)的由小到大排序程序。 (2)将结果显示在LCD显示器上。 4.参考资料 MSP430光盘资料 #include msp430x14x.h #include Config.h //************************************************************************* // 初始化IO口子程序 //*****************************************
[单片机]
单片机C语言实现独立按键检测与矩阵键盘操作
所有的电子产品几乎到涉及到按键操作。所以微控制器是如何识别一个按键是否被按下,按下后又该如何做出反应,又如何防止按键抖动呢?更深入一点,微控制器又是如何识别矩阵键盘的?本文将详细阐述如何用C语言实现独立按键的检测和矩阵键盘操作。 完成本文所需硬件:基于C51系列单片机的开发板(本文是基于STC12C5A60S2处理器的一款开发板),带中文版windows操作系统的电脑。 完成本文所需软件:KEIL系列平台(本文选取Keil uVision4), STC烧写软件-ISP-V6.82E 。 一、独立按键检测 这里我要实现用按键K1去控制发光二极管LD4。同时为了试验按键过程中与其他事件的冲突性,引入两个事件即LD1
[单片机]
第15节:矩阵键盘单个触发的压缩代码编程
开场白: 上一节讲了矩阵键盘的单个触发。这节要教会大家在不改变其它任何性能的情况下,把上一节的按键扫描程序压缩一下容量。经过压缩后,把原来1558个字节压缩到860个字节的程序容量。 具体内容,请看源代码讲解。 (1)硬件平台:基于朱兆祺51单片机学习板。。 (2)实现功能:16个按键中,每按一个按键都能触发一次蜂鸣器发出 滴 的一声。 (3)源代码讲解如下: #include REG52.H #define const_voice_short 40 //蜂鸣器短叫的持续时间 #define const_key_time 20 //按键去抖动延时的时间 void initial_mys
[单片机]
利用两个I/O引脚将4×3矩阵键盘连接至微控制器
在基于微控制器(MCU)的项目中,矩阵式键盘常被用作输入设备。将矩阵键盘连接至微控制器的常规做法需使用微控制器的多个I/O引脚。然后MCU运用扫描算法来确认按住了哪些键。这种办法的一个弊端就是需要大量MCU的I/O引脚来连接键盘。例如,连接一个4×3键盘需7个数字I/O引脚。而当项目采用的是低引脚数MCU,或使用的MCU不具备足够的可用I/O引脚数时,就出现了问题。 对于这一问题,有两个解决办法:使用现成的I/O扩展器,或用一只电阻排,为每个键设定一个唯一的电压,然后使用模拟引脚来读取电压值,判断按住了哪个键。每个方案都有其不足之处。 由于在大多数情况下,I/O扩展器需通过特殊的通信协议(如I2C协议或SPI协议)
[单片机]
CT107D蓝桥杯矩阵键盘使用
这里单独讲一下矩阵键盘,这里没有加消抖,可以看看前面的独立键盘加上消抖。 sfr P4=0xC0; //4行 sbit r1=P3^0; sbit r2=P3^1; sbit r3=P3^2; sbit r4=P3^3; //4列 sbit c1=P4^4; sbit c2=P4^2; sbit c3=P3^5; sbit c4=P3^4; //矩阵键盘检查 unsigned char key_scan() { unsigned char key_value; r1=0; r2=r3=r4=1; c1=c2=c3=c4=1; if(!c1)key_value=0; else if(!c2)key_value=1; else
[单片机]
4×4矩阵键盘+1602液晶显示
//这是51hei单片机开发板附带的一个程序,矩阵键盘接p3口,其中p3.0-p3.4为行,P3.5- p3.7为列 //每按一下键数字便可显示在1602液晶上面,并且蜂鸣器会发出响声. //全部源代码下载: http://www.51hei.com/f/jz1602.rar #include reg52.h #include Intrins.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit rs=P2^2; sbit lcden=P2^0; sbit rw=P2^1; sbit BEEP=P2
[单片机]
单片机独立按键和矩阵键盘概念及原理
一、基本知识 1.按键分类与输入原理 按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。 对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将按键输入,并检查是哪一个按键按下,将该键号送人累加器,然后通
[单片机]