标题:
HC6800单片机实现呼吸灯源代码
[打印本页]
作者:
猪脚
时间:
2019-1-18 21:29
标题:
HC6800单片机实现呼吸灯源代码
用定时器实现的呼吸灯(内有原理图
)
单片机源程序如下:
#include <reg51.h>
#define ON 1
#define OFF 0
#define STANYBY 2
sbit EN1 = P2^0;
sbit EN2 = P1^5;
sbit K2 = P3^0;
sbit K3 = P3^2;
int pwm_val_left;
int push_led=1;
int dir=STANYBY;
unsigned int count=0;
void KeyScan(void);
void pwm_val_left_moto(void);
//延时函数
void delay_ms(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void main()
{
TMOD = 0x11;
EA = 1;
ET0 = 1;
ET1 = 1;
TH0 = 0xFC;
TL0 = 0x66;
TH1 = (65535-50000)/256;
TL1 = (65535-50000)%256;
TR0 = 1;
TR1 = 1;
while(1)
{
if(K2==0)
{
dir=ON;
}
if(K3==0)
{
dir=OFF;
}
}
}
void timer0()interrupt 1
{
TH0 = 0xFC;
TL0 = 0x66;
pwm_val_left++;
pwm_val_left_moto();
}
void pwm_val_left_moto(void)
{
if(dir==ON || dir == OFF)
{
if(pwm_val_left<=push_led)
{
EN1 = 0;
}
else
{
EN1 = 1;
}
if(pwm_val_left>=25)
pwm_val_left=0;
}
}
void timer1()interrupt 3
{
TH1 = (65535-50000)/256;
TL1 = (65535-50000)%256;
count++;
if(count%6)
{
if(dir == ON)
{
if(push_led<25)
push_led++;
}
else
{
if(push_led>0)
push_led--;
}
}
}
复制代码
所有资料51hei提供下载:
呼吸灯.zip
(263.45 KB, 下载次数: 7)
2019-1-18 21:28 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1