两个按键控制一个led灯c51程序

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
51单片机用两个按钮控制一个LED灯的亮灭(不是那么简单请看我要求)

对你这种编程思想,我想问是跟谁学的啦!
对你这程序,我想问①先按K3、后按K2,你觉得程序结果会如何?②如果2个按键都按住不放,结果又会如何。
考虑一下上面的问题,就能看到你的程序问题了。当然你的程序问题,跟你的题目一样,没那么简单!后面还有一堆!!

#include
#define uchar unsigned char
sbit key = P1^0;
sbit led0 = P1^1;
sbit led1 = P1^2;
uchar count = 0;
void delayms (uchar time)//延时
{
for(time; time>0; time--)
{
TMOD |= 0x01;
TH0 = 0xfc;
TL0 = 0x18;
TR0 = 1; //启动计数器0
while(TF0!=1);//计数溢出
TF0 = 0;
TR0 = 0;
}
}
void scan_key (void)
{
if (!key)
{
delayms (5);
if (!key)
{
delayms (1);
while (!key);
count++;
if (count==3)
{
count = 0;
}
}
}
}
void main (void)
{
P1 = 0xff;
while (1)
{
scan_key ();
if (count==0)
{
led0 = 1;
led1 = 1;
}
if (count==1)
{
led0 = 0;
led1 = 1;
}
if (count==2)
{
led0 = 1;
led1 = 0;
}
}
}

#include <reg52.h>
sbit led = P1^0;
sbit key1 = P2^0;
sbit key2 = P2^1;

void delay(unsigned int cnt) //简单的延时
{
while(--cnt);
}
/*------------------------------------------------
MAIN C Function
------------------------------------------------*/
void main (void)
{
while (1)
{
if(key1 == 0) /*按键1按下*/
{
led = 0; /*灯亮*/
delay(1000);
while(!key1); /*消抖*/
}
else if(key2 == 0) /*按键2按下*/
{
led = 1; /*灯灭*/
delay(1000);
while(!key2);
}
}
}

  • 两个按键控制一个led灯c51程序
    答:{ if(key1 == 0)/*按键1按下*/ { led = 0; /*灯亮*/ delay(1000);while(!key1); /*消抖*/ } else if(key2 == 0) /*按键2按下*/ { led = 1; /*灯灭*/ delay(1000);while(!key2);} } }
  • c51单片机:两个独立按键控制一个led,k1按下松开led闪烁,k2按下松开le...
    答:include "reg52.h"typedef unsigned int u16;typedef unsigned char u8;sbit led=P2^0;//把所要控制的led灯定义为p2.0这个口sbit k1=P2^1;sbit k2=P2^2;void delay(u16 i){while(i--);}//一个延时程序void main(){if(k1==1)while(1){led=1;delay(50000); //大约延时450msled=0...
  • c51帮我加一个led闪烁程序,0,1,2按键也控制灯
    答:硬件led灯led |举报 答题抽奖 首次认真答题后 即可获得3次抽奖机会,100%中奖。 更多问题 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 c51 led 闪烁 按键 搜索资料本地图片 图片链接 代码 提交回答正在求助迪蝎王道萌萌哒问: 5 求冰上的尤里1到12全集汉化感谢! 回答 ...
  • 在c51中用两个键控制一个LED程序,条件是只有当两个键同时按下时LED才亮...
    答:当俩个按键的输入都为高电平(都按下了)就点亮LED,当俩个按键的输入都为低电平时(都释放了)就熄灭LED while(1){ if(key1 && key2) { //点亮LED led = 0; } if(!key1 && !key2) { //熄灭LED led = 1; }}(没写按键消抖)
  • 用C51单片机。通过2个按键,按制LED的变化。条件一2个按键都是低电平,le...
    答:1.3 PWM控制LED亮暗原理4 二、 程序设计思路5 三、 总体方案设计7 3.1 主控电路:7 3.2 LED驱动8 3.3 手动控制9 四、系统软件设计10 4.1 系统软件设计10 4.2 控制程序代码10 五、 总结13 前 言 二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种...
  • 单片机程序编程(用C51) 2个按键控制2位七段LED显示,每按下一次“+_百...
    答:static u8 key_up=1;if(mode)key_up=1;if(key_up&&(KEYADD==0||KEYRED==0|)){ delay_ms(10);//去斗 key_up=0;if(KEY0==0)return 1;else if(KEY1==0)return 2;}else if(KEYADD==1&&KEYRED==1)key_up=1;return 0;} value为显示值,KEYADD、KEYRED为加减的两个键,底层...
  • 请教c51单片机,c语言编程,关于控制LED灯闪烁频率?
    答:同时开放了定时器中断,并将定时器中断优先级设置为1(即高优先级)。在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该在循环...
  • C51单片机把两个独立按键控制流水灯的程序变成三个按键控制怎么改?
    答:想要第三个按键控制数码管,让数码管60s倒计时 --- 需要楼主提供:《数码管60s倒计时》的程序。增加一个控制按键,不难。难的是,符合你的显示电路的显示程序。你不提供这段程序,按键,加在何处?
  • 我要的是用51单片机的C编程,两条分别是:1) 单个LED灯的亮或灭实验,写出...
    答:include<reg52.h> include<intrins.h> unsigned char a;void main(){ int i, j;a = 0xfe;while(1) { a = _crol_(a, 1);P1 = a; //单个LED灯,接在P1的任意引脚 for(j = 100; j > 0; j--)for(i = 1000; i > 0; i--);} } ...
  • 如何用C51单片机实现P0口接两个按键,P1口接8个LED灯。key1按下左移动...
    答:给个四路:定意一个变量;if(按键1按下)变量为1;if(按键2按下)变量为2;if(变量==1){ 左移控制;} else if(变量==2){ 右移控制;}