实验二 扬声器实验
一、实验目的
1.掌握扬声器的硬件电路;
2.掌握扬声器的程序编写和如何让扬声器发出不同的声音。
二、实验说明
LM386引脚说明如图2-1 LM386引脚介绍
LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点的功率放大器,广泛应用于录音机和收音机之中。
引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地
之间接旁路电容,通常取10μF。
图2-1 LM386引脚介绍
本实验是利用单片机控制扬声器产生七音符,单片机STC12C5A60S2的PCA/PWM时钟输出方式输出高速脉冲,脉冲经放大滤波后,驱动扬声器发声。声音的频率由定时常数决定,声音的长短由定时器T0控制。实验只给出7个音频的程序。
三、实验内容及步骤
内容:
单片机最小系统单元的P1.3口发出高速脉冲,用信号线连接P1.3口与语音系统单元的VIN口,程序功能使扬声器循环发出七音符,同时利用可调电阻调节声音的大小。
步骤:
1、 根据硬件连接电路,编写程序并编译生成*.hex文件;
2、 打开实验箱电源;
3、 参照STC12C5A60S2下载说明中STC_ISP软件使用说明,给单片机下载程序;
4、 用信号线连接单片机最小系统单元的P1.3与语音系统单元的VIN口;
5、 打开语音系统单元开关;
6、听到扬声器会循环发出七音符,同时利用可调电阻器调节声音的响度。若结果不正确,请修改该程序,重复以上操作。
1 #include <reg51.h> 2 3 sfr CCON = 0xD8; 4 sbit CCF0 = CCON^0; 5 sbit CCF1 = CCON^1; 6 sfr CMOD = 0xD9; 7 sfr CL = 0xE9; 8 sfr CH = 0xF9; 9 sfr CCAPM0 = 0xDA; 10 sfr CCAP0L = 0xEA; 11 sfr CCAP0H = 0xFA; 12 sbit CR = CCON^6; 13 sbit CF = CCON^7; 14 15 unsigned char TABLE[]={ 16 0x1A,0x29,0x47,0x25,0x8F,0x20,0x0CC,0x1E,0x81,0x1B,0x0EA,0x17,0x9F,0x15 17 }; 18 19 unsigned char time0_cnt; 20 unsigned char data_cnt; //取值为0~6,其中0代表 DO音. 21 unsigned int temp; // 用来装载间隔时间16位. 22 23 void main( void ) 24 { 25 SP = 0x64; 26 time0_cnt = 15; 27 temp = 0x291A; 28 TMOD = 1; 29 30 CCON = 0; 31 CL = 0 ; 32 CH = 0 ; 33 CMOD = 2; 34 35 CCAP0L = 0x1A; 36 CCAP0H = 0x29; 37 CCAPM0 = 0x4D; 38 data_cnt = 1; 39 40 CR = 1; 41 EA = 1 ; 42 ET0 = 1; 43 TR0 = 1; 44 45 while(1); 46 } 47 48 void T0_int(void) interrupt 1 49 { 50 time0_cnt -- ; 51 52 if( time0_cnt == 0 ) { 53 time0_cnt = 15; 54 55 data_cnt = ( data_cnt + 1 ) % 7 ; 56 temp = TABLE[data_cnt*2+1]; 57 temp <<= 8 ; 58 temp += TABLE[data_cnt*2]; 59 } 60 } 61 62 void PCA_INT(void) interrupt 7 63 { 64 unsigned int temp1 ; 65 CCF0 = 0; 66 67 temp1 = (CCAP0H << 8); 68 temp1 = temp1 + CCAP0L ; 69 70 temp1 += temp; 71 72 CCAP0L = temp1&0xff; 73 CCAP0H = ((temp1&0xff00)>>8); 74 }