『壹』 單片機流水燈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)單片機感應燈程序擴展閱讀
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);
}
}
}
『貳』 80c51單片機控制人體感應燈的匯編程序怎麼寫
KEYVAL EQU 30H
KEYSCAN EQU 31H
KEYTM EQU 32H
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
RET
;--------------------
GETKEY:
MOV KEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV R2,#10
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV A,P3
ANL A,#0FH
MOV R7,A
SF:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ SF
MOV A,R7
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
深奧點就是,你執行了這段代碼,int a = 10; 程序就會在你電腦的內存中,創建一個小空間,這個空間的名字就是a, 這空間裡面的內容就是10,這個空間只能存放整數類型的數據。
『叄』 89c51單片機控制感應燈,怎麼用匯編語言程序設計
//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
P1=0x55; //P1口初始值
EA=1; //全局中斷開
EX1=1; //外部中斷0開
IT1=1; //邊沿觸發,IT1=0表示電平觸發
while(1)
{
//在此添加其他程序
}
}
/*------------------------------------------------
外部中斷程序
------------------------------------------------*/
void ISR_Key(void) interrupt 2 using 1
{
//在此處可以添加去抖動程序,防止按鍵抖動造成錯誤
P1=~P1;
}
// 判斷列表裡是否包含某個數據
『肆』 單片機燈亮程序,急!
確實很簡單,當紅外感測器前面被擋一下,紅外接收管接收不到紅外信號就會截止,輸出一個低電平,將紅外接收管連接到單片機的一個I/O口上,然後在主程序裡面寫條件判斷語句,若檢測到那個引腳為低電平,就輸出一個信號,將對應的燈點亮,調用10秒的延時函數,然後再取反,繼續檢測。其實這個原理跟流水燈的原理差不多,因為我之前做過一個紅外防盜器,其實原理好簡單的 ...不信你可以去試一下!
『伍』 紅外線感應燈單片機程序
這程序不難,你可以買個反射型紅外探頭,不過要能根據電源來調整你所需要的距離。如果人在你的距離內,探頭就能發出一個信號給你,你就可以控制了。
『陸』 單片機的點亮一盞燈程序
MAIN: MOV P1,#11111110B;點亮P1.0所接的燈
ACALL YS ;調用延時子程序,讓P1.0所接的燈亮一小段時間
MOV P1,#11111101B;點亮P1.1所接的燈
ACALL YS ;調用延時子程序,讓P1.1所接的燈亮一小段時間
MOV P1,#11111011B;點亮P1.2所接的燈
ACALL YS ;調用延時子程序,讓P1.2所接的燈亮一小段時間
MOV P1,#11110111B;點亮P1.3所接的燈
ACALL YS ;調用延時子程序,讓P1.3所接的燈亮一小段時間
MOV P1,#11101111B;點亮P1.4所接的燈
ACALL YS ;調用延時子程序,讓P1.4所接的燈亮一小段時間
MOV P1,#11011111B;點亮P1.5所接的燈
ACALL YS ;調用延時子程序,讓P1.5所接的燈亮一小段時間
MOV P1,#10111111B;點亮P1.6所接的燈
ACALL YS ;調用延時子程序,讓P1.6所接的燈亮一小段時間
MOV P1,#01111111B;點亮P1.7所接的燈 ACALL YS ;調用延時子程序,讓P1.7所接的燈亮一小段時間
LJMP MAIN ;循環.這回用長調用指令LJMP,當程序比較長的時候就用
LJMP YS: ;延時子程序YS,功能是能讓LED亮起來或者滅掉一小段時間
MOV R1,#200 ;讓燈亮滅時間的長短也就是延時的長短跟#號後面的數據有關
D: MOV R2,#200 ;延時長點#號後面的數據就大點,延時短點#號後面的數據
T: MOV R3,#200 ;就小點,但#號後面最大的數據是255
DJNZ R3,$
DJNZ R2,T
DJNZ R1,D
RET ;子程序返回指令,子程序的設計一般都是因為主程序要調用它, ;調用完是要返回到主程序繼續運行下一個語句的
END
『柒』 單片機編程,一個感應信號,燈亮,十秒後滅,循環
利用紅外對管作感應器的話,只要將單片機設置為計數模式就行,然後紅外接收管接到單片機的P3^4或者P3^5口,這是51系列單片機計數功能口,然後設置好TMOD寄存器和TCON寄存器選擇工作方式和觸發方式即可,計數變數定義為全局變數,然後傳遞給顯示函數。 如有不懂的地方隨時回復我。 希望我的回答能幫助到你。
『捌』 單片機開關點亮LED燈程序
#include <reg52.h>
#define uchar unsigned char
sbit K1=P3^4;
sbit LED1=P0^5;
void delay(uchar i)
{
uchar j;
while(i!=0)
{
i--;
for(j=0;j<100;j++);
}
}
void main()
{
while(1)
{
if(K1==0)//下拉方式連接按鍵
{
delay(5);
if(K1==0)//消抖
{
while(K1==0){};//鬆手檢測
LED1=!LED1;
}
}
delay(10);
}
}
根據實際,可能會有所修改才行
『玖』 跪求高手單片機做聲控燈程序!!謝謝!!!
直接用avr單片機不更好?
內部自帶AD轉換,自帶增益放大。和s51相同價位的avr單片機,明顯強多了!
『拾』 急求一個基於89c51單片機人體感應控制燈的亮滅的程序及電路圖,盡量簡單。感謝感謝
可以使用熱釋電感測器來做感應,信號送入單片機即可做處理。