找回密码
 立即注册

QQ登录

只需一步,快速开始

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

小白问下自己写的点亮LED代码哪里错了

  [复制链接]
跳转到指定楼层
楼主
ID:654633 发表于 2019-12-2 20:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下
#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;
                ADDR3=1;
                ADDR2=1;
                ADDR1=1;
          ADDR0=0;
                LED=0;
                while(1);
               
       
               
               
               
}

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

使用道具 举报

沙发
ID:235200 发表于 2019-12-3 02:12 | 只看该作者
代码没错,关键是你的外围电路是否被控了,LED=0;要控制点亮,只有发光二极管的阴极接P0.0,而且有些单片机的P0口需外接上拉电阻
回复

使用道具 举报

板凳
ID:368352 发表于 2019-12-3 03:48 | 只看该作者
你用P0还是P1口呢
回复

使用道具 举报

地板
ID:155507 发表于 2019-12-3 06:40 | 只看该作者
给你改了一下试试
  1. #include <reg52.h>


  2. sbit LED=P0^0;
  3. sbit ADDR0=P1^0;
  4. sbit ADDR1=P1^1;
  5. sbit ADDR2=P1^2;
  6. sbit ADDR3=P1^3;
  7. sbit ENLED=P1^4;
  8. void main()
  9. {
  10.     ENLED=0;ADDR3=0;         //打开74HC138译码器(3线8线译码器)
  11.     ADDR2=1;ADDR1=1;ADDR0=0; //通过输入信号110使输出端LEDS6输入信号0

  12.         //ENLED=0;
  13.         //ADDR3=1;
  14.         //ADDR2=1;
  15.         //ADDR1=1;
  16.         //ADDR0=0;
  17.         LED=0;
  18.         while(1);
  19.        
  20. }

复制代码
回复

使用道具 举报

5#
ID:213173 发表于 2019-12-3 08:55 | 只看该作者
没有错,多了些赘句
#include <reg52.h>

sbit LED=P0^0;

void main()
{
        LED=0;
        while(1);
}
回复

使用道具 举报

6#
ID:437615 发表于 2019-12-3 10:30 来自手机 | 只看该作者
逻辑上说都没有错等于1就是高电平等于0就是低电平,问题是现在这些代码有没有达到你想要的样子,你想要什么样子如果没有实现,再看错在什么地方
回复

使用道具 举报

7#
ID:524818 发表于 2019-12-3 10:36 | 只看该作者
这个要看你的开发板是哪一种,有没有用译码器和缓冲器
回复

使用道具 举报

8#
ID:625113 发表于 2019-12-3 10:59 来自手机 | 只看该作者
代码没问题,关键要看你的led是怎么接的,是不是低电平就能驱动
回复

使用道具 举报

9#
ID:155507 发表于 2019-12-3 20:58 | 只看该作者
单片机程序是要针对相应的硬件环境的,你要控制点亮你的led,要有针对相应的硬件原理图

你原来的程序, 是对相应这样的硬件


http://www.51hei.com/bbs/dpj-19014-1.html

  1. #include<reg52.h>         //包含寄存器的库文件                  

  2. sbit  LED = P0^0;         //位地址声明,注意:sbit必须小写!

  3. sbit  ADDR0 = P1^0;

  4. sbit  ADDR1 = P1^1;

  5. sbit  ADDR2 = P1^2;

  6. sbit  ADDR3 = P1^3;

  7. sbit  ENLED = P1^4;



  8. void  main()

  9. {

  10.     unsigned int i = 0;



  11.     ENLED = 0;

  12.     ADDR0 = 0;

  13.     ADDR1 = 1;

  14.     ADDR2 = 1;

  15.     ADDR3 = 1;            //74HC138开启三极管   



  16.     while(1)              //程序死循环  

  17.     {

  18.            LED = 0;                //点亮小灯

  19.            for(i=0;i<30000;i++);  //延时一段时间

  20.            LED = 1;                //熄灭小灯

  21.            for(i=0;i<30000;i++);  //延时一段时间

  22.     }

  23. }
复制代码

回复

使用道具 举报

10#
ID:282850 发表于 2019-12-4 09:28 | 只看该作者
wulin 发表于 2019-12-3 08:55
没有错,多了些赘句
#include

,正解!
没有接触单片机时写过一些高级语言,为什么学MCU就要学这个程序,也正是这个程序,让我眼前一亮,明白了单片机的关键所在。经常在想,这是单片机最伟大的程序(没有之一)。
回复

使用道具 举报

11#
ID:475993 发表于 2019-12-4 12:10 | 只看该作者
编译上是没问题,剩下就是硬件了
回复

使用道具 举报

12#
ID:655944 发表于 2019-12-4 14:38 | 只看该作者
没什么错误
回复

使用道具 举报

13#
ID:641580 发表于 2019-12-4 19:14 | 只看该作者
没有错吧 烧入应该可以用啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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