C語言實現(xiàn)LED燈閃爍控制配套51單片機開發(fā)板。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:申請域名、虛擬主機、營銷軟件、網站建設、烏翠網站維護、網站推廣。
#include??? //包含單片機寄存器的頭文件
/****************************************
函數(shù)功能:延時一段時間
*****************************************/
void delay(void)??????? //兩個void意思分別為無需返回值,沒有參數(shù)傳遞。
{
unsigned int i;?????? //定義無符號整數(shù),最大取值范圍65535。
for(i=0;i20000;i++)? //做20000次空循環(huán)。
;?????????????? //什么也不做,等待一個機器周期。
}
/*******************************************************
函數(shù)功能:主函數(shù) (C語言規(guī)定必須有也只能有1個主函數(shù))。
********************************************************/
void main(void)
{
while(1)????? //無限循環(huán)。
{
P0=0xfe;?? //P1=1111 1110B, P0.0輸出低電平。
delay();?? //延時一段時間。
P0=0xff;?? //P1=1111 1111B, P0.0輸出高電平。
delay();? //延時一段時間。
}
}
單片機驅動LED燈的源程序:
#includereg52.h //頭文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定義。
void delay_ms(uint);//mS級帶參數(shù)延時函數(shù)。
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;x0;x--)
for(y=110;y0;y--);
}
擴展資料:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區(qū)分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC接口等功能的溫度測量控制電路。
總線型:
這是按單片機(Microcontrollers)是否提供并行總線來區(qū)分的。總線型單片機普遍設置有并行地址總線、 數(shù)據總線、控制總線,這些引腳用以擴展并行外圍器件都可通過串行口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設接口集成一片內,因此在許多情況下可以不要并行擴展總線,大大減省封裝成本和芯片體積,這類單片機稱為非總線型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區(qū)分的。一般而言,工控型尋址范圍大,運算能力強;用于家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設接口集成度高。 顯然,上述分類并不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是總線型,還可以作工控用。
參考資料來源:百度百科-單片機
流水燈程序是keil的自帶例子,你直接跑就是。
void wait (void) { /* wait function */
; /* only to delay for LED flashes */
}
void main (void) {
unsigned int i; /* Delay var */
unsigned char j; /* LED var */
while (1) { /* Loop forever */
for (j=0x01; j 0x80; j=1) { /* Blink LED 0, 1, 2, 3, 4, 5, 6 */
P1 = j; /* Output to LED Port */
for (i = 0; i 10000; i++) { /* Delay for 10000 Counts */
wait (); /* call wait function */
}
}
for (j=0x80; j 0x01; j=1) { /* Blink LED 6, 5, 4, 3, 2, 1 */
P1 = j; /* Output to LED Port */
for (i = 0; i 10000; i++) { /* Delay for 10000 Counts */
wait (); /* call wait function */
}
}
}
}
閃爍你可以再加幾行。
led_table
=
LED_0F
+
LED[2];
//這個
LED_0F是數(shù)據表的首地址,,+LED[2]
變成數(shù)組的第三個數(shù)的地址。
i
=
*led_table;
這里獲取值。。。
不過我想太麻煩了
改為
i
=
LED_0F
[
LED[2]
]
就可以了。