微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助:实现51单片机P1口LED按依次点亮一个,两个,三个。...

求助:实现51单片机P1口LED按依次点亮一个,两个,三个。...

时间:10-02 整理:3721RD 点击:
实现51单片机P1口LED按依次点亮一个,两个,三个。我编了个程序,如下,怎么不行啊,知道的把正确的C程序给一个我,先说声谢谢了!
#include <reg52.h>
#include <math.h>
#define uint unsigned int   
#define uchar unsigned char
void delay(uint);
void main()  
{unsigned char n;
double i,j,k;
     while(1)
     {   n=0xff;       
                 for(i=0;i<8;i++)
                 {k=pow(2,i);
                 n=n-k;
                 P1=n;
         delay(60000);
                 }  
                 for(j=7;j>=0;j--)
                 {k=pow(2,j);
                 n=n+k;
         P1=n;
                 delay(60000);
                 }
                 }  
}
void delay(uint z)  
{
     uint x;  
     uchar y;
     for(x=z;x>0;x--);  
     for(y=20;y>0;y--);
}

没错啊,你看看你的led是否接对了。

你好歹加个注释吧!
假设单片机口为1时点亮LED灯,现在用个最笨的方法,P1口,
P1^1,P1^2,P1^3,P1^4,P1^5,P1^6,P1^7,P1^8依次
点亮1个灯时,P1=0000 0001=0x01;
点亮2个灯时:P1=0000 0011=0x03;
点亮3个灯时:P1=0000 0111=0x07;
点亮4个灯时,P1=0000 1111=0x0f;
点亮5个灯时:P1=0001 1111=0x1f;
点亮6个灯时:P1=0011 1111=0x3f;
点亮7个灯时,P1=0111 1111=0x7f;
点亮8个灯时:P1=1111 1111=0xff;
ok这样就可以依次赋值给P1口,这样不就可以了。
当然还有更简单的方法,你好好想想你上面那个赋值是不是对的,好好计算下

还有把你这部分的原理图贴出来看看

C看不懂。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top