『壹』 51單片機最小系統流水燈的原理圖關於AT89S52類型的
圖中晶元是AT89C51,最小系統圖的話是一樣的
程序:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delays(uint t)
{
uint i,j;
for(i=0;i<t;i++)
{
for(j=0;j<1141;j++);
}
}
void main()
{
//P0M1=0X00; //單片機除了P0口以外,其他I/O在內部都有上拉電阻
//P0M0=0XFF; //AT89C51沒有推挽輸出這一說,所以P0高電平不亮,要加上拉電阻;
//用其他埠不需要考慮
/**************從左到右流水燈**************/
uchar i;
P0=0Xfe;
delays(100);
while(1)
{
P0=_crol_(P0,1);//向左循環移動一位
delays(50);
}
}
/*****************左右來回點亮************/
void main()
{
uchar i;
P0=0x01;
delays(100);
while(1)
{
for(i=0;i<7;i++)
{
P0=_crol_(P0,1);
delays(50);
}
for(i=0;i<7;i++)
{
P0=_cror_(P0,1);
delays(50);
}
}
}
『貳』 單片機:16個發光二極體組成的流水燈實驗
電路圖注意:1、P0口裡應加上排阻,圖里我沒畫出來。
2、單片機最小系統所需的晶振、復位電路我也沒畫。
臨時幫你做的圖,寫的程序,細節就不是很完善啦,湊合著看吧!!
下面是程序,_crol_()函數是讓temp的值左移一位的即執行一次該函數,temp的值由11111110到11111101,再執行一次是11111011……
_cror_()是右移。
#include<reg51.h>
#include<intrins.h>//包含對_crol_(),_cror_()函數的說明的頭文件
unsignedchartemp,i;
voiddelay(unsignedintz)//延時子程序,晶振11.0592M時延時大概1毫秒
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidmain()
{
while(1)
{
temp=0xfe;
for(i=0;i<8;i++)//流水燈從P0^0口到P0^7口
{
P0=temp;
temp=_crol_(temp,1);
delay(5);
}
i=0;
temp=0xfe;
for(i=0;i<8;i++)//流水燈從P1^0口到P1^7口
{
P1=temp;
temp=_crol_(temp,1);
delay(5);
}
i=0;
temp=0x7f;
for(i=0;i<8;i++)//流水燈從P1^7口到P1^0口
{
P1=temp;
temp=_cror_(temp,1);
delay(5);
}
i=0;
temp=0x7f;
for(i=0;i<8;i++)//流水燈從P0^7口到P0^0口
{
P0=temp;
temp=_cror_(temp,1);
delay(5);
}
i=0;
}
}
『叄』 單片機外部中斷做流水燈
單片機控制led燈亮和滅,led燈初始狀態從左到右兩個燈間隔一個燈循環亮滅,然後從右到左循環亮滅,,當按下按鍵,led燈全亮,然後全滅。然後再恢復循環。
二、實驗過程
(一)實驗項目的方案分析
1.設計原理
STC12C5A60S2單片機內部包括微處理器、存儲器(存放程序指令或數據的ROM、RAM等)、輸入/輸出口(I/O口)及其他功能部件如定時/計數器、中斷系統等。它們通過地址匯流排、數據匯流排和控制匯流排連接起來。
本實驗充分利用了8051晶元的I/O引腳。系統已採用STC12C5A60S2系列單片機為中心器件來設計數碼管顯示系統,實現數碼管循環顯示。
2.器件配置清單
表1器件配置表
名稱
型號
數值
數量
麵包板
MB-102
165*55*
(二)實驗項目的硬體電路設計
通過Proteus模擬電路軟體搭建電路
(三)實驗項目的程序設計
1、C51程序編寫
2、keil軟體調試截圖
通過Keil軟體進行C51控製程序的編寫,通過不斷調試修改,最終的調試好的Keil
調試無措的Keil程序
(四)實驗項目的虛擬模擬
打開Keil C軟體將上面程序輸入,調試無誤後編譯輸出".hex"文件,打開Proteus軟體,將之前編譯好的".hex"文件加入到晶元中,開始運行模擬。
(五)實驗項目的實際驗證電路及驗證結果
將單片機C51程序編譯無誤後,生成HEX文件,通過STC-ISP下載到單片機中,下載的軟體界面搭建的實際
『肆』 求流水彩燈的原理及電路圖
流水彩燈的原理及電路圖如下:
原理:該流水燈電路由時鍾發生電路和功能顯示電路兩部分組成。以集成電路NE555為核心器件構成自激多諧振盪器。
當電源開關S閉合時,電源通過電阻R1和R2向電容器C1充電。當C1剛充電時,由於555的②腳處於低電平,故輸出端③腳呈高電平;當電源經R1、R2向C1充電到2/3電源電壓時,輸出端③腳電平由高變低,555內部放電管導通,電容C1經R2向555的⑦腳放電,直至C1兩端電壓低於1/3電源電壓時,555的③腳又由低電平變為高電平,C1又再次充電,如此循環工作,形成振盪。
555的頻率可以通過改變電阻R2的阻止而改變,其時鍾輸出直接進入4017的14腳,這樣來驅動8個LED負載。
『伍』 用單片機控制流水燈的六種方案,要程序電路圖,詳細講解
;//*********************************************************
;//實現功能:本程序實現在P0口模擬一種流水燈程序
;//*********************************************************
p_out equ P0 ;宏定義P0為p_out
org 00h ;程序的開始地址
ajmp main ;跳到main
org 030h
;//******************主函數***************************
;//描 述:實現在P0口模擬一個流水燈程序
;//設計人: lishengling24
;//****************************************************
main: ;主函數
mov sp,#50h ;設置sp堆棧的初始位置
mov a,#0feh ;初始化acc
main_1:
mov p_out,a ;點亮一個燈
mov r1,#250 ;
mov r0,#250 ;
Call delay_time;調用時間延遲子程序,上面兩句是設置延遲時間
mov p_out,#0ffh;熄滅燈
RL a ;循環左移一位準備點亮下一個燈
JMP main_1 ;跳到main_1循環
;//******************時間延遲函數**********************
;//描 述:用指令實現延時一段時間
;//入口參數:r1為高位,r0為低位,都是十六進製表示?
;//出口參數:無
;//設計人:lishengling24
;//****************************************************
delay_time:
push acc ;acc入棧
push psw ;psw入棧
mov a,r0 ;把r0賦給acc
inc r1 ;r1加1,因為djnz是先減1再比較是否為零,如果不加1
;當r1的初值為0的時候,減1後變成了0x0ff,改變了當
;初預想的延遲時間計數值
inc r0 ;道理和inc r1 一樣,當然r0和r1的初值不能為0x0ff
loop:
nop
nop
nop
nop
nop
nop
djnz acc,loop ;
mov a,r0 ;
djnz r1,loop ;
pop psw ;psw出棧
pop acc ;acc出棧
ret
end ;需要其他5種方案的程序和電路,在網路HI我。
以下是C的寫法:
//*********************************************************
//實現功能:本程序實現在P0口模擬一個流水燈程序
//*********************************************************
#include <reg51.h>
#define p_out P0 //宏定義輸出的i/o口為p0
//******************時間延遲函數**********************
//描 述:用指令實現延時一段時間
//入口參數:int i,為時間延遲參數
//****************************************************
void delay_time(int i)
{
while(i)
i--;
}
//******************主函數***************************
//描 述:實現在P0口模擬一個流水燈程序
//****************************************************
void main(void)
{
unsigned char i=0; //初始化一個局部變數為0
p_out=0xff; //初始化將要輸出的i/o口,輸出高電平,熄滅所有燈
while(1)
{
for(i=0;i<8;i++)
{
p_out=~(1<<i);//點亮一個燈,
delay_time(50000); //延遲一段時間
p_out=0xff;//熄滅所有燈
}
}
}
『陸』 急求一個單片機流水燈(16個燈)電路圖!!
電路如下:
將16個LED的陰極(Led-、K極)連接到單片機的IO口(P1.0、P1.1...P1.7。。。),
LED的陽極(Led+、A極)串聯一個560歐姆電阻(一共16個)到電源正極
(Vcc、5V)
如果要點亮一個Led的話(P1.0)只要
CLR P1.0
要熄滅一個Led的話(P1.0)只要
SETB P1.0
即可
夠詳細了吧?!