找回密码
 立即注册

QQ登录

只需一步,快速开始

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

要求P1、P2同时启动,这个程序怎么写?

  [复制链接]
跳转到指定楼层
楼主
ID:86913 发表于 2016-10-19 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机的P1口接8个LED灯,即LED1、LED2、.....LED8,亮、灭程序如下(为简化起见,只写了3个)。
如果P2口也接8个LED灯,即LED11、LED12、.....LED18,并且要求P1、P2同时启动,即LED1和LED11要同时亮。
这个程序怎么写?敬请行家帮助,谢谢!

*******************
#include <REG51.h>  
sbit LED1=P1^7;
sbit LED2=P1^6;   
sbit LED2=P1^5;   
void Delay(unsigned int a)  
{
     unsigned int i;
     while(--a !=0)
   {
       for(i=0;i<600;i++);//延时约1毫秒
   }
}

void main(void)
{
     while (1)
   {
       LED1=0;       //1个循环用时5秒
       Delay(1000);   
       LED1=1;
       Delay(500);
       LED2=0;
       Delay(500);
       LED2=1;
       Delay(500);
       LED3=0;
       Delay(2000);
       LED3=1;
       Delay(500);
   }
}
*****************


要求P2的LED灯亮、灭状态如下:
       LED11=0;          //1个循环用时5秒
       Delay(500);   
       LED11=1;
       Delay(1000);
       LED12=0;
       Delay(1000);
       LED12=1;
       Delay(500);
       LED13=0;
       Delay(1000);
       LED13=1;
       Delay(1000);

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:138144 发表于 2016-10-19 16:19 | 只看该作者
你的是流水灯,而且很繁琐,下面是同时亮和灭
while(1)
{
      P1 = 0xff;
      P2 = 0xff;
      Delay(1000);
      
      P1 = 0x00;
      P2 =0x00;
      Delay(1000);
}

评分

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

查看全部评分

回复

使用道具 举报

板凳
ID:138622 发表于 2016-10-19 16:27 | 只看该作者
楼上是对的
回复

使用道具 举报

地板
ID:123732 发表于 2016-10-19 16:41 | 只看该作者
  1. /*********************************************************************************************
  2. 编写:刘海龙
  3. 程序名:测试
  4. 硬件支持:

  5. /*********************************************************************************************/
  6. #include <REG51.h>  
  7. sbit LED1=P1^7;
  8. sbit LED2=P1^6;   
  9. sbit LED3=P1^5;
  10. sbit LED11=P2^7;
  11. sbit LED12=P2^6;   
  12. sbit LED13=P2^5;  
  13. void Delay(unsigned int a)  
  14. {
  15.      unsigned int i;
  16.      while(--a !=0)
  17.    {
  18.        for(i=0;i<600;i++);//延时约1毫秒
  19.    }
  20. }

  21. void main(void)
  22. {
  23.      while (1)
  24.    {
  25.        LED1=0;LED11=0;       //1个循环用时5秒
  26.        Delay(500);   
  27.        LED11=1;
  28.        Delay(500);
  29.        LED1=1;
  30.        Delay(500);
  31.        LED2=0;LED12=0;
  32.        Delay(500);
  33.        LED2=1;
  34.        Delay(500);
  35.        LED3=0;LED12=1;
  36.        Delay(500);
  37.            LED13=0;
  38.            Delay(1000);
  39.            LED13=1;
  40.            Delay(500);
  41.            LED3=1;
  42.    }
  43. }

  44. /************************************END*********************************************************/
复制代码

评分

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

查看全部评分

回复

使用道具 举报

5#
ID:123732 发表于 2016-10-19 16:42 | 只看该作者
测试.rar (451 Bytes, 下载次数: 6)
回复

使用道具 举报

6#
ID:123732 发表于 2016-10-19 16:45 | 只看该作者
我的思路:以500ms为最小时间单位,在时间轴上每过500ms查看是否有指令,没有则延时500没事继续向下查看,程序见附件

评分

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

查看全部评分

回复

使用道具 举报

7#
ID:86913 发表于 2016-10-20 22:50 | 只看该作者
先在这里谢谢各位,我想对刘先生的程序验证一下,因为我是新手,看不出来对与错,验证后再来感谢!
回复

使用道具 举报

8#
ID:86913 发表于 2016-10-21 12:55 | 只看该作者
本帖最后由 tmxk0574 于 2016-10-21 13:03 编辑

试了一下,好象不对,灯的亮灭与我的要求完全不一样。下面是LED灯亮灭的时序图
   希望各位行家再帮我改一改,非常感谢!




回复

使用道具 举报

9#
ID:123732 发表于 2016-10-21 22:06 | 只看该作者
少了最后一条关500ms,重新改了见附件

测试2.rar

450 Bytes, 下载次数: 4

回复

使用道具 举报

10#
ID:86913 发表于 2017-2-27 17:11 | 只看该作者
衷心感谢帮助我的朋友们,使我弄懂了这个问题,也感谢《51黑电子论坛》,给我这个学习的平台。愿朋友们快乐健康,愿《51黑电子论坛》发展、兴旺!
回复

使用道具 举报

11#
ID:111634 发表于 2017-2-27 22:04 | 只看该作者
P1、P2同时启动点亮LED1和LED11,没意义。P1、P2同时启动是1us,LED亮灯差别给人的感觉至少是数十ms。
回复

使用道具 举报

12#
ID:167037 发表于 2017-2-28 08:53 | 只看该作者
不错000000
回复

使用道具 举报

13#
ID:167066 发表于 2017-2-28 11:02 | 只看该作者
同时点亮只需对P1、P2进行操作,如果有特别的需要,可进行位操作P1.x、P2.x
回复

使用道具 举报

14#
ID:140906 发表于 2017-3-11 18:26 来自手机 | 只看该作者
菜鸟路过
回复

使用道具 举报

15#
ID:217754 发表于 2017-10-5 23:07 | 只看该作者
还是好人多呀。
回复

使用道具 举报

16#
ID:213173 发表于 2017-10-6 07:57 | 只看该作者
P2=P1=0xfe;
Delay(500);
P2=P1=0xff;
Delay(1000);
P2=P1=0xfd;
Delay(500);
P2=P1=0xff;
Delay(1000);
P2=P1=0xfb;
Delay(500);
P2=P1=0xff;
Delay(1000);
..............
回复

使用道具 举报

17#
ID:478073 发表于 2019-2-25 03:45 | 只看该作者

还是好人多呀!学的也多!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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