利用T1控制发出1kHz的音频信号
一、设计要求
1、利用定时器T1的中断来使P1.7控制蜂鸣器发出1kHz的音频信号。
2、系统时钟频率为12MHz。
二、技术路线
利用定时器T1的中断来使P1.7控制蜂鸣器发出1kHz的音频信号,驱动蜂鸣器发声。系统时钟为12MHz。方波音频信号的周期为1ms,因此T1的定时中断时间为0.5ms,进入中断服务程序后,对P1.7求反。
三、系统原理图
图1-1系统原理图
如图1-1所示把晶振,复位按键以及一些外围电路如图连接,组成AT89C51单片机的最小系统。定时器T1中断控制P1.7引脚输出频率1kHz的音频信号,驱动蜂鸣发声。
四、仿真图
图1-2系统仿真图
五、源程序
#include<reg51.h> //包含头文件
sbit sound=P1^7; //将sound位定义为P1.7引脚
#define f1(a)(65536-a)/256 //定义装入定时器高8位的时间常数
#define f2(a)(65536-a)%256//定义装入定时器低8位的时间 常数
unsigned int i=500;
unsigned int j=0;
void main(void)
{
EA=1; //开关中断
ET1=1; //允许定时器T1中断
TMOD=0x10; //TMOD=0001 0000,使用T1的方式1定时
TH1=f1(i); //给定时器T1高8位赋初值
TL1=f2(i); //给定时器T1低8位赋初值
TR1=1; //启动定时器T1
while(1)
{ //循环等待
i=460;
while(j<2000);
j=0;
i=360;
while(j<2000);
j=0;
}
}
void t1(void) interrupt 3 using 0 //定时器T1中断函数
{
TR1=0; //关闭定时器T1
sound=~sound; //P1.7输出求反
TH1=f1(i); //定时器T1的高8位重新赋初值
TL1=f2(i); //定时器T1的低8位重新赋初值
j++;
TR1=1; //启动定时器T1
}
六、总结
通过这次课程设计使我懂得了理论与实际相结合,只有理论知识是远远不够的,只有把所学的理论与实践相结合,才能提高自己的实际动手能力和创立思考的能力。同时在设计过程中发现了自己的不足之处,对以前所学过的知识理解不够深刻,掌握得不够牢固……通过这次课程设计之后,一定要把以前所学过的知识重新温故。
|