c语言sscanf函数的用法是什么
271
2022-10-29
RS232通信接口与USB转串口通信的设计
1、初步认识
一位一位的发送出去的,要发送8次才能发送完一个字节。
波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。
通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0 表示起始位,然后发送 8 位数据位,数据位是先低后高的顺序,数据位发完后再发一位 1 表示停止位。
RS232 接口一共有 9 个引脚,分别定义是: 1、载波检测 DCD; 2、接收数据 RXD; 3、发送数据 TXD; 4、数据终端准备好 DTR; 5、信号地线 SG; 6、数据准备好 DSR; 7、请求发送 RTS; 8、清除发送 CTS; 9、振铃提示 RI。我们要让这个串口和我们单片机进行通信,我们只需要关心其中的 2 脚 RXD、 3 脚 TXD 和 5 脚 GND 即可。
负逻辑:低电平代表的是 1,而高电平代表的是 0,因此需要电平转换芯片 MAX232。 RS232 串口和 UART 串口,它们的协议类型是一样的,只是电平标准不同而已,而 MAX232 这个芯片起到的就是中间人的作用,它把 UART 电平转换成 RS232 电平,也把 RS232 电平转换成 UART 电平。
USB 转串口芯CH340T:实现 USB通信协议和标准UART 串行通信协议的转换。
3、通信的三种基本类型
单工通信就是指只允许一方向另外一方传送信息,而另一方不能回传信息;
半双工通信是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方;
全双工通信就发送数据的同时也能够接收数据,两者同步进行。
4、串口通信
1、配置串口为模式 1。
3、根据波特率计算 TH1 和 TL1 的初值,如果有需要可以使用 PCON 进行波特率加倍。
4、打开定时器控制寄存器 TR1,让定时器跑起来。
#include
intmain(void)
{
EA=1;//使能总中断
ConfigUART(9600);//配置波特率为9600
while(1);
return0;
}
/*串口配置函数,baud-通信波特率*/
voidConfigUART(unsignedintbaud)
{
SCON=0x50;//配置串口为模式1
TMOD&=0x0F;//清零T1的控制位
TMOD|=0x20;//配置T1为模式2
TH1=256-(11059200/12/32)/baud;//计算T1重载值
TL1=TH1;//初值等于重载值
ET1=0;//禁止T1中断
ES=1;//使能串口中断
TR1=1;//启动T1
}
/*UART中断服务函数*/
voidInterruptUART()interrupt4
{
{
RI=0;//手动清零接收中断标志位
SBUF=SBUF+1;//接收的数据+1后发回,左边是发送SBUF,右边是接收SBUF
}
{
}
} 来源;21ic
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~