历史上的今天
今天是:2025年10月09日(星期四)
2022年10月09日 | 89C52单片机 独立按键 示例
2022-10-09 来源:csdn
1、简介
实现按键控制 一个数码管显示
2、理论讲解

我们看到电路图,如图说是 每个按键连接一个单片机的端口。
当按键按下时对应的端口就会被置为低电平。
我们检测对应端口电平变化,来控制相应逻辑。
3.功能demo
s2 按键 控制 数码管数值增加
//数码管动态显示12345678
#include #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.效果展示
史海拾趣
|
电路简单图解1.当天线接收到信号后,由于信号非常微弱,需要将信号放大,这就需要LNA(低噪声放大器)。然后通过一个射频段的带通滤波器,这里标注为Image Filter(镜像频率抑制滤波器),镜像频率指以载频为中心,与有用信号对称的频率,该频率上 ...… 查看全部问答> |
|
个人觉得这段介绍CRC的计算方法比较好理解,现从书上《计算机网络第五版P68-P80》抠下来,以便日后查看。 说明:特意把这个注释写下来: 用模2运算进行加法时不进位,例如,1111+1010=0101.减法和加法一样.按加法规则计算。 另外:当被除数小于除 ...… 查看全部问答> |
|
我现在在调ov9653,遇到了些问题。 用IIC无法设定ov9653的寄存器,IIC我驱动过其他芯片,是好的. 但向ov9653中写时,ov9653一直没有返回ACK,好像根本找不到slave ID=0x60的0v9653,读到任何寄存器的值都是0xff。 0v9653用IIC驱动时有什么要特别 ...… 查看全部问答> |
|
同一个进程之间的线程如何通讯 触摸屏驱动,LCD驱动,同为GWES加载,是否可以认为是GWES进程中的多个线程? 同一个进程之间的线程通讯是否和不同进程间的通讯相同? 普通流接口驱动 以DLL形式存在 被同一个进程(device. ...… 查看全部问答> |




