单片机定时器使用示例(用定时器T1控制单片机发出1kHz音频)

T1工作方式设置

如下指令T1的工作方式进行设置:

TMOD=0x10//即TMOD=0001 0000B,高四位GATE=0,C/T=0,M1M0=0定时器

定时器T1初值的设定

要发出1KHz音频,秩序让单片机送给蜂鸣器(接P3.7引脚)的电平信号,每隔半个周期取反一次即可。本示例音频的周期为1/1000=0.001s,即可1000us,则要计数的脉冲数为1000/1.085=921(次)。所以,定时器T1的初值设置如下:

TH1=(65536-921)/256;//定时器T1的高八位赋初值
TL1=(65536-921)%256;//定时器T1的低八位赋初值

仿真电路原理图:

程序代码:

#include <reg51.h>
sbit sound=P3^7;//将sound位定义为P3^7引脚
void main()
{
TMOD=0x10;//设置定时器T1工作与方式1
TH1=(65536-921)/256;//定时器T1的高八位赋初值
TL1=(65536-921)%256;//定时器T1的低八位赋初值
TR1=1;//启动定时器T1
while(1)
{
while(TF1==0)//查询标志位是否溢出,如果溢出,TF1置零
TF1=0;
sound=~sound;//将sound取反
TH1=(65536-921)/256;
TL1=(65536-921)%256;
}
}

程序经过Keil软件编译生成 “ .hex"文件,通过protues软件仿真可以听到计算机音响发出”滴……“的声音

版权声明:本文为CSDN博主「Brant(小布)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46064201/article/details/122211456

T1工作方式设置

如下指令T1的工作方式进行设置:

TMOD=0x10//即TMOD=0001 0000B,高四位GATE=0,C/T=0,M1M0=0定时器

定时器T1初值的设定

要发出1KHz音频,秩序让单片机送给蜂鸣器(接P3.7引脚)的电平信号,每隔半个周期取反一次即可。本示例音频的周期为1/1000=0.001s,即可1000us,则要计数的脉冲数为1000/1.085=921(次)。所以,定时器T1的初值设置如下:

TH1=(65536-921)/256;//定时器T1的高八位赋初值
TL1=(65536-921)%256;//定时器T1的低八位赋初值

仿真电路原理图:

程序代码:

#include <reg51.h>
sbit sound=P3^7;//将sound位定义为P3^7引脚
void main()
{
TMOD=0x10;//设置定时器T1工作与方式1
TH1=(65536-921)/256;//定时器T1的高八位赋初值
TL1=(65536-921)%256;//定时器T1的低八位赋初值
TR1=1;//启动定时器T1
while(1)
{
while(TF1==0)//查询标志位是否溢出,如果溢出,TF1置零
TF1=0;
sound=~sound;//将sound取反
TH1=(65536-921)/256;
TL1=(65536-921)%256;
}
}

程序经过Keil软件编译生成 “ .hex"文件,通过protues软件仿真可以听到计算机音响发出”滴……“的声音

版权声明:本文为CSDN博主「Brant(小布)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46064201/article/details/122211456

生成海报
点赞 0

Brant(小布)

我还没有学会写个人说明!

暂无评论

相关推荐

音频数据的Flash读取与DAC播放

一:Flash地址空间的数据读取 Flash原理: 不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了 1024K 字节。市