描述 stc单片机 按键控制灯亮灭和闪烁 上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下
描述stc单片机按键控制灯亮灭和闪烁上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下灯闪烁更快,再按一下灯灭。。。。如此循环...
描述
stc单片机
按键控制灯亮灭和闪烁
上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下灯闪烁更快,再按一下灯灭。。。。如此循环 展开
stc单片机
按键控制灯亮灭和闪烁
上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下灯闪烁更快,再按一下灯灭。。。。如此循环 展开
2个回答
展开全部
#include<reg51.h>
unsigned char times;
sbit key=P1^0;
sbit led=P1^4;
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
led=1;
while(1)
{
if(key==0)
{
while(key==0);
times++;
times%=3;
}
switch(times)
{
case 0:led=1;break;
case 1:led=0;break;
case 2:led=~led;delay(100);break;
default:break;
}
}
}
unsigned char times;
sbit key=P1^0;
sbit led=P1^4;
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
led=1;
while(1)
{
if(key==0)
{
while(key==0);
times++;
times%=3;
}
switch(times)
{
case 0:led=1;break;
case 1:led=0;break;
case 2:led=~led;delay(100);break;
default:break;
}
}
}
追问
你这个没有按键消震的程序
追答
按键消抖其实就是检测到有效按键后延时10~30毫秒再检测如果按键仍然有效则为按键有效.以下是加消抖的程序:
#include
unsigned char times;
sbit key=P1^0;
sbit led=P1^4;
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
led=1;
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
times++;
}
times%=3;
}
switch(times)
{
case 0:led=1;break;
case 1:led=0;break;
case 2:led=~led;delay(100);break;
default:break;
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是需要程序吗?
什么语言?
什么语言?
追问
c语言
追答
#include
unsigned char n = 0;
sbit key = P3^7;
sbit led = P0^0;
void delay()
{
unsigned int i, j;
for(i = 0; i < 100; i++) for(j = 0; j <500; j++);
}
void readkey(void)
{
unsigned char i, j;
if(!key) {
for(i = 0; i < 10; i++) for(j = 0; j < 120; j++);
if(!key) {
n++;
n %= 4;
while(!key);
}
}
}
main()
{
while(1) {
switch(n) {
case 0: led = 1; readkey(); break;
case 1: led = 0; readkey(); break;
case 2: delay(); readkey();
case 3: delay(); readkey(); led = ~led;
}
}
}
本程序经过了实践验证,可以满足题目的要求。
提问者选择了一个错误的程序,并不能实现【闪烁】变换到【闪烁更快】。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询