用51单片的IO口模拟38k根本不可能实现,对吧?

2020-01-30 13:51发布

最近用51的定时器模拟38k红外通信,发现死活没办法通信,最后发现。。。当定时器中断产生的时候进入中断处理函数然后加上一些七七八八的寄存器赋值,应该要花上30几个机器周期,而我算过了,一个机器周期是1us左右。。。也就是说即使你定时1us,你产生的载波也不可能是 13us,13us是38k/2也就是19kh,而13us又是必须的!所以说,用12M晶振的51单片机IO口是模拟不出38k载波的,,,对不对?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
chaily
1楼-- · 2020-01-30 15:44
仅仅是模拟38K的载波是可以的,一个周期26us,占空比是30%左右,可以输出9us低电平,17us高电平或者反过来,然后一直循环。注意,50%占空比是不行的,占空比要在25%-35%左右是最佳的。用定时器也是可以的。但是如果要加入很多编码什么什么的,不是不行,是要好好想想怎么写程序了,本来很多51学习板上就有红外发射和解码的例程。
hameyou
2楼-- · 2020-01-30 16:56
当然可以,用软件延时,以前做过类似的
424x3
3楼-- · 2020-01-30 20:58
用汇编+示波器  这些串行输出的编码 都是可以搞定的
38kHz载波   1M的代码速度   一个SETB  一个CLR都是1个时钟周期   
  1M/38kHz =26  按照30%  大概8个CLR  18个SETB  说是是可以的

说下我最近弄的一个方案吧   用STC带PWM功能的单片机  选好合适的晶振  调输出到38kHz左右
   根据编码来控制PWM的输出有无
zenith1032
4楼-- · 2020-01-31 00:46
 精彩回答 2  元偷偷看……
lrcasd
5楼-- · 2020-01-31 01:35
用24M晶振
majianjia1991
6楼-- · 2020-01-31 05:08
pwm即可le

一周热门 更多>