導航:首頁 > 操作系統 > 單片機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燈位移相關的資料

熱點內容
阿里雲物理伺服器 瀏覽:951
靈狐視頻app哪個好 瀏覽:255
大廠退役程序員自述 瀏覽:250
linux命令watch 瀏覽:889
加密幣哪些平台不撤出中國 瀏覽:553
max加線命令 瀏覽:424
app胖瘦模式哪個好用 瀏覽:724
可以下載源碼的軟體 瀏覽:487
程序員寫一天代碼累嗎 瀏覽:628
ie文件夾禁止訪問 瀏覽:543
百川互聯網程序員 瀏覽:783
linuxpython解釋器 瀏覽:667
興安得力軟體加密狗 瀏覽:492
智能網路攝像頭加密 瀏覽:574
軟體畢業程序員培訓 瀏覽:652
安卓陀螺儀低怎麼辦 瀏覽:247
一級建造師復習題集pdf 瀏覽:903
法理學pdf海默 瀏覽:392
伺服器內存儲器是用什麼的 瀏覽:819
微幫同城分類信息源碼 瀏覽:808