完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
菜鸟最近在看红外发射的程序,有一点始终没弄明白,求解释
51单片机利用定时器0模式2产生38khz发射红外信号,为什么用12MHz晶振时,要定时26us即初值=0XE6;但是用22.1184M晶振,定时就变成了13us即初值0xE8。这个用不同的晶振产生38khz发射红外信号,初值或者说时间是怎么算出来的? 求高手指点 |
|
相关推荐
7个回答
|
|
本帖最后由 lovezjf234 于 2012-8-10 09:59 编辑
一个单片机的运转速度和晶振有关,单片机内部是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进制即可,希望对你有帮助
|
|
|
|
去看看单片机定时时间设置
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
386 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1670 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1123 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1005 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1229 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12018 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:24 , Processed in 0.509980 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号