㈠ 51单片机设计呼吸灯
#include "reg51.h" //掘段包含头文件
#define uchar unsigned char
#define uint unsigned int
//**************************************************************************************************
//延时函判缺誉数
//**************************************************************************************************
delay(uint time) //int型数据为16位,所以最大值为65535
{
uint i,j; //定义变量i,j,用于循环语句
for(i=0;i<time;i++) //for循环,循环50*time次
for(j=0;j<50;j++); //for循环,循环50次
}
//**************************************************************************************************
//主函数
//**************************************************************************************************
void main() //主函数
{
uint i; //定义变亮i
while(1) //进入while死循环
{
for(i=0;i<200;i++) //for循环,实现LED由亮逐渐变暗
{
P0=0xff; //熄灭8位发光二极管
delay(i); //延时保持熄灭状态i个时间单位
P0=0x00; //点亮8位发光二极管
delay(200-i); //延时保持点亮状态200-i个时间单位
}
P0=0xff; //熄灭8位发光二极管
delay(5000); //延时保持熄灭状态5000个时间单位,使现象更明显
for(i=0;i<200;i++) //for循环,实现LED由暗逐渐变亮
{
P0=0x00; //点亮8位发光二极管
delay(i); //延时保持熄灭状态i个时间单位
P0=0xff; //熄灭8位发光二极管
delay(200-i); //延时保持点亮状态200-i个时间单位扮伍
}
}
}
㈡ 单片机制作呼吸灯的C语言程序怎样编写
#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=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;
an=0;
while (1) //主循环
{
LED0=1;
Delay(150000); //特意加延时,可以看到熄灭的过程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
㈢ 呼吸灯 没有效果。C语言 程序 有问题 求找错!
void Display (a) //显示函数 显示256帧中的一帧
{ //PORTA = 0x08; //亮(PA3高对应着发亮) //这里注释掉,看下你的LED灯会不会亮,如果不亮就是设备的派册启问题了,看下这个变量哪里用尘如到了。
Delay (a); //延时a的长度
PORTA = 0x00; //暗
Delay (255-a);//延时姿蠢总PWM长度减a
}
㈣ STC12C5A60S2制作呼吸灯C语言程序怎么写
呼吸灯的程序:
/****************************************************************************
功能:LED灯慢慢变暗,再慢慢变亮。
用定时器模拟的PWM调制。
单片机:AT89S52
******************************************************************************/
#include<reg52.h>
#defineV_TH00XFF//设定定时器0,高8位的初值
#defineV_TL00XF6//设定定时器0,低8位的初值
#defineV_TMOD0X01//设定定时器0的工作方式为:方式1(计数位数是16位//,由TL0作为低8位、TH0作为高8位)
#defineucharunsignedchar
#defineuintunsignedint
voidinit_sys();知握丛//系统初始化函数
voiddelay(uint);//延时函数
unsignedcharZKB;//占空比
voidmain(void)
{
init_sys();//初始化
while(1)
{
for(ZKB=5;ZKB<40;ZKB=ZKB+2)//每调节一次占空比,就延时大概8ms左右,这使得LED现象更明显
{
delay(8);
}
for(ZKB=40;ZKB>5;ZKB=ZKB-2)
皮芹{
delay(8);
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
voidinit_sys()/*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
voidtimer0(void)interrupt1using2
{
staticucharclick=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语言单片机制作呼吸灯的C语言程序怎么写,不要用定时器,用延时程序
一.51没有这样的功能,STC12单片机才有这样的功能,不过你可以用延时函数来产生PWM波形,但比喊配较浪费CPU时间。二.还有一种亩森方法可以用51来实现,但要消耗两个定时器,一个T0定时器控制PWM周期,另一个T1定时器控制PWM占空比。(T0装的初值要大于T1的初值)在定时器中断的时候都是对I/O口进行取反就可以了。一个定时器产迅渗亩生PWM波形,做不出来,要两个的(不过只赏0分太少了吧!!!)
㈥ 利用pwm做出呼吸灯(用定时器)并用串口每隔一秒打印亮度(百分比)于电脑上C语言程序怎么写
通过PWM占空比调节LED亮度,占空比的值就是亮度值(0%--100%)
定时器蠢厅基定时带谨1s,在定时器中断中使用串口发送数伏虚据
㈦ 单片机呼吸灯加流水灯C语言编程
做8个流水灯加一个呼吸灯比较容易,P1口接8个流水灯,察侍物8个LED负极接P1口,则P1口输出低电平有效。P3.7脚接一个开关作切换。谈念仿真图如下败液所示。