单片机点亮LED灯程序中,为什么LED=0为亮,LED=1为灭?(含流水灯程序)

其实题目所说的并不是绝对的,这个是需要看外围电路的,不一定是输入低电平LED就会亮,首先我们要知道灯亮是因为两侧有电压差,当LED的正极接到VCC,负极接到单片机的P1.0上,当单片机的P1.0为高电平时,此时LED两端电压一样,电流不会流动,LED不会亮,只有当P1.0为低电平是,电流才会从VCC经过LED流向P1.0,再进过单片机内部形成回路,LED就会亮了,反之一样,当LED负极接GND,正极接P1.0,当P1.0置高电平时,LED也会亮,置于低电平时,LED不会亮。

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
void main()
{
	temp=0xfe;   
	P1=temp;    //表示第一个灯亮
	while(1)
	{
		temp=_crol_(temp,1);    //左移函数
		delay(600);    //延时
		P1=temp;
	}
}
void delay()  //延时函数
{
uint x,y;
for(x=100;x>0;X--)
	for(y=600;y>0;y--);
}

此时是当P1=0时灯亮;对于C51单片机语言,P1有其特定的含义,特指通用输入输出端口(GPIO)的第0组端口。也就是说,P1是和硬件芯片上的一组管脚,共计8个管脚相对应的。

我也是一个正在学习单片机的小白,希望我的笔记能给您带来帮助,如有错误也请指出,谢谢!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值