c語言燈滅
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,兩種連接方式都有可能。
(另外若有兩個開關,分別在中間部分的兩條電線的燈泡左邊,則可以分別控制兩個燈泡的暗亮了。一般題目中出現用來裝飾樹枝,牆面的小燈泡都是用串聯方式的。)