首先搞清LED管是高电平导通还是低电平导通。
如果是低电平导通,P2赋0x00时,发光管全亮,0xff时,全灭。
具体程序:
#define uint unsigned int
#define uchar unsigned char
void delay(uint time_out)
{
uint i,j;
for(i=0;i<time_out;i++)
{
for(j=0;j<110;j++)
{;}
}
}
void main(){
while(1)
{
P2=0xfe; //第1个管亮
delay(500);
P2=0xfd; //第2个管亮
delay(500);
P2=0xfb; //依次类推
delay(500);
P2=0xf7;
delay(500);
P2=0xef;
delay(500);
P2=0xdf;
delay(500);
P2=0xbf;
delay(500);
P2=0x7f;
delay(500);
}
}
程序大致如此,delay函数负责延迟500ms有问题自己再调试调试
今天做回好人,闲着给你写一个做参考。
按键按一次LED灯灭,在按一次按键LED灯亮。
程序如下:
/
#include "REG52H"
sbit LED1_01 = P1^1; //LED灯
sbit KEY0_01 = P1^2; //按键
void Delay_1ms(unsigned int Time)
{
unsigned int x, y;
for(x = Time; x > 0; x--)
for(y = 120; y > 0; y--);
}
int main(void)
{
LED1_01 = 1; //打开LED灯点亮
while(1)
{
if(KEY0_01 == 0) //检测按键是否按下
{
Delay_1ms(10); //延时去抖动
if(KEY0_01 == 0) //确定按键按下
{
LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 灭 ]
}
while(KEY0_01 == 0); //检测松手
}
}
}
/
这是只是百点亮P1口的程序
#include<reg51h>
void
main()
{
while(1)
{
p1=0x00;
}
}
这是闪烁度P1口回程序
#include<reg51h>
void
delay(unsigned
int
i)
//延时函数
{
unsigned
int
k;
for(k=0;k<i;k++);
}
void
main()
//主函数
{
while(1)
//循环函数
{
P1=0x00;
//点亮P1口
delay(2000);
//延时
P1=0xff;
//熄灭P1口
delay(200);
//延时
}
}
纯手打,答对你有帮助的话请采纳
谢谢
以上就是关于画出一个仿真图,让p2口接8个LED发光二极管,并书写一道程序,让LED灯做亮灭闪烁每一秒闪烁一次全部的内容,包括:画出一个仿真图,让p2口接8个LED发光二极管,并书写一道程序,让LED灯做亮灭闪烁每一秒闪烁一次、单片机编程:LED发光二极管的初始状态为亮。按一下按键,LED灯灭。再按一下,LED亮,用C语言编程该怎么写、利用89C51单片机的P1口控制8个发光二极管LED编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)