木有寸557

 

单片机 二极管的发光

#include<reg52.h>

sbit led1=P1^0;      // 声明P1口的第一位

void  main()

{

    led1=0;

}
           “  sbit  led1=P1^0  ”,  将P1口的最低位定义为led1。TX-1C实验板上,8个发光二极管的阴极通过一个71HC573锁存器分别连接至单片机的P1口,若要控制某个二极管发光,就要控制P1口的某位,必定要声明这一位,否则单片机不知道我们要操作什么东东。注意,这里的P一定要大写,因为在头文件中 “  sfr  P1=0x90 ”,把单片机内部地址为0x90处的寄存器命名为P1。
           “  led1=0   ”, 这是这个程序最核心的部分。在数字电路中电平只有2种状态,高电平 1;低电平 0。该语句的意思就是让P1口的最低位清0。那么板上的第一个二极管为什么会亮呢?  8个发光二极管的阴极通过锁存器与P1口的8个位相连,阳极串接电阻,阳极为高电平,当阴极位高电平时,二极管不会发光,所以只有P1口的第一位清0二极管才会发光。那么这个锁存器有什么目的呢?(关于锁存器下篇叙说) ,A/D芯片的数据输出端与单片机的P1口相连,当我们做A/D试验时,A/D芯片数据输出端的数据就会发生实时变化,若不加锁存器,二极管就会发生无规则闪动。为了在做A/D实验时,不影响二极管,我们在二极管与P1口之间加入一个锁存器用以隔离,当做A/D试验时,我们可以通过单片机将锁存器的锁存端关闭,此时无论P1口数据怎样变化,二极管也不会闪动。当我们做二极管实验时,,可将锁存端始终打开,也就是让锁存端处于高电平状态,而此时二极管就随P1口的状态而变化。 注意:在单片机一上电时,如果我们没有人为控制其I/O口的状态,它所有为控制的I/O口都将默认为高电平。
    对单片机P1口某个I/O口的控制可以对某个二极管的进行控制,当然我们也可以对其的8个I/O口同时进行控制。

#include<reg52.h>

void main()

{

    P1=0xaa;      // 十六进制 aa 转换成 二进制 是10101010,那么即表示P1^0=0,P1^1=1……第一三五七个二极管发光

}

posted on 2012-03-18 17:14  小猪_你快跑  阅读(658)  评论(0编辑  收藏  举报

导航