当前位置:首页 » 编程语言 » c语言灯灭

c语言灯灭

发布时间: 2022-08-30 15:04:13

1. c语言,百灯熄灭问题,求思路!!!!

#include<stdio.h>

main(void)
{
inti,j,m,n;
ints[200];
scanf("%d",&m);
for(i=0;i<m;i++)
s[i]=1;//初始状态,开为1,关为-1
for(i=0;i<m;i++)
for(j=i;j<m;j=j+i+1)
s[j]=-1*s[j];//状态翻转
n=0;
for(i=0;i<m;i++)
if(s[i]==-1)
n++;//求数量
printf(" %d ",n);
for(i=0;i<m;i++)
if(s[i]==-1)
printf("%d",i+1);//求编号
}

2. 独立键盘用一个按键,控制一个灯的亮灭,用C语言怎么写程序

sbit KEY = P0^1;
sbit LED = P0^2;

int keyscan(void)
{
bit keyval=0;
if(KEY)
{
delay(30);//延时消抖
if(KEY)
{
keyval = ~keyval; //值取反

if(keyval )
{
LED = 1;//led亮
}
else
{
LED = 0;//led灭
}
}
}
}

3. C语言编程控制LED灯亮灭

首先要看Led灯和单片机的连接情况,如果只是控制亮灭,只需要看单片机端口控制即可,关键是配置端口的DDRx方向寄存器和PORTx数据寄存器,比如端口A的0引脚控制一个灯,要配置它的输出高电平或是低电平以达到控制灯的亮灭,那就
灯亮:
DDRA |= BIT(0); //输出
PORTA |= BIT(0);//高电平
灯灭:
DDRA |= BIT(0); //输出
PORTA &= ~BIT(0);//低电平
其余的就看你电路如何连接的,每个端口寄存器的每一位控制一个引脚,你可以查查芯片的数据手册,上边有个表格的。

如果你要控制灯的亮暗程度,选择使用PWM输出来控制,需要看定时计数器。

4. 求一个一个开关控制一个灯亮灭的C语言程序

#include "REG52.H"
sbit LED1_01 = P1^1; //LED灯
sbit KEY0_01 = P1^2; //按键
void Delay_1ms(unsigned int Time)
{
unsigned int x, y;
for(x = Time; x > 0; x--)
for(y = 120; y > 0; y--);
}

int main(void)
{
LED1_01 = 1; //打开LED灯点亮

while(1)
{
if(KEY0_01 == 0) //检测按键是否按下
{
Delay_1ms(10); //延时去抖动
if(KEY0_01 == 0) //确定按键按下
{
LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ]
}
while(KEY0_01 == 0); //检测松手
}
}
}

5. 51单片机C语言定时器定时2小时灯亮2小时灯灭,如此循环!

如果想实现无限循环那就采用死循环方式,可以无限的循环如while(1){};然后设定定时器定时时间为1s(此值需要根据单片机确定是否可以设定这么大),其次,设定一个变量对时间进行计数,根据计数情况做出相应的改变,程序可以这样设定:
unsigned char gucLEDStatus = 0x00; //全局变量,表示灯当前的状态 0为灭,1为亮
volatile unsigned int gusTimeCnt; //全局变量对时间计数
int main()
{
//增加定时器初始化并开放中断
while(1)
{
if(gucLEDStatus == 0x01) //当前为亮状态
{
if(gusTimeCnt >= 7200) //两个小时时间到
{
gusTimeCnt = 0x00; //清零
gucLEDStatus = 0x00; //灯为灭状态
//此处加程序代码,控制灯为灭的状态
}
else
{
//此处加程序代码,控制灯为亮的状态,此处会重复执行,可以进行控制
}
}
else if(gucLEDStatus == 0x00) //灯为灭的状态
{
if(gusTimeCnt >= 3600) //1个小时
{
gusTimeCnt = 0x00;
gucLEDStatus = 0x01; //亮状态
//增加程序代码,控制灯亮
}
else
{
//增加程序代码,控制灯灭,此处会重复执行,可以进行控制
}
}
}
return 0;
}

在中断函数中,对gusTimeCnt进行递增即可!

6. C语言中单按键控制流水灯亮灭

enum{
按着,
松开,
};
std::vector<int> light,
把你的灯仿佛light 然后判断当前的状况,每次触发按着的时候就让 light当前的状态变成关灯,light的下一个灯变成开起

7. 单片机 用C语言怎么编写用一个按钮,控制一盏灯的亮与灭的程序

读取连接按键的IO口,判断是否为低电平,如果是,延时(十毫秒左右可以),再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。参考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按键释放,IO口恢复高电平led=!led;//按键控制程序}}

8. 51单片机C语言控制LED灯亮10分钟灭120分钟

#include <reg51.h>

sbit P12 = P1^2;

void main(void) //主程序
{
RCAP2H =0x10; //赋T2的预置值0x1000,溢出30次就是1秒钟
RCAP2L =0x00;
TR2=1; //启动定时器
ET2=1; //打开定时器2中断
EA=1; //打开总中断
P12 =1; //初始灯亮
while(1);
}
//定时器2中断
timer2() interrupt 5
{
static unsigned int t,t1;
TF2=0; //!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同!!!
t++;
if(t==18000) //T2的预置值0x1000,溢出30次就是1秒钟,这边为10分钟后灯灭,晶振22118400HZ
{
t=0;
t1++;
P12=0;
}
if(t1==12) // 13个10分钟,总时间130分钟到,灯亮,130-10=120灭的时间
{

t1=0;
P12=1;

}
你试一下,我手边暂时没电脑,手打的,整体就是这个意思;你可以换成定时器T1

9. c语言编程开关闭合,但灯泡只亮2s就灭了怎么写

C.
形象地说串联就是把灯泡像糖葫芦串一样用电线串起来,加上开关,通过观察电流的流向就能很容易地得出串联电路一个开关控制两个灯泡的暗亮;而并联则是把两个灯泡并排地分两条线路相连,类似于下图:
┍———⑩——┒
——┤ ┣━━
┕———⑩——┚ (假设⑩是灯泡)
电流方向自左往右时,
若开关在最左边的那条电线上,则开关控制两个灯泡的暗亮;因此选C,两种连接方式都有可能。
(另外若有两个开关,分别在中间部分的两条电线的灯泡左边,则可以分别控制两个灯泡的暗亮了。一般题目中出现用来装饰树枝,墙面的小灯泡都是用串联方式的。)

热点内容
adbandroid版本 发布:2025-01-16 13:53:14 浏览:387
直链云存储 发布:2025-01-16 13:19:30 浏览:726
电脑主机服务器多少钱 发布:2025-01-16 13:00:28 浏览:667
linuxoracle操作 发布:2025-01-16 12:40:50 浏览:47
河北存储服务价格 发布:2025-01-16 12:39:21 浏览:351
挂机服务器的搭建 发布:2025-01-16 12:34:07 浏览:417
安卓怎么删除信任凭证 发布:2025-01-16 12:22:06 浏览:338
代理编译 发布:2025-01-16 12:07:59 浏览:794
服务器为什么老是无响应 发布:2025-01-16 12:07:59 浏览:894
安卓怎么传软件到苹果 发布:2025-01-16 12:01:28 浏览:959