网站大量收购闲置独家精品文档,联系QQ:2885784924

实验定时计数器实验电子音响.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验定时计数器实验电子音响

实验四 定时/计数器实验 一、实验内容 1、由51内部定时器0,按方式1工作、即作为十六位定时器使用每0.l秒钟T1溢出中断一次。P1口的P1.0接1个发光二极管。要求编写程序模拟一时序控制装置。开机以中断方式循环点亮,闪烁维持1s。 2、数码时钟程序,调用定时器中断来处理。 3、编制程序,利用P3口输出不同频率的脉冲通过扬声器发出不同频率音调。 了解计算机发声原理,学习使计算机发出不同音调声音的编程方法。 二、实验目的 1、学习89C51内部计数器的使用和编程方法。 2、进一步掌握中断处理程序的编程方法。 三、实验原理 1、定时常数的确定 定时器/计数器的输入脉冲周期与机器周期一样,为振荡器频率的1/l2。本实验中时钟频率为12MHZ,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔10MS产生一次中断,CPU响应中断后将R0中计数值减一,令(R0)=100,即可实现1s延时。 时间常数可按下法确定: 机器周期=12÷晶振频率=12÷12×106=1×10-6S N=t/ Tcy =10×10-3/1×10-6=10000 需设初值为X,则(216-X)×1×10-6=0.1 X=65536-10000=55536=D8F0H 化为十六进制:X=3800H,故初始值为了TH0=D8H,TL0=F0H 2、初始化程序 包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、 TMOD的相应位进行正确的设置,并将时间常数送入定时器中、由于只有定时器中断,IP便不必设置。 如: MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 3、设计中断服务程序和主程序 中断服务程序要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求闪烁。 4、音阶由不同频率的方波产生,音的节拍由延时子程来实现。延时子程序实现基本延时时间,节拍值只能是它的整数倍。音阶与频率的关系如下表所示。 方波的频率由定时器控制。定时器计数溢出后,产生中断,将P1.7口取反即得周期方波。每个音阶相应的定时器初值可按下 法计算: 晶振为6.144MHZ时,音阶“1”相应的定时器初值为x,则 1÷262×2=(216-X)×12÷6.144×1016 可得X=64559D=FC2FH,其它音节可同样求得,见下表:(单位:HZ,X为16进制) 音调 4 5 6 7 1 2 3 4 频率 175*2 196*2 220*2 247*2 262*2 294*2 330*2 349*2 X FA FA FB FC FC FC FC FD 49 E6 7E 0C 2F 8F F8 23 5 6 7 1 2 3 392*2 440*/2 494*2 523*2 587*2 659*2 FD FD FD FE FE FE 73 BA FA 18 4C 94 四、实验电路及连线 P1.0接发光二极管L1。(其他电路参考学习板说明书蜂鸣器与时钟部分) 五、参考程序 程序一、 ORG 0000h AJMP main ORG 000bh AJMP int_timer ORG 0030h main: MOV tmod,#01h ;设置定时器工作方式01 MOV th0,#high(65536-10000) ; MOV tl0,#low(65536-10000) ;设10MS初始值。 MOV ie,#82h ;设置中断允许寄存器 MOV 30h,#10 ; MOV 31h,#10 ;30H和31H是两个软件计数器。 SETB tr0 ;启动定时 AJMP $ ;等待中断 int_timer: ;定时器0中断服务程序。 MOV th0,#high(65536-10000) ; MOV tl0,#low(65536-10000) ;重设10MS定时。 DJNZ 30h,l1 ; MOV 30h,#10 ; DJNZ 31h,l1 ; MOV 31h,#10 ;软件计数 CPL p1.0 ;10*10*10MS=1S时间到,P1.0取反 l1: RETI ;中断返

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档