百度知道 - 信息提示

日期:2025-01-12 21:55:55 人气:1

百度知道 - 信息提示

    A+
热门评论

51单片机怎么用c语言写一个按钮控制一个led的闪烁,按一下开始闪烁,再按就灭掉

bit flash;//闪烁标志位 sbit led=P0^0; sbit P01=P0^1; sbit P02=P0^2; void main() { P01=P02=0; flash=0; led=0; while(1) { scankey(); ledflash(); } } void scankey()//键盘扫描 { P01=1;//行线给1 if(P02)//如果P02也是1则说明接通 { delay(10);//去抖动10MS if(P02)//再次确定按键按下 { while(P02){flash=flash}//按住按键的动作 flash=~flash;//按键按下后执行动作 } } } void ledflash() { if(flash) { led=1;//点亮 delay(100);//延时100MS led=0;//熄灭 } else led=0; } void delay(unsigned int i) {自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)

阅读全文

想用c语言写一个按键控制小灯闪烁的程序,就是按一下闪烁,再按就熄灭

具体是怎么个不行法。 像你这种按键程序 因为单片机速度非常快,在你按一下按键时,单片机已经循环了很多次程序。 因此这样就会导致,当你按下时,其实k一直==0 一直在执行动作。 所以这种按键需要判断按键是第一次按下(由弹起状态下按下)。而不是一直按着导致的动作。 方法:建一个变量保存上一次按键的值 char LastKey;LastKey = 1;while(1){ if(k == 0 && LastKey == 1) //按下,且上一次检测按键时是弹起状态 { //这样才能保证每次按下时只执行一次, //而不是一直在执行 Delay1ms(20); if(k == 0) //确定是第一次按下,执行动作 { if((n % 2) == 0) { LedFlash(); } else { P0 = 0xFF; } n++; } } LastKey = k; //保存按键状态}

阅读全文