導航:首頁 > 操作系統 > 單片機左移流水燈

單片機左移流水燈

發布時間:2023-02-16 10:22:49

⑴ c51單片機流水燈程序閃3次左移怎麼回事

二極體的陰極接了單片機。c51單片機產品信息顯示,二極體的陰極接了單片機的情況下,流水燈程序會出現故障,具體為閃3次左移,產品出現故障提示。單片機是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU的晶元。

⑵ 關於單片機流水燈左移右移的問題

51單片機
的左移右移,首先在開始要調用"intrins.h"的文件包,這個文件包含_cror_(右移),_crol_(左移);然後通過for語句來控制;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(k=250;k>0;k--);
理解這三句,第一句是指:m=20;m>0然後m--是真就執行:
for(n=20;n>0;n--)
for(k=250;k>0;k--);
這兩句,m--一直減,減一次,裡面就執行一次,這里是20次。
流水燈的左右移,第一用"intrins.h"的文件包,第二要要會定義賦值變數,第三延時,這是關鍵。

⑶ 如何實現51單片機的按鍵k1按下,LED流水燈向右移動,按鍵k2被按下,LED流水燈向左移動

51單片機實現方法:

按鍵控制標志位flag取反。

然後把下面的代碼放到循環里:

U8 temp0 = 1。

U8 temp1 = 0x80。

U8 i = 0。

if(flag == 1)。

{。

for(i=0;i<8;i++)。

{。

P1=temp0<<i。

}。

}。

else。

{。

for(i=0;i<8;i++)。

{。

P1=temp1>>i。

}。

}。

}。

對控制LED口的寄存器進行位操作,按k1左移,按K2就是右移了。

51單片機是對兼容英特爾8051指令系統的單片機的統稱。51單片機廣泛應用於家用電器、汽車、工業測控、通信設備中。因為51單片機的指令系統、內部結構相對簡單,所以國內許多高校用其進行單片機入門教學。

51單片機的特點:

同樣的一段程序,在各個單片機廠家的硬體上運行的結果都是一樣的,如ATMEL的89C51(已經停產)、89S51,PHILIPS,和WINBOND等,我們常說的已經停產的89C51指的是ATMEL公司的AT89C51單片機。

同時是在原基礎上增強了許多特性,如時鍾,更優秀的是由Flash(程序存儲器的內容至少可以改寫1000次)存儲器取代了原來的ROM(一次性寫入),AT89C51的性能相對於8051已經算是非常優越的了。


⑷ 單片機右移到左移,左移到右移的花樣流水燈程序問題

LED燈右移到最右邊後向左移時是這樣的:右移一位→第二個延時程序→第一個延時程序→右移右移一位→第二個延時程序→第一個延時程序,這樣不斷循環,循環到最左邊,就開始了右移的程序。
這樣左移的延遲大一點的!

⑸ 請問金沙灘51單片機中,先是左移到頭,然後再右移到頭的花樣流水燈程序該怎麼寫

/*單片機,用定時中斷實現每隔0.2秒讓接在P1口的8個小燈從左往右循環點亮。*/ #include #include #define uchar unsigned char uchar a,b; uchar b=1; uchar a=0xfe; void main() { EA=1;IT1=1;ET0=1; TH0=-5000/256; TL0=-5000%256; TMOD=0x01;...(火星人)2086

⑹ 51單片機按鍵控制流水燈左移

開始學習單片機的同學們寫注意了,在運行程序後,現象不正確的時候,不要首先就找軟體的錯誤,我的經驗是從源頭開始找問題,首先你得確定你的平台是正確的,
你說是按鍵沒效果,先用萬用表測試一下你的引腳的電平,是否被拉低了
如果按鍵沒問題,你就檢查_crol_(P0,1);這句,查一下頭文件是否被包含,我個人建議自己作個移位函數
雖然程序中還有別的問題,但不會造成你一在按鍵沒效果的現象!
如果你是想學硬體的人,你可以這么玩下去,如果你是想編程,建議你先寫段時間(可能是很長時間)的C語言,至少能寫個畫形動畫或是圖書館管理程序出來後再去學單片機吧,不然真心覺得你會學得很慢,而且進步很慢

⑺ 51單片機C語言如何實現8個流水燈左移三次,後右移三次;如此循環

  1. 51單片機C語言實現循環8個流水燈左移三次,後右移三次。

    常式:

    #include<reg51.h>//51單片機頭文件
    #include<intrins.h>//包含有左右循環移位子函數的庫
    #defineuintunsignedint//宏定義
    #defineucharunsignedchar//宏定義
    sbitbeep=P2^3;
    voiddelay(uintz)//延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
    {//delay(500);大約延時500ms.
    uintx,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }
    voidmain()//主函數
    {
    uchara,i,j;
    while(1)//大循環
    {
    a=0xfe;//賦初值
    for(j=0;j<3;j++)for(i=0;i<8;i++)//左移三次
    {
    P1=a;//點亮小燈
    beep=0;//開啟蜂鳴器
    delay(50);//延時50毫秒
    beep=1;//關閉蜂鳴器
    delay(50);//再延時50毫秒
    a=_crol_(a,1);//將a變數循環左移一位
    }
    a=0x7f;
    for(j=0;j<3;j++)for(i=0;i<8;i++)//右移三次
    {
    P1=a;//點亮小燈
    beep=0;//開啟蜂鳴器
    delay(50);//延時50毫秒
    beep=1;//關閉蜂鳴器
    delay(50);//再延時50毫秒
    a=_cror_(a,1);//將a變數循環右移一位
    }
    }
    }
  2. 51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。

