Ⅰ 單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)
單片機流水燈C語言程序的源代碼如下:
#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8個流水燈反向逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8個流水燈依次反向全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp>>=1;
}
void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(1)單片機for語句控制流水燈擴展閱讀
51單片機流水燈的源代碼如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
Ⅱ keil軟體用單片機控制8個LED流水燈來回點亮(C語言程序)
#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //點亮第一個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //點亮第二個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //點亮第三個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //點亮第四個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //點亮第五個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //點亮第六個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //點亮第七個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //點亮第八個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}
或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循環點亮LED
w<<=1; //點亮燈的位置移動,最低位補0
w=w|0x01; //將最低位置1
delay(500); //延時
}
}
}
或:
#include "reg51.h"
//程序中使用_crol_函數,所以要包含頭文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延時
temp=_crol_(temp,1); //點亮LED的位置循環左移一位
}
}
Ⅲ 用兩組I/O口控制16個流水燈的C51程序
在使用C51進行編程時,通過數組定義可以簡化控制多個LED燈的操作。比如定義一個包含16個LED狀態的數組,如下所示:
uchar led[]={0xfe,0xfd,0xfb,0x07,0x0f,0x1f,0x3f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
接著使用for循環將數組中的值依次賦給P0口,代碼如下:
for(i=0;i<8;i++) {
P0=led[i];
delayms(1000)
}
這種方式適用於控制較少數量的LED燈。如果需要直接賦值,代碼會稍顯復雜,每次重新賦值P0都需要加入延時。
另外,還有一種更為簡潔的程序實現方式,如下:
#include //包含單片機寄存器的頭文件
void delay(void) {
unsigned int n;
for(n=0;n<30000;n++) ;
}
void main(void) {
unsigned char i;
while(1) {
P1=0xff;
delay();
for(i=0;i<8;i++)//設置循環次數為8 {
P1=P1>>1; //每次循環P1的各二進位右移1位,高位補0
delay(); //調用延時函數
}}
}
此程序通過循環右移P1的值來實現LED燈的流水效果,同時加入延時函數以控制閃爍速度。
該程序利用了位操作的特性,使得LED燈的控制更為靈活。通過不斷右移P1的值,可以實現流水燈的效果。每次循環時,P1的值會右移一位,高位補0,從而實現LED燈的依次點亮。
整個程序中,通過while(1)循環確保程序持續運行。每次循環時,P1的值右移一位,並調用延時函數以控制閃爍速度。這樣,就可以實現多個LED燈的流水效果。
這種編程方式簡潔明了,易於理解和維護,適用於控制多個LED燈的流水效果。通過不斷右移P1的值,可以實現LED燈的依次點亮,從而達到流水燈的效果。
Ⅳ C51單片機編程,按鍵控制流水燈
#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED燈的花樣數據
void delay(unsigned char time){ //延時函數
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //標志位定義及初始化
char i;
while(1){
switch (P0 & 0x0f){ //讀取鍵值
case 0x0e:run=1;break; //K1動作,設run=1
case 0x0d:run=0,dir=0;break; // K2動作,設run=dir=0
case 0x0b:dir=1;break; //K3動作,設dir=1
case 0x07:dir=0;break; //K4動作,設dir=0
}
if (run) //若run=dir=1,自上而下流動
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流動
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部燈滅
}
}
Ⅳ 單片機流水燈程序
單片機流水燈程序答案:
下面是一個基於單片機的流水燈程序示例。
詳細解釋:
1. 程序概述:
此程序用於控制單片機連接的LED燈,實現流水燈效果。即LED燈會依次亮起,形成一個流動的燈光效果。
2. 程序邏輯:
* 初始化:設置單片機埠的方向為輸出,並初始化所有LED燈為熄滅狀態。
* 主循環:在單片機的主循環中,逐個控制埠位,使每個LED燈依次亮起。通過延時函數控制每個燈亮的時間,形成流水燈效果。
* 延時函數:為了控制LED燈的亮起和熄滅速度,需要加入延時函數。這個延時函數可以根據需要進行調整,以達到最佳效果。
3. 代碼實現:
c
#include <單片機頭文件.h> // 根據實際單片機型號替換頭文件
void delay; // 延時函數聲明
void main {
P1 = 0x00; // 初始化埠,所有LED燈熄滅
while { // 主循環
for { // 控制8個LED燈
P1 = ~; // 依次點亮LED燈
delay; // 延時函數,控制點亮時間
}
}
}
void delay { // 簡單的延時函數實現
unsigned int j;
for;
}
注意:以上代碼僅為示例,實際應用中需要根據單片機的具體型號和硬體連接情況進行調整。單片機的編程語言和具體語法也會因型號不同而有所差異。此外,延時函數的實現也可能更為復雜,這里為了簡單明了而採用了一個基礎的實現方式。在實際應用中,可能還需要考慮其他因素,如中斷、外部觸發等。請根據具體需求進行編程和調試。