学习单片机
从点亮第一颗LED灯开始
这一节学堂,我们来学习如何点亮一LED灯
首先是电路设计以及点亮这颗LED的方法
我们把LED灯接在P1.0上,使用的是上拉接法,如图:
现在LED接好了,那么要怎样点亮LED呢?
观察我们的电路,这个电路里面LED的负极接在P1.0上,我们给P1.0写低电平的时候P1.0相当于一个负极,电流从LED正极流过,负极流出,LED导通,LED就点亮了
当我们给P1.0写高电平的时候,相当于LED两级都接上了正极,这时候LED不导通,所以LED就不能被点亮
这里可能有朋友会问,为何使用上拉接法,直接把LED的正极接在P1.0上,给P1.0写高电平LED导通就点亮,不好吗?
理论上这样电路设计和操作更加简便,但是由于C51的IO能提供的高电平电流很弱,如果把LED直接接在IO上,IO写高电平时提供的电流不足以点亮LED灯或者点亮的LED灯亮度很低
因此我们使用上拉接法,这样流过LED的电流就会更大,LED也就更亮
知道点亮LED就是给P1.0写高电平,那么要怎样才能操作P1.0呢?
这里我们就要操作C51的IO咯
在C51中,一共有四组IO:P0 P1 P2 P3
每一组IO有八只IO,一组IO在单片机内对应一个8位的寄存器,修改这个寄存器的值(0/1)单片机就能输出0/1了
在reg52.h里面,已经对这几组IO的寄存器地址进行了定义,我们要用的时候,可以直接使用关键字:P0,P1,P2,P3
我们可以对整组IO进行修改,只需要给他赋上一个八位十六进制数值即可
P1=0xFF;
也可以用sbit对一组IO中的一个IO定义一个名字,直接改变这个IO的0/1
比如说我们的LED接在P1.0,那么我给P1.0的IO定义一个叫LED的关键字
sbitLED = P1^0;
注意这里的格式
sbit名称 = IO组^IO标号;
P1.0对应的IO组是P1,P1上的.0,所以我们写作“P1^0”
一切准备就绪,上代码
下面是整个程序的代码
#include< reg52.h >sbit LED = P1^0;voidmian(){ LED =1;//复位LED状态,保证刚开始时候LED熄灭LED =0;//拉低LED的负极引脚,点亮我们的LEDwhile(1){}//执行到这里,结束}
上传程序,你会发现,LED点亮了!!
我们也可以对整个P1IO组进行操作,
熄灭LED灯的时候,我们给P1所有的IO都写上1,对应0xFF
P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
熄灭LED灯的时候,我们给P1.0单独写上0,对应0xFE
P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
#include< reg52.h >voidmian(){ P1 =0xFF;//复位LED状态,保证刚开始时候LED熄灭P1 =0xFE;//拉低LED的负极引脚,点亮我们的LEDwhile(1){} }
全部0条评论
快来发表一下你的评论吧 !