89C52单片机 独立按键 示例

您所在的位置:网站首页 独立按键长按程序设置 89C52单片机 独立按键 示例

89C52单片机 独立按键 示例

2024-06-10 08:07| 来源: 网络整理| 查看: 265

文章目录 1、简介2、理论讲解3.功能demo4.效果展示

1、简介

实现按键控制 一个数码管显示

2、理论讲解

在这里插入图片描述

我们看到电路图,如图说是 每个按键连接一个单片机的端口。 当按键按下时对应的端口就会被置为低电平。 我们检测对应端口电平变化,来控制相应逻辑。

3.功能demo

s2 按键 控制 数码管数值增加

//数码管动态显示12345678 #include //51头文件 #define uchar unsigned char//宏定义 #define uint unsigned int //宏定义 sbit we = P2^7; //位定义数码管位选锁存器接口 sbit du = P2^6; //位定义数码管段选锁存器接口 sbit key_s2 = P3^0; //S2按键位定义 //数码管段选表 uchar code leddata[]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x77, //"A" 0x7C, //"B" 0x39, //"C" 0x5E, //"D" 0x79, //"E" 0x71, //"F" 0x76, //"H" 0x38, //"L" 0x37, //"n" 0x3E, //"u" 0x73, //"P" 0x5C, //"o" 0x40, //"-" 0x00, //熄灭 0x00 //自定义 }; //毫秒级延时函数 void delay(uint z) { uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } void main() { uchar num; we = 1; P0 = 0xfe; //1111 1110 选中第一个数码管 we = 0 ;//锁存器保存 串口电平状态 while(1) { du = 1; P0 = leddata[num]; //显示S2按下次数 数码管显示的数字 du = 0; if(key_s2 == 0) { //判断 S2是否按下 ,按下 电平为低电平 0 delay(5) ; //延时防抖 if (key_s2 == 0) { num++; } while(!key_s2);//松手检测 ,不松手不向下执行 } if (num == 10) { //当数值超过 9时 ,循环 num = 0; } } } 4.效果展示

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3