㈠ 單片機花樣燈三種顯示方式
程序和模塊化編程可以實現基本的花樣燈顯示。
例如16個花樣燈,由於16個花樣燈的功能較為復雜,將所有程序代碼寫在一個文件中不是一個好的程序設計習慣,此時一般採用模塊化編程。所謂模塊化編程是指將一個較大的程序劃分為若干功能獨立的模塊,對各模塊進行獨立開發,然後再將這些模塊統一合並為一個完整的程序。這種方法是C語言中的面向過程的編程方法,可以縮短開發周期,提高程序的可讀性和可維護性。
實際上,模塊化編程就是模塊合並的過程,也是建立每個模塊的頭文件和源文件並將其加入到主體程序的過程。主體程序調用模塊的函數是通過包含模塊的頭文件來實現的,模塊的頭文件和源文件是模塊密不可分的的兩個部分,缺一不可。所以,模塊編編程必須提供每個模塊的頭文件和源文件。
㈡ 關於花樣流水燈單片機程序。
程序我不寫了。
給你個思路:
定義一個全局變數,用於表示按鍵K的狀態。主程序上來就開始監測按鍵K的狀態並記錄到變數中,這是一個按鍵掃描程序。然後是一個分支程序,判斷條件就是按鍵K的狀態。 兩個分支中分別是循環點亮和交替點亮。然後死循環返回到開始的按鍵監測。
㈢ C51單片機的花樣燈
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uinta)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchari,led;
while(1)
{
led=0xfe;
for(i=0;i<8;i++)
{
P2=led;
led=_crol_(led,1);
delay(1000);
}
for(i=0;i<8;i++)
{
P2=led;
led=_cror_(led,1);
delay(1000);
}
for(i=0;i<3;i++)
{
P2=0xaa;
delay(1000);
P2=0x55;
delay(1000);
}
for(i=0;i<2;i++)
{
P2=0xf0;
delay(1000);
P2=0x0f;
delay(1000);
}
for(i=0;i<3;i++)
{
P2=0x33;
delay(1000);
P2=0xcc;
delay(1000);
}
}
}
㈣ 單片機怎麼用一個按鈕控制多種花樣流水燈,只要一按就馬上執行下一種花樣。
程序裡面,給你說一種思路。首先在中斷中設置一個整體變數。中斷時對這個變數賦值。
比如CNT++。IF(CNT>=設置的花樣)CNT==0;
然後編寫各個花樣的流水燈子程序。
在主函數中加上判斷函數。
㈤ 單片機花樣流水燈C語言問題
#include<reg52.h> //包含頭文件,一般情況不需要改
void Delay(unsigned int t); //函數聲明
/*------------------------------------------------
主函數
------------------------------------------------*/
void main (void)
{
unsigned char i,j,temp; //定義一個無符號字元型局部變數 i 取值范圍 0~255
Delay(50000);
P1=0xfe; //賦初始值
while (1) //主循環
{
/**********下面是從1~8閃爍兩次*****/
for(i=0;i<8;i++) //加入 for循環,表明for循環大括弧中的程序循環執行8次
{
temp=P1;
for(j=0;j<2;j++)
{
Delay(50000);
P1=0xff;
Delay(50000);
P1=temp;
}
P1<<=1;
P1=P1|0x01; //左移後,最右端自動賦值0,所以需要該語句賦值1
}
P1=0xfe; //重新賦初始值
/*********下面是從1~8閃爍一次*********/
for(i=0;i<8;i++)
{
Delay(50000);
P1<<=1;
P1=P1|0x01;
}
/********下面是全部閃爍兩次********/
for(i=0;i<2;i++)
{
P1=0x00;
Delay(50000);
P1=0xff;
}
P1=0xfe; //重新初始化P1
//主循環中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延時函數,含有輸入參數 unsigned int t,無返回值
unsigned int 是定義無符號整形變數,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}/*-----------------------------------------------
名稱:IO口高低電平控制
論壇:www.doflye.net
編寫:shifang
日期:2009.5
修改:無
內容:循環左移,始終一個led點亮,並循環執行流水動作,左移符號 << 邏輯或符號 |
------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
void Delay(unsigned int t); //函數聲明
/*------------------------------------------------
主函數
------------------------------------------------*/
void main (void)
{
unsigned char i,j,temp; //定義一個無符號字元型局部變數 i 取值范圍 0~255
Delay(50000);
P1=0xfe; //賦初始值
while (1) //主循環
{
/**********下面是從1~8閃爍兩次*****/
for(i=0;i<8;i++) //加入 for循環,表明for循環大括弧中的程序循環執行8次
{
temp=P1;
for(j=0;j<2;j++)
{
Delay(50000);
P1=0xff;
Delay(50000);
P1=temp;
}
P1<<=1;
P1=P1|0x01; //左移後,最右端自動賦值0,所以需要該語句賦值1
}
P1=0xfe; //重新賦初始值
/*********下面是從1~8閃爍一次*********/
for(i=0;i<8;i++)
{
Delay(50000);
P1<<=1;
P1=P1|0x01;
}
/********下面是全部閃爍兩次********/
for(i=0;i<2;i++)
{
P1=0x00;
Delay(50000);
P1=0xff;
}
P1=0xfe; //重新初始化P1
//主循環中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延時函數,含有輸入參數 unsigned int t,無返回值
unsigned int 是定義無符號整形變數,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
我用的是P1埠,當埠為低電平時點亮LED
㈥ 單片機,花樣流水燈(用循環結構實現):先下面4個LED燈閃爍3次,再上面4個
#include<reg51.h>
#define uchar unsigned char
uchar num;
sfr led=P0;
sbit speaker=P1^0;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchar i;
while(1)
{
for(i=0;i<3;i++)
{
led=0xf0;
delay(200);
clr speaker;
led=0xff;
delay(200)
setb speaker;
for(i=0;i<3;i++)
{
led=0x0f;
delay(200);
clr speaker;
led=0xff;
delay(200)
setb speaker;
}
for(i=0;i<2;i++)
{
led=0x00;
delay(200);
clr speaker;
led=0xff;
delay(200)
setb speaker;
}
}
㈦ 基於單片機的花樣流水燈控制
單片機流水燈,是學習單片機的基礎實驗,花樣+按鍵是稍微進一步,可以多看一些實例,網上有很多模擬實例可以參考學習。
㈧ 一個花樣流水燈單片機程序(要求1,3,5,7燈亮,2,4,6,8燈亮然後全滅)
先把P1口全部接低電平。
ORG 0000H。
AJMP START。
ORG 0040H。
AA:MOV P1,#55H。
ACALL DELAY。
MOV P1,#0AAH。
ACALL DELAY。
MOV P1,#00H。
ACALL DELAY。
AJMP AA。
DELAY:MOV R5,#256。
LOOP2:MOV R4,#256。
LOOP1:NOP。
NOP。
DJNZ R4,LOOP1。
DJNZ R5,LOOP2。
RET。
單片機(Single-Chip Microcomputer)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統。
在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。
它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。
㈨ 請幫忙編寫一個花樣流水燈單片機程序(要求1,3,5,7燈亮,2,4,6,8燈亮然後全滅)
先把P1口全部接低電平!
ORG 0000H
AJMP START
ORG 0040H
AA:MOV P1,#55H
ACALL DELAY
MOV P1,#0AAH
ACALL DELAY
MOV P1,#00H
ACALL DELAY
AJMP AA
DELAY:MOV R5,#256
LOOP2:MOV R4,#256
LOOP1:NOP
NOP
DJNZ R4,LOOP1
DJNZ R5,LOOP2
RET
㈩ 單片機,花樣流水燈
K1 BIT P3.0
K2 BIT P3.1
ORG 0000H
JMP START
START:
MOV TMOD, #01H
SETB TR0
MOV R4, #7FH
MOV R5, #7FH
MOV R6, #0FEH
M_LOOP:
JNB K1, K1_PROG
JNB K2, K2_PROG
MOV P1, R4
MOV A, R4
RR A
MOV R4, A
CALL DL1S
JMP M_LOOP
;---------------------------------
K1_PROG:
MOV A, R5
ANL A, R6
MOV P1, A
MOV A, R5
RR A
MOV R5, A
MOV A, R6
RL A
MOV R6, A
CJNE R6, #0EFH, K1_DL
MOV R5, #7FH
MOV R6, #0FEH
K1_DL:
CALL DL1S
JMP M_LOOP
;---------------------------------
K2_PROG:
MOV R3, #16
LP2:XRL P1, #255
CALL DL1S
DJNZ R3, LP2
JMP M_LOOP
;---------------------------------
DL1S:
MOV R2, #20
LP1:MOV TL0, #LOW (65536-50000)
MOV TH0, #HIGH(65536-50000)
JNB TF0, $
CLR TF0
DJNZ R2, LP1
RET
;---------------------------------
END