導航:首頁 > 操作系統 > 單片機led燈位移

單片機led燈位移

發布時間:2023-09-05 07:33:42

A. 單片機編程8個led燈,讓最低燈亮,循環左移s

思路:

控制8個LED燈,使用上拉方式控制,引腳高電平燈滅,引腳低電平燈亮。

這8個LED使用同一P口上的所有引腳,假設為P1口中的P1.0-P1.7共8個腳。

軟體中,只需要將這些燈使用一個for循環即可。

代碼

#include<reg51.h>

unsignedcharPData;//記錄當前是哪個狀態,值為1表示亮,輸出到P口時取反

//延時,本函數是非精確延時,若需要精確延遲則需要根據本函數的匯編語句進行精確計算後調整循環體次數
voiddelay(unsignedintms){
unsignedchari;
while(ms--){
for(i=0;i<120;t++){
;
}
}
}

voidmain(){
unsignedchari=0;
PData=0x00;//全滅狀態
while(1){//無限循環亮滅狀態
for(i=0;i<8;i++){//從最低位循環到不是常亮的最高位
P1=~(PData+(1<<i));//第i位亮
delay(500);
P1=~PData;//第i位滅
delay(500);
}
}
}

B. 請運用位移法利用單片機的P2口實現的8個LED流水燈功能。要求:1.流水的順序是從左到右 2.每次只亮一盞燈

用紅色的替換對應語句,即可得反方向了,去試試吧;

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

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"的文件包,第二要要會定義賦值變數,第三延時,這是關鍵。

D. 單片機流水燈設計,使八個led燈右移

#include <AT89X52.h> //調用51單片機的頭文件


void main(void) //主函數,單片機開機後就是從這個函數開始運行

{


unsigned int a; //定義一個int型變數,做延時用

P0=0;

while(1) //死循環,單片機初始化後,將一直運行這個死循環

{

for(a=0;a<20000;a++); //延時若干時間,具體時長暫不理會

if(P0==0)

P0=0x01;

else

P0=P0<<1; //將PO左移

}

}

E. 單片機點亮一個燈泡時,為什麼要進行左移一個單位呢,這里有點不懂還望大神解答

這個是為了讓時間長一點,單片機運行速度還是比較快的。你看只有led8_one的最高位是1,才點亮燈。其他的時間是關閉燈的。每次移位就是為了讓led8_one的那個1向最高位動一次。

F. 求用C語言編程實現51單片機的LED燈移動

#include<reg51.h>
#define uchar unsigned char
sbit c10=P1^0;
sbit c11=P1^1;
sbit c12=P1^2;
sbit c13=P1^3;
uchar led1,led3;
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
uchar keyval=0xff;
led1=0xfe;
led3=0xf8;
while(1)
{
if(c10==0)
{
delay(10);
if(c10==0)
{
while(c10==0);
keyval=0;
}
}
if(c11==0)
{
delay(10);
if(c11==0)
{
while(c11==0);
keyval=1;
}
}
if(c12==0)
{
delay(10);
if(c12==0)
{
while(c12==0);
keyval=2;
}
}
if(c13==0)
{
delay(10);
if(c13==0)
{
while(c13==0);
keyval=3;
}
}
switch(keyval)
{
case 0:
P0=led1;
led1=(led1<<1)|0x01;
if(led1==0xff)led1=0xfe;
delay(100);
case 1:
P0=led1;
led1=(led1>>1)|0x80;
if(led1==0xff)led1=0x7f;
delay(100);
case 2:
P0=led3;
led3=(led3<<1)|0x01;
if((led3&0xf0)==0x30)led3=0x3e;
if((led3&0xf0)==0x70)led3=0x7c;
if((led3&0xf0)==0xf0)led3=0xf8;
break;
case 3:
P0=led3;
led3=(led3>>1)|0x80;
if((led3&0x0f)==0x0c)led3=0x7c;
if((led3&0x0f)==0x0e)led3=0x3e;
if((led3&0x0f)==0x0f)led3=0x1f;
break;
default:break;
}
}
}

閱讀全文

與單片機led燈位移相關的資料

熱點內容
命令方塊刷銅點教學 瀏覽:686
php郵件訂閱系統 瀏覽:992
柱樑底加密箍間距 瀏覽:29
pythonjavascript對比 瀏覽:740
什麼動漫app是大陸字幕 瀏覽:286
android查看activity棧 瀏覽:918
x86固件編譯 瀏覽:165
安卓下什麼可以看微博動圖 瀏覽:412
永輝生活app注冊有什麼優惠嗎 瀏覽:411
行偏移演算法 瀏覽:240
什麼app也能讓wifi增強 瀏覽:178
雙分錄核演算法反映什麼 瀏覽:210
ubuntuphpaptget 瀏覽:256
安卓手機快充需要什麼數據線 瀏覽:795
程序中存在未轉換未編譯部分 瀏覽:323
編譯匯編鏈接優化 瀏覽:83
程序員打字和作家哪個打字快 瀏覽:579
安卓手機怎麼用cad命令行 瀏覽:385
2200工程機接收命令瞬間消失 瀏覽:255
壓縮機工藝管是多大的 瀏覽:314