导航:首页 > 操作系统 > c51单片机用开关控制灯

c51单片机用开关控制灯

发布时间:2023-11-21 20:56:06

单片机C51编程问题:怎样实现一个开关控制两个灯按一次灯1亮;两次,灯1,灯2亮;三次,全灭。

单片机C51编程问题:要实现一个开关控制两个灯,按要求两个灯有3种状态,就要声明一个变量,每按一下开关,变量加一,且变量取值为1,2,3,大于3再回1,又重复控制两个灯亮灭变化。变量加一后,就根据变量的三个值,去控制两个灯的三个状态了。用仿真实现,如下仿真图。

Ⅱ 怎么用89C51单片机实现用一个开关控制8个流水灯,要求开关按下去松开是亮的,再按下去松开是灭的

开关,接在 P2.7 与地之间。

#include <AT89X51.H> //预处理命令

void w(unsigned char k)
{
unsigned int a; //定义变量a 为int 类型
if (k) {
while(P2_7); //没有按就循环,等待按下
for (a = 0; a < 600; a++); //延时消抖
while(P2_7); //没有按就循环
}
else while(!P2_7); //按下就循环,等待松开
}

void main(void) //主函数名
{
while(1) {
w(1); P1_0 = 0; w(0); P1_0 = 1;
w(1); P1_1 = 0; w(0); P1_1 = 1;
w(1); P1_2 = 0; w(0); P1_2 = 1;
w(1); P1_3 = 0; w(0); P1_3 = 1;
w(1); P1_4 = 0; w(0); P1_4 = 1;
w(1); P1_5 = 0; w(0); P1_5 = 1;
w(1); P1_6 = 0; w(0); P1_6 = 1;
w(1); P1_7 = 0; w(0); P1_7 = 1;
}
}

Ⅲ 单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。

Ⅳ 如何用单片机一个按钮开关控制3个灯3种效果。流水。闪烁。还有一直亮。用keil编程。

下面是用C51编写的简单程序:
#include <reg51.h>
#include <intrins.h>
sbit io_Key = P1 ^ 1;
sbit led1 = P1 ^ 2;
sbit led2 = P1 ^ 3;
sbit led3 = P1 ^ 4;
unsigned char ucCount = 0;
bit flag05s = 0;
//---------------------------------
void delay125us(void) //@12.000MHz
{
unsigned char i;
i = 60;
while (--i);
}

void Timer0Init(void) //10毫秒@12MHz
{
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0xF0; //设置定时初值
TH0 = 0xD8; //设置定时初值
TR0 = 1; //开定时器0
ET0 = 1; //开定时器0中断
EA = 1; //开总中断
}
//T0中断用来计数器溢出
void zd0(void) interrupt 1
{
TL0 = 0xF0; //设置定时初值
TH0 = 0xD8; //设置定时初值
if(++ucCount >= 50)
{
ucCount = 0;
flag05s = 1; //g_flag05s = isYes定时0.52秒到,用于测量周期延时
}

}

void main(void)
{
unsigned char CountTemp = 0, ucState = 0;
Timer0Init();

while(1)
{
//-------------------------------
//简单的按键检测程序:
io_Key = 1;
_nop_();
if( io_Key == 0 )
{
CountTemp = 0;
do
{
delay125us();
if( io_Key != 0 ) break;
} while(++CountTemp > 160); // 延时20ms去抖动

if(CountTemp > 160)//如果按键时间有效,改变状态
{
switch(ucState)
{
case(0):
{
ucState = 1;

led1 = 0;
led2 = 0;
led3 = 0;
}
break;
case(1):
{
ucState = 2;
led1 = 0;
led2 = 0;
led3 = 0;
}
break;
case(2):
{
ucState = 0;
led1 = 0;
led2 = 1;
led3 = 1;
}
break;

}
while(io_Key == 0); //等待按键释放
}

}
//------------------------------
//每0.5秒改变一下LED状态
if(flag05s == 1)
{
flag05s = 0;
switch(ucState)
{
case(0):
{
led1 = !led1;
led2 = !led2;
led3 = !led3;
}
break;
case(1):
{
bit ledTemp = led1;
led1 = led2;
led2 = led3;
led3 = ledTemp;
}
break;
//LED常亮可以忽略改变LED状态
/*
case(2):
{
led1 = 0;
led2 = 0;
led3 = 0;
}
break;
*/

}

}

}

}
//-----------------------------------------------
//上面程序中有很多地方可以优化,这里只是给出一个参考供学习。

Ⅳ 求单片机c51的C语言编程:设当开关为1时,控制2个led交替闪烁,闪烁时间为5秒

#include#,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==0xff)l

阅读全文

与c51单片机用开关控制灯相关的资料

热点内容
python查找相似图片的代码 浏览:331
赵丽pdf 浏览:656
如何苹果手机app不要自动更新 浏览:977
pythonflask路线教程 浏览:256
程序员职业有哪些好处 浏览:711
大都会软件app如何扫码 浏览:436
单片机0x38 浏览:756
程序员浪漫工作 浏览:329
php几分钟前 浏览:308
项目编译及运行 浏览:894
程序员的基本功 浏览:522
遗传算法排班 浏览:289
如何加密金融安全网 浏览:30
家里的wifi太卡了怎么样自己加密 浏览:233
华为链路聚合命令 浏览:426
apache自动运行php 浏览:519
485和单片机 浏览:975
xp修复系统命令 浏览:520
微你app怎么加好友 浏览:796
程序员转正 浏览:211