《流水灯和蜂鸣器ppt课件》由会员分享,可在线阅读,更多相关《流水灯和蜂鸣器ppt课件(13页珍藏版)》请在金锄头文库上搜索。
1、第二次课第二次课流水灯的设计和蜂鸣器的发声流水灯的设计和蜂鸣器的发声1;.2第一题:流水灯和蜂鸣器的依次关和闭第一题:流水灯和蜂鸣器的依次关和闭l带参量延时函数 : void delay(char c) l蜂鸣器端口的位定义 : sbit speaker=P37;l 两个for循环:分别来控制左移和右移3两个两个for循环循环l左移循环lfor(i=7;i0;i-)llP1=a;la=a0;i-)llP1=b;lb=b1;speaker=0;ldelay(3);lP1=0xff;speaker=1;delay(2);l4第二题:蜂鸣器每隔第二题:蜂鸣器每隔0.5s以以500Hz的频率响的频率响
2、5次,最后以次,最后以1kHz的频率响一次的频率响一次l主要思路:l延时函数(0.5s)控制蜂鸣器不响的时间l定时器控制蜂鸣器的频率l用全局变量来控制响的次数和蜂鸣器响的时间5定时器对频率的控制定时器对频率的控制l void InitTimer1(void)l l TMOD = 0x10;/定时器0工作方式0,定时器1工作方式1 l TH1 = 0x0FC;/给定时器1赋初值l TL1 = 0x67;l EA = 1;/打开全局中断l ET1 = 1;/允许定时器1申请中断l TR1 = 1;/启动定时器1;l 6全局变量全局变量l#include l sbit speaker=P37;l u
3、nsigned char a=0; /计算0.5Sl unsigned char b=0; /循环5次l unsigned int c=0;7全局变量的控制全局变量的控制lvoid Timer1Interrupt() interrupt 3 /定时器1中断处理程序l l if(b5)/循环次数小于5次时继续ll TH1 = 0x0FC;/重装定时器初值l TL1 = 0x67;/你的中断程序代码;lspeaker=!speaker;la+;/(Tc=a*T0,T0=1/500s)lif(a=125)/控制蜂鸣器响的时间llspeaker=1;ldelay();lb+;la=0;lll lif(
4、b=5)/循环5次后,进入最后一次循环llTH1=0x0FE;/改变初始值来改变频率lTL1=0x34;lspeaker=!speaker;lc+;lif(c=500)/响1s后终止ll TR1 = 0;lb=6;ll l 8第三题第三题 设计一首生日歌设计一首生日歌l主要思路:l定时器控制蜂鸣器的频率l用两个全局变量分别来控制音符的频率和节拍的长度9全局变量全局变量l#include l sbit speaker=P23;l unsigned int a=0; /第一个全局变量用来控制节拍l unsigned char b=0;/第二个全局变量用来控制第几个音符10实现过程实现过程lvoid Timer1Interrupt() interrupt 3 /定时器1中断处理程序l l if(b2)/前两个音符llTH1=0xFD;lTL1=0x82;lspeaker=!speaker;la+;lif(a=392)/半个节拍需要的时间llb+;la=0;ll 11l if(b=2)/第三个音符l l TH1=0xFD;/重新付初始值来改变频率lTL1=0xF4;lspeaker=!speaker;la+;lif (a=880)/改变频率后a的值也改变llb+;la=0;l l 12最后的感触最后的感触l遇到困难怎么办?认真思考查找资料寻求帮助坚持谢谢谢谢13;.