导航:首页 > 操作系统 > 单片机38k载波

单片机38k载波

发布时间:2022-08-29 05:09:45

‘壹’ 自带PWM功能的STC单片机,在使用内部时钟的前提下能否产生精度高的38KHz PWM信号

不可以,因为内部RC振荡随着温度变化,其振荡频率是变化的,其实红外线的载波38K不需要太精确

‘贰’ 如何使用单片机产生38KHz的载波,求原理及C语言简单代码,晶振11.0592,请高手指点。

f=38KHz 那么周期T约等于26uS,如果这个载波是方波的话,那么输出高电平13uS,另外13uS输出低电平。
你的晶振是11.0592MHz,那么机器周期是近似为1uS。
所以隔13uS,对输出口取反即可。
#include<reg51.h>
#include<intrins.h> //用于_nop_();指令
void main{
while(1){
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //13个空指令,每个空指令耗费1uS
P0^1=~P0^1;
}
}

‘叁’ 单片机产生38kHz信号的问题

首先,楼主的分析是正确的,确实是指令占用了时间,而且这与软件编译时的优化有关。下面从理论上分析一下(事实其实如此)原因:

中断产生的一瞬间,TH0和TL0都为0,但由于其定时计数并未停止,所以直到下一次重装前TL0依旧在计数,也就是说直到TL0=(65536-13)%256执行后,计数值才被重装。那么这段时间有什么情况发生呢:
1、如果程序中还使用了别的中断:定时中断产生后,单片机开始执行中断服务程序。一般情况下,首先是要执行中断入口0x000B处的跳转指令,12M12T下跳转指令LJMP等的执行周期为2us,重复一下,此时TL0和TH0已经为0了;然后执行TH0和TL0赋值指令,各需2us(汇编中:立即数赋值给直接地址),这就增加了6个us,所以事实上是13+6=19us取反一次,大约28KHz。
2、同上,但如果将TL0赋值语句放到TH0前,由于方式1下TH0TL1相当于一个INT型数据来计数的,TL0是低8位,所以事实上TL0被赋值后基本可以说被重装,计数这时才恢复正常,由于TH0的赋值被放到后面,所以事实上就减少了2个us,即13+4=17,大约30KHz。
3、如果程序中的中断只使用了这一个:那么编译器编译时,就会将中断程序从000BH开始放置,这样就又少了一条跳转指令的周期,时间上就变为13+2=15,大约33KHz。我想这应该属于是楼主的实际情况。
所以,正如你所说,这种方式指令本身占据了时间,所以产生误差不足为奇。这里关键是TL0重装指令的位置。

解决的办法无外乎两种:
1、将初值中的13改成11,TL0重装前提,减掉2us赋值时间。
2、采用方式2,初值设为256-13。由于方式2初值的重装是自动的,不占指令时间,所以很准确。

不过照理楼主现在应该检测到的是30K才对,为什么会测到35K我不敢妄断,也许是其它误差,比如频率计、晶振等、也许是编译器原因,需要看一下实际的汇编指令才能确定。

‘肆’ 单片机,硬件,红外遥控编码问题。38KHz是干嘛用的

学习型遥控常用的载波频率为38kHz,这是由发射端编码芯片所使用的455kHz晶振来决定的。

在信号传输的过程中,并不是将信号直接进行传输,而是将信号负载到一个固定频率的波上,这个过程称为加载,这样的一个固定频率的波称为载波频率。
严格的讲,就是把一个较低的信号频率调制到一个相对较高的频率上去,这被低频调制的较高频率就叫载波频率,也叫基频。

‘伍’ 单片机自己产生38khz载波发射红外是不是不行啊.

行是行的不过用51单片机产生38khz频率那么中断的频率是相当高的,中1秒内要产生70000次左右的中断,这样来单片机就没时间去处理其它任务了,建议用外部电路产生

‘陆’ 38K载波单片机软件设计 C语言 ,如何将定时器产生的38K的载波和信号调制起来

单片机的调制一般都是数字调制,一般就是2FSK。可以有二种方法。。
第一:把待调制信数字信号和载波接到一个二输入与门上。当调制信号是一时,与门开启,载波可以发送出去。当调制信号是0时,与门关闭,载波不发送。。
第二:产生二种不同的方波(可以是引导码不同,或者载波频率不同)。。调制信号1和0分别对应其中的一种即可。。
希望能帮到你。。
再看看别人怎么说的。

‘柒’ 51单片机产生38K占空1:3载波

12M的晶振不能产生准确的38K,只能是38.462K。

才8us的周期,不用定时器也行
LOOP:
CPL P3^1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P3^1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LJMP LOOP:

‘捌’ 单片机输出一个38KHZ的信号之后,如何这个38KHz的高电平上在进行调制一次(频率可为100Hz或200Hz。

你这个是红外的编码吧,直接在产生38KHZ那个引脚输出你要调制的信号即可
就是同一个引脚同时发出38KHZ和包含信息的频率(你的100HZ或200HZ)

‘玖’ 51单片机怎么产生38khz方波

用定时器就可以产生38K的方波,比如
#include<reg51.h>
sbit pluse=P1^0;
void t0isr() interrupt 1
{
pluse=~pluse;
}
main()
{
TMOD=0x02;
TH0=256-13;
TL0=256-13;
ET0=1;
TR0=1;
EA=1;
while(1);
}

阅读全文

与单片机38k载波相关的资料

热点内容
man文件linux 浏览:282
javaweb实现页面跳转 浏览:125
命令如什么 浏览:315
centos如何使用ftp服务器 浏览:981
直立车陀螺仪算法 浏览:69
coreldrawpdf下载 浏览:895
虚拟主机云服务器软件服务 浏览:370
苹果的怎么拉安卓的打游戏 浏览:412
游戏程序员负责角色 浏览:313
于丹pdf 浏览:716
反编译ref 浏览:549
鸿蒙智能文件夹怎么弄 浏览:547
grunt压缩html 浏览:791
macpdfword转换器 浏览:907
压缩面膜是什么材质 浏览:355
抖音发布作品怎么建文件夹 浏览:17
安卓如何更改谷歌地区 浏览:276
airpods为什么安卓连上声音很大 浏览:513
联想服务器按钮怎么开不了机 浏览:98
苹果xrapp程序库没有了怎么办 浏览:844