找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4240|回復(fù): 8
收起左側(cè)

利用單片機(jī)移位操作

[復(fù)制鏈接]
ID:233145 發(fā)表于 2017-9-14 17:04 | 顯示全部樓層 |閱讀模式
求問(wèn)怎么用51單片機(jī)移位進(jìn)行l(wèi)ed流水燈操作,急速求解
回復(fù)

使用道具 舉報(bào)

ID:219796 發(fā)表于 2017-9-14 19:24 來(lái)自觸屏版 | 顯示全部樓層
P0=0x01;P0<<=1;燈由第一個(gè)亮換到第二個(gè)亮,流水燈你在循環(huán)就行了

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:233145 發(fā)表于 2017-9-14 21:39 | 顯示全部樓層

但是我想讓他左右來(lái)回流水燈
回復(fù)

使用道具 舉報(bào)

ID:233219 發(fā)表于 2017-9-14 23:31 | 顯示全部樓層
bit flag=1;//轉(zhuǎn)向標(biāo)志
P0=0X01;//P0初值
if((P0==0X80)&&(flag==1))//判斷是不是到最左邊了
flag=0;
if((flag==0)&&(P0==0X01))//判斷是不是到最右邊了
flag=1;
if(flag==0)//方向判斷,正在向右移動(dòng)
P0>>=1;
if(flag==1)//方向判斷,正在向左移動(dòng)
P0<<=1;

思路是這樣的,你測(cè)試下吧,直接手寫(xiě)的,我也沒(méi)有測(cè)試,急需要分啊,凌晨跑來(lái)答問(wèn)題。。。

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:232538 發(fā)表于 2017-9-14 23:34 來(lái)自觸屏版 | 顯示全部樓層
移到頂再換個(gè)方向移

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:219796 發(fā)表于 2017-9-15 03:26 來(lái)自觸屏版 | 顯示全部樓層
582130377 發(fā)表于 2017-9-14 21:39
但是我想讓他左右來(lái)回流水燈

到第八個(gè)了再右移>>
回復(fù)

使用道具 舉報(bào)

ID:232280 發(fā)表于 2017-9-15 08:24 來(lái)自觸屏版 | 顯示全部樓層
#include<reg52.h> #include<intrins.h> typedef unsigned int u16; typedef unsigned char u8; void delay(u8 z) {         u8 x,y;         for(x=z;x>0;x--)                 for(y=200;y>0;y--); } void main() {         while(1)         {                 u8 i;                 P2=0xfe;                 for(i=8;i>0;i--)                 {                         P2=_cror_(P2,1);                         delay(200);                         }                 for(i=7;i>0;i--)                 {                         P2=_crol_(P2,1);                         delay(200);                 }         } }  第二種: #include<reg52.h> #include<intrins.h> typedef unsigned int u16; typedef unsigned char u8; u8 code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(u8 z) {         u8 x,y;         for(x=z;x>0;x--)                 for(y=200;y>0;y--); } void main() {         while(1)         {                 u8 i;                 for(i=8;i>0;i--)                 {                         P2=table[i-1];                         delay(200);                         }                 for(i=0;i<8;i++)                 {                         P2=table[i];                         delay(200);                 }         } } 第三種: #include<reg52.h> #include<intrins.h> typedef unsigned int u16; typedef unsigned char u8; //u8 code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(u8 z) {         u8 x,y;         for(x=z;x>0;x--)                 for(y=200;y>0;y--); } void main() {         while(1)         {                 u8 i,j,k;                 j=0x7f;k=0xfe;                 for(i=8;i>0;i--)                 {                         P2=j;                         j>>=1;                                                 delay(200);                          }                 for(i=0;i<8;i++)                 {                                         P2=k;                         k<<=1;                         delay(200);                 }         } }
回復(fù)

使用道具 舉報(bào)

ID:193818 發(fā)表于 2017-9-15 08:43 | 顯示全部樓層
也就是io口高低電瓶的控制。有一個(gè)笨辦法:你可以將每個(gè)狀態(tài)保存在一個(gè)數(shù)組里,然后遍歷它。這個(gè)辦法控制簡(jiǎn)單的還是可以的
回復(fù)

使用道具 舉報(bào)

ID:226263 發(fā)表于 2017-9-17 20:57 | 顯示全部樓層
很簡(jiǎn)單啊,先讓他每次移動(dòng)一位,移動(dòng)8次,然后判斷一下到了8次沒(méi),接著反過(guò)來(lái),主函數(shù)里面不斷重復(fù)調(diào)用函數(shù),就可以不斷循環(huán)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表