找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

使用道具 舉報

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報

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

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

使用道具 舉報

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)//方向判斷,正在向右移動
P0>>=1;
if(flag==1)//方向判斷,正在向左移動
P0<<=1;

思路是這樣的,你測試下吧,直接手寫的,我也沒有測試,急需要分啊,凌晨跑來答問題。。。

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:232538 發(fā)表于 2017-9-14 23:34 來自手機(jī) | 顯示全部樓層
移到頂再換個方向移

評分

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

查看全部評分

回復(fù)

使用道具 舉報

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

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

使用道具 舉報

ID:232280 發(fā)表于 2017-9-15 08:24 來自手機(jī) | 顯示全部樓層
#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ù)

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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