基于51单片机的无线遥控门铃仿真程序原理图设计

硬件设计

(末尾附文件)

原理图: 包含了发射和接收部分
在这里插入图片描述
仿真图:发射部分用按键模拟
在这里插入图片描述

程序设计

//
//51单片机无线遥控门铃程序
//
#include<REG51.H>
#define sound_amount 5 //歌曲的数量
sbit pause=P2^5;       //播放\暂停
sbit speaker=P2^7;     //无源蜂鸣器
//
unsigned char timer0h,timer0l,time;//timer0h,timer0l为定时器T0的高低位初值,time为对应的节拍时间
unsigned char music_num,num;       //music_num为歌曲编号,music_num=0表示刚开机时的状态,num是查找歌曲数据表的地址
signed char fre;                   //对应频率数据表的地址
bit play_enable;                   //歌曲播放的使能标志位,用于播放\暂停
void delay(unsigned char t);	   //延时子函数,控制发音的时间长度
void delayms(unsigned int t);	   //普通延时子程序,可用于按键消抖
void song(void);		           //演奏一个音符
void music_play(void);	           //播放歌曲
//
//每三个数字,代表一个音符
//第一个数字是音符的数值1234567之一(第几个音),代表哆来咪发...
//第二个数字是0123之一,代表低音\中音\高音\超高音(第几个八度)
//第三个数字是时间长度,以半拍为单位,乐曲数据表的结尾是三个0
//
//《祝你生日快乐》
unsigned char code song1[]={
     5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,
     5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,
     5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,
     4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4, 0,0,0};

//《世上只有妈妈好》
unsigned char code song2[]={
     6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1,
	 //6,2,3代表6,中音,3个半拍;
	 //5,2,1代表5,中音,1个半拍;
	 //3,2,2代表3,中音,2个半拍;
	 //5,2,2代表5,中音,2个半拍;
	 //1,3,2代表1,高音,2个半拍;
	 //...
     5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 
	 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 
	 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0};

//《当你孤单你会想起谁》
unsigned char code song3[]={
     3,2,2, 3,2,1, 4,2,1, 3,2,2, 2,2,1, 1,2,1,  2,2,2, 5,2,2, 2,2,2, 2,2,3,
	 1,2,2, 1,2,1, 2,2,1, 1,2,2, 7,1,1, 6,1,1, 7,1,2, 3,2,2, 7,1,2, 7,1,3, 
	 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,2, 5,1,2, 2,2,1, 3,2,1, 2,2,1, 
	 1,2,1, 6,1,2, 6,1,2, 2,2,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 7,1,1, 1,2,6, 0,0,0 };

//《乡间小路》
unsigned char code song4[]={
     3,1,2, 3,1,1, 3,1,1, 6,0,1, 6,0,1, 1,1,2,
     6,0,1, 5,0,1, 6,0,4, 6,0,2, 6,0,1 ,6,0,1, 6,0,2, 6,0,1, 1,1,1, 
     2,1,2, 2,1,1, 3,1,1, 2,1,4, 3,1,1, 3,1,1, 3,1,1, 2,1,1, 4,1,2,
     4,1,2, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 7,0,1, 7,0,1, 7,0,1, 6,0,1, 
     5,0,1, 5,0,1, 6,0,1, 7,0,1, 7,0,1, 6,0,1, 5,0,1, 6,0,4, 6,1,2,
     3,1,1, 6,1,1, 7,1,1, 6,1,1, 5,1,1, 5,1,2, 5,1,1, 2,1,1, 5,1,1, 
     6,1,1, 5,1,1, 4,1,1, 4,1,2, 4,1,1, 3,1,1, 2,1,2, 1,1,1, 2,1,1, 
     3,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,4, 6,1,2, 3,1,1, 6,1,1, 7,1,1, 
	 6,1,1, 5,1,1, 5,1,2, 2,1,1, 5,1,1, 6,1,1, 5,1,1, 4,1,1, 0,0,0};     

//《送别》
unsigned char code song5[]={
     5,1,2, 3,1,3, 5,1,1, 1,2,3, 6,1,2, 1,2,2, 
     5,1,4, 5,1,2, 1,1,1, 2,1,1, 3,1,2, 2,1,1, 1,1,1, 2,1,4, 5,1,2, 
	 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 5,1,4, 5,1,2, 2,1,1, 
	 3,1,1, 4,1,2, 7,0,1, 1,1,4, 6,1,2, 1,2,2, 1,2,4, 7,1,2, 6,1,1,
	 7,1,1, 1,2,4, 6,1,1, 7,1,1, 1,2,1, 6,1,1, 6,1,1, 5,1,1, 3,1,1, 
	 1,1,1, 2,1,8, 5,1,2, 3,1,1, 5,1,1, 1,2,2, 7,1,1, 6,1,2, 1,2,2, 
	 5,1,4, 5,1,2, 2,1,1, 3,1,1, 4,1,2, 7,0,2, 1,1,4, 0,0,0};


// 频率-半周期数据表 高八位  共保存了四个八度的28个频率数据
unsigned char code FREQH[]={
    0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,    //低音1234567
    0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
    0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            //高音 234567
    0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};   //超高音 1234567

// 频率-半周期数据表 低八位
unsigned char code FREQL[]={
    0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,    //低音1234567
    0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i
    0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,             //高音 234567
    0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};   //超高音 1234567  

void main(void)
{
	TMOD=0x11; //T0 T1 均在工作方式1
	ET0=1;  //T0开中断
	EA=1;   //CPU开中断	 
	while(1)
	{
		music_play();	//根据当前状态播放相应歌曲的某个音符

		if(!pause)		//暂停键处理
		{
		delayms(5);
		if(!pause)
		{
			if(music_num==0)    //music_num=0只有在刚开机,且未按下暂停键时存在,表示刚开机时的状态,按下后从第一首开始播放
			{
				music_num=1;    //歌曲序号置1
				num=0;	        //从头播放
				play_enable=1;	//允许播放
			}
			else
			{
				play_enable=~play_enable;
			    speaker=1;
			}
			while(!pause)	 //若按着暂停键不放手时的处理
			{
			if(play_enable==0){}	        //如果是暂停,则显示时间不变//(暂停时play_enable==0)
			}

		  }//暂停键处理结束
	}//while结束
	}
} 

void delayms(unsigned int t)	   //MS延时子程序
{
	unsigned int i,j;
	for(i=0;i<t;i++)
	{
		for(j=0;j<123;j++)
			;
	}
}

void delay(unsigned char t)	    //延时子函数,控制发音的时间长度,每个节拍0.4S
{
	unsigned char t1;
	unsigned long t2;
	for(t1=0;t1<t;t1++)	       //嵌套循环, 共延时t个半拍
	{
    	for(t2=0;t2<8000;t2++) //延时期间, 可进入T0中断去发音
        {
        	;
        }
	}
	TR0=0;		               //关闭T0, 停止发音
}

void timer0(void) interrupt 1  //T0中断程序,控制发音的音调
{
	speaker=!speaker;//输出方波, 发音
	TH0=timer0h;	 //下次的中断时间,这个时间控制音调高低
	TL0=timer0l;
 }

.

文件仅供参考:
链接:https://pan.baidu.com/s/1emnHoMjtyDn0Y5GKofWDeA
提取码:8lqo

.

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
(文件太大无法上传全部,下载的是网盘链接(内含全部文件)!!!)部分资料清单: 0001、PC 机与单片机通信(RS232 协议) 0002、C与VB语言联合在proteus上仿真 0003、IC卡读写仿真 0004、Integrate就医服务平台论文 0005、PC红外线遥控器上位机及电路图 0006、PLC电梯控制系统论文 0007、VB上位机程序控制DS1302时钟的proteus仿真 0008、VB上位机与18b20下位机 0009、八路扫描式抢答器设计论文 0010、比较全面的手机原理资料 0011、采用实时时钟芯片DS1302+AT89C2051的红外遥控LED电子钟 0012、51单片机超声波测距程序 0013、单片机C语言程序设计实训100例——基于8051+Proteus仿真 0014、电机转速测量系统论文 0015、多功能出租车计价器设计论文资料 0016、多功能数字时钟设计论文资料 0017、肺活量测量仪设计论文资料 0018、高保真音响设计制作论文资料 0019、高灵敏无线探听器电路资料 0020、给初学51单片机的40个实验汇编语言对应C语言加说明 0021、国旗升降系统程序原理图资料 0022、基于51单片机的电子万年历的设计论文资料 0023、基于51单片机的数字频率计设计论文资料 0024、基于AVR及无线收发模块的脉搏监测系统设计论文资料 0025、基于CPLD的三相多波形函数发生器设计论文资料 0026、基于DDS的信号源设计论文资料 0027、基于FPGA多通道采样系统设计论文资料 0028、基于GSM短信模块的家庭防盗报警系统论文资料 0029、基于IGBT的变频电源设计论文资料 0030、基于PLL信号发生器的设计论文资料 0031、基于PSTN的家用电器远程控制系统设计论文资料 0032、基于USB的经络信号的检测系统与设计论文资料 0033、基于USB接口的温度控制器设计资料 0034、基于单片机的电集中抄表设计论文资料 0035、基于单片机的简易逻辑分析仪设计论文资料 0036、基于单片机的数字温度计设计论文资料 0037、基于单片机的数字钟设计论文资料 0038、基于单片机的水温控制系统PDF资料 0039、基于单片机的水温控制系统设计论文资料 0040、基于单片机的作息时间控制钟系统资料 0041、基于单片机的温度控制系统论文资料 0042、基于单片机控制的交通灯毕业设计资料 0043、基于单片机控制的开关电源论文资料 0044、基于网络的虚拟仪器测试系统论文资料 0045、家用音响设计制作论文资料 0046、具有定时功能的八路数显抢答器的设计论文 0047、开关电源论文资料 0048、自来水厂全自动恒压供水监控系统论文资料 0049、量程自动切换数字电压表proteus仿真+程序资料 0050、牧场智能挤奶与综合信息管理系统论文资料 0051、汽车实验台电路控制系统论文 0052、汽车尾灯控制电路设计论文资料 0053、抢答器论文及其proteus仿真资料 0054、全遥控数字音量控制的D 类功率放大器论文资料 0055、ATMEGA16单片机实现的数控频率计原理图及其程序论文 0056、数控云台proteus仿真+程序资料 0057、AT89S52单片机实现数控直流电流源论文资料 0058、AT89S52单片机数控直流电源原理图程序资料 0059、数控直流稳压电源完整论文资料 0060、数控直流稳压电源proteus仿真+程序资料 0061、数字示波器的制作 0062、数字式调频收音机设计论文资料 0063、数字式秒表文档论文资料 0064、数字万年历设计论文资料 0065、数字温度计设计论文资料 0066、水库控制系统设计论文资料 0067、同步电机模型的MATLAB仿真论文资料 0068、危险气体泄露报警器设计论文资料 0069、微型打印机控制电路的设计论文资料 0070、温度监控系统的设计论文资料 0071、温度控制系统设计论文资料 0072、无线调频发射器的设计论文资料 0073、无线视频监控系统设计毕业论文资料 0074、无线鼠标设计论文资料 0075、无线数据收发系统毕业论文资料 0076、无线遥控盆腔治疗仪论文资料 0077、无线遥控设计资料 0078、无线语音遥控智能车论文资料 0079、消防智能电动车设计与制作论文资料 0080、悬挂运动控制系统论文资料 0081、遥控系统的设计资料 0082、液体点滴速度监控装置资料 0083、一种智能频率计的设计与制作(AVR)proteus仿真+程序资料 0084、音频信号分析仪毕业设计论文资料 0085、应用电子、继电线路设计论文资料 0086、用单片机实现温度远程显示论文资料 0087、远程温度控制系统毕业
第一章:AVR单片机C语言程序设计概述 1.1 AVR单片机简介 1.2 AVR Studio+WinAVR开发环境安装及应用 1.3 AVR-GCC程序设计基础 1.4 程序与数据内存访问 1.5 I/O端口编程 1.6 外设相关寄存器及应用 1.7 中断服务程序 1.8 GCC在AVR单片机应用系统开发中的优势 第二章:PROTEUS操作基础 2.1 PROTEUS操作界面简介 2.2 仿真电路原理图设计 2.3 元件选择 2.4 仿真运行 2.5 PROTEUS与AVR Studio的联合调试 2.6 PROTEUS在AVR单片机应用系统开发中的优势 第三章:基础程序设计 3.1 闪烁的LED 3.2 左右来回的流水灯 3.3 花样流水灯 3.4 LED模拟交通灯 3.5 单只数码管循环显示0~9 3.6 8只数码管滚动显示单个数字 3.7 8只数码管显示多个不同字符 3.8 K1~K4控制LED移位 3.9 数码管显示4×4键盘矩阵按键 3.10 数码管显示拨码开关编码 3.11 继电器控制照明设备 3.12 开关控制报警器 3.13 按键发音 3.14 INT0中断计数 3.15 INT0及INT1中断计数 3.16 TIMER0控制单只LED闪烁 3.17 TIMER0控制的流水灯 3.18 TIMER0控制数码管扫描显示 3.19 TIMER1控制交通指示灯 3.20 TIMER1与TIMER2控制十字路口秒计时显示屏 3.21 用工作于计数方式的T/C0实现100以内的按键计数 3.22 用定时器设计门铃 3.23 报警器与旋转灯 3.24 100000秒以内的计时程序 3.25 用TIMER1输入捕获功能设计的频率计 3.26 用工作于异步模式的T/C2控制的可调式数码管电子钟 3.27 TIMER1定时器比较匹配中断控制音阶播放 3.28 用TIMER1输出比较功能调节频率输出 3.29 TIMER1控制的PWM脉宽调制器 3.30 数码管显示两路A/D转换结果 3.31 模拟比较器测试 3.32 EEPROM读写与数码管显示 3.33 Flash程序空间中的数据访问 3.34 单片机与PC机双向串口通讯仿真 3.35 看门狗应用 第四章:硬件应用 4.1 74HC138与74HC154译码器应用 4.2 74HC595串入并出芯片应用 4.3 用74LS148与74LS21扩展中断 4.4 62256扩展内存 4.5 用8255实现接口扩展 4.6 可编程接口芯片8155应用 4.7 可编程外围定时计数器8253应用 4.8 数码管BCD解码驱动器7447与4511应用 4.9 8×8LED点阵屏显示数字 4.10 8位数码管段位复用串行驱动芯片MAX6951应用 4.11串行共阴显示驱动器MAX7219与7221应用 4.12 16段数码管演示 4.13 16键解码芯片74C922应用 4.14 1602字符液晶测试程序 4.15 1602液晶显示DS1302实时时钟 4.16 1602液晶工作于四位模式实时显示当前时间 4.17 2×20串行字符液晶演示 4.18 LGM12864液晶显示程序 4.19 PG160128A液晶图文演示 4.21 TG126410液晶串行模式演示 4.21 用带SPI接口的MCP23S17扩展16位通用IO端口 4.22 用TWI接口控制MAX6953驱动4片5×7点阵显示器 4.23 用TWI接口控制MAX6955驱动16段数码管显示 4.24 用DAC0832生成多种波形 4.25 用带SPI接口的数模转换芯片MAX515调节LED亮度 4.26 正反转可控的直流电机 4.27正反转可控的步进电机 4.28 DS18B20温度传感器测试 4.29 SPI接口温度传感器TC72应用测试 4.30 SHT75温湿度传感器应用 4.31 用SPI接口读写AT25F1024 4.32 用TWI接口读写24C04 4.33 MPX4250压力传感器测试 4.34 MMC存储卡测试 4.35 红外遥控发射与解码仿真 第五章:综合设计 5.1 多首电子音乐的选播 5.2 电子琴仿真 5.3 普通电话机拨号键盘应用 5.4 手机键盘仿真 5.5 数码管模拟显示乘法口诀 5.6 用DS1302与数码管设计的可调电子钟 5.7 用DS1302与LGM12864设计的可调式中文电子日历 5.8 用PG12864LCD设计的指针式电子钟 5.9 高仿真数码管电子钟 5.10 1602LC
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页