当前位置: 首页 > news >正文

深圳福田专业网站建设成都住建局官网e蓉

深圳福田专业网站建设,成都住建局官网e蓉,中国工程建筑网,如何判断网站数据库类型25. 蜂鸣器 25.1. 蜂鸣器介绍 •蜂鸣器是一种将电信号转换为声音信号的器件#xff0c;常用来产生设备的按键音、报警音等提示信号 •蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器#xff08;开发板上用的无源蜂鸣器#xff09; •有源蜂鸣器#xff1a;内部自带振荡源常用来产生设备的按键音、报警音等提示信号 •蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器开发板上用的无源蜂鸣器 •有源蜂鸣器内部自带振荡源将正负极接上直流电压即可持续发声频率固定 •无源蜂鸣器内部不带振荡源需要控制器提供振荡脉冲才可发声调整提供振荡脉冲的频率可发出不同频率的声音 25.2. 驱动电路 三极管驱动 集成电路驱动开发板ULN2003DProteus有器件开发板BZ接P2^5引脚。 25.3. ULN2003 25.4. 键盘与音符对照 图片中所示为钢琴键盘一部分中央c1b1为一组低1音阶7个白键5个黑键此图显示4组c2b2为一组低2音阶cb为一组正常音阶CB为一组高一音阶c1右侧黑键为c1#高半也可表示为b d1低半 25.5. 简谱-小星星简单识谱 左上角1C4/4表示C调每节4拍每1/4拍为一个音符6 6 5 -5右侧-表示5音占2个1/4拍以下同理 25.6. 简谱-天空之城 左上角1D4/4表示D调每节4拍每1/4拍为一个音符假定一拍500ms6 7带下划线代表6 7为一拍一个音符就是250mm1上有一点表示高音阶右侧有一点表示1.5拍为750ms77带上圆括号的表示这2个音符连音即250ms250ms500ms 25.7. 音符与频率对照 PPT中的图片整理为如下表格 音符频率计算频率/2频率/2的取整备注低音1261.6255653130.8127827131低音1#277.182631138.5913155139低音2293.6647679146.832384147低音2#311.1269837155.5634919156低音3329.6275569164.8137785165低音4349.2282314174.6141157175低音4#369.9944227184.9972114185低音5391.995436195.997718196440/2^(2/12)低音5#415.3046976207.6523488208440/2^(1/12)低音6440220220基准频率低音6#466.1637615233.0818808233440*2^(1/12)低音7493.8833013246.9416506247440*2^(2/12)中音1523.2511306261.6255653262中音1#554.365262277.182631277中音2587.3295358293.6647679294中音2#622.2539674311.1269837311中音3659.2551138329.6275569330中音4698.4564629349.2282314349中音4#739.9888454369.9944227370中音5783.990872391.995436392中音5#830.6093952415.3046976415中音6880440440中音6#932.327523466.1637615466中音7987.7666025493.8833013494高音11046.502261523.2511306523高音1#1108.730524554.365262554高音21174.659072587.3295358587高音2#1244.507935622.2539674622高音31318.510228659.2551138659高音41396.912926698.4564629698高音4#1479.977691739.9888454740高音51567.981744783.990872784高音5#1661.21879830.6093952831高音61760880880高音6#1864.655046932.327523932高音71975.533205987.7666025988 26. 蜂鸣器播放提示音音乐 26.1. 第一个测试程序功能是实现4个独立按键在按下并松开后8位数码管显示相应的按键的数值1~4没有按下的时候显示0需要用到之前的模块程序Four_Key针对独立按键操作以及nixietube针对8位数码管显示26.2. 程序定义蜂鸣器的引脚P25貌似按照开发板原理图P15不正确实物开发板蜂鸣器不响因为蜂鸣器有声音需要500Hz左右的频率周期2ms因此定义Buzzer每隔1ms切换一次高低电平并持续1ms即可模拟周期2ms500Hz的蜂鸣器声音频率26.3. Proteus中暂时还么有找到仿真无源蜂鸣器的方法暂时只能放上程序用实物开发板进行测试 #include REGX52.h #include delay_xms.h #include Four_Key.h #include nixietube.hsbit BuzzerP2^5; unsigned char KeyNum; unsigned int i;void main() {NixieTube(1,0);while(1){KeyNumFour_Key();if(KeyNum){for(i0;i500;i){Buzzer!Buzzer;delay_xms(1);}NixieTube(1,KeyNum);}}} nixietube数码管显示程序的后2句需要注释掉因为目前测试程序数码管为静态显示无需刷新 #include REGX52.H //因为该程序调用REGX52.H所以要添加 #include delay_xms.h //因为该程序调用delay_xms.h所以要添加unsigned char NixieTable[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void NixieTube(unsigned char Location,Number) {switch(Location){case 1:P2_41;P2_31;P2_21;break;case 2:P2_41;P2_31;P2_20;break;case 3:P2_41;P2_30;P2_21;break;case 4:P2_41;P2_30;P2_20;break;case 5:P2_40;P2_31;P2_21;break;case 6:P2_40;P2_31;P2_20;break;case 7:P2_40;P2_30;P2_21;break;case 8:P2_40;P2_30;P2_20;break;}P0NixieTable[Number];//数码管消影因为位选-段选-位选-段选段选数据与位选穿位导致//delay_xms(1); //数码管稳定显示1ms蜂鸣器提示音实验无需延时//P00x00;//清零蜂鸣器提示音实验无需清零静态显示 }26.4. 在上述程序基础上对程序进行模块化处理生成一个Buzzer.c与Buzzer.h的模块化程序 #include REGX52.H #include INTRINS.Hsbit BuzzerP2^5; //蜂鸣器端口 /*** brief 蜂鸣器延时函数延时500us* param 无* retval 无*/void Buzzer_Delay500us(void) //12.000MHz {unsigned char data i;_nop_();i 247;while (--i); }/*** brief 蜂鸣器鸣响函数* param ms发声的时长毫秒* retval 无*/void Buzzer_Time(unsigned int ms) {unsigned int i;for(i0;ims*2;i){Buzzer!Buzzer;Buzzer_Delay500us();}}Buzzer.h的文件如下 #ifndef _BUZZER_H_ #define _BUZZER_H_ void Buzzer_Time(unsigned int ms); //调用函数使蜂鸣器响ms毫秒#endifmain.c程序修改如下 #include REGX52.h #include Four_Key.h #include nixietube.h #include Buzzer.hunsigned char KeyNum;void main() {NixieTube(1,0);while(1){KeyNumFour_Key();if(KeyNum){Buzzer_Time(100);NixieTube(1,KeyNum);}}} 26.5. 因为不同的声音频率对应不同的音符以440Hz基础频率举例对应的频率周期为2272us如采用中断溢出切换Buzzer的高低电平输出声音频率需要以1/2频率周期进行高低电位翻转中断溢出值65536-1/2周期1136计算出中断溢出值64400 音符频率Hz频率取整周期us1/2周期us1/2周期取整中断溢出值中断溢出计算1261.62556532623816.7938931908.396947190865536636281#277.1826312773610.1083031805.054152180565536637312293.66476792943401.3605441700.680272170165536638352#311.12698373113215.4340841607.717042160865536639283329.62755693303030.303031515.151515151565536640214349.22823143492865.3295131432.664756143365536641034#369.99442273702702.7027031351.351351135165536641855391.9954363922551.0204081275.510204127665536642605#415.30469764152409.6385541204.8192771205655366433164404402272.7272731136.363636113665536644006#466.16376154662145.9227471072.961373107365536644637493.88330134942024.2914981012.145749101265536645241523.25113065231912.045889956.022944695665536645801#554.3652625541805.054152902.527075890365536646332587.32953585871703.577513851.788756485265536646842#622.25396746221607.717042803.858520980465536647323659.25511386591517.450683758.725341475965536647774698.45646296981432.664756716.332378271665536648204#739.98884547401351.351351675.675675767665536648605783.9908727841275.510204637.75510263865536648985#830.60939528311203.369434601.6847172602655366493468808801136.363636568.181818256865536649686#932.3275239321072.961373536.480686753665536650007987.76660259881012.145749506.0728745506655366503011046.5022611047955.1098376477.554918847865536650581#1108.7305241109901.7132552450.8566276451655366508521174.6590721175851.0638298425.531914942665536651102#1244.5079351245803.2128514401.6064257402655366513431318.5102281319758.1501137379.0750569379655366515741396.9129261397715.8196135357.909806735865536651784#1479.9776911480675.6756757337.8378378338655366519851567.9817441568637.755102318.87755131965536652175#1661.218791661602.0469597301.02347983016553665235617601760568.1818182284.090909128465536652526#1864.6550461865536.1930295268.0965147268655366526871975.5332051976506.0728745253.03643722536553665283 26.6. 中断定时器模块程序里面的如下两句只是设置定时器的第一次初始化的初始值后续不调用 TL0 0x18; //设置定时初始值TH0 0xFC; //设置定时初始值26.7. 测试将音符做成数组并测试 #include REGX52.h #include delay_xms.h #include TimeR0.hsbit BuzzerP2^5; unsigned int FreqTable[]{63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,};void main() {TimeR0_Init();while(1){}}void TimeR0_Routine() interrupt 1 //中断子函数 {TL0FreqTable[0]%256; //设置定时初始值TH0FreqTable[0]/256; //设置定时初始值Buzzer!Buzzer; }26.8. 在上述程序基础上结合简谱的小星星SPEED定义500为正常速度250速度加快 #include REGX52.h #include delay_xms.h #include TimeR0.hsbit BuzzerP2^5;#define SPEED 250 //定义speed便于调速unsigned int FreqTable[]{0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,};//定义0位数据为休止符unsigned char Music[]{13,4,13,4,20,4,20,4,22,4,22,4,20,8,0,4, //0为休止符18,4,18,4,17,4,17,4,15,4,15,4,13,8,0xff, //终止判断}; //定义1/16音符时长为基准时长定义为1后续以此为基准unsigned char FreqSelect,MusicSelect; void main() {TimeR0_Init();while(1){if(Music[MusicSelect]!0xff){FreqSelectMusic[MusicSelect];MusicSelect;delay_xms(SPEED/4*Music[MusicSelect]);MusicSelect;TR00;delay_xms(5);TR01;}else{MusicSelect0;}}}void TimeR0_Routine() interrupt 1 //中断子函数 {if(FreqTable[FreqSelect]){TL0FreqTable[FreqSelect]%256; //设置定时初始值TH0FreqTable[FreqSelect]/256; //设置定时初始值Buzzer!Buzzer;} }
http://www.zqtcl.cn/news/588790/

