找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2528|回复: 6
打印 上一主题 下一主题
收起左侧

求单片机流水灯程序

[复制链接]
跳转到指定楼层
楼主
ID:68351 发表于 2014-11-4 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求单片机流水灯中间两个开始依次向两边扩散,到达最边上后再从中间两个开始依次向两边扩散。周而复始的程序。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:2318 发表于 2014-11-5 12:03 来自手机 | 只看该作者
其实这个应该比较简单,你应该弄一个表,看你的说明这个表应该有四个数据,因为这个流水灯有四种状态,然后用数组来调出来,最后使用一个大循环来实现周而复始。我说的这个办法应该是能实现的如果有更好的办法希望大神指出来
回复

使用道具 举报

板凳
ID:66840 发表于 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秒
                }
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:66840 发表于 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秒
                }
        }
}

评分

参与人数 1威望 +50 黑币 +50 收起 理由
admin + 50 + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:68468 发表于 2014-11-7 11:50 | 只看该作者
用数组

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:102367 发表于 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--); }快速回复#
回复

使用道具 举报

7#
ID:103224 发表于 2016-1-14 16:44 | 只看该作者
参考郭天祥的教程 有类似的程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表