⑻ 單片機c51流水燈一亮一閃依次左移編程

下面是採用定時器定時1S(時鍾晶振是11.0592MHz)的流水燈程序。採用左移函數_crol_(),此函數包含在intrinsic.h的頭文件內。有不懂得再問,需要匯編的話,留言,再寫給你。
#include<reg52.h>
#include<intrins.h>
unsigned
int
a,temp;
void
main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
temp=0xfe;
while(1)
{
if(a==20)
{
a=0;
P1=temp;
temp=_crol_
(temp,1);
}
}
}
void
T0_time0()interrupt
1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
a++;
}

⑼ 單片機流水燈實驗原理

上一節我們介紹了什麼是匯流排的方法,以及如何通過十六進制來控制IO口。並把我們的之前單點操作的流水燈進行了改進,成為了一個新的更加簡潔的程序。這回,就再用匯流排方法,來實現流水燈的更加多樣化的操作。

這次,我們要實現正向流水結束後再反過來流水,如此循環。然後再間隔閃爍。然後再累積流水,最後結束。

正向流水結束,再反過來。這個如何實現呢,我們需要使用到一些運算方法。

第一個是移位指令<<。

由於數字對比不強,看的不是很清晰,所以把數字給換成紅色了。

<<這個標志符的意思是,向左移動一位,就像下邊這樣:

1111 1111》1111 111_

移動完成後,會發現,最低位空出來了,此時程序會自動去填補一個0。於是就成了:

1111 1111》1111 111_》1111 1110

第一次移位1111 1110,第二次在第一次基礎上移位1111 1100,第三次在第二次基礎上移位1111 1000,如此循環,就可以一直把所有位都變成0。

我們在看下一句"|",這個符號是或的意思,我們知道,邏輯中的或,是說只要有其一為一,結果就是一。所以,我們把1100|0001,結果就是頭兩個一和最後一個一留下來,第三位因為都是0,所以就是0.結果就是1101了。當再次移位後,數據就變成1010了,我們再次跟0001取或,最後一位就再次置1,結果就是1011,從結果上看,1110》1101》1011……就是0在不斷的左移。

通過這個方法,可以讓每一位都會單獨置零。然後再給以一定時間的延時,就會看到流水燈了。

如果我們不賦初值0xfe會出現什麼情況?

就會出現,移位產生一個0,在或運算時就會被重新置1,如此循環,就進入不到第二個LED,也就不會出現流水燈了。可以自己嘗試下。

向右流水,效果是一樣的,需要注意的是初值更改為左側為0,就是0x7f,0111 1111,然後移位符號>>,還有取或的語句需要用0x80,1000 0000.

基本上是在左移位的基礎上稍作修改即可。

接下來是閃爍的。

閃爍,我們用的是間隔LED的方法,就是隔一個亮一個,埠輸出是1010 1010。翻譯成十六進制就是0xaa。這次用到的是一個取反的運算,就是把每一位的0變成1,1變成0,然後延時一段時間,再次取反,循環幾個周期,就看起來像是不斷閃爍。取反的操作相對好理解一些,就是這一位,現在是1,那麼取反後就是0,就是0和1的變換。

最後是一個累積點亮LED。

這個程序就是把第一個我們向左移位的函數,進行了更改,取消了賦初值,不用取或了,這樣就可以對比著理解,各個語句的作用,如果不使用,會產生什麼結果。如果我們的第一個函數不用取或這一步,那最終輸出結果就和這個現象一樣了。

所以,我們在寫程序時,需要認真,仔細分析自己需要的結果,然後對照程序進行簡單的演算。保證每一段都是可以輸出想要的結果,不然累積到最終,幾百行的代碼,看起來就會頭疼的,尤其是在沒有標注釋的情況下,有時就會忘記自己為什麼要寫這一句。

好的,這篇先說到這里,有問題或建議可以留言或私信給我。

想了解更多精彩內容,快來關注小亮談電氣

更多多內容,歡迎關注百家號:小亮談電氣。微信公眾號:電氣學苑。

閱讀全文

與單片機左移流水燈相關的資料

熱點內容
sybaseisql命令 瀏覽:181
android權威編程指南pdf 瀏覽:661
哪些軟體屬於加密軟體 瀏覽:644
文件夾75絲什麼意思 瀏覽:468
最便宜sop8單片機 瀏覽:964
圖解周易預測學pdf 瀏覽:418
c盤莫名奇妙多了幾個文件夾 瀏覽:169
貴州花溪門票優惠app哪個好 瀏覽:801
如何說話不會讓人有被命令的感覺 瀏覽:438
哪裡可下載湘工惠app 瀏覽:263
福特python 瀏覽:310
pdf轉換成word表格 瀏覽:351
無線遠端伺服器無響應是什麼意思 瀏覽:670
兩位整數倒序輸出python 瀏覽:781
為什麼我的世界天空伺服器進不去 瀏覽:262
釘釘直播後的視頻如何線上加密 瀏覽:503
聽主的命令 瀏覽:208
全民上雲時代雲伺服器 瀏覽:519
iphone不創建id如何下載app 瀏覽:972
windowsphp擴展安裝 瀏覽:93