微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机利用定时器0模式2产生38khz发射红外信号的疑问

51单片机利用定时器0模式2产生38khz发射红外信号的疑问

时间:10-02 整理:3721RD 点击:
菜鸟最近在看红外发射的程序,有一点始终没弄明白,求解释
51单片机利用定时器0模式2产生38khz发射红外信号,为什么用12MHz晶振时,要定时26us即初值=0XE6;但是用22.1184M晶振,定时就变成了13us即初值0xE8。这个用不同的晶振产生38khz发射红外信号,初值或者说时间是怎么算出来的?
求高手指点

一个单片机的运转速度和晶振有关,单片机内部是12分频,这样12M的晶振一个周期是1us,同样24M的话就是0.5us,模式2的话就是256次循环周期,需要26us的话只要计数26次溢出,那么初始值就是255-26;化成16进制的话大概是0xE6

奥,这个算初值的懂了,谢谢,但是为什么26us就能产生38khz的信号呢,这两个之间又有什么关系呢?

38KHz代表1秒产生38k个方波,现在一个方波要26us。后面你就自己算好。

根据公式 f=1/t   f 是38KHz  那么t=1/38=约26us

我刚懂的,12mhz下,38khz,算出的26us是一个完整的方波,就是说每13us要取一次反,得到的才是38khz,初值就是f4;如果初值e6的话,得到的是19khz,这样就不对了

其实这个就是纯计算,首先你要知道单片机的机器周期是晶振周期的12倍,比如你的晶振是a兆赫兹,则你要求的那个值b为:12*(1/a)/100000,然后你现在的定时器方式为方式二,就用2的8次减去b即可,转成16进制即可,希望对你有帮助

去看看单片机定时时间设置

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top