单片机应用项目3.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[案例5] 如图3-8所示,设计一个电子秒表,每隔一秒加1,用三位数码管显示秒表的当前值(0-255),单脉冲按键用于启动、停止、清0控制,第一次按下该按键时启动秒表,第二次按键将暂停秒表,第三次按键将秒表清0,设置晶振频率为12MHZ。 设计思想: 我们可用一个变量记录秒表的当前值,为了提高秒表精度,我们可令定时器T0工作于定时方式2,定时时间为250us,4000次溢出中断正好满1秒,让变量加1,同时将该变量转换为三位BCD码送到显示缓存,供显示程序显示。 单脉冲直接和外部中断0的输入端/INT0相连,每次按键产生中断请求,程序中设置一个变量,对按键动作进行计数,取值为1-3,分别对应于启动、停止和清0,程序根据该变量的值进行相应的控制。 主程序 void main(void) {count=0; sec=0; mode=0; IT0=1; //外部中断负跳变触发 EX0=1; //允许外部中断0中断 TMOD=0x02; //T0工作于定时方式2 TH0=-250; //T0的定时时间为250us TL0=-250; ET0=1; //允许T0中断 TR0=0; //停止定时器 EA=1; //开中断 while(1) disp(); } 定时器T0中断服务程序 void time0(void) interrupt 1 { count++; //中断次数加1 if(count==4000) { count=0; sec++; dbuf[2]=sec/100; //将秒数计换成三位BCD码 dbuf[1]=(sec%100)/10; dbuf[0]=sec%10; } } void int0(void) interrupt 0 { mode++; //每次产生中断,mode加1 if(mode==1) //mode为1,启动定时器工作 TR0=1; else if(mode==2) //如果mode等于2,停止定时器工作 TR0=0; else if(mode==3) //如果mode为3, { mode=0; TR0=0; sec=0; //将秒计数器清0 dbuf[0]=0; dbuf[1]=0; dbuf[2]=0; } } 外部中断0中断服务程序 [案例6] 用单片机演奏歌曲《兰花草》。 设计思想:单片机可以根据音符产生不同频率的脉冲信号,经驱动后来控制蜂鸣器,让蜂鸣器产生与音符相应的声音,再把它们有机地组合起来,就可以发出一段音乐。 1、要产生与某音符相应的脉冲信号,只要算出该音频 的频率和周期,然后将该周期除2,即为半周期的时间。 将定时器的定时时间设定为这半周期时间,一旦定时器 溢出,就将P1.6脚求反,这样就能产生与音符频率对应 的脉冲信号。设单片机定时器工作在定时方式1,改变 时间常数TH0、TL0就可以产生与各种音符频率相应的脉 冲信号。 设要产生的频率为fr,单片机机器周期的频率为fi,则 对应定时器时间常数为N。 N=65536-fi÷2÷fr 2、用单片机演奏音乐时,可以这样来表示乐谱: 乐谱由多个简谱码组成,以00结束,每个简谱码用 一个字节来表示,字节的高4位为音符码,代表音符的 高低,低4位为节拍码,表示音符的节拍,下表3-2为节 拍与节拍码的对照。如果1拍为0.4秒,则1/4拍为0.1秒, 2/4拍为0.2秒,所以只要根据节拍来设定延时时间。 设定时器T1的定时时间为50ms,二次溢出中断正好 为1/4拍,将节拍码乘2即为该节拍所需溢出中断的次数。 程序中,定时器T0用于控制音调的高低,定时器T1用于控制节拍的长短,各音符对应的时间常数放在数组tab1中,乐谱以简谱码的形式存储在数组tab3中,高四位为音符码,低四位为节拍码,0x00表示乐谱结束。变量m指向tab3中当前需演奏的简谱码,从中分解出高四位的音符码,并从tab1中取出时间常数控制定时器T0产生与音符频率相应的方波;从简谱码的低四位分解出节拍码,控制定时器T1延时节拍所需的时间。

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档