找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3585|回复: 3
收起左侧

单片机新手遇到问题,这些定义是干什么用的

[复制链接]
ID:699897 发表于 2020-2-28 23:15 | 显示全部楼层 |阅读模式
#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()
{
while(1)
{

        ENLED = 0;
        ADDR3 = 1;
        ADDR2 = 1;
        ADDR1 = 1;
        ADDR0 = 0;

        LED = 0;
}
        }





想问一下ENLED = 0;
        ADDR3 = 1;
        ADDR2 = 1;
        ADDR1 = 1;
        ADDR0 = 0;这些定义是干什么用的,而且为什么我老是下载不进程序,已经有单片机重启了,串口也对了

51hei图片20200228231223.png
回复

使用道具 举报

ID:235200 发表于 2020-2-29 02:08 | 显示全部楼层
在你未提供电路的情况下,我猜想
        ENLED = 0;
        ADDR3 = 1;
        ADDR2 = 1;
        ADDR1 = 1;
        ADDR0 = 0;
这些语句是控制一片74ls154的译码输出,该芯片是4-16译码器,可以控制选择16个不同的数码管动态显示
回复

使用道具 举报

ID:155507 发表于 2020-2-29 07:08 | 显示全部楼层
单片机是根据硬件电路图的设计来写代码的,所以我们不仅仅要学习编程知识,还有硬件知识,也要进一步的学习

2013668594594447 (1).jpg



那么我们在整体捋一遍点亮LED小灯的过程,首先看74HC138,我们要让LEDS6为低电平才能导通三极管Q16,所以ENLED = 0;ADDR3 = 1;保证74HC138使能。然后ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;这样保证了三极管Q16这个开关开通,5V电源加到LED上。

而74HC245左侧是通过P0口控制,我们让P0.0引脚等于0,就是DB_0等于0,而右侧DB0等于DB_0的状态,也是0,那么这样在这一排共8个LED小灯当中,只有最右侧的小灯和5V之间有压差,有压差就会有电流通过,有电流通过我们的LED2就会发光。



回复

使用道具 举报

ID:372579 发表于 2020-2-29 18:02 | 显示全部楼层
我是来学习的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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