導航:首頁 > 操作系統 > 51單片機讓小燈循環點亮

51單片機讓小燈循環點亮

發布時間:2023-09-04 15:33:25

① 用51單片機P1口驅動8個LED做循環點亮控制,每個LED占空比50%,周期兩秒

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar Counter = 0;
uchar P1LEDBUF = 0x01;//P1口的燈如果亮了7個,就改成0xFE;

main()
{
P1=0x00; //如果燈全亮了,則全部改為0xFF
TMOD = 0x01; //T0工作在定時方式1
TH0 = 0x3C; //T0初值50ms
TL0 = 0xB0;
ET0 = 1; //開啟定時器0中斷
EA = 1; //開總中斷
TR0 = 1; //啟動定時器0
while(1);
}

/********************************************/
/* 定時器0中斷服務程序 */
/********************************************/
void T0_Serve() interrupt 1
{
TH0 = 0x3c; //每次定時50ms
TL0 = 0xb0;
Counter++;
if(Counter == 20) //中斷20次後進入函數,時間剛好1秒(誤差可以忽略)
{
Counter = 0; //計數清0
P1 = P1LEDBUF ;
P1LEDBUF =_crol_(P1LEDBUF,1); //位移P1口LED,准備下一輪
//如果燈亮和滅的剛好反了(熄了一個燈,亮了7個)就把初值改了
}
if(Counter == 40)
{
Counter = 0;//計數清0,周期2秒
P1 = 0x00 ;//如果燈全亮了,則改為P1=0xFF;
}
}

② 求!! 如何用C51單片機中斷系統實現循環五遍流水燈以後再循環10次閃爍

這個程序很簡單的,只要掌握了循環表達方式就可以實現。首先,編寫流水燈的循環函數,其次使用for語句進行循環。完成後可以修改畫質後同樣方法實現閃爍。

③ 51單片機C程序怎樣把LED燈從左到右點亮然後又從右到左點亮然後循環

#include<reg51.h>

unsigned char ledtab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++){P0=ledtab[i];delay(100);}
for(i=0;i<8;i++){P0=ledtab[7-i];delay(100);}
}
}

④ 51單片機C語言如何實現8個流水燈左移三次,後右移三次;如此循環

  1. 51單片機C語言實現循環8個流水燈左移三次,後右移三次。

    常式:

    #include<reg51.h>//51單片機頭文件
    #include<intrins.h>//包含有左右循環移位子函數的庫
    #defineuintunsignedint//宏定義
    #defineucharunsignedchar//宏定義
    sbitbeep=P2^3;
    voiddelay(uintz)//延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
    {//delay(500);大約延時500ms.
    uintx,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }
    voidmain()//主函數
    {
    uchara,i,j;
    while(1)//大循環
    {
    a=0xfe;//賦初值
    for(j=0;j<3;j++)for(i=0;i<8;i++)//左移三次
    {
    P1=a;//點亮小燈
    beep=0;//開啟蜂鳴器
    delay(50);//延時50毫秒
    beep=1;//關閉蜂鳴器
    delay(50);//再延時50毫秒
    a=_crol_(a,1);//將a變數循環左移一位
    }
    a=0x7f;
    for(j=0;j<3;j++)for(i=0;i<8;i++)//右移三次
    {
    P1=a;//點亮小燈
    beep=0;//開啟蜂鳴器
    delay(50);//延時50毫秒
    beep=1;//關閉蜂鳴器
    delay(50);//再延時50毫秒
    a=_cror_(a,1);//將a變數循環右移一位
    }
    }
    }
  2. 51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。

⑤ 51單片機按鍵控制按下K1四個led燈循環亮,再按一下全滅,c程序怎麼寫

在四個燈循環點亮的狀態下,每點亮一個燈需要延時,如果調用延時子程序,按鍵就顯示不靈敏了,所以,採用定時器中斷的方式控制延時,就不影響按鍵了。

#include<reg51.h>

#include<intrins.h>

模擬圖效果。

⑥ 51單片機從中間到兩邊逐個點亮再從兩邊到中間逐個點亮程序

這個流水燈程序最好用數組定義8個狀態的燈,這樣用for循環就可以實現了。簡潔明了,易讀性強,也容易理解。
#include<reg51.h>
#define uchar unsigned char
code uchar ledtab[10]=
{
0xff,0xe7,0xc3,0x81,0x00, //中間開始逐漸點亮
0xff,0x7e,0x3c,0x18,0x00 //兩邊開始逐漸點亮
}
void delay(int ms)
{
uchar i;
while(ms--)for(i=0;i<120;i++);
}
main()
{
uchar i;
while(1)
{
for(i=0;i<10;i++)P1=ledtab[i];
delay(1000);
}
}

閱讀全文

與51單片機讓小燈循環點亮相關的資料

熱點內容
sh腳本運行命令 瀏覽:314
廣聯達加密鎖怎麼看到期 瀏覽:172
cad軌跡命令 瀏覽:979
同事刷到女程序員自媒體視頻 瀏覽:571
校驗演算法的缺點是什麼 瀏覽:717
PHP商品分類功能實現 瀏覽:330
php取字元串中間 瀏覽:430
程序員經常用工具 瀏覽:835
降服主力指標源碼主圖 瀏覽:500
python實用庫 瀏覽:692
電腦默認7個文件夾 瀏覽:11
新唐單片機安裝c51後編譯錯誤 瀏覽:530
紅包源碼引流神器 瀏覽:235
學生初中畢業撕書解壓 瀏覽:747
命令方塊刷銅點教學 瀏覽:690
php郵件訂閱系統 瀏覽:997
柱樑底加密箍間距 瀏覽:30
pythonjavascript對比 瀏覽:741
什麼動漫app是大陸字幕 瀏覽:286
android查看activity棧 瀏覽:918