历史上的今天
今天是:2025年07月30日(星期三)
2021年07月30日 | 学习笔记 从零开始学单片机(9) 串口通信
2021-07-30 来源:eefocus
串口通信是单片机一个重要的部分,单片机和PC,单片机和单片机之间的通信大都用串口。单片机的串口是全双工异步串口通信方式。通过TXD(P3.1)发送,RXD(P3.0)引脚接收输入。串口传送数据是一帧一帧发送的,它有四种工作方式,同时也可以做并行I/O的扩展。

图上是串口的结构图。
SBUF是数据缓冲寄存器,发送和接收用的是一个地址,但是不用担心冲突,读只能从接收缓冲区,写只能在发送缓冲区里。
寄存器SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI)
SM0和SM1: 工作方式选择(0-3),方式1和方式3使用T1产生波特率,方式0和方式2是固定速率。
SM2 :在方式2和方式3的多级通信控制位
REN:允许串行接收控制位,0禁止接收
TB8:对于方式2和方式3,是发送的第9位
RB8:对于方式2和方式3,是接收的第9位;对于方式1,是接收到的停止位
TI:发送中断标志,发送完一帧后置位,必须由软件清零
RI:发送中断标志,接收完一帧后置位,必须由软件清零
寄存器PCON(最高位SMOD)
SMOD=1时,波特率加倍
程序:PC与单片机通信,PC发送字符,单片机接收后返回给PC
PC端程序,VB编写,使用MSCOMM控件
Private Sub Command1_Click()
MSComm1.Output = Text1.Text '发送数据
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 4 '设置串口的端口号
MSComm1.Settings = "9600,n,8,1" '设置串口的波特率等参数
MSComm1.RThreshold = 1 '设置最小接收的字节数
MSComm1.PortOpen = True '打开串口
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Text2.Text = Text2.Text & MSComm1.Input '接收数据
End Select
End Sub
单片机程序:
#include void UartInit(); void UartSendChar(unsigned char ch); void main(void) { UartInit(); while(1); } void UartInit() { SCON = 0x50; // SCON: 模式1 TMOD = 0x20; // TMOD: 定时器1 模式2 PCON = 0x00; // SMOD=0; TH1 = 0xFD; // Baud:9600 波特率=2SMOD×fosc/(32×12×(256-TH1)) TL1 = 0xFD; IE = 0x90; TR1 = 1; EA = 1; } void UartSendChar(unsigned char ch) { SBUF = ch; while(TI==0); TI=0; } void UartRec() interrupt 4 { unsigned char ch; ch = SBUF; if(RI) { RI = 0; UartSendChar(ch); } }
史海拾趣
|
十年了,依然两手空空。回首一望,心里无比苍凉。 由于学历比较低吧,知名的企业进不了。也就一些小公司看在我经验丰富的份上要了我,工资老涨不上去;而且那些公司确确实实是要会干活的人。因此,差不多每进一家厂,都会有一些很难的项目等着我。 ...… 查看全部问答> |
|
数字信号处理器是一种特别适合于进行数字信号处理的微处理器,主要用于实时快速地实现各种数字信号处理算法 定点运算DSP数字信号处理器在应用中已取得了极大的成功,而且仍然是DSP应用的主体。然而,随着对DSP处理速度与精度、存储 ...… 查看全部问答> |
|
关于三级管的问题 有两个三极管(3DG6型号或3DG8型号放大倍数>=50;3A*31型号或3AX81型号放大倍数>=30。)可用现在市场上的哪种型号的三极管代替呀?望各位告知一下。… 查看全部问答> |
|
是WINCE5的SDK,用IImagingFactory IImage接口, 报错是 dcdvDlg.obj : error LNK2001: unresolved external symbol _CLSID_ImagingFactory dcdvDlg.obj : error LNK2001: unresolved external symbol _IID_IImagingFactory 我已 ...… 查看全部问答> |




