ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

单片机(ISIS 7 Professional):简易LED警报灯代码项目

2022-02-07 20:33:02  阅读:212  来源: 互联网

标签:P2 12 ISIS SONG 159 警报灯 void 单片机 212


这一篇文章主要介绍用C语言制作一个按钮控制的简易LED警报灯。

设计思路:这里主要用到了一个新的东西,就是SOUNDER这个发声元件,它的工作原理是需要节拍表和频率表才能发出想要的音乐,网上可以找到其他的音乐我就不再多说了。还有顺时针旋转的警报灯。

基本电路图如下:

使用的代码如下:

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit key1 = P3^2;
sbit BEEP = P3^7;
//音乐音符频率表,不同频率由不同的延时来决定 	
uchar code SONG_TONE[] = {212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};
//音乐节拍表,节拍决定每个音符的演奏长短	
uchar code SONG_LONG[] = {9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,8,3,12,12,12,24,0};

//延时函数		 
void DelayMS(uint x)
{
	uchar t;
	while(x--)
	{
		for(t = 0;t < 120;t++);
	}
}
//播放函数		
void PlayMusic()
{
	uint i = 0,j,k;
	while(SONG_LONG[i] != 0 || SONG_TONE[i] != 0)
	{
		//播放各个音符,SONG_LONG为拍子长度		
		for(j = 0;j < SONG_LONG[i] * 20;j++)
		{
			BEEP =~ BEEP;
			//SONG_TONE延时表决定了每个音符的频率	
			for(k = 0;k < SONG_TONE[i] / 3;k++); 
		}
		DelayMS(10);
		i++;
	}
} 
void main()
{	
	//定时器初始化、中断源初始化、寄存器赋值	
	P2 = 0x00;
	TMOD = 0x01;
	TH0 = (65536-50000)/256;
	TL0 = (65536-50000)%256;
	EA = 1;
	ET0 = 1;							/*开启T0定时器*/ 	
	EX0 = 1;							/*开启外部中断INT0*/	 
	TMOD = 0x01;						/*T0定时最大65536*/		 
	TCON = 0x01;						/*设置边缘触发*/	
	while(1);
	
	BEEP = 0;
	while(1)
	{
		PlayMusic();					/*播放歌曲*/ 	
		DelayMS(500);					/*播放完后暂停一段时间*/	 
	}
}
void EX0_INT0() interrupt 0	
{
	TR0 =! TR0;
	if(P2 == 0x00)
	{
		P2 = 0xE0;
	}
	else
	{
		P2 = 0x00;
	}
} 
void T0_INT0() interrupt 1
{
	//重装初值 	
	TH0 = (65536-50000)/256;
	TL0 = (65536-50000)%256;
	P2 = _crol_(P2,1);
} 
/*仅供学习参考*/

标签:P2,12,ISIS,SONG,159,警报灯,void,单片机,212
来源: https://blog.csdn.net/MOKI36_/article/details/122814140

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有