找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

怎么改这个程序可以让单片机LED灯从中间往两边亮

查看数: 7051 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-9-6 20:12

正文摘要:

#include<reg52.h> sbit LED = P0^0; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() {         ENLED = 0;   &nbs ...

回复

ID:155507 发表于 2018-9-8 09:17
给你改了一下试试。

  1. #include<reg52.h>

  2. #define LEDPORT P0

  3. //sbit LED = P0^0;
  4. sbit ADDR0 = P1^0;
  5. sbit ADDR1 = P1^1;
  6. sbit ADDR2 = P1^2;
  7. sbit ADDR3 = P1^3;
  8. sbit ENLED = P1^4;

  9. unsigned char p[] = {
  10.         0x18, //00011000
  11.         0x24, //00100100
  12.         0x42, //01000010
  13.         0x81, //10000001
  14.         0x42, //01000010
  15.         0x24, //00100100
  16.         0x18  //00011000
  17. };

  18. //mS延时函数
  19. void DelayMs(unsigned int t)
  20. {
  21.         unsigned int i,j;
  22.         for(i=0;i<t;i++)
  23.                 for(j=0;j<148;j++);

  24. }


  25. void main()
  26. {
  27.         int i;
  28.         ENLED = 0;
  29.         ADDR3 = 1;
  30.         ADDR2 = 1;
  31.         ADDR1 = 1;
  32.         ADDR0 = 0;

  33.         //LED = 1;
  34.         while(1)
  35.         {
  36.                 for(i=0;i<6;i++)
  37.                 {
  38.                         LEDPORT = p[i];
  39.                         DelayMs(600); //延时600毫秒
  40.                 }
  41.         }
  42. }


复制代码
ID:357877 发表于 2018-9-7 21:30
allen2016 发表于 2018-9-7 08:15
你这是某开发板的吧,用数组,位移啥的可以。

嗯嗯  怎么操作
ID:301037 发表于 2018-9-7 11:01
定义了6个   但是不知道你这个原来咋亮的   
ID:384109 发表于 2018-9-7 10:19
这个要求就是走马灯了,程序里需要循环,因为需要点亮LED,再关闭LED,可以参考走马灯的程序,你的程序里是四个LED,最简单的做法就是先关闭所有LED,然后点亮ADDR2和ADDR1,延时一段时间,关闭ADDR2和ADDR1,点亮ADDR3和ADDR0,延时一段时间,关闭ADDR3和ADDR0,就可以达到你要的效果了
ID:394872 发表于 2018-9-7 10:03
需要你的电路原理图呢
ID:164602 发表于 2018-9-7 08:49
同学,你不给你的电路,我怎么帮你嘛。
单片机程序,一定、只能根据电路来进行,同样功能,不同电路,程序一定有区别的。
你想让灯从中间向两边亮,但看你的程序,灯涉及两个口,看不出哪个灯是中间的,哪个又是边上的,怎么编程呢?
ID:116893 发表于 2018-9-7 08:15
你这是某开发板的吧,用数组,位移啥的可以。
ID:394799 发表于 2018-9-6 23:26
LED口和ENLED口也连接LED吗?
ID:308784 发表于 2018-9-6 22:16
void main() {              ADDR2 = 1;         ADDR1 = 1;   delay();      ADDR0 = 1;ADDR3 = 1  ; delay();       LED = 1; ENLED = 1;        while(1); }

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

Powered by 单片机教程网

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