相关文章:

  • wordpress注明网站做微网站的第三方登录
  • 学网站建设维护网站公司建设公司
  • 做小型网站的公司wordpress 主题上传
  • 网站之家查询重庆市建设项目环境申报表网站
  • 网站建设基础及流程网站运营一个月多少钱
  • 南沙免费网站建设wordpress邮箱注册
  • 网站关键字优化软件网络营销推广方式包括?
  • 专做装修的网站pc端好玩的大型网游
  • 洞泾网站建设网易考拉的网站建设
  • 网站建设的市场调研杭州网络公司项目合作
  • 济源网站制作电子商务平台有哪些
  • 网站轮播图怎么设计河南省住房城乡建设厅网站首页
  • o2o商城网站建设wordpress后台密码忘记了怎么办
  • 网站排版策划公司官网网站建设想法
  • 泉州网站建设报价建网站找哪家公司
  • 国外网站建设推广iapp网站怎么做软件
  • 网站的设计步骤做网站的虚拟机怎么用
  • 游戏的网站做普通网站多少钱
  • 单位门户网站建设苏州吴中区做网站公司
  • 新网站内部优化怎么做家电网站建设
  • 怎么看网站源码用什么做的wordpress 六亩填
  • 网站建设实习报告范文闵行区邮编
  • h5网站模板免费下载怎样制作专业简历
  • php网站语言切换功能如何做263邮箱入口
  • 电商网站及企业微信订烟专门做红酒的网站
  • 大庆商城网站建设微网站建设找哪家
  • 渝快办官网seo管理平台
  • 网站建设辶金手指排名十二厦门建设局
  • 网站反链接什么seo推广优化多少钱
  • 建设工程公司采购的网站找不到网站后台怎么办