网站首页 > 开源技术 正文
矩阵按键的做法和点阵是一样的都是采用横纵坐标来确定哪个按键按下。上边那行是竖着的坐标,右面竖着的坐标是矩阵的横向坐标。
p1.0 为1时,第一竖行0 ,4,8,c就都通电了,当按下0键时p1.4就是低电平。
当我们按下 5 键时p1.1是高电平,p1.5是低电平。
这次我们用p0.0口当数码管的控制极,p2口输出让数码管显示0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,当按下哪个按键,数码管就显示哪个字符。
这个程序我写错了,马上补一个 单片机 14-没错误的。
#include<reg52.h>
sbit P0^0 = kongzhi0;
unsigned char code shuzi[]={0xC0,0xF9, 0xA4,0xb0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x03,
0xC6,0xA1,0x86,0x8E };
sbit shu0=P1^0;
sbit shu1=P1^1;
sbit shu2=P1^2;
sbit shu3=P1^3;
sbit heng0=P1^4;
sbit heng1=P1^5;
sbit heng2=P1^6;
sbit heng3=P1^7;
void main()
{
P2=0xFF;
P1=0x0f; // 竖坐标初始化为0,选择一个为1,横坐标置1才能读取按键的状态,
while(1)
{
shu0=1;
if(heng0==0)
{ yanshi();
if(heng0==0)
{P2=shuzi[0];}
}
if(heng1==0)
{ yanshi();
if(heng1==0)
{P2=shuzi[4];}
}
if(heng2==0)
{ yanshi();
if(heng2==0)
{P2=shuzi[8];}
}
if(heng3==0)
{ yanshi();
if(heng3==0)
{P2=shuzi[12];}
}
shu0=0;
shu1=1;
if(heng0==0)
{ yanshi();
if(heng0==0)
{P2=shuzi[1];}
}
if(heng1==0)
{ yanshi();
if(heng1==0)
{P2=shuzi[5];}
}
if(heng2==0)
{ yanshi();
if(heng2==0)
{P2=shuzi[9];}
}
if(heng3==0)
{ yanshi();
if(heng3==0)
{P2=shuzi[13];}
}
shu1=0;
}
}
void yanshi()
{unsigned int i=1000;
while(i--);}
这里我只写了竖着的前两行,只要再复制粘贴一下就可以完成所有的按键功能,这样写的好处是容易理解。
- 上一篇: 原创DIY:自制简单实用的C51单片机开发板
- 下一篇: 杰x分享(92):51单片机基础(十四)
猜你喜欢
- 2025-08-02 编写汇编语言常见错误分析
- 2025-08-02 HC89S003P 20引脚8位ADC型FLASH单片机
- 2025-08-02 基于51单片机的万年历
- 2025-08-02 基于AT89S51单片机接口电路的时序仿真研究
- 2025-08-02 MON-51单片机仿真器使用手册
- 2025-08-02 重要提醒,单片机发展史,它到底是一个什么东西
- 2025-08-02 keil软件是干嘛的?keil软件怎么用?
- 2025-08-02 51单片机多机通信系统实现方法
- 2025-08-02 红外遥控发射程序,stc红外遥控c51程序,智能家居控制
- 2025-08-02 三相异步电机点动控制改造成西门子PLC程序
你 发表评论:
欢迎- 08-032025年Linux可视化面板深度评测:从新手到企业级维的全能工具
- 08-03自学学习网络安全,渗透测试的环境搭建总结
- 08-03夏日“打卡”:一场集体“情绪漂移”的实验?
- 08-03PHP 8.3 JIT 深度优化:让图像处理性能超越C++(附压测数据)
- 08-03「推荐」收藏过千,给新手的7个入门php实战项目
- 08-03PHP内存池分析
- 08-03PHP 性能分析与实验——性能的宏观分析
- 08-03空开上的DZ47是什么意思?6000A是什么电流?
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)