
程序如下
#include<reg51h>
sbit led1=P10;
sbit key=P11;
sbit key1=P12;
sbit key2=P13;
void main()
{
while(1)
{
if((key|key1|key2)==0)
{led1=~led1;while((key|key1|key2)==0);
}
}
没试过 可能有些地方不对 你自己改改 反正思路就这样了
确实是初学呀,P0,P1,P2都有8个IO口,所以暂且给你都安排在第一个口吧。
#include<reg51h>
#define uchar unsigned char
sbit key=P0^0;
sbit pluse1=P1^0;
sbit pluse2=P2^0;
void delay(int ms)
{
uchar i ;
while(ms--)for(i=0;i<120;i++);
}
main()
{
uchar num;
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
num++;
num%=2;
if(num==1)
{
pluse1=0;
delay(500);
pluse1=1;
}
else
{
pluse2=0;
delay(500);
pluse2=1;
}
}
}
}
}
简单编了一下程序,,,
#include<reg52h>
sbit led1=P1^1; //led灯,按实际再改
sbit led2=P1^2; //led灯,按实际再改
sbit led3=P1^3; //led灯,按实际再改
sbit led4=P1^4; //led灯,按实际再改
sbit key1=P2^1; //按键,按实际再改
sbit key2=P2^2; //按键,按实际再改
sbit key3=P2^3; //按键,按实际再改
sbit key4=P2^4; //按键,按实际再改
void delay(unsigned int t) //延时函数
{
while(--t);
}
void main()
{
while(1)
{
if(key1 == 0) //如果高电平按下按键就==1
{
delay(200); //按键防抖
if(key1 == 0)
{
led1=1; //如果低电平亮就=0
led2=0;
led3=0;
led4=0;
}
}
if(key2 == 0)
{
delay(200); //按键防抖
if(key2 == 0)
{
led1=0; //如果低电平亮就=0
led2=1;
led3=0;
led4=0;
}
}
if(key3 == 0)
{
delay(200); //按键防抖
if(key3 == 0)
{
led1=0; //如果低电平亮就=0
led2=0;
led3=1;
led4=0;
}
}
if(key4 == 0)
{
delay(200); //按键防抖
if(key4 == 0)
{
led1=0; //如果低电平亮就=0
led2=0;
led3=0;
led4=1;
}
}
}
}
用I/O口的两个引脚读取按键的状态,采用循环扫描工作方式,按键按下为1,没按为0,则按键状态为01时,让LED交替量,数据口输出对应的高低电平即可;按键状态为10时,数据口输出同亮同灭数据
主程序大致是这样的
flag=0;//记录按键次数
While(1)
{
if(key==0){delayms(20);if(key==0)flag++;}//按键检测
if(flag==3)flag=0;
if(flag==0){正向流水}
else if(flag==1){反向流水}
else {间隔流水}
}存在问题,由于流水灯执行时间较长,因此对按键响应缓慢,可以在流水灯之间加入按键检测语句,当检测到按键按下时,用break语句退出当前循环
低电平点亮
START:MOV R0,#8
MOV R1,#8
SETB C
MOV A,#0FEH
MOV P1,A
S1:RLC A
CALL DELAY
MOV P1,A
DJNZ R0,S1
SETB C
MOV A,#0FEH
MOV P2,A
S2:RLC A
CALL DELAY
MOV P2,A
DJNZ R1,S2
AJMP START
DELAY:MOV R5,#0FFH //改变值变延时时间
LOOP2: MOV R4,#0FFH//改变值变延时时间
LOOP1:DJNZ R4,LOOP1
DJNZ R5,LOOP2
RET
END
以上就是关于怎样用51单片机设计三个按键控制一个灯的程序,C程序全部的内容,包括:怎样用51单片机设计三个按键控制一个灯的程序,C程序、求一个简单的51单片机程序 (一个按键控制两个口输出)、51单片机用4个按钮分别控制四个LED的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)