找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4366|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

用C51單片機(jī)怎么做流水燈

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:237658 發(fā)表于 2017-10-7 16:52 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
用C51單片機(jī)怎么做流水燈
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:216625 發(fā)表于 2017-10-7 18:53 | 只看該作者
借花獻(xiàn)佛
/**************************************************************************************
*                              LED流水燈實(shí)驗(yàn)                                                                                                  *
實(shí)現(xiàn)現(xiàn)象:下載程序后LED呈現(xiàn)流水燈效果進(jìn)行左移右移滾動
注意事項:無
***************************************************************************************/

#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include<intrins.h>                //因?yàn)橐玫阶笥乙坪瘮?shù),所以加入這個頭文件

typedef unsigned int u16;          //對數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;

#define led P0           //將P0口定義為led 后面就可以使用led代替P0口

/*******************************************************************************
* 函 數(shù) 名         : delay
* 函數(shù)功能                   : 延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);
}

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{
        u8 i;
        led=0x01;
        delay(50000); //大約延時450ms
        while(1)
        {
/*                for(i=0;i<8;i++)
                {
                        P0=(0x01<<i);         //將1右移i位,然后將結(jié)果賦值到P0口
                        delay(50000); //大約延時450ms
                }
*/

                for(i=0;i<7;i++)         //將led左移一位
                {
                        led=_crol_(led,1);
                        delay(50000); //大約延時450ms
                }
                for(i=0;i<7;i++)        //將led右移一位
                {
                        led=_cror_(led,1);
                        delay(50000); //大約延時450ms
                }
        }
}

評分

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

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:237676 發(fā)表于 2017-10-7 19:22 | 只看該作者
去百度文庫找教程,或者看郭天祥的《新概念51單片機(jī)》入門,用proteus仿真或者淘寶買一塊片子。

評分

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

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:217803 發(fā)表于 2017-10-7 20:07 | 只看該作者
網(wǎng)上一搜一大堆例程
回復(fù)

使用道具 舉報

5#
ID:237459 發(fā)表于 2017-10-7 20:36 | 只看該作者
很簡單,STC-ISP下載軟件同時也提供了很多資料,打開軟件,跳到     范例程序---》選擇相應(yīng)的單片機(jī)
如果你是新手,不知道軟件在哪里下,可以打開這個鏈接www點(diǎn)gxwmcu點(diǎn)com    (這是STC官網(wǎng))
然后跳到    STC-ISP下載編程燒錄軟件,下載軟件就可以了
回復(fù)

使用道具 舉報

6#
ID:237714 發(fā)表于 2017-10-7 22:03 | 只看該作者
是用單片機(jī)嘛?就用循環(huán)就可以了
回復(fù)

使用道具 舉報

7#
ID:111634 發(fā)表于 2017-10-7 22:20 | 只看該作者
網(wǎng)上一大堆,自己去搜。
回復(fù)

使用道具 舉報

8#
ID:237722 發(fā)表于 2017-10-7 22:36 | 只看該作者
/************************************
*實(shí)驗(yàn)名:流水燈
*實(shí)驗(yàn)效果:流水燈(循環(huán)移位)
*************************************/
#include<reg52.h>
#include<intrins.h>
#include"delay.h"
void main()
{
        P1 = 0xfe;//1111 1110
        while(1)
        {
                delay(500);
                P1 =_crol_(P1,1);/*將P1循環(huán)左移1位*/
        }
}

評分

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

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:237722 發(fā)表于 2017-10-7 22:36 | 只看該作者
www點(diǎn)yahboom點(diǎn)com/build.html?id=111&cid=33
請看這里

評分

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

查看全部評分

回復(fù)

使用道具 舉報

10#
ID:237414 發(fā)表于 2017-10-7 23:39 | 只看該作者
流水燈

流水燈.rar

13.19 KB, 下載次數(shù): 3

評分

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

查看全部評分

回復(fù)

使用道具 舉報

11#
ID:237747 發(fā)表于 2017-10-8 09:21 | 只看該作者
* 實(shí) 驗(yàn) 名                 : 流水燈實(shí)驗(yàn)
* 實(shí)驗(yàn)說明       : 延時實(shí)現(xiàn)LED流水燈效果P2口八個燈作跑馬燈。采用了寄存器存中間數(shù)
* 連接方式       : 見接線圖
* 注    意                 :
*******************************************************************************/

//--包含你要使用的頭文件
#include <reg52.h>          //此文件中定義了51的一些特殊功能寄存器
#include <intrins.h>

//--聲明全局函數(shù)--//
void Delay10ms(unsigned int c);   //延時10ms            

/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

main()
{
        unsigned char LED;

        LED = ~0xfe;          //0xfe = 1111 1110

        while (1)
        {
             P0 = LED;
                 Delay10ms(50);
                 LED = LED << 1;    //循環(huán)右移1位,點(diǎn)亮下一個LED "<<"為左移位
                  if (P0 == 0x00)        //當(dāng)它全滅的時候,重新賦值
                 {
                         LED = 0xfe;          // 0xfe = 1111 1110
                 }
                                     
        }
}

/*******************************************************************************
* 函 數(shù) 名         : Delay10ms
* 函數(shù)功能                   : 延時函數(shù),延時10ms
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a, b;

        //--c已經(jīng)在傳遞過來的時候已經(jīng)賦值了,所以在for語句第一句就不用賦值了--//
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }
           
        }      
}



回復(fù)

使用道具 舉報

12#
ID:237808 發(fā)表于 2017-10-8 15:18 | 只看該作者
百度一下,你就知道
回復(fù)

使用道具 舉報

13#
ID:237826 發(fā)表于 2017-10-8 16:23 | 只看該作者
/**************************************************************************************
*                              LED閃爍的簡單試驗(yàn)                                                                                                  *
*                延時實(shí)現(xiàn)p2口LED流水燈效果 (用循環(huán)移位指令)                                       *
*        連接方法: JP11(P2)和JP1(LED燈) 用8PIN排線連接起來                                                          *
*                                                                                                                                                                          *
***************************************************************************************/
#include <reg51.h>            //此文件中定義了51的一些特殊功能寄存器
#include <intrins.h>

void delayms(unsigned char ms)       
// 延時子程序
{                                               
        unsigned char i;
        while(ms--)
        {
                for(i = 0; i < 120; i++);
        }
}


main()
{
        unsigned char LED;
        LED = 0xfe;          //0xfe = 1111 1110
        while(1)
        {
             P2 = LED;
                 delayms(250);
                 LED = LED << 1;    //循環(huán)右移1位,點(diǎn)亮下一個LED "<<"為左移位
                  if(P2 == 0x00 )         {LED = 0xfe;  } // 0xfe = 1111 1110
                    
                 
        }
}





回復(fù)

使用道具 舉報

14#
ID:232501 發(fā)表于 2017-10-8 19:13 | 只看該作者
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
uint a,b,c;
void main()
{               
                P1=0xff;                                          //左到右
                P1=0xfe;
                for(a=0;a<20000;a++);
                b=7;
                while(b--)
                {       
                        P1=_cror_(P1,1);
                        for(a=0;a<20000;a++);
                }
                P1=0xff;
                P3=0xfe;
                for(a=0;a<20000;a++);
                b=7;
                while(b--)
                {
                        P3=_cror_(P3,1);
                        for(a=0;a<20000;a++);
                }
                P3=0xff;
                P2=0xfe;
                for(a=0;a<20000;a++);
                b=7;
                while(b--)
                {
                        P2=_cror_(P2,1);
                        for(a=0;a<20000;a++);
                }
                P2=0xff;
                P0=0x7f;
                for(a=0;a<20000;a++);
                b=7;
                while(b--)
                {
                        P0=_cror_(P0,1);
                        for(a=0;a<20000;a++);
                }                                                              //
                         //
            P0=0xff;                                         //全亮全滅
                P2=0xff;
                P3=0xff;
                P1=0xff;
                for(a=0;a<20000;a++);
                P0=0x00;
                for(a=0;a<20000;a++);
                P2=0x00;
                for(a=0;a<20000;a++);
                P3=0x00;
                for(a=0;a<20000;a++);
                P1=0x00;
                for(a=0;a<20000;a++);               
                                               
            P0=0xfe;                                    //從右向左追趕
                for(a=0;a<10000;a++);
                b=7;
                while(b--)
                {
                        P0=_crol_(P0,1);
                        for(a=0;a<10000;a++);
                }
                P0=0xff;
                P2=0x7f;
                for(a=0;a<10000;a++);
                b=7;
                while(b--)
                {
                        P2=_crol_(P2,1);
                        for(a=0;a<10000;a++);
                }
                P2=0xff;
                P3=0x7f;
                for(a=0;a<10000;a++);
                b=7;
                while(b--)
                {
                        P3=_crol_(P3,1);
                        for(a=0;a<10000;a++);
                }
                P3=0xff;
                P1=0x7f;
                for(a=0;a<10000;a++);
                b=7;
                while(b--)
                {
                        P1=_crol_(P1,1);
                        for(a=0;a<10000;a++);
                }                       
                P0=0xfe;                                         //上收放,下收放
                P1=0xfe;
                b=7;               
                while(b--)
                {
                        P0=_crol_(P0,1);
                        P1=_cror_(P1,1);
                        for(a=0;a<10000;a++);
                }
                P0=0xff;
                P1=0xff;
                P2=0x7f;
                P3=0xfe;
                b=7;               
                while(b--)
                {
                        P2=_cror_(P2,1);
                        P3=_crol_(P3,1);
                        for(a=0;a<10000;a++);
                }
                P2=0xff;
                P3=0xff;
                P2=0xfe;
                P3=0x7f;
                b=7;               
                while(b--)
                {
                        P2=_crol_(P2,1);
                        P3=_cror_(P3,1);
                        for(a=0;a<10000;a++);
                }                                          //
                P2=0xff;
                P3=0xff;
                P0=0x7f;
                P1=0x7f;
                b=7;               
                while(b--)
                {
                        P0=_crol_(P0,1);
                        P1=_cror_(P1,1);
                        for(a=0;a<10000;a++);
                }
                P0=0xff;
                P1=0xff;                                                    //
}
回復(fù)

使用道具 舉報

15#
ID:237867 發(fā)表于 2017-10-8 20:08 | 只看該作者
簡單的程序設(shè)計,網(wǎng)上有教程
回復(fù)

使用道具 舉報

16#
ID:478073 發(fā)表于 2019-2-25 03:37 | 只看該作者
壇子里一大堆例程
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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