发作品签到
专业版

电子鞭炮

工程标签

204
0
0
2

简介

主控 stc89c52 rc ,控制8颗彩灯,并蜂鸣器鸣叫模拟鞭炮

简介:主控 stc89c52 rc ,控制8颗彩灯,并蜂鸣器鸣叫模拟鞭炮
”暖冬创趣迎新年“

开源协议

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

暂无BOM

附件

序号文件名称下载次数
1
demo.hex
2
2
demo.zip
3
3
演示视频.mp4
1
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航