标题:
51单片机按键长按和短按功能的实现 附仿真与源码
[打印本页]
作者:
kinggm
时间:
2018-5-3 12:07
标题:
51单片机按键长按和短按功能的实现 附仿真与源码
分为2个例子
一个是单片机按键短按,实现led灯的上下移动
一个是单片机按键长按led灯亮,松开,led灯灭
附件里有仿真图,源码,以及hex文件
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(11.87 KB, 下载次数: 32)
下载附件
2018-5-3 17:59 上传
0.jpg
(30.39 KB, 下载次数: 25)
下载附件
2018-5-3 17:59 上传
单片机源程序如下:
#include<reg51.h>
#include<intrins.h>
#define LEDR P0
#define LEDG P2
sbit PB1=P1^4;
sbit PB2=P1^5;
sbit PB3=P1^6;
sbit PB4=P1^7;
char tamp,tp;
void delay (int);
void debouncer(void);
main() {
PB1=1;
PB2=1;
PB3=1;
PB4=1;
LEDR=0x00;
LEDG=0xff;
tamp=0xfd;
tp=0xfd;
while(1) {
if(PB1==0) {
debouncer();
tamp=_cror_(tamp,1); //变量右移函数
delay(20);
while(PB1==0);
debouncer();
LEDR=tamp;
}
if(PB2==0) {
debouncer();
tamp=_crol_(tamp,1);//变量左移函数
delay(20);
while(PB2==0);
debouncer();
LEDR=tamp;
}
if(PB3==0) {
debouncer();
tp=_cror_(tp,1);
delay(20);
while(PB3==0);
debouncer();
LEDG=tp;
}
if(PB4==0) {
debouncer();
tp=_crol_(tp,1);
delay(20);
while(PB4==0);
debouncer();
LEDG=tp;
}
}
}
void debouncer(void)
{
int i;
for(i=0; i<2400; i++);
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
51单片机实现按键长按和短按.zip
(30.87 KB, 下载次数: 80)
2018-5-3 12:07 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
守候枫林红叶时
时间:
2018-5-9 22:22
学习学习,谢谢楼主的分享!
作者:
25433
时间:
2020-12-9 17:03
好资料,51黑有你更精彩!!!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1