欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3750|回復: 11
收起左側

關于單片機LED燈控制的問題,如何移動到下一位后,上一位能保持常亮

[復制鏈接]
ID:733697 發表于 2020-11-1 21:38 來自觸屏版 | 顯示全部樓層 |閱讀模式
怎么才能讓單片機LED燈在移動到下一位后,上一位能保持常亮。編程思路或者想法可以說一下,很急!拜托了
1604237713006.jpg
1604237758112.jpg
回復

使用道具 舉報

ID:213173 發表于 2020-11-1 23:00 | 顯示全部樓層
給你一個C
#include <reg51.h>
#define LED P1

void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}        
void main()
{
        unsigned char i;
        LED=0xfe;
        delay(500);
        for(i=0;i<7;i++)
        {
                LED<<=1;
                delay(500);
        }
        while(1);
}
回復

使用道具 舉報

ID:837540 發表于 2020-11-1 23:04 | 顯示全部樓層
使用異或
回復

使用道具 舉報

ID:88256 發表于 2020-11-2 00:51 | 顯示全部樓層
截圖看得很累也不清楚實際接法,看圖并不是常見的一個I/O口對應一個LED,你的要求是第一次亮一個燈,第二次兩個燈,到最后8個燈都亮,然后全部熄滅嗎?但看你的程序并不太像是這樣做的,你拿R1做循環次數控制,這個次數不是8次,第12行沒見到有用的地方,第13行也沒用,而且如果第20行用的也是R3的話,那么第7行的賦值也沒用,因為執行延時程序后R3值已經被改了;第16、17行多此一舉。
另外,你這個LED的亮滅不是程序循環控制點亮的,而是讀取由第4行指定的TABLE為首地址的數據作為LED亮滅控制的,所以你可以在TABLE指定的地址起始處依次改為00H、01H、03H、07H、0FH……,就可以達到要求。
回復

使用道具 舉報

ID:733697 發表于 2020-11-2 09:05 來自觸屏版 | 顯示全部樓層
wulin 發表于 2020-11-1 23:00
給你一個C
#include
#define LED P1

謝謝大哥,但是我們主要還是學的是匯編語言,可能c語言我們用不上
回復

使用道具 舉報

ID:733697 發表于 2020-11-2 09:13 來自觸屏版 | 顯示全部樓層
hhdsdy 發表于 2020-11-2 00:51
截圖看得很累也不清楚實際接法,看圖并不是常見的一個I/O口對應一個LED,你的要求是第一次亮一個燈,第二次 ...

首先謝謝大哥了,我的要求是第一次亮一個燈,第二次亮第二個燈,然后就是執行完后的燈要保持常亮,簡單來說就是p1.0接口亮后,不能讓p1.0接口滅,然后第二接口亮,也不能讓接口滅,依次類推。之所以有個r3接口,是因為我還接了p2.7接口,因為p1不夠用,我想要的說就是等p1接口全部亮一次后,p2,7接口能立馬跟上亮起,最后的時候一起保持常亮
回復

使用道具 舉報

ID:733697 發表于 2020-11-2 09:14 來自觸屏版 | 顯示全部樓層
hhdsdy 發表于 2020-11-2 00:51
截圖看得很累也不清楚實際接法,看圖并不是常見的一個I/O口對應一個LED,你的要求是第一次亮一個燈,第二次 ...

首先謝謝大哥了,我的要求是第一次亮一個燈,第二次亮第二個燈,然后就是執行完后的燈要保持常亮,簡單來說就是p1.0接口亮后,不能讓p1.0接口滅,然后第二接口亮,也不能讓接口滅,依次類推。之所以有個r3接口,是因為我還接了p2.7接口,因為p1不夠用,我想要的說就是等p1接口全部亮一次后,p2,7接口能立馬跟上亮起,最后的時候一起保持常亮
回復

使用道具 舉報

8#
無效樓層,該帖已經被刪除
ID:311846 發表于 2020-11-2 09:44 | 顯示全部樓層
真萌新 發表于 2020-11-2 09:05
謝謝大哥,但是我們主要還是學的是匯編語言,可能c語言我們用不上

單用匯編,不學C 我怕你吃不消
回復

使用道具 舉報

ID:282850 發表于 2020-11-2 10:33 | 顯示全部樓層
不懂匯編,但思路是一樣的。用移位與加法應該能行:
假設是高電平亮LED
P1=P1<<1+1;
如果是低電平亮LED
把上邊的P1取反。
回復

使用道具 舉報

ID:88256 發表于 2020-11-2 14:13 | 顯示全部樓層
真萌新 發表于 2020-11-2 09:14
首先謝謝大哥了,我的要求是第一次亮一個燈,第二次亮第二個燈,然后就是執行完后的燈要保持常亮,簡單來 ...

想要更好的得到幫助,就要貼出完整的電路圖和程序。你的要求是像水杯裝水那樣從少到多吧?就是我前面說的?
我覺得你沒有認真看我的回帖,R3在執行第11行后數值已變,雖然也是為0,但顯然你沒考慮到這一點,所以第7行根本沒用。
依你的說法就是總計有9個燈了?第13行完全沒用到,因為你沒有從B取數或者參與運算,而且R3的數值恒為0,沒有任何意義。
查表法就得加一處理,你沒有做這方面的任何處理,可以將第12行改成 INC DPTR ,這樣才能取到后續的數據。
看你第15行的意思就是LED是低電平點亮的,從題意上看也是需要延時的(你那延時量我沒去計算,不知道是否符合要求),但因為最后是全部的燈一起亮不需要熄滅,所以延時可以不考慮,但第16、17、18行是沒用的。
本來想告訴你需要在TABLE指定的地址起始處依次存放亮燈數據,但剛才細看截圖好像最后面有,由于太模糊需要你自己確認數據是否正確,你只要把最關鍵的 INC DPTR 添加上去就可以試試了
回復

使用道具 舉報

ID:837951 發表于 2020-11-2 20:25 | 顯示全部樓層
用移位來操作
回復

使用道具 舉報

ID:424598 發表于 2020-11-3 00:08 來自觸屏版 | 顯示全部樓層
不懂位移的話,可以用二進制代替,比如位移8位的,第一次是01111111,第二次是00111111可設一個8位數組,分別在存儲,然后把整個數組提交給單片機,跟位移原理一樣
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表