分享 收藏 返回

单片机/MCU论坛

dianziyn 关注 私信

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

2012-8-10 09:10

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

回帖(7)

张三

2012-8-10 09:52:01
本帖最后由 lovezjf234 于 2012-8-10 09:59 编辑

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

dianziyn

2012-8-10 12:11:28
引用: lovezjf234 发表于 2012-8-10 09:52
一个单片机的运转速度和晶振有关,单片机内部是12分频,这样12M的晶振一个周期是1us,同样24M的话就是0.5us, ...

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

张三

2012-8-10 13:24:24
引用: dianziyn 发表于 2012-8-10 12:11
奥,这个算初值的懂了,谢谢,但是为什么26us就能产生38khz的信号呢,这两个之间又有什么关系呢?
...

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

秦天

2012-11-21 17:39:14
根据公式 f=1/t   f 是38KHz  那么t=1/38=约26us

白玉汤

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

康康

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

李文彪

2013-7-31 14:55:08
去看看单片机定时时间设置

更多回帖

相关课程