各位大神,我最近想做一个基于
单片机PWM功能的流星灯(水滴效果),可是看了一些资料,按着书上的程序做了一边还是不行。那灯亮度压根儿就没变,,,求正解啊。。。。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
sbit PWM=P0^1;
void delay(uchar i)
{
uchar j;
for(;i>0;i--)
{
for(j=29;j>0;j--)
_nop_();
_nop_();
}
}
void PWMout(uchar q)
{
PWM=1;
delay(q);
PWM=0;
delay(10-q);
}
void main()
{
while(1)
{
PWMout(0);
PWMout(1);
PWMout(2);
PWMout(3);
PWMout(4);
PWMout(5);
PWMout(6);
PWMout(7);
PWMout(8);
PWMout(9);
PWMout(10);
}
}
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
unsigned int count=800,i;
void delay(unsigned int t)
{
while(--t);
}
void shui()
{
P0 = 0xc0; //点亮LED
delay(i);//延时长度,600次循环中从1加至599
P0 = 0xff; //熄灭LED
delay(count-i);//延时长度,600次循环中从599减至1
}
void shuidi()
{
P0 = 0xff;
delay(60000);
for(i=1;i<count;i++) //i表示低 //电平时间,这个循环中低电平时长从1累加到count(周期)的值,即600次
shui();
P0 = 0x00;
for(i=count-1;i>0;i--) //与逐渐变亮相反的过程
shui();
}
void main ()
{
while (1) //主循环
{
P2 = 0x00;
shuidi();
}
}
一周热门 更多>