若51单片机的PLOD接了1个独立按键,编写程序完成按键检测程序要求每按下按钮一次P1.1端口电子改变一次

如题所述

此程序实现独立按键的检测功能,每次按下按键 key5 时,数码管最后一位显示的数 值加 1,按键同时响蜂鸣器 #include<reg52.h> sbit key5 = P1^4; //独立按键 sbit P3_6 = P3^6; //蜂鸣器控制端口 unsigned char code BitSet[8] = { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f }; //用于设置(低电平位选)数码管的位选信号,从低到高对应 8 个数码管 unsigned char code NumberCode[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, }; //用于设置(共阴极)数码管的段选信号,从 0~f 共 16 个数值 void delay_ms(unsigned int n) { //软件延时函数,延时 n 毫秒 unsigned int i, j; for(i=n;i>0;i--) for(j=110;j>0;j--); } void beep(int n) { int i = n; while(i>0) { P3_6 = 1; delay_ms(1); P3_6 = 0; delay_ms(1); i--; } } void main() //喇叭连续响 n 毫秒 //向喇叭输入 1000HZ 的方波震荡源 //0.5 毫秒高电平 //0.5 毫秒低电平 { int num=0; while(1) { P2=BitSet[7]; //选择最低位的数码管 if(key5==0) //判断按键 key5 是否按下 { delay_ms(10); //延时重新判断按键是否按下,延时消除抖动 if(key5==0) { num++; //每按下一次显示的数值加 1 beep(200); //喇叭响 200 毫秒 if(num==16) num=0; while(!key5); //直到按键释放,按下时 key5==0,持续循环 } } P0=~NumberCode[num]; } } // 2、 此程序实现独立按键的检测功能,key5 和 key6 每次按下按键时,数码管次低位和最 低位显示的数值加 1,按键同时响蜂鸣器 #include<reg52.h> sbit key5 = P1^4; sbit key6 = P1^5; sbit P3_6 = P3^6; unsigned char code BitSet[8] = { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f }; //用于设置(低电平位选)数码管的位选信号,从低到高对应 8 个数码管 unsigned char code NumberCode[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, }; //用于设置(共阴极)数码管的段选信号,从 0~f 共 16 个数值 void delay_ms(unsigned int n) { //软件延时函数,延时 n 毫秒 unsigned int i, j; for(i=n;i>0;i--) for(j=110;j>0;j--); } void beep(int n) { int i = n; while(i>0) { P3_6 = 1; delay_ms(1); P3_6 = 0; delay_ms(1); i--; } } void main() { int num=0, num2=0; while(1) { P2=BitSet[6]; //喇叭连续响 n 毫秒 //向喇叭输入 1000HZ 的方波震荡源 //0.5 毫秒高电平 //0.5 毫秒低电平 //选择最低位的数码管 if(key5==0) //判断按键 key5 是否按下 { delay_ms(10); //延时重新判断按键是否按下,延时消除抖动 if(key5==0) { num++; //每按下一次显示的数值加 1 beep(100); //喇叭响 100 毫秒 if(num==16) num=0; while(!key5) { P2=BitSet[6]; //选择次低位的数码管 P0=~NumberCode[num]; delay_ms(3); P2=0xff; }; } } P2=BitSet[7]; //选择最低位的数码管 P0=~NumberCode[num2]; delay_ms(3); P2=0xff; //直到按键释放,按下时 key5==0,持续循环 P0=~NumberCode[num]; delay
温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机独立式按键程序
TF1); \/\/ 这里错了,是定时器1TF1=0;}void main(){while(1){if(k1==0){delay(); \/\/去抖动if(k1==0) \/\/检测按键确实按下,进行按键处理{ID++;if(ID==0){ID=0;}while(!k1); \/\/这里错了,多余的加了==0}}switch(ID){case 0:P1=0x3f;break;case 1:P1=0x06;...

51单片机中用数码管做秒表时怎么用一个独立按键控制开始和暂停,即第一...
\\x0d\\x0a再 按一下键,就停止,TR0=0,就不计时了。\\x0d\\x0a程序好写,先 定义一个按键\\x0d\\x0asbit key=P1^1; \/\/具体是哪个 键,你自己改\\x0d\\x0a主程序中,判断按键和启动\/停止\\x0d\\x0aif(key==0)\\x0d\\x0a{\\x0d\\x0adelay(); \/\/具体延时时间自己定\\x0d\\...

51单片机怎样用两个以上按键同时控制相应程序的执行
回答:按键按下,给一标志位,子函数 通过识别 标志位,判断是否 执行流水。 猜测:又一个受 郭大侠荼毒的孩子!

51单片机矩阵4*4键盘程序,P0口接一个数码管,P2口接矩阵键盘
case 0x7e:return 1 ;break;\/\/0 按下相应的键显示相对应的码值 case 0x7d:return 2 ;break;\/\/1 case 0x7b:return 3 ;break;\/\/2 case 0x77:return '+';break;\/\/3 case 0xbe:return 4 ;break;\/\/4 case 0xbd:return 5 ;break;\/\/5 case 0xbb:return 6 ;break;\/\/6 cas...

急!51单片机中,用一个按键控制数码管暂停,再次按下时继续计数。下面是我...
\/256;TL0=(65536-45872)%256;} 这里错了,一是没编完吧,只是中断什么都没有处理呀,二是号错了,应该为1 另外,你的显示和键盘扫描都用延时,会有冲突,漏扫,漏显等会出现 void T0_time()interrupt 1 { TH0=(65536-45872)\/256;TL0=(65536-45872)%256;\/\/应该还有处理程序吧 } ...

用51单片机怎么通过独立按键实现串口通信 比如说你按下一个键S1 在串 ...
用键盘检测程序检测按键按下,检测到按下就用串口向上位机发送字符“1”的ASCII码值,这样在串口调试助手里就可以看到字符“1”了

51单片机一键控制一个LED,每按一下按键LED闪烁一种频率,共闪烁三种频 ...
while(!key); \/\/等待按键释放 n++;n %= 4; \/\/n = 0~3 } } } main(){ while(1) { switch(n) { case 0: led = 1; readkey(); break; \/\/熄灭 case 1: delay(); readkey(); \/\/慢速闪烁 case 2: delay(); readkey(); \/\/中速闪烁 case 3: delay(); ...

下面51单片机C语言程序怎么改成按钮按一下才执行,再按一下就停止,如此...
IO直接作为循环条件即可,如下:如果用户按下键不放会有问题,最好改为用户按下键再弹起为一次输入。

51单片机如何用一个按键控制一段程序的运行与停止
首先,你需要为你的项目创建一个新的文件,这是基础步骤,它将承载你的代码逻辑(1、在51单片机项目中,新建一个文件用于存放程序代码。)。接着,配置你的按键和LED。假设你选择的按键S1连接到P3的第2引脚,当按键按下时,可以通过编程使其对应P1的第5引脚点亮LED(2、按键S1的输入设置为P3^2,LED...

51单片机怎么用按键控制一个数码管,按一下显示一
\/*---名称:单个共阳数码管动态显示变化数字内容:通过循环检测P1口按键输入值,然后用数码管输出,没有按键按下时原值不变---*\/#include\/\/包

相似回答