當前位置:首頁 » 編程語言 » c語言控制一個燈

c語言控制一個燈

發布時間: 2023-04-26 08:13:24

❶ 51單片機一個開關控制一盞燈的c程序是什麼

一個簡單的開關控制一盞燈的c程序如下:

#include<reg52.h>

sbit S1=P1^4; //將S1位定義為P1^4,檢測獨立按鍵
sbit led0=P1^0; //將led0定義為P1.0口的LED

/***********************************************************************************************************************************************
延時函數
***********************************************************************************************************************************************/
void delay(void)
{
unsigned int i;
for(i=5000;i>0;i--)
;
}
/***********************************************************************************************************************************************
主函數
***********************************************************************************************************************************************/
void main(void)
{
while(1)
{
if(S1==0) //判斷是否有鍵按下
{
delay(); //有鍵按下,延時去抖,真正應用時要少用這種延時,佔用時間,用定時器延時或一個寄存器循環檢測10多次按鍵

if(F0==0) //用F0標志位判斷鍵按下是否已經處理,因剛學c語言沒多久,
//不知道怎麼定義RAM能位定址的寄存器,先用F0,按鍵多的話,一個F0不夠用
{
F0=1; //F0置1,表示這次按鍵按下已處理
led0=~led0; //將LED亮滅狀態取反
}
}

else 高握腔 戚衫 //S1=1說明按鍵釋放
{
F0=0; 皮悄 //F0清零,清按鍵已處理標志
}
}
}

❷ 獨立鍵盤用一個按鍵,控制一個燈的亮滅,用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滅
}
}
}
}

❸ 單片機 用C語言怎麼編寫用一個按鈕,控制一盞燈的亮與滅的程序

讀取連接按鍵的IO口,判斷是否為低電平,如果是,延時(十毫秒左右可以),再次讀取IO口,判斷是否為低電平,如果是則表示有有效的按鍵按下,接著用while判斷等待按鍵釋放,然後讓連接led的IO口電平取反以控制其亮滅(是強電的燈可以通過此處控制繼電器的合、閉來控制燈的亮滅)。參考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按鍵釋放,IO口恢復高電平led=!led;//按鍵控製程序}}

❹ 用C語言編寫一個單片機控制LED燈閃爍變化的編程 急用!!!!!!!!!

C語言實現LED燈閃爍控制配套51單片機開發板。

#include //包含單片機寄存器的頭文件

/****************************************
函數功能:延時一段時間

*****************************************/

void delay(void) //兩個void意思分別為無需返回值,沒有參數傳遞。

{

unsigned int i; //定義無符號整數,最大取值范圍65535。

for(i=0;i<20000;i++) //做20000次空循環。

; //什麼也不做,等待一個機器周期。

}

/*******************************************************

函數功能:主函數 (C語言規定必須有也只能有1個主函數)。

********************************************************/
void main(void)

{

while(1) //無限循環。

{

P0=0xfe; //P1=1111 1110B, P0.0輸出低電平。

delay(); //延時一段時間。

P0=0xff; //P1=1111 1111B, P0.0輸出高電平。

delay(); //延時一段時間。

}

}

單片機驅動LED燈的源程序:

#include<reg52.h> //頭文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定義。

void delay_ms(uint);//mS級帶參數延時函數。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延時子程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(4)c語言控制一個燈擴展閱讀:

單片機應用分類:

通用型:

這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式亮敏扒通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。

匯流排型:

這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。

另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,敬昌大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。

控制型:

這是按照單片機(Microcontrollers)大致應用的領域拿亂進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。

通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。

參考資料來源:網路-單片機



❺ 用定時期控制一個交通燈亮c語言程序

#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitRED_A=P0^0;//東西向指示燈
sbitYELLOW_A=P0^1;
sbitGREEN_A=P0^2;
sbitRED_B=P0^3;//南北向指示燈
sbitYELLOW_B=P0^4;
sbitGREEN_B=P0^5;
//延時倍數,閃爍次數,操作類型
變數
ucharTime_Count=0,Flash_Count=0,Operation_Type=1;
//定時器0中斷函數
voidT0_INT()interrupt1
{
TL0=-50000/256;
TH0=-50000%256;
switch(Operation_Type)
{
case1://東西向綠燈與南北向紅燈亮5s
RED_A=0;YELLOW_A=0;GREEN_A=1;
RED_B=1;YELLOW_B=0;GREEN_B=0;
if(++Time_Count!=100)return;//5s(100*50ms)切換
Time_Count=0;
Operation_Type=2;
break;
case2://東西向黃燈開始閃爍,綠燈關閉
if(++Time_Count!=8)return;
Time_Count=0;
YELLOW_A=~YELLOW_A;GREEN_A=0;
if(++Flash_Count!=10)return;//閃爍
Flash_Count=0;
Operation_Type=3;
break;
case3://東西向紅燈與南北向綠燈亮5s
RED_A=1;YELLOW_A=0;GREEN_A=0;
RED_B=0;YELLOW_B=0;GREEN_B=1;
if(++Time_Count!=100)return;//5s(100*50ms)切換
Time_Count=0;
Operation_Type=4;
break;
case4://南北向黃燈開始閃爍,綠燈關閉
if(++Time_Count!=8)return;
Time_Count=0;
YELLOW_B=~YELLOW_B;GREEN_A=0;
if(++Flash_Count!=10)return;//閃爍
Flash_Count=0;
Operation_Type=1;
break;
}
}
//主程序
voidmain()
{
TMOD=0x01;//T0方式1
IE=0x82;
TR0=1;
while(1);
}

熱點內容
網路訪問層 發布:2024-11-01 16:18:38 瀏覽:349
國產系列ftp 發布:2024-11-01 15:49:53 瀏覽:702
招編程師傅招聘 發布:2024-11-01 15:34:51 瀏覽:192
kkt編程 發布:2024-11-01 15:31:26 瀏覽:614
我的世界管理員進伺服器提示 發布:2024-11-01 15:21:12 瀏覽:126
如何刪除qq空間訪問記錄 發布:2024-11-01 15:20:07 瀏覽:323
微信上傳圖片失敗 發布:2024-11-01 15:19:53 瀏覽:117
python網站域名伺服器搭建 發布:2024-11-01 15:18:36 瀏覽:693
量產工具加密 發布:2024-11-01 15:14:31 瀏覽:674
儲備存儲 發布:2024-11-01 15:14:28 瀏覽:330