⑴ 用循環移位指令控制彩燈循環單跳(8個燈,每個亮1s,熄1s,循環)
簡單,你向一個寄存器寫入數據時,數據匯流排的值會發生變化。8位的循環只需一個位元組即可搞定。在一個時間循環里,加上句寫入指令就行了,如:MOV
AX,1。然後後面接一個時間循環,裡面一句寫入0,如:MOV,BX,0.移位指令自己查吧。從數據匯流排連接輸入指示燈,功率不足,可以在輸入端接入兩次非門(實際應用時常這么辦);如果功率要求不高的話,可以採用灌電流負載,寫入數據11111110(教學程序常用);當然如果能直接點亮LED燈,上面兩項不用也可.時間控制調時間循環里次數,可以先寫個大數,用秒錶掐出來,然後估下一秒的值。
⑵ 求思路,我已經用74HC164實現了循環點亮小燈泡,怎樣修改能使其循環點亮0,2,4,6,1,3,5,7
把碼值存入寄存器,然後移位輸出,即可點亮數碼管
可做一個表格,根據要顯示的數字,查表,在送出,當然要和時鍾同步,並送完一組後延時,否則閃動。
164不帶鎖存,輸出會有閃動,最好使用HC595,帶鎖存,就沒有閃動了
⑶ 利用移位寄存器74ls194構成一個八隻彩燈控制電路
8路彩燈分為兩級,每4個一組,用兩個74LS194來實現,兩種花型分別為從中間到兩邊對稱性依次亮,全亮後仍由中間向兩邊依次滅。
或者都從右往左依次亮再依次滅,通過對花型的分析可知其中一個雙向移位寄存器74LS194 的功能是先左移後右移即先是S1=1,S0=0,後變成 S1=0,S0=1.而另外一個功能則始終是右移即S1=0,S0=1。
Serial Left 接 QD 顯示左移流水,Serial Right 接 QA 顯示右移流水。
輸入 A B C D 接電源或地,表示流水燈的初態。
輸出 QA QB QC QD 接4盞彩燈。
Clock 接時鍾。
啟動時 Clear 置高電平,S1S0 先置為高電平,讀取初態。然後根據左移或右移,設置其中之一(S0或S1),為低電平。可以直接這么接是因為它的實現可以看作一個四個觸發器串聯的時序電路,必須要在驅動函數計算完成後,才進行狀態函數的計算。
(3)利用移位演算法實現小燈閃爍擴展閱讀:
根據移位方向,常把它分成左移寄存器、右移寄存器和雙向移位寄存器三種;
根據移位數據的輸入-輸出方式,又可將它分為串列輸入-串列輸出、串列輸入-並行輸出、並行輸入-串列輸出和並行輸入-並行輸出四種電路結構。
此外,有些移位寄存器還具有預置數功能,可以把數據並行地置入寄存器中。
利用移位寄存器能進行數據運算、數據處理,實現數據的串列—並行互相轉換,還可接成各種移位寄存器式計數器,如環形計數器、扭環形計數器等。
⑷ 用C語言編寫一個單片機控制LED燈閃爍變化的編程 急用!!!!!!!!!
C語言實現LED燈閃爍控制配套51單片機開發板。
#include //包含單片機寄存器的頭文件
/****************************************
函數功能:延時一段時間
*****************************************/
void delay(void) //兩個void意思分別為無需返回值,沒有參數傳遞。
{
unsigned int i; //定義無符號整數,最大取值范圍65535。
for(i=0;i<20000;i++) //做20000次空循環。
; //什麼也不做,等待一個機器周期。
}
/*******************************************************
函數功能:主函數 (C語言規定必須有也只能有1個主函數)。
********************************************************/
void main(void)
{
while(1) //無限循環。
{
P0=0xfe; //P1=1111 1110B, P0.0輸出低電平。
delay(); //延時一段時間。
P0=0xff; //P1=1111 1111B, P0.0輸出高電平。
delay(); //延時一段時間。
}
}
單片機驅動LED燈的源程序:
#include<reg52.h> //頭文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定義。
void delay_ms(uint);//mS級帶參數延時函數。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延時子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
(4)利用移位演算法實現小燈閃爍擴展閱讀:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料來源:網路-單片機
⑸ 單片機中如何實現一個小燈固定頻率閃爍後跳到下個小鄧
軟體延時。
單片機燈閃爍的實現方法:主要就是控制小燈的亮和滅的頻率。
可以讓小燈1秒鍾亮一次滅一次。
也可以控制小燈2秒鍾亮一次滅一次。
⑹ 如何用51單片機定時器1+查詢方式實現7個小燈的流動閃爍請大神指點
我很久不做51了,一直在用飛思卡爾的片子,所以只能給你個思路,希望你給你幫助哈。首先就是查詢方式,就是需要做個數組,然後把你小燈的流動閃爍的順序,用位元組表示,放在數組裡面。然後用定時器1,隔一段時間去查詢一下數組,把燈的亮變一下。這樣的話,就能實現隔斷時間就變化一下。要是你還有不懂得話,先嘗試編寫下程序,然後我幫你看看。望採納,謝謝。
⑺ at89c51單片機用移位做八盞燈循環的程序
1.硬體組成
按照單片機系統擴展與系統配置狀況,單片機應用系統可分為最小系統、最小功耗系統及典型系統等。AT89C51單片機是美國ATMEL公司生產的低電壓、高性能CMOS
8位單片機,具有豐富的內部資源:4kB快閃記憶體、128BRAM、32根I/O口線、2個16位定時/計數器、5個向量兩級中斷結構、2個全雙工的串列口,具有4.25~5.50V的電壓工作范圍和0~24MHz工作頻率,使用AT89C51單片機時無須外擴存儲器。因此,本流水燈實際上就是一個帶有八個發光二極體的單片機最小應用系統,即為由發光二極體、晶振、復位、電源等電路和必要的軟體組成的單個單片機。
2.軟體編程
單片機的應用系統由硬體和軟體組成,上述硬體原理圖搭建完成上電之後,我們還不能看到流水燈循環點亮的現象,我們還需要告訴單片機怎麼來進行工作,即編寫程序控制單片機管腳電平的高低變化,來實現發光二極體的一亮一滅。軟體編程是單片機應用系統中的一個重要的組成部分,是單片機學習的重點和難點。下面我們以最簡單的流水燈控制功能即實現8個LED燈的循環點亮,來介紹實現流水燈控制的幾種軟體編程方法。
2.1位控法
這是一種比較笨但又最易理解的方法,採用順序程序結構,用位指令控制P1口的每一個位輸出高低電平,從而來控制相應LED燈的亮滅。程序如下:
ORG
0000H
;單片機上電後從0000H地址執行
AJMP
START
;跳轉到主程序存放地址處
ORG
0030H
;設置主程序開始地址
START:MOV
SP,#60H
;設置堆棧起始地址為60H
CLR
P1.0
;P1.0輸出低電平,使LED1點亮
ACALLDELAY
;調用延時子程序
SETBP1.0
;P1.0輸出高電平,使LED1熄滅
CLR
P1.1
;P1.1輸出低電平,使LED2點亮
ACALLDELAY
;調用延時子程序
SETBP1.1
;P1.1輸出高電平,使LED2熄滅
CLR
P1.2
;P1.2輸出低電平,使LED3點亮
ACALLDELAY
;調用延時子程序
SETBP1.2
;P1.2輸出高電平,使LED3熄滅
CLR
P1.3
;P1.3輸出低電平,使LED4點亮
ACALLDELAY
;調用延時子程序
SETBP1.3
;P1.3輸出高電平,使LED4熄滅
CLR
P1.4
;P1.4輸出低電平,使LED5點亮
ACALLDELAY
;調用延時子程序
SETBP1.4
;P1.4輸出高電平,使LED5熄滅
CLR
P1.5
;P1.5輸出低電平,使LED6點亮
ACALLDELAY
;調用延時子程序
SETBP1.5
;P1.5輸出高電平,使LED6熄滅
CLR
P1.6
;P1.6輸出低電平,使LED7點亮
ACALLDELAY
;調用延時子程序
SETBP1.6
;P1.6輸出高電平,使LED7熄滅
CLR
P1.7
;P1.7輸出低電平,使LED8點亮
ACALLDELAY
;調用延時子程序
SETBP1.7
;P1.7輸出高電平,使LED8熄滅
ACALLDELAY
;調用延時子程序
AJMP
START
;8個LED流了一遍後返回到標號START處再循環
DELAY:
;延時子程序
MOV
R0,#255;延時一段時間
D1: MOV
R1,#255
DJNZ
R1,$
DJNZ
R0,D1
RET
;子程序返回
END
;程序結束