當前位置:首頁 » 編程語言 » 按鍵流水燈c語言程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

按鍵流水燈c語言程序

發布時間: 2023-06-10 22:28:21

⑴ 用c語言編寫按鍵控制流水燈的程序

1滅)。編譯器keil
c代碼如下:
#include<reg51.h>
#include<intrins.h>
//包含循環左移函數
_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;
}
}
}
}

⑵ 如何用兩個按鍵控制16個流水燈的流速 要求共8個流動速度 (c語言程序)

//用兩個按鍵控制16個流水燈的流速 要求共8個流動速度

#include<reg52.h>

void delay(unsigned char k) //延時函數

{

unsigned char i,j; //定義兩個變數,用於空循環

k=k*8;

for(i=0;i<k;i++)

for(j=0;j<255;j++)

;

}

unsigned char flag;

void main()

{

unsigned char i;

flag=1;

EA=1; //開放總中斷

EX0=1; //允許使用外中斷

IT0=1; //選擇負跳變來觸發外中斷

EX1=1; //允許使用外中斷

IT1=1; //選擇負跳變來觸發外中斷

while(1) //用於反復循環

{

for(i=0;i<9;i++)

{

P1=~(1<<i);

delay(flag); //調用延時函數

//while(flag!=1);

}

for(i=0;i<9;i++)

{

P2=~(1<<i);

delay(flag); //調用延時函數

//while(flag!=1);

}

i=0;

//

}

}


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

函數功能:外中斷T0的中斷服務程序

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

void int0(void) interrupt 0 using 0 //用於減小流水燈速度

{

if(flag<9)

flag++;

}

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

函數功能:外中斷T0的中斷服務程序

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

void int1(void) interrupt 2 using 0 //用於增加流水燈速度

{

if(flag>1)

flag--;

}



⑶ 單片機C語言編程——關於按鍵改變循環流水燈流向(切換運行狀態)

void smg1()
{
wela=1;
P0=0xfe;
//這中間如果沒延時,則後面的狀態會沒等你看清楚就被後面的狀態覆蓋了
wela=0;

la=1;
P0=0x77;
//這中間如果沒延時,則後面的狀態會沒等你看清楚就被後面的狀態覆蓋了
la=0;

}

smg2也是相同的道理;

void key()
{
if(s2==0)
delay(10);
if(s2==0)
{
a=~a; //如果a定義為int型,當它為1時,對它取反並不是0,除非定義為位數據.
while(!s2);
}
}

⑷ 單片機C語言 兩個按鍵控制8位花樣流水燈,P1.0接按鍵k1,P1.1接按鍵k2,P0口的8位接8個發光二極體

匯編程序如下:
; 花樣流水燈(8個發光二極體以各種形式循環點亮)
; 功能:流水燈(8個發光二極體循環以1S間隔以各種形式循環點亮)
ORG H ;偽指令,指定程序從H開始存放
LJMP MAIN ;跳轉指令,程序跳轉至MAIN處執行
ORG H ;偽指令,指定程序從H開始存放
MAIN: MO SP, #60H ;給堆棧指針賦初值
MO P1,#0FFH ;給P1口賦值
MO DPTR,#TABLE;查表
LIGHT: MO R4,#42 ;設置循環次數
LOOP: MO A,#42 ;給A賦初值
SUBB A,R4 ;將A的值與R4的值相減,結果存在A中
MOC A,@A+DPTR ;將A+DPTR的值所坦好大對應的TABLE中的值賦給A
MO P1,A ;將A的值賦給P1口
LCALL DEL1S ;調用1S延時子程序
DJNZ R4,LOOP ;判斷R4是否為0,不為0跳轉,為0順序執行
LJMP LIGHT ;跳轉指令,跳轉至LIGHT處繼續執行
;1S延時子程序(11.MHz晶振,誤差0微秒)
DEL1S: MO R5, #H
DL1S0: MO R6, #0A4H
DL1S1: MO R7, #H
DJNZ R7, $
DJNZ R6, DL1S1
DJNZ R5, DL1S0
RET
TABLE: ;定義表格數據
DB 0FFH ;全滅
DB 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 07FH ;依次逐個點亮
DB 0FEH 0FCH 0F8H 0F0H 0E0H 0C0H H H ;依次逐個疊加
DB H 0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 0FFH ;依次逐個遞減
DB 07EH 0BDH 0DBH 0E7H 0E7H 0DBH 0BDH 07EH ;兩邊靠攏後分開
DB 07EH 03CH H H H H 03CH 07EH ;兩邊疊加後遞減
DB H ;全亮
END ;程序結束指令
C語言程序如下:
/* 該實驗是花樣流水燈(8個發光二極體以各種襪敏方式循讓豎環點亮),功能是花樣流水燈(8個發光二極體以1S間隔以各種方式循環點亮) */
#include//包含reg.52文件
#define uint unsigned int//宏定義
#define uchar unsigned char//宏定義
void delay(uint z);//聲明延時函數
uint a;//定義循環用變數
uchar code table[]={
0xff,//全滅
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//依次逐個點亮
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐個疊加
0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐個遞減
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//兩邊靠攏後分開
0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//兩邊疊加後遞減
0x00,//全亮
;//¶¨ҥѭ»·Ӄʽ¾ݱ�
/*Aµď֏󣺏ȊLj«ð£¬Ȼº󒀴Ζ𸶵ぁ£¬Ȼº󒀴Ζ𸶵�
Ȼº󒀴Ζ𸶵ݼ�»º󁽱߿¿£º󷖿ª£¬Ȼº󁽱ߵ�ݼ𖎱
׮º󈫁a£ѭ»·£¡*/
void in()//inº¯ʽ
{
a=0;//¸񸳳𕛕
while(1)//whileѭ»·
{
P1=table[a];//½«a˹Ԛµ”able֐µĖµ¸³¸􁿚
delay();//1Sѓʱד³̐ɠ a ;//aµĖµ¼Ӓ»
if(a==42)//²⊔aʇ·񵈓Ƥ2
a=0;//¸񸳖µ
}
}
void delay(uint z)//1msѓʱד³̐򣬍¨¹�±䑓ʱʱ¼F{
uint x,y;
for(x=z;x

⑸ 流水燈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個實驗學會單片機」就可以看到在首頁了。