片机的无系
无模+单线统
315线块
遥控端信号发射部分的电路(测试用)
1原理:
第一块单片机p1.0口输出脉冲方波提供给无线发射模块,无线发射模块将信号以电磁波的形式传到无线接收模块。无线接收模块会根据这个电磁波还原出脉冲方波提供给第二块单片机,第二块单片机进行进一步的解算处理。 2通信协议:纳米金粉
根据这个原理和315模块的特性。我决定以900us高电平和2000us底电平表示1;450us 高电平和2000us低电平表示0。而8个1或0组成一个字节。为了防止误码,所以在每个字节的前面加一个2ms高电平和2ms低电平的起始码。
3单片机相关知识:
⑴用定时器产生制定脉宽的脉冲
⑵用计数器计算接收到脉冲的宽度
GATE=1时(门控方式), 启动计数器的条件TR=1且INT0=1。所以利用这点,可以测量外部脉冲的高电平宽度
4单片机调试程序:
第一步的调试不停发送1( 一个位) ,观察接收到的信号是否正常。有示波器的话非常方便直观,如果没有示波器,那么可以在单片机上接16个LED灯,将TH0显示在P2口的8个灯,TL0显示在P0的8个灯。比如收到脉宽900us的信号,那么TL0=11000010B TH0=1B ,下排P2口左边第二个和右边最后两个灯亮,上排P0口左边第一个亮。然而实验中发现实际接收到的脉宽比预计的平均少20us,但是这丝毫不会影响接收数据的正确性,因为在这个协议中只要判断TH0和TL0的高4位就足以识别是1或0了发送程序关键部分如下。
第二步的调试发送一字节数据( 8个位) ,并显示在P2口上ORG 0000H
AJMP MAIN
电源转换电路
ORG 0010H
MAIN:
MOV TMOD,#01H
CLR C
MOV R5,#08H
aa: MOV A,#10101010B
acall send
mov a,#01010101b
acall send
mov a,#11110000b
acall send
mov a,#1111b
acall send
ajmp aa
send: MOV TH0,#00fcH
MOV TL0,#0018H
SETB P1.0
SETB TR0
JNB TF0,$
CLR P1.0CL在性方面是什么意思
CLR TF0
蚊子网MOV TH0,#00FCH
MOV TL0,#0025H
SETB TR0
JNB TF0,$
CLR TF0
SS: RLC A
JC S1
防漏杯盖
AJMP S0
S1: MOV TH0,#00feH
MOV TL0,#003fH
SETB P1.0
SETB TR0
JNB TF0,$
CLR P1.0
CLR TF0
MOV TH0,#00FCH
MOV TL0,#0025H
SETB TR0
JNB TF0,$
CLR TF0
AJMP OUT
s0: MOV TH0,#00ffH
MOV TL0,#001fH
SETB P1.0
SETB TR0
JNB TF0,$
CLR P1.0
CLR TF0
MOV TH0,#00FCH
MOV TL0,#0025H
SETB TR0
JNB TF0,$
CLR TF0
ajmp out
OUT: DJNZ R5,SS
clr c
mov a,#10101010b
mov r5,#08h
ret
DELAY: mov R0,#05Fh
w_1: mov R1,#0fFh
家庭自动化控制系统w_2: djnz R1,w_2
djnz R0,w_1 RET
接收端的电路(测试)
如果顺利,那么在接收芯片的数据输出端也会产生900us脉宽的脉冲波。如果没有示波器,那么怎么知道接受到信号的脉宽呢?我在P2口接了8个LED。读取TH0 TL0 里的数值,取反,然后依次在P2上显示。比如900us脉宽对应TH0=11B TL0=10000100B,对应位为1折亮,所以当显示TH0的时候最左边的两个LED会被点亮,而显示TL0的时候从左往右:第三个和最后一个亮。但事实上脉冲信号存在20us的误差。然而这丝毫不影响遥控的准确性,因为我是取900us表示1,450us表示0,然后根据8个1或0组成一个字节的控制码。具体的通信协议就不在这啰嗦了