標(biāo)題: 用C51單片機(jī)怎么做流水燈 [打印本頁]

作者: 123456說的方法    時(shí)間: 2017-10-7 16:52
標(biāo)題: 用C51單片機(jī)怎么做流水燈
用C51單片機(jī)怎么做流水燈

作者: map0391    時(shí)間: 2017-10-7 18:53
借花獻(xiàn)佛
/**************************************************************************************
*                              LED流水燈實(shí)驗(yàn)                                                                                                  *
實(shí)現(xiàn)現(xiàn)象:下載程序后LED呈現(xiàn)流水燈效果進(jìn)行左移右移滾動(dòng)
注意事項(xiàng):無
***************************************************************************************/

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

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

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

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

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

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

作者: Larya    時(shí)間: 2017-10-7 19:22
去百度文庫找教程,或者看郭天祥的《新概念51單片機(jī)》入門,用proteus仿真或者淘寶買一塊片子。
作者: fyh0826    時(shí)間: 2017-10-7 20:07
網(wǎng)上一搜一大堆例程
作者: 亞洲大陸TS    時(shí)間: 2017-10-7 20:36
很簡單,STC-ISP下載軟件同時(shí)也提供了很多資料,打開軟件,跳到     范例程序---》選擇相應(yīng)的單片機(jī)
如果你是新手,不知道軟件在哪里下,可以打開這個(gè)鏈接www點(diǎn)gxwmcu點(diǎn)com    (這是STC官網(wǎng))
然后跳到    STC-ISP下載編程燒錄軟件,下載軟件就可以了

作者: 丁大寶    時(shí)間: 2017-10-7 22:03
是用單片機(jī)嘛?就用循環(huán)就可以了
作者: zl2168    時(shí)間: 2017-10-7 22:20
網(wǎng)上一大堆,自己去搜。
作者: luohe2008    時(shí)間: 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位*/
        }
}
作者: luohe2008    時(shí)間: 2017-10-7 22:36
www點(diǎn)yahboom點(diǎn)com/build.html?id=111&cid=33
請(qǐng)看這里
作者: acd12    時(shí)間: 2017-10-7 23:39
流水燈

流水燈.rar

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


作者: repluser    時(shí)間: 2017-10-8 09:21
* 實(shí) 驗(yàn) 名                 : 流水燈實(shí)驗(yàn)
* 實(shí)驗(yàn)說明       : 延時(shí)實(shí)現(xiàn)LED流水燈效果P2口八個(gè)燈作跑馬燈。采用了寄存器存中間數(shù)
* 連接方式       : 見接線圖
* 注    意                 :
*******************************************************************************/

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

//--聲明全局函數(shù)--//
void Delay10ms(unsigned int c);   //延時(shí)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)亮下一個(gè)LED "<<"為左移位
                  if (P0 == 0x00)        //當(dāng)它全滅的時(shí)候,重新賦值
                 {
                         LED = 0xfe;          // 0xfe = 1111 1110
                 }
                                     
        }
}

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

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

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




作者: kongdexiang    時(shí)間: 2017-10-8 15:18
百度一下,你就知道
作者: 1402387648    時(shí)間: 2017-10-8 16:23
/**************************************************************************************
*                              LED閃爍的簡單試驗(yàn)                                                                                                  *
*                延時(shí)實(shí)現(xiàn)p2口LED流水燈效果 (用循環(huán)移位指令)                                       *
*        連接方法: JP11(P2)和JP1(LED燈) 用8PIN排線連接起來                                                          *
*                                                                                                                                                                          *
***************************************************************************************/
#include <reg51.h>            //此文件中定義了51的一些特殊功能寄存器
#include <intrins.h>

void delayms(unsigned char ms)       
// 延時(shí)子程序
{                                               
        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)亮下一個(gè)LED "<<"為左移位
                  if(P2 == 0x00 )         {LED = 0xfe;  } // 0xfe = 1111 1110
                    
                 
        }
}






作者: sp150    時(shí)間: 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;                                                    //
}

作者: aaaw    時(shí)間: 2017-10-8 20:08
簡單的程序設(shè)計(jì),網(wǎng)上有教程
作者: 春風(fēng)十里吹    時(shí)間: 2019-2-25 03:37
壇子里一大堆例程




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1