标题: 求单片机流水灯程序 [打印本页]

作者: LiteraryGIant    时间: 2014-11-4 16:41
标题: 求单片机流水灯程序
求单片机流水灯中间两个开始依次向两边扩散,到达最边上后再从中间两个开始依次向两边扩散。周而复始的程序。

作者: hkccd    时间: 2014-11-5 12:03
其实这个应该比较简单,你应该弄一个表,看你的说明这个表应该有四个数据,因为这个流水灯有四种状态,然后用数组来调出来,最后使用一个大循环来实现周而复始。我说的这个办法应该是能实现的如果有更好的办法希望大神指出来
作者: skyhanfeng    时间: 2014-11-6 10:08
#include<reg52.h>

sbit Led0 = P1^0;
sbit Led1 = P1^1;
sbit Led2 = P1^2;
sbit Led3 = P1^3;
sbit Led4 = P1^4;
sbit Led5 = P1^5;
sbit Led6 = P1^6;
sbit Led7 = P1^7;

unsigned char code table[] = {0xE7,0XDB,0XBD,0X7E};//查询数组

void delay(unsigned int xms) //延时函数,延时X毫秒
{
        unsigned char j,m;
        for(j=xms; j>0; j--)
        {
                for(m=110; m>0; m--);
        }
}

void main()
{
        unsigned char j,i;
        while(1)
        {
                for(j=0; j<4; j++)       
                {
                        P0 = table[i];
                        delay(1000);//延时1秒
                }
        }
}
作者: skyhanfeng    时间: 2014-11-6 10:10
上面错了,应该把P0改为P1。呵呵
再发次
#include<reg52.h>

sbit Led0 = P1^0;
sbit Led1 = P1^1;
sbit Led2 = P1^2;
sbit Led3 = P1^3;
sbit Led4 = P1^4;
sbit Led5 = P1^5;
sbit Led6 = P1^6;
sbit Led7 = P1^7;

unsigned char code table[] = {0xE7,0XDB,0XBD,0X7E};//查询数组

void delay(unsigned int xms) //延时函数,延时X毫秒
{
        unsigned char j,m;
        for(j=xms; j>0; j--)
        {
                for(m=110; m>0; m--);
        }
}

void main()
{
        unsigned char j, i;
        while(1)
        {
                for(j=0; j<4; j++)       
                {
                        P1 = table[i];
                        delay(1000);//延时1秒
                }
        }
}
作者: wysh_2004    时间: 2014-11-7 11:50
用数组
作者: ruzongqing    时间: 2016-1-14 14:37
#在这里#include<reg52.h>    //包含单片机寄存器的头文件  #define uchar unsigned char #define uint unsigned int  /* 函数申明 -----------------------------------------------*/ void delay(uint z);  /* ******************************************************************************** // 主函数 void main() {         uchar  num,dat1,dat2;         delay(500);         P0=0;         while(1)         {                 dat1=0xfe;                 dat2=0x7f;                 for(num=0;num<7;num++)                 {                         P1=dat1;          //初始化赋值                         dat1=dat1<<1; //右移一位                         delay(500);   //延时                         }                  for(num=0;num<7;num++)                 {                         P1=dat2;          //初始化赋值                         dat2=dat2>>1; //右移一位                         delay(500);   //延时                         }         } }  /* ********************************************************************************  延时函数 ******************************************************************************** */ void delay(uint z) {     uchar j;     for(z;z>0;z--)         for(j=200;j>0;j--); }快速回复#
作者: xasy    时间: 2016-1-14 16:44
参考郭天祥的教程 有类似的程序




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1