‘壹’ 简述单片机串行口的工作方式
89系列单片机的串行通信有4种工作方式:
1、方式0是同步移位寄存器方式,帧格式8位,波特率固定为fosc/12。
2、方式1是8位异步通信方式,帧格式10位,波特率可变:T溢出率/n(n= :32或16)。
3、方式2是9位异步通信方式,帧格式11位,波特率固定: fosc/n(n=32 或16)。
4、方式3是9位异步通信方式,帧格式11位,波特率可变:T溢出率(m=32或16)。
方式1、2、3的区别主要表现在帧格式及波特率两个方面。
单片机应用范围:
单片机渗透到我们生活的各个领域。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制等等。
还有自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
‘贰’ 51单片机的串口接收一帧数据有几位
发送的位数跟工作方式有关。51单片机的发送和接受,只有10位和11位两种。
先说单片机串口的工作方式:
单片机串口的工作方式共4种,方式0--方式3.
方式0:用移位脉冲。RXD做输入/输出,TXD进行移位。收发的数据为八位。
方式1:传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据位由TXD发送,由RXD接收
方式1:一帧信息也是10位;即 1位起始位,8位数据位(先低位),1位停止位。在起始位到达移位寄存器的最左位时,它使控制电路进行最后一次移位。
方式2和方式3:发送(通过TXD)和接收(通过RXD)一帧信息都是 11位: 1位起始位(0), 8位数据位(低位在先),1位可编程位(即第9位数据)和1位停止位(1)。
可见:不论单片机串口接收还是发送一帧数据是多少位,实际有效位数据位都是8位,其余位是为了奇偶校验、做起始位或终止位用的。
以前所述有误,特修正。
‘叁’ 单片机串口如何接收
在主程序中对接收到的数据串进行处理,查找帧头、提取有效数据、进行业务判断。
首先,要知道中断应当尽量简洁,所以中断里面只做数据接收和下标移动。
其次,要知道每帧的最大长度。帧长度要是毫无限制那缓冲区就不好开了,得采用适用性更强的缓冲技术,这里就不提了。举例假定数据量最多10字节,则最长帧为13字节,可开辟16字节缓冲区。
再次,要知道通信协议是怎么样的,传输速率如何(与单片机处理能力相比),每帧的数据之间有多少间隔,帧与帧之间有多少间隔。
间隔太短的话需要增加许多额外的处理,例如帧头识别、帧分割,必要时又得用较大容量的循环缓冲区……这里也不提了。举例假定帧间有足够多的间隔时间。
‘肆’ 51单片机通过串口实现数据的发送与接收程序
串口收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。
一般来说,过程如下:
1,配置串口参数、波特率等,开启串口中断;
void Init_UART()
{
}
2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;
程序一般为:
void UART_ISR() interrupt x using y
{
;串口中断处理函数
}
x - 单片机的C51中断号
y - 指定使用的当前工作寄存器组号(0-3 PSW中的RS0,RS1组合)
3,主程序
int main(void)
{
Init_UART();
while(1)
{
;//数据发送函数
}
}
‘伍’ 简述c51单片机串行口数据发送和数据接收过程
参考吴鉴鹰吧里面的资料,我也学习单片机,有吴鉴鹰单片机开发板(评价不错的一款单片机开发板),这样实验+理论,然后看视频学习会更好。有兴趣可以看下
串行口初始化编程格式:
SIO: MOV TMOD,#20H ;T1作波特率发生器
MOV TH1,#X ;定时初值选定波特率
MOV TL1,#X MOV PCON,#00H ;SMOD=0,就是波特率不增倍CLR TI ;清除发送中断标志SETB TR1 ;打开定时器1 2、发送程序
查询方式: TRAM: MOV A,@R0 ;取数据
MOV SBUF,A ;发送一个字符
WAIT:JBC TI,NEXT ;等待发送结束
SJMP WAIT NEXT: INC R0 ;准备下一次发送
SJMP TRAM3、接收程序
WAIT: JBC RI,NEXT ;查询等待
SJMP WAIT NEXT: MOV A,SBUF ;读取接收数据
MOV @R0,A ;保存数据
INC R0 ;准备下一次接收
SJMP WAIT 这个是用软件查询方法做的,没有设定数据校验。