㈠ c語言流水燈程序 求具體代碼
1滅)。編譯器keil
C代碼如下:
#include
#include
//包含循環左移函數
_cro_l頭文件
unsigned
char
tmp;
//中間變數
//////////////////////////////////////////////////////////////////////////////////////////////////
//
延時子程序
////////////////////////////////////////////////////////////////////////////////////////////////
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//
主函數
////////////////////////////////////////////////////////////////////////////////////////////////
main()
{
while(1)
//外層循環
{
tmp
=
0xfe;
P1
=
tmp;
while(1)
//內層循環,執行1、3、5、7亮燈循環
{
delay(30000);
//延時以便能觀察到燈亮移動,自己可以調整時間,由晶振和實參決定
tmp
=
_crol_(tmp,2);
P1
=
tmp;
if(tmp
==
0xbf)
//判斷是否已經點亮到第7燈。是,則退出進入2、4、6、8循環
{
break;
}
}
tmp
=
0xfd;
P1
=
tmp;
while(1)
//內層循環,執行2、4、6、8亮燈循環
{
delay(30000);
//延時以便能觀察到燈亮移動,自己可以調整時間,由晶振和實參決定
tmp
=
_crol_(tmp,2);
P1
=
tmp;
if(tmp
==
0x7f)
//判斷是否已經點亮到第8燈。是,則退出進入1、3、5、7循環
{
break;
}
}
}
}
㈡ 51單片機c語言定時器控制流水燈
#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P1=temp;
delay(500); //調用延時函數
temp<<=1;
}
}} void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
㈢ 用C語言編寫一個花樣流水燈的程序及此程序的流程圖
設一個標志位flag, 以標志位的5種狀態對應發光二極體的5種工作狀態,如當flag=1;發光二極體工作在1,當flag=2;發光二極體工作在2,......!然後根據定時器定時功能,5秒到,刷新flag的值,程序如下;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;/*程序功能:定時5S到切換LED顯示狀態.
;作者:w418781840.2008.5.29 */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FLAG BIT 30H ;定義標志位
ORG 0
LJMP MAIN
ORG 0BH
LJMP AGA
;;;;;;主程序;;;;;;;;;;;;
ORG 0030H
MAIN: MOV FLAG,#01H ;標志位清0
MOV TMOD,#01H ;賦值50MS
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#100 ;中斷100*50=5S
SETB EA
SETB ET0
SETB TR0
SJMP $
;;;;;;;;;中斷服務程序;;;;;;;;;;;;;;
AGA: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,LOOP ;5S到否?否,返回
INC FLAG ;到,標志加1
MOV A,FLAG
CJNE A,#05,L1 ;掃描5種狀態了否?
MOV FLAG,#01H ;是,歸0,重新開始
;;;;;;;;;切換程序;;;;;;;;;;;;
L1: CJNE A,#01H,L2 ;判斷是否是狀態1?否,轉判斷2
LCALL LED1 ;是,調有狀態1
SJMP LOOP ;返回
L2: CJNE A,#02H,L3 ; 以下跟上面判斷相同
LCALL LED2
SJMP LOOP
L3: CJNE A,#03H,L4
LCALL LED3
SJMP LOOP
L4: CJNE A,#04H,L5
LCALL LED4
SJMP LOOP
L5: CJNE A,#05H,LOOP
LCALL LED5
LOOP: RETI
;;;;;;LED子程序區;;;;;;;;;;
LED1: RET
LED2: RET
LED3: RET
LED4: RET
LED5: RET
/////////////////
///////////////////////////////
/*程序功能:定時5S到切換LED顯示狀態.
作者:w418781840.2008.5.29 */
//========聲明區===========
#include <reg51.h>
unsigned char count=0;
unsigned char flag=1;
void led1(void);
void led2(void);
void led3(void);
void led4(void);
void led5(void);
//=========函數=========
main()
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{ switch(flag)
{ case 1:led1();break;
case 2:led1();break;
case 3:led1();break;
case 4:led1();break;
case 5:led1();break;
}
}
}
//==========中斷服務============
void timer0(void) interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++count==100)
{ count=0;
flag++;
if(flag==5)
flag=1;
}
}
//========5種狀態函數區=========
㈣ 用c語言編寫單片機流水燈程序,(8個發光二極體從左至右循環點亮)
#include<reg51.h>
voiddelay(void)
{
unsignedinti,j;
for(i=0;i<200;i++)
for(j=0;j<1000;j++)
;
}
voidmain(void)
{
while(1)
{
P3=0xfe;//第一個燈亮
delay();//延時
P3=0xfd;//第二個燈亮
delay();
P3=0xfb;//第三個燈亮
delay();
P3=0xf7;//第四個燈亮
delay();
P3=0xef;//第五個燈亮
delay();
P3=0xdf;//第六個燈亮
delay();
P3=0xbf;//第七個燈亮
delay();
P3=0x7f;//第八個燈亮
delay();
}
}
(4)c語言流水燈規范擴展閱讀
單片機C語言16種方式流水燈
voidmain()
{
while(1)
{
P1=0xfe;//點亮第一個發光管
Delay(5000);
P1=0xfd;//點亮第二個發光管
Delay(5000);
P1=0xfb;
Delay(5000);
P1=0xf7;
Delay(5000);
P1=0xef;
Delay(5000);
P1=0xdf;
Delay(5000);
P1=0xbf;
Delay(5000);
P1=0x7f;//點亮第八個發光管
}
}
㈤ 51單片機c語言編寫一個流水燈程序,要求如下(不能用數組,8個led指示燈從兩邊往中間移動,然後再分開)
//流水燈
#include"reg52.h"
#defineLED_PORTP3
voiddelay(unsignedchartime)
{
unsignedchari,j,k;
for(i=0;i<time;i++)
{
for(j=0;j<200;j++)
{
for(k=0;k<200;k++);
}
}
}
voidmain()
{
unsignedchari,halfbyteh=0x80,halfbytel=0x01;
while(1)
{
halfbyteh=0x80;
halfbytel=0x01;
for(i=0;i<8;i++)
{
//LED_PORT=halfbyteh|halfbytel;//高電平點亮
LED_PORT=~(halfbyteh|halfbytel);//低電平點亮
halfbyteh=halfbyteh>>1;
halfbytel=halfbytel<<1;
delay(10);
}
}
}
㈥ 單片機C語言編程:控制流水燈
#include<reg52.h>
#include<intrins.h>
#define uintunsignedint
#define ucharunsignedchar
sbitk1=P1^0;//左循環按鈕
sbitk2=P1^1;//右循環按鈕
sbitk4=P1^2;//恢復暫停
sbitk3=P3^2;//暫停
voidinit();
voidshowLED();
voiddelay(uintxms);
uintdelayTime;
uintgoLeft=1;
uintgoRight=0;
uintsFlag=0;
voidmain()
{
init();
while(1)
{
if(k1==0)
{
delay(10);
if(k1==0)
{
while(k1==0);
goLeft=1;
goRight=0;
}
}
if(k2==0)
{
delay(10);
if(k2==0)
{
while(k2==0);
goLeft=0;
goRight=1;
}
}
}
}
voiddelay(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
voidinit()
{
P0=0xfe;
TMOD=0x02;//T0工作模式2自動裝填8位 200us
TH0=0x38;
TL0=0x38;
EA=1;
ET0=1;
TR0=1;
EX0=1;
IT0=1;
}
voidshowLED()
{
if(goLeft==1)
P0=_crol_(P0,1);
if(goRight==1)
P0=_cror_(P0,1);
}
voidmoveDelay()interrupt1 //一次中斷200us
{
if(delayTime==5000)
{
showLED();
delayTime=0;
}
else
delayTime++;
}
voidstopLED()interrupt0
{
while(1)
{
if(k4==0)
{
delay(10);
if(k4==0)
{
while(k4==0);
break;
}
}
}
}
㈦ 如何用c語言編寫流水燈
C語言流水燈程序是學習的基礎,一定要搞懂!給你發兩個!
(一)
#include<reg51.h> //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main()
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P2=~temp;
delay(500); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8個流水燈反向逐個閃動
{
P2=~temp;
delay(500); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P2=temp;
delay(500); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8個流水燈依次反向全部點亮
{
P2=temp;
delay(500); //調用延時函數
temp>>=1;
}
}
}
void delay(uint a) //延時函數,毫秒級別
{
uint i;
while(--a!=0) //執行空操作循環,其中a為形參,由調用該函數的函數語句提供值
{
for(i=0;i<125;i++);//執行當0加到125時,大約會用掉1ms的時間
}
}
(二)
*****************************以下程序均採用12M晶振*****************************************************/
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit p2=P2^0;
void main()
{
TMOD=0x01;
TR0=1;
ET0=1;
EA=1;
while(1)
{
;
}
}
timer0() interrupt 1
{
TH0=0x00;
TL0=0x06;
p2=!p2;
}
(三)
定時流水燈//
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
bit ldelay=0;
void main()
{
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar leda;
TMOD=0x00;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(ldelay)
{
ldelay=0;
P2=led[leda];
leda++;
if(leda==9)leda=0;
}
}
}
timer2() interrupt 1
{
static uchar t;
TF0=0;
t++;
if(t==10)
{
t=0;
ldelay=1;
}
}
(四)
變速流水燈//
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
bit ldelay=0;
uchar speed=100;
void main()
{
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar leda;
TMOD=0x00;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(ldelay)
{
ldelay=0;
P2=led[leda];
leda++;
if(leda==9)
{
leda=0;
speed-=10;
if(speed==0)speed=100;
}
}
}
}
timer2() interrupt 1
{
static uchar t;
TF0=0;
t++;
if(t==speed)
{
t=0;
ldelay=1;
}
}
(五)
//每2兩圈改變一次亮度
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
bit ldelay=0;
uchar speeda=30;
uint k=0;
void main()
{
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar leda;
uchar speed[10]={5,80,70,60,50,40,30,20,10,5};
uint i;
uint k;
TMOD=0x00;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(ldelay)
{
ldelay=0;
P2=led[leda];
leda++;
if(leda==9)
{
leda=0;
k++;
if(k==2){
k=0;
speeda=speed[i];
i++;
if(i==9)i=0;
}
}
}
}
}
timer2() interrupt 1
{
static uchar t;
TF0=0;
t++;
if(t==speeda)
{
t=0;
ldelay=1;
}
}
(六)
//在上面基礎上調燈的亮度(調占空比)
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
bit ldelay=0;
uchar speeda=30;
uint k=0;
uchar scale;
void main()
{
uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar leda;
uchar speed[10]={5,80,70,60,50,40,30,20,10,5};
uint i;
uint k;
TMOD=0x00;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(ldelay==1)
{
ldelay=0;
P2=led[leda];
leda++;
scale++;
if(scale==10)scale=0;
if(leda==9)
{
leda=0;
k++;
if(k==2){
k=0;
speeda=speed[i];
i++;
if(i==9)i=0;
}
}
}
}
}
timer2() interrupt 1
{
static uchar t;
TH0=0x1c;
TL0=0xbf;
TF0=0;
t++;
if(t==speeda)
{
t=0;
ldelay=1;
}
if(scale==10)P2=0;
if(scale==0)P2=1;
}
㈧ 單片機流水燈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++);
}
(8)c語言流水燈規范擴展閱讀
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);
}
}
}
㈨ 流水燈c語言程序
我是一名多年的單片機工程師,下面的程序你參考一下
效果圖
程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint i;
uchar j;
void delay_ms(uint k) //延時子程序
{
for(i=0;i<k;i++)
{
for(j=0;j<230;j++)
{
;
}
}
}
main()
{
uchar a,b;
P1=0xfe;
delay_ms(1000);
b=P1;
while(1)
{
for(a=0;a<7;a++)
{
b=_crol_(b,1);
P1=b;
delay_ms(1000);
}
for(a=0;a<7;a++)
{
b=_cror_(b,1);
P1=b;
delay_ms(1000);
}
}
}
如果你想學習更多單片機和程序的知識,可以看看我整理好的「17個實驗學會單片機」,網路一下「17個實驗學會單片機」就可以看到在首頁了。