找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C51单片机led灯多灯同时闪烁程序问题

  [复制链接]
跳转到指定楼层
楼主
ID:497135 发表于 2019-3-24 10:53 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位大佬们,如果我这样编写程序,怎么让1.3.5.7灯同时闪烁,也就是说delay该怎么写?

2019-03-24_10.49.21.jpg (1.15 MB, 下载次数: 35)

2019-03-24_10.49.21.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:490330 发表于 2019-3-24 11:16 | 只看该作者
先让1.3.5.7亮,然后延时,然后让1.3.5.7灭,然后延时即可。都写在while(1)内,1.3.5.7就闪
回复

使用道具 举报

板凳
ID:94031 发表于 2019-3-24 11:21 | 只看该作者
while(1)
        {
                led1=0;
                led2=0;
                led3=0;
                led4=0;
                led5=0;
                led6=0;
                led7=0;
                led8=0;
                delay(5000);
               
                led1=1;
                led2=1;
                led3=1;
                led4=1;
                led5=1;
                led6=1;
                led7=1;
                led8=1;
                delay(5000);
        }
回复

使用道具 举报

地板
ID:94031 发表于 2019-3-24 11:23 | 只看该作者
while(1)
        {
                led1=0;
                led3=0;
                led5=0;
                led7=0;
                delay(5000);
               
                led1=1;
                led3=1;
                led5=1;
                led6=1;
                led7=1;
                delay(5000);
        }
回复

使用道具 举报

5#
ID:94031 发表于 2019-3-24 11:24 | 只看该作者
while(1)
        {
                led1=0;
                led3=0;
                led5=0;
                led7=0;
                delay(5000);
               
                led1=1;
                led3=1;
                led5=1;
                led7=1;
                delay(5000);
        }
回复

使用道具 举报

6#
ID:367870 发表于 2019-3-24 11:53 | 只看该作者
这个不能实现吗
回复

使用道具 举报

7#
ID:161151 发表于 2019-3-24 11:58 | 只看该作者
延时程序多的很,抄点就行。
回复

使用道具 举报

8#
ID:497135 发表于 2019-3-24 14:08 来自手机 | 只看该作者
xuyaqi 发表于 2019-3-24 11:23
while(1)
        {
                led1=0;

如果用“异或”该怎么编写代码?
回复

使用道具 举报

9#
ID:497290 发表于 2019-3-24 15:37 | 只看该作者
这个东西有个大佬之前做过  你可以去看他的帖子哦  加油 一起努力
回复

使用道具 举报

10#
ID:475340 发表于 2019-3-24 17:39 | 只看该作者
异或是判断语句,不是执行语句,异或做多用来判断当前值,反而很麻烦
回复

使用道具 举报

11#
ID:502158 发表于 2019-4-1 09:34 | 只看该作者
void Delay(unsigned int t) {  while(--t); }
回复

使用道具 举报

12#
ID:74585 发表于 2019-4-2 17:57 | 只看该作者
在最后一行加多个延时函数,另外最好在初始化的时候把不需要用到的pin配置成输入
回复

使用道具 举报

13#
ID:213173 发表于 2019-4-2 21:39 | 只看该作者
WHOAMI000 发表于 2019-3-24 14:08
如果用“异或”该怎么编写代码?

直接赋值最简单,用&/|写可以保持2、4、6、8状态不变而不影响另作他用。用^写徒增麻烦。
#include<reg51.h>
void main()
{
        unsigned int i;
        while(1)
        {
                P1&=0xaa;
                i=50000;
                while(i--);
                P1|=0x55;
                i=50000;
                while(i--);
        }
}
回复

使用道具 举报

14#
ID:504761 发表于 2019-4-4 13:51 | 只看该作者
void Delay5ms()                //@11.0592MHz {         unsigned char i, j;          i = 54;         j = 199;         do         {                 while (--j);         } while (--i); }每隔5毫秒的软延迟把灯开一次延迟一次再关同一个灯再延迟一次然后在开需要打开的下一个灯延迟重复
回复

使用道具 举报

15#
ID:349067 发表于 2019-4-5 09:34 | 只看该作者
WHOAMI000 发表于 2019-3-24 14:08
如果用“异或”该怎么编写代码?
  1. led3=led5=led7=led1=0;
  2. while(1)
  3. {
  4.     led1^=led1;
  5.     led3=led5=led7=led1;
  6.     delay(5000);
  7. }
复制代码
回复

使用道具 举报

16#
ID:913842 发表于 2021-5-24 20:09 | 只看该作者
#include<reg51.h>
void main()
{
        unsigned int i;
        while(1)
        {
                P2&=0x00;
                i=50000;
                while(i--);
                P2|=0xff;
                i=50000;
                while(i--);
        }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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