定时计数器实验电子音响 单片机报告.docx
《定时计数器实验电子音响 单片机报告.docx》由会员分享,可在线阅读,更多相关《定时计数器实验电子音响 单片机报告.docx(20页珍藏版)》请在三一办公上搜索。
1、定时计数器实验电子音响 单片机报告实验四 定时器实验 一、实验内容 1、由51内部定时器0,按方式1工作、即作为十六位定时器使用每0.l秒钟T1溢出中断一次。P1口的P1.0接1个发光二极管。要求编写程序模拟一时序控制装置。开机以中断方式循环点亮,闪烁维持1s。 2、数码时钟程序,调用定时器中断来处理。 3、编制程序,利用P3口输出不同频率的脉冲通过扬声器发出不同频率音调。 了解计算机发声原理,学习使计算机发出不同音调声音的编程方法。 二、实验目的 1、学习89C51内部计数器的使用和编程方法。 2、进一步掌握中断处理程序的编程方法。 三、实验原理 1、定时常数的确定 定时器/计数器的输入脉冲
2、周期与机器周期一样,为振荡器频率的1/l2。本实验中时钟频率为12MHZ,现要采用中断方法来实现1秒延时,要在定时器1中设置一个时间常数,使其每隔10MS产生一次中断,CPU响应中断后将R0中计数值减一,令(R0)100,即可实现1s延时。 时间常数可按下法确定: 机器周期12晶振频率1212106110-6S Nt/ Tcy 10103/110610000 需设初值为X,则(216-X)110-60.1 X65536-1000055536=D8F0H 化为十六进制:X3800H,故初始值为了TH0D8H,TL0F0H 2、初始化程序 包括定时器初始化和中断系统初始化,主要是对IP、IE、TC
3、ON、 TMOD的相应位进行正确的设置,并将时间常数送入定时器中、由于只有定时器中断,IP便不必设置。 如: MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 3、设计中断服务程序和主程序 中断服务程序要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求闪烁。 4、音阶由不同频率的方波产生,音的节拍由延时子程来实现。延时子程序实现基本延时时间,节拍值只能是它的整数倍。音阶与频率的关系如下表所示。 方波
4、的频率由定时器控制。定时器计数溢出后,产生中断,将P1.7口取反即得周期方波。每个音阶相应的定时器初值可按下 法计算: 晶振为6.144MHZ时,音阶“1”相应的定时器初值为x,则 12622(216-X)126.1441016 可得X64559DFC2FH,其它音节可同样求得,见下表: 音频调 4 5 6 7 1 2 3 4 率 175*2 196*2 220*2 247*2 262*2 294*2 330*2 349*2 FX 4 5 6 7 1 2 3 9 E6 7E 0C 2F 8F F8 23 A FA FB FC FC FC FC FD 392*2 440*/2 494*2 523
5、*2 587*2 659*2 F7D F3 BD FA FD FA 1E F8 4E FC 9E 4 四、实验电路及连线 P1.0接发光二极管L1。 五、参考程序 程序一、 ORG AJMP ORG AJMP ORG MOV MOV MOV 0000h main 000bh int_timer 0030h tmod,#01h ;设置定时器工作方式01 th0,#high(65536-10000) ; tl0,#low(65536-10000) ;设10MS初始值。 ie,#82h ;设置中断允许寄存器 main: MOV MOV MOV SETB AJMP 30h,#10 31h,#10 tr
6、0 $ ; ;30H和31H是两个软件计数器。 ;启动定时 ;等待中断 int_timer: 程序二、 /* MOV MOV DJNZ MOV DJNZ MOV ;定时器0中断服务程序。 th0,#high(65536-10000) ; tl0,#low(65536-10000) ;重设10MS定时。 30h,l1 31h,l1 ; ; ; ;软件计数 30h,#10 31h,#10 CPL p1.0 END ;10*10*10MS=1S时间到,P1.0取反 ;中断返回 l1: RETI 数码管精确时钟 */ #include sbit buz=P14; sbit led=P20; #defi
7、ne shuma P0 sbit LED_0=P20; sbit LED_1=P21; sbit LED_2=P22; sbit LED_3=P23; unsigned char m,n; unsigned int d; unsigned int code ton7; void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4); /*=0-9=A-G=*/ unsigned char a16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90
8、,0x88,0x83,0xc6,0x86,0x8e,0x82; /定时初值计算方法:以5ms为例,5ms=5000us,0xffff-5000/1.085即为TH和/共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E F /包含头文件 TL的值 void int1 interrupt 3 时 void main( void ) unsigned int i; d=0; m=1; TMOD=0x10; TH1=0xed; TL1=0xff; TR1=1; ET1=1; EA=1; while(1) /开中断 /设置为T1定时器 /装定时器初值 n+; if(n=200)
9、 n=0; d+; /5ms的中断,循环200次,TL1=0xff; ET1=1; TR1=1; d4=(d%60)%10; d3=(d%60)/10; d2=(d/60)%10; d1=(d/60)/10; display(d1,d2,d3,d4); /显示分秒 /把时间拆分为分和秒 /开中断 unsigned char d1,d2,d3,d4; TR1=0; /关中断 /装定时器初值实现5ms定TH1=0xed; /T1中断,时间是5ms d加一次,所以d是1秒跳1次 程序三、秒计时器 #include #define shuma P0 口的定义 sbit LED_0=P20; sbit
10、LED_1=P21; /包含头文件 /对显示用数码管进行数据口和控制if(m=1) if(m=2) if(m=3) if(m=4) m+; if(m=5) m=1; /数码管位循环扫描 LED_3=0; LED_1=LED_2=LED_0=1; shuma=ad4; LED_2=0; LED_1=LED_0=LED_3=1; shuma=ad3; LED_1=0; LED_0=LED_2=LED_3=1; shuma=ad2; LED_0=0; /使能该数码管控制位 /其他控制位无效 LED_1=LED_2=LED_3=1; shuma=ad1; /中断专用的显示函数 void display
11、(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4) /按照数据点亮该数码管 sbit LED_2=P22; sbit LED_3=P23; unsigned char m,n; unsigned int d; /临时变量 /秒计时器 /数码管显示函数声明,利用中void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4); 断方式 /*=0-9=A-G=*/ unsigned char a16=0xc0,0
12、xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82; /定时初值计算方法:以5ms为例,5ms=5000us,0xffff-5000/1.085即为TH和TL的值 void int1 interrupt 3 次 n=0; d+; /每秒计数值加1 n+; if(n=200) /5毫秒程序,每200周期更新一unsigned char d1,d2,d3,d4; TR1=0; TL1=0xff; ET1=1; TR1=1; d4=(d%60)%10; d3=(d%60)/10; d2=(d/60)%1
13、0; d1=(d/60)/10; display(d1,d2,d3,d4); /数码管以中断方式显示 /分离秒计数值到千、百、十、/开中断 /关中断 /装定时器初值实现5ms定时 TH1=0xed; /T1中断,时间是5ms /共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E F 各位方便数码管显示 void main( void ) 程序四、 /*时钟程序,本程序采用外元件DS1302时钟IC,使用此IC不增加系统资源,要时钟时直接去读取就可以了本IC跟ADC0831一样以串口方式传送数据,不同的是协议,只要你读懂它的串口协议,就可以用P口来模拟协议进行 ,这样更
14、能使你对传送数据协议的了解,在看本程序之前,先看看芯片的串口协议*/ /- /在学习本实验的时候,务必把J-LED的跳线帽,拔到OFF方向,关闭发光二极管 /- #include #include sbit SCL2=P13; ADC0831SCL脚 sbit SDA2=P14; ADC0831SDA脚 /sbit CS2=P16; /CS2定义为P2口的第6位脚,连接ADC0831CS脚 sbit RST = P25; / DS1302片选脚 /SDA2定义为P1口的第4位脚,连接DS1302SCL和/SCL2定义为P1口的第3位脚,连接DS1302SCL和d=0; m=1; TMOD=0x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时计数器实验电子音响 单片机报告 定时 计数器 实验 电子 音响 单片机 报告

链接地址:https://www.31ppt.com/p-3433756.html