工程建设资料员报名网站,网站建设与管理专业教学标准,南京市招办南京网站设计,门户网站设计要点单片机——UART串口通信 宗旨#xff1a;技术的学习是有限的#xff0c;分享的精神是无限的。 对于单片机来说#xff0c;通信则与传感器、存储芯片、外围控制芯片等技术紧密结合#xff0c;成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的#xf…单片机——UART串口通信 宗旨技术的学习是有限的分享的精神是无限的。 对于单片机来说通信则与传感器、存储芯片、外围控制芯片等技术紧密结合成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的要发送 8 次才能发送完一个字节。 STC89C52有两个引脚是专门用来做 UART串行通信的一个是 P3.0一个是 P3.1它们还分别有另外的名字叫做 RXD和TXD由它们组成的通信接口就叫做串行接口简称串口。 波特率发送二进制数据位的速率习惯上用 baud 表示即我们发送一位二进制数据的持续时间1/baud。 通信过程在UART 通信的时候一个字节是 8 位规定当没有通信信号发生时通信线路保持高电平当要发送数据之前先发一位 0 表示起始位然后发送 8 位数据位数据位是先低后高的顺序数据位发完后再发一位 1 表示停止位。 2、RS232通信接口与USB转串口通信 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。 2、配置定时器 T1 为模式 2即自动重装模式。 3、根据波特率计算 TH1 和 TL1 的初值如果有需要可以使用 PCON 进行波特率加倍。 4、打开定时器控制寄存器 TR1让定时器跑起来。
定时器的重载值计算公式为TH1 TL1 256 - 晶振值/12 /2/16 /波特率 #includereg52.hvoid ConfigUART(unsigned int baud);int main(void)
{EA 1; //使能总中断ConfigUART(9600); //配置波特率为9600while (1);return 0;
}
/* 串口配置函数baud-通信波特率 */
void ConfigUART(unsigned int baud)
{SCON 0x50; //配置串口为模式1TMOD 0x0F; //清零T1的控制位TMOD | 0x20; //配置T1为模式2TH1 256 - (11059200 / 12 / 32) / baud; //计算T1重载值TL1 TH1; //初值等于重载值ET1 0; //禁止T1中断ES 1; //使能串口中断TR1 1; //启动T1
}
/*UART中断服务函数 */
void InterruptUART() interrupt 4
{if (RI) //接收到字节{RI 0; //手动清零接收中断标志位SBUF SBUF 1; //接收的数据1后发回左边是发送SBUF右边是接收SBUF}if (TI) //字节发送完毕{TI 0; //手动清零发送中断标志位}
}