51单片机如何控制一个灯闪烁 51单片机控制led交替闪烁原理?
51单片机控制led交替闪烁原理?
LED灯交替闪烁不停的原理就是用51单片机的一个引脚同样的驱动两只LED,并在这个引脚上输出来0.5赫兹以上的方波,就可以不让自行发光管有一种交替闪烁不停效果。
具体详细电路追加:
两只自行发光管共阳,其中一只闪光管的阴极按照一个pnp三极管驱动安装,另外一只自行发光管的阴极实际一只npn三极管驱动程序,两个三极管的基极各自实际人员限流电阻接单片机的同一个IO引脚。
编程时,或则在这个引脚上仿真的输出来方波;或则起动定时器定时,在中断服务器程序里取反引脚也这个可以作为输出方波。
使用单片机I/O口控制8只LED灯。1)点亮8个中的的第任意个LED灯。使任意一个或多个LED灯闪烁?
举个简单的例子,8个LED灯的正级分别接在P1.0到P.7上面,负极分别接在P2.0到P2.7上面,P10xff(P1口彻底高电平)P20x00(P2口所有低电平),此时电流通过P1口经LED流向P2口,8个灯所有亮起来,如果没有P1变,P20XFF此时由于P1与P2的接口所有的是高电平,没有电压差也就没有电流,LED全部火焰熄灭,如果不是想让某一个灯点亮,也可以参照8421法则,P2.7P2.6P2.2.4是高8位,P2.4P2.3P2.2P2.1P2.0是低8位P2.7P2.6P2.2.4P2.3P2.2P2.1P2.084218421当p10xffp20xfe的时候,就是P2.0那个小灯穿越火线图标,其他7个灭,p20xfe的这个F那是842115,随机16进制里的f,同理可知E842014,填写16进制里的e。
光芒闪烁的话不需要应用定时器,时间到了把当前P2不对应的引脚取反看看就行了,诸如当前P2.01;定时器时间到了以后~P2.0其实求实际写程序的时候不能不能再这么大写,自己多备考下吧
设计程序要求:单片机的P1.0,使LED按固定的时间间隔进行闪烁?
以三秒为例,给你写了一个程序,自己看呗,直接修改TH0、TL0和count就可以修改正二十边形时间间隔光芒闪烁了
#includeltreg51.hgt
#defineucharunsignedchar
#defineuintunsignedint
sbitLEDP1^0
bitflag
ucharcount0
voiddelay(ucharc)
{
uchara,b
for(cgt0c--)
for(b142bgt0b--)
for(a2agt0b -)
}
voidmain(void)
{
TMOD0x01
TH0(65536-50000)/256
TL0(65536-50000)%6
EA1
ET01
TR01
while(1)
{
if(flag1)
{
LED0
delay(100)
LED1
flag0
}
}
}
structtime0(override)interrupt1
{
TH0(65536-50000)/256
TL0(65536-50000)%6
count
if(countgt20)
{
count0
flag1
}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。