Ⅰ 單片機C語言編程點亮LED燈
可以通過左移函數_crol_()和右移函數_cror_()來實現LED等的來迴流動。 具體實現方法可以參考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){ P1=0xfe; while(1) { // 向左循環點亮LED for(i=0; i<7; i++) { P1=_crol_(P1,1); // 左移一位,點亮下一位LED delay(55); } // 向右循環點亮LED for(i=0; i/ 右移一位,,點亮上一位LED delay(55); } }}// 延時函數,延時a毫秒void delay(uint a){ uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}
Ⅱ 單片機流水燈程序
用的什麼單片機?
--------------------
看了電路圖,就知道了。
既不是32個串口,也根本不使用串口。
;32個LED顯示初版始化:
MOV P0, #3FH
MOV P1, #3CH
MOV P2, #2AH
MOV P3, #47H
;循環移位權:
_LOOP:
MOV A, P0
RRC A
MOV A, P1
RRC A
MOV P1, A
MOV A, P2
RRC A
MOV P2, A
MOV A, P3
RRC A
MOV P3, A
MOV A, P0
RRC A
MOV P0, A
LCALL _DELAY1S
SJMP _LOOP
;延時子程序:
_DELAY1S:
…………
RET
Ⅲ c51單片機中如何用匯編語言編寫流水燈
51單片機用匯編語言編寫流水燈程序,就是控制多個LED ,使其在特定時間間隔內,只有一個LED 發光,其他熄滅,用這種方式順序移動點亮LED的位置,就形成了流水燈的效果。以下是程序:
;假設晶振12MHZ,P1控制8個LED低電平亮
;啟動入口========================
ORG 0000H ;復位啟動
AJMP START ;
ORG 001BH ;T1中斷
AJMP T1INT ;
;定義變數========================
YSJS EQU 30H;延時計數器
LED EQU 31H;LED控制緩沖器
;主程序==========================
START: MOV LED,#0FEH ;初始化數據
MOV YSJS,#0 ;
;
MOV TMOD,#10H ;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H ;設置定時初值
MOV TH1,#3CH ;定時時間=50mS
SETB ET1 ;使能定時器1中斷
SETB TR1 ;啟動定時器1
SETB EA ;開總中斷
MOV P1,LED ;初始化流水燈
;
LOOP: JMP LOOP ;循環等待中斷
;
;
T1INT: PUSH PSW ;定時器1中斷程序
PUSH ACC ;保護現場
;
MOV TH1,#3CH ;定時時間=50mS
MOV TL1,#0B0H ;
INC YSJS ;
PUSH ACC ;保護ACC
MOV A,YSJI ;
CJNE A,#2,QT1 ;50mS*2=100mS
MOV P1,LED ;
MOV A,LED ;
RL A ;累加器A的值循環左移1位
MOV LED,A ;
MOV YSJS,#0 ;
;
QT1: POP ACC ;恢復現場
POP PSW ;
RETI ;返回主程序
END ;匯編程序結束
Ⅳ 單片機製作呼吸燈的C語言程序怎樣編寫
#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定義周期並賦值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循環
{
LED0=1;
Delay(150000); //特意加延時,可以看到熄滅的過程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
Ⅳ 單片機流水燈的C語言編程
#include <reg52.h> //52系列單片機頭文件
#include <intrins.h>
#define uint unsigned int //宏定義
#define uchar unsigned char
void delayms(uint); //聲明子函數
uchar aa;
void main() //主函數
{
aa=0xfe; //賦初值11111110
while(1) //大循環
{
P1=aa;
delayms(500); //延時500毫秒
aa=_crol_(aa,1); //將aa循環左內移1位後再賦容給aa
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
for(j=110;j>0;j--);
}
查表就是在表頭加個code table[]={......}
Ⅵ 51單片機32個流水燈編程如何實現指定其中某一個燈亮,如何實現多種花樣亮燈
要51單片機控制32個流水燈,關鍵是要解決電路設計,只要能設計出電路來,編程實現控制指定其中某一個燈亮,並實現多種花樣亮燈,就容易了。如果只做32個流水燈,就用單片機的四個並行口,共32個IO引腳全部用上,正好控制32個流水燈。如果引腳還有其他應用,可用四片鎖存器,也可以控制32個流水燈了。
Ⅶ 請位高手幫我寫個89C51單片機控制流水燈C語言源程序。謝謝
用P2=0xFF&(0x01+2*i)用for循環,之後是P2=0xFF&(0x81+2*i)用for循環,之後類推P2=P2=0xFF&(0xC1+2*i),P2=0xFF&(0xE1+2*i),P2=0xFF&(0xF1+2*i),P2=0xFF&(0xF9+2*i),P2=0xFF&(0xFD+2*i),P2=0xFF;每次循環都比前一次少一次循環就可以了。