① 51單片機c語言對流水燈編程,用定時中斷做 LED等從兩邊向中間亮
可以用一個數組存放LED燈的狀態,在定時器裡面為LED賦值數組裡面的值就行
例如
LED_arr[10]
=
{0x81,0x42,0x24,0x18,0x24,0x42,0x81};
LED
=
LED_arr[pos++];
② C語言控制LED燈
//!沒有硬體方案,以下只包含邏輯
intpush_count=0;//記錄按鈕按下次數
//!處理亮燈
voidlight(intled_num)
{
switch(led_num)
{
case1:
{
;//點亮燈1
}break;
case2:
{
;//點亮燈1
}break;
default:
;//滅所有燈
break;
}
}
//!處理按鍵中斷
voidpush_interrupt()
{
//判斷按鍵是否有效
push_count++;
if(1==push_count)
{
light(1);
}
elseif(2==push_count)
{
light(2);
}
elseif(8==push_count)
{
light(0);
push_count=0;
}
}
③ 用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--);
}
(3)c語言中斷控制led擴展閱讀:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料來源:網路-單片機
④ 用一個按鍵控制一個LED燈用中斷方式實現按一下亮0.5秒然後滅0.5,再按一下亮1秒然後滅1秒
while(1) /* 主循環 */
{
if( Key ==0)
{
for( i = 0; i < 1; i++ )
{
LED= 0; /* 埠送高電平,LED熄亮 */
DelayMs(500); /* 延時大概0.5S */
LED = 1; /* 埠送低電平,LED點滅 */
DelayMs(500); /* 延時大概0.5S */
} /* 延時10ms,消抖 */
{
if( Key == 0) LED = ~LED;/* 再次檢測按鍵是否按下,如果有,將LED狀態取反 */
for( i = 0; i <1; i++ )
{
LED= 0; /* 埠送高電平,LED熄亮 */
DelayMs(1000); /* 延時大概1S */
LED = 1; /* 埠送低電平,LED點滅 */
DelayMs(1000); /* 延時大概1S */
}
}
}
}
}
⑤ C語言編程式控制制LED燈亮滅
如果你LED的介面一個低電平,即0,燈就會亮,給一個高電平,1,就會滅。如果要一閃一閃的,只需給亮和滅的中間加延時,控制亮滅次數,可以使用一個循環。
⑥ 單片機C語言定時中斷LED燈程序求修改
#include<reg52.h>
sbit P00=P0^0;
sbit key=P1^0;
unsigned int i=0;
void main(void)
{
TMOD=0x10;//設定定時器的工作模式為定時器1方式1
TH1=15536/256;//向定時器裝入初值高八位
TL1=15536%256;//向定時器裝入初值低八位
EA=1;//開總開關
ET1=1;//開分開關
TR1=1;//啟動定時器
while(1)
{
if(key==0)TR1=0;
else TR1=1;
}
}
void t1(void) interrupt 3//定時器0服務函數
{
TH1=15536/256;//向定時器裝入初值高八位
TL1=15536%256;//向定時器裝入初值低八位
if(++i==30)//延時1.5S
{
i=0;
P00=~P00;//閃爍
}
}
⑦ 單片機C語言寫一條中斷程序,一上電就是LED閃爍,按下開關走中斷裡面的,LED一直亮,
#include<reg51.h>
#defineucharunsignedchar
sbitled=P1^0;
sbitkey=P3^2;
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
voidext0()interrupt0
{
led=0;
while(key==0);
}
main()
{
EX0=1;
IT0=1;
EA=1;
whlile(1)
{
led=0;
delay(200);
led=1;
delay(200);
}
}
⑧ 單片機中怎樣中斷控制led燈隔一秒閃爍一次,c語言的,麻煩高手貼個程序看一下,最好用定時器t0。
設置定時器時間間隔為1s,計數總共不到1s的話,就再定義一個變數,循環多次,以實現1s
然後再1s時的定時器中斷子程序中設置輸出腳的電平交替即可
⑨ 用51單片機一個開關控制個LED燈;程序用C語言,中斷控制函數寫
1. 51單片機有很多種,請指定型號;
2. 一個開關控制個LED燈,請指定具體的線路連接
3. 中斷控制函數,不同的51單片機有多種中斷源,請指定
⑩ 急求利用定時中斷方式0實現led每0.4秒閃爍一次的c語言程序!謝謝!!!
#include<reg52.h>
sbit P10=P1^0;//控制LED閃爍
unsigned char count=0;//計數變數
void main()
{
TMOD = 0x01; //設定時器0為模式1,16位模式
TH0=0xdc;
TL0=0x00; //設定時值為10ms,此時晶振頻率是11.0592MHZ
//若晶振頻率是12MHZ,則初值應為 TH0=0xd8; TL0=0xf0;
ET0 = 1; //定時器0中斷打開
EA = 1; //允許CPU中斷
TR0 = 1;//啟動定時器0
while(1)
{
if(count==40) //0.4秒時間是否到
{
count=0; //計數變數清零,為下一次計數做准備
P10=!P10; //IO口取反,即LED亮滅變化
}
}
}
//定時器0中斷處理子程序
void Time0() interrupt 1 using 0
{
TH0=0xdc;
TL0=0x00; //設定時值為10ms
count++; //計數加一
}