呼吸灯延时函数c语言 呼吸灯c语言程序

STC12C5A60S2制作呼吸灯C语言程序怎么写呼吸灯的程序:
/****************************************************************************
功能:LED灯慢慢变暗,再慢慢变亮 。
用定时器模拟的PWM调制 。
单片机:AT89S52
******************************************************************************/
#include reg52.h
#define V_TH00XFF//设定定时器0,高8位的初值
#define V_TL00XF6//设定定时器0,低8位的初值
#define V_TMOD 0X01//设定定时器0的工作方式为:方式1(计数位数是16位//,由TL0作为低8位、TH0作为高8位)
#define uchar unsigned char
#define uint unsigned int
void init_sys();//系统初始化函数
void delay(uint);//延时函数
unsigned char ZKB;//占空比
void main (void)
{
init_sys();//初始化
while(1)
{
for(ZKB=5;ZKB40;ZKB=ZKB+2)//每调节一次占空比,就延时大概8ms左右,这使得LED现象更明显
{
delay(8);
}
for(ZKB=40;ZKB5;ZKB=ZKB-2)
{
delay(8);
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=100;y0;y--);
}
void init_sys()/*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
void timer0(void) interrupt 1 using 2
{
static uchar click=0;//中断次数计数器变量
TH0=V_TH0;//重新恢复定时器初始值
TL0=V_TL0;
++click;//每计数10次,产生一个中断 , 并且click增加一个
if (click=100)
click=0;//计满一百次,这重新计数 。
/*因为计一次数的时间是1us , 10次产生一个中断,也就是一个中断10us 。100个中断为1ms 。
则,可以在这100个数中随便取值 , 用于表示占空比的多少,占空比的范围为(1~100)*/
if (click=ZKB)//当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整
P1=0x00;//P1口接的是LED灯
else
P1=0xff;
}
此程序的总中断时间为100ms,即频率为:100KHZ,占空比从5 变为40(即5%~25%) 。
单片机制作呼吸灯的C语言程序怎样编写?#include\x0d\x0asbit LED0=P0^0;\x0d\x0asbit wei=P1^1;\x0d\x0asbit duan=P1^0;\x0d\x0asbit lcden=P1^7;\x0d\x0asbit dianzhen=P1^3;\x0d\x0asbit leden=P1^2;\x0d\x0avoid Delay(unsigned int t);\x0d\x0avoid main (void)\x0d\x0a{\x0d\x0aunsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值\x0d\x0alcden=0;\x0d\x0aP0=0x00;\x0d\x0adianzhen=0;\x0d\x0aP0=0xff;\x0d\x0awei=0;\x0d\x0aduan=0;\x0d\x0awhile (1) //主循环\x0d\x0a{\x0d\x0aLED0=1;\x0d\x0aDelay(150000); //特意加延时,可以看到熄灭的过程\x0d\x0afor(PWM_LOW=1;PWM_LOW0;PWM_LOW--)\x0d\x0a{\x0d\x0aLED0=0;\x0d\x0a \x0d\x0aDelay(PWM_LOW);\x0d\x0a \x0d\x0aLED0=1;\x0d\x0a\x0d\x0aDelay(CYCLE-PWM_LOW);\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0avoid Delay(unsigned int t)\x0d\x0a{\x0d\x0awhile(t--);\x0d\x0a}
单片机制作呼吸灯的C语言程序怎样编写#includereg51.h
sbit LED0=P0^0;
sbit wei=P1^1;
sbit duan=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
duan=0;
while (1) //主循环
{
LED0=1;
Delay(150000); //特意加延时,可以看到熄灭的过程
for(PWM_LOW=1;PWM_LOWCYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}

推荐阅读