找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个单片机流水灯程序有用吗

[复制链接]
跳转到指定楼层
楼主
ID:917238 发表于 2021-5-22 13:27 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>  //51系列单片机定义文件
#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数

void delay(uint);  //声明延时函数
void main(void)
{
uint i;
uchar temp;

while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P2=~temp;
delay(100);  //调用延时函数
temp<<=1;
}

temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P2=~temp;
delay(100);  //调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P2=temp;
delay(100);  //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
P2=temp;
delay(100);  //调用延时函数
temp>>=1;
}
}

}
void delay(uint t)  //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:917199 发表于 2021-5-22 16:53 | 只看该作者
没看出来什么问题
回复

使用道具 举报

板凳
ID:451718 发表于 2021-5-22 17:08 | 只看该作者
不知道你说的有用何解?  拿来娱乐一点问题都没有。 如果做项目用, 没有太大参考价值。 就问你一点, 那么多delay100ms,如何响应别的突发操作,比如按键。
回复

使用道具 举报

地板
ID:925693 发表于 2021-5-23 14:51 | 只看该作者
用来初步学习还是可以的,没什么太大问题,不过高级一点的就不行了
回复

使用道具 举报

5#
ID:926081 发表于 2021-5-23 20:59 | 只看该作者
初步学习都是先做流水灯啊
回复

使用道具 举报

6#
ID:926092 发表于 2021-5-23 21:31 | 只看该作者
对于一些基本的校内基础科技竞赛,应该够拿奖了。还是有用的
回复

使用道具 举报

7#
ID:926364 发表于 2021-5-24 14:01 | 只看该作者
学校学的嘛!我们也正在学呢哦,对于单片机理解很不错,能自己搞懂就很好了
回复

使用道具 举报

8#
ID:883031 发表于 2021-5-24 16:08 | 只看该作者
存在即有合理性
回复

使用道具 举报

9#
ID:917238 发表于 2021-6-11 09:43 来自手机 | 只看该作者
#include<reg52.h>

#define uchar  unsigned char
#define uint   unsigned int

sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
sbit LED5 = P2^4;
sbit LED6 = P2^5;
sbit LED7 = P2^6;
sbit LED8 = P2^7;

/* ********************************************* */
// 函数名称: Delay()
// 函数功能:毫秒延时
/* ********************************************* */

void delay(uint z)
{
        uint x,y;
        for(x = 0; x < z; x++)
                for(y = 0; y < 113; y++);
}
// 函数名称: main()
// 函数功能: 实现一个LED灯一闪一闪的效果
void main(void)
{
        while(1)
        {
                LED1 = 0;           //灯亮
                delay(1000);        //持续亮1s
                LED1 = 1;           //灯灭
                delay(1000);        //持续灭1s
                LED2 = 0;
                delay(1000);
                LED2 = 1;
                delay(1000);
                LED3 = 0;
                delay(1000);
                LED3 = 1;
                delay(1000);
                LED4 = 0;           //灯亮
                delay(1000);        //持续亮1s
                LED4 = 1;           //灯灭
                delay(1000);        //持续灭1s
                LED5 = 0;
                delay(1000);
                LED5 = 1;
                delay(1000);
                LED6 = 0;
                delay(1000);
                LED6 = 1;
                delay(1000);
                LED7 = 0;
                delay(1000);
                LED7 = 1;
                delay(1000);
        }       
}
回复

使用道具 举报

10#
ID:917238 发表于 2021-6-11 10:24 来自手机 | 只看该作者
timerzero 发表于 2021-5-22 16:53
没看出来什么问题

#include<reg52.h>

#define uchar  unsigned char
#define uint   unsigned int

sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
sbit LED5 = P2^4;
sbit LED6 = P2^5;
sbit LED7 = P2^6;
sbit LED8 = P2^7;

/* ********************************************* */
// 函数名称: Delay()
// 函数功能:毫秒延时
/* ********************************************* */

void delay(uint z)
{
        uint x,y;
        for(x = 0; x < z; x++)
                for(y = 0; y < 113; y++);
}
// 函数名称: main()
// 函数功能: 实现一个LED灯一闪一闪的效果
void main(void)
{
        while(1)
        {
                LED1 = 0;           //灯亮
                delay(1000);        //持续亮1s
                LED1 = 1;           //灯灭
                delay(1000);        //持续灭1s
                LED2 = 0;
                delay(1000);
                LED2 = 1;
                delay(1000);
                LED3 = 0;
                delay(1000);
                LED3 = 1;
                delay(1000);
                LED4 = 0;           //灯亮
                delay(1000);        //持续亮1s
                LED4 = 1;           //灯灭
                delay(1000);        //持续灭1s
                LED5 = 0;
                delay(1000);
                LED5 = 1;
                delay(1000);
                LED6 = 0;
                delay(1000);
                LED6 = 1;
                delay(1000);
                LED7 = 0;
                delay(1000);
                LED7 = 1;
                delay(1000);
        }       
}
回复

使用道具 举报

11#
ID:57657 发表于 2021-6-12 07:12 | 只看该作者
robinsonlin 发表于 2021-5-22 17:08
不知道你说的有用何解?  拿来娱乐一点问题都没有。 如果做项目用, 没有太大参考价值。 就问你一点, 那么 ...

外部中断了解下
回复

使用道具 举报

12#
ID:190577 发表于 2021-6-12 09:50 | 只看该作者
要了解下单片机定时器的使用,延时函数会阻塞单片机运行。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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