
开源协议
:GPL 3.0
创建时间:2024-12-20 03:04:37更新时间:2024-12-30 03:44:22
描述
项目简介
主控为stc89c52 ,驱动8颗3色灯和蜂鸣器
项目功能
通过控制彩灯的亮灭模拟鞭炮的光,通过蜂鸣器达到鞭炮的声。
项目参数
- stc89c52
- RGB 三色灯
- 压电式蜂鸣器
软件代码
蜂鸣器是4Khz 的频率。所以我们想让蜂鸣器鸣叫就让他切换的周期为1000000/4000/2=125us,软件工具生成
sfr P4=0XE8;
void Delay125us(void) //@12.000MHz
{
unsigned char data i;
i = 60;
while (--i);
}
void beep(void) //@12.000MHz
{
unsigned short i=4000;
while(i--)
{
P4=0;
Delay125us();
P4=0Xff;
Delay125us();
}
}
最终代码如下:
#include "reg52.h"
sfr P4=0XE8;
void Delay125us(void) //@12.000MHz
{
unsigned char data i;
i = 60;
while (--i);
}
void beep(void) //@12.000MHz
{
unsigned short i=4000;
while(i--)
{
P4=0;
Delay125us();
P4=0Xff;
Delay125us();
}
}
void Delay40ms(void) //@12.000MHz
{
unsigned char data i, j;
i = 78;
j = 207;
do
{
while (--j);
} while (--i);
}
void RED(void) //@12.000MHz
{
unsigned char i=0,j=32,k=0;
for(i=0;i<7;i++)
{
Delay40ms();
P0=~(0X01<i)
P0=0xff;
else
P0=~0x01;
}
}
P0=0xff;
beep();
}
void GREEN(void) //@12.000MHz
{
unsigned char i=0,j=32,k=0;
P1=0X80;
for(i=0;i<7;i++)
{
Delay40ms();
P1=~(0X01<i)
P1=0xff;
else
P1=~0x01;
}
}
P1=0xff;
beep();
}
void BLUE(void) //@12.000MHz
{
unsigned char i=0,j=32,k=0;
P3=0X80;
for(i=0;i<7;i++)
{
Delay40ms();
P2=~(0X01<i)
P2=0xff;
else
P2=~0x01;
}
}
P2=0xff;
beep();
}
void main()
{
while(1)
{
RED();
GREEN();
BLUE();
}
}
设计图

BOM


添加到专辑
0
0
分享
侵权投诉
评论