A. 51单片机串口工作原理,硬件原理
一般
单片机
串口
通讯
设置为串口中断,当有数据
移入
SBUF寄存器
就
产生中断,中断程序
数据取走,等待接收
下一个数据,由于单片机数据处理速度
远比
串口通讯速度快,所有不会产生
数据丢失的可能。
B. 8051单片机中串口电路的主要功能是什么
用串口实现,由于只有两个从机。完全可以用第九位数据位啊,让串口工作在方式3或方式4,在控制寄存器
scon
中设置好第九位数据就行了
再看看8051串口的工作方式吧
C. 单片机串口多机通信电路如何接!
网络文库 里 有
单片机C语言程序设计实训100例 的pdf 文档
有 仿真图、源码
D. 51单片机串口下载电路能不能供电
一般的开发板的串口电路都是可以供电的,当然也可以烧录,供电的话,接电脑的USB或者移动电源都可以,51单片机一般都是+5V供电的。
E. 单片机的串行口怎么接
这个接法没问题,是TXD和Tin相连,单片机的TXD是发送数据(从单片机发往计算机),MAX232的Tin是发送数据输入。
Rout和Rxd相连,是MAX232的Rout接收数据输出(从计算机发往单片机),Rxd是单片机的接受数据输入。如果是两个单片机之间通讯的话就是TXD->RXD;RXD->TXD.
F. 两个9s12单片机串口通信电路简图该如何绘制
两个单面机之间通过串口通信,可以直接连接通信线和地线就可以实现通信。一个单片机的发送端,接另一个单片机的接收端。接收端接发送端。地线连在一起就可以了。
G. 求单片机与电脑接口(TTL与RS232电平模拟转换)电路及工作原理
1.先介绍电脑上与单片机进行通讯的接口的名称
(1)一般是用电脑串口来进行通讯的,平常大家说的电脑的串口是指台式电脑主机后面的九针接口,如下图
这个接口有个专业的名称,叫RS23接口,而RS232接口是串口通讯的一种,其实所谓的接口,我的理解就是一种通信协议,规定了传输电平,传输方式,及怎么传输数据等等。
协议标准规定采用一个25个脚的DB25连接器,还规定了连接器的每个引脚的信号内容,同时还对各种信号的电平加以规定。但随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS232接口叫做DB9。
(2)电脑上的RS232接口采用的是负逻辑电平:
-15~-3表示逻辑1;
+15~+3表示逻辑0;
电压值通常在7V左右
(3)我们可以使用串口电缆直接连接两台PC机的串口,实现两台PC机的串口通讯。但是PC机和单片机的通讯却不能够用电缆直接进行连接,原因是PC机RS232串口的电平标准和单片机的TTL电平不一致,因此单片机和PC机之间的串口通讯必须要有一个RS232/TTL电平转换电路。通常这个电路都选择专用的RS232接口电平转换集成电路进行设计,如MAX232、HIN232等。
2.单片机串口输出的逻辑电平
单片机的串口输出电路采用的逻辑电平是TTL电平。这种电平信号由TTL器件产生的,一般的芯片,如运放,数字器件等...
TTL:Transistor-Transistor
Logic
三极管结构。
Vcc:5V;VOH>=2.4V;VOL<=0.5V;
VIH>=2V;VIL<=0.8V
3.单片机与电脑串口的连接
首先解决的就是逻辑接口电平的问题,其次就是通信方法及方式的问题
(1)在这里我们可以使用集成芯片MAX232,这是一款专门用来进行信号电平的转换的芯片,使用起来简单方便,这里把电路贴出。
(2)当然,我们也可以使用分立元件来搭建RS232电平转换电路以供我们实验使用,下图给出了一个常见电路,只要器件完好,电路焊接完毕后即可正常工作,经实际使用,效果良好。不用MAX232实现DSP或MCU与PC通讯的电路,元件经济,结构简单设计巧妙
用三极管实现RS-232转TTL电路
电路如下图
1.DB9的2脚TXD:为RS-232电平信号接收端,RXD;3脚为RS-232电平信号发送端,
2.图中的Vcc应该是+5V,TXD接单片机TXD,RXD接单片机RXD。
工作原理是:从TTL转为RS2323电平,由于二极管与电容的作用使得在二极管D1与电容C7交接处的电压保持在-3V~-15V.
当TXD为"1"(TTL)时,Q3截止,PCRXD上的电压与PCTXD电压相等,也是-3~-15V,为"1"(RS232)
当TXD为"0"(TTL)时,
Q3导通,则PCRXD电压约为+5V,这个电压在+3~+15V之间,根据RS232电平,它是"0"....也就是说TTL的"1"经过这个电平转换电路后,RS2323可以识别出它是"1",是"0"也能识别为0.这就实现了从TTL到RS232的电平转换.
从RS232转换为TTL电平那就简单了,当PCTXD为"1",即-3~-15V时,Q4截止,RXD电压约为5V,为"1",,当PCTXD为"0"时,Q4导通,电压为0,电平为"0".那么从RS232到TTL的电平转换也实现了.
备注:D2是为了防止Q4的BE反向击穿,TXD的最低电压时15V,Q4的BE耐压是6V左右。
简略大概的说:
当TXD=1时,Q3截止,导致PCRXD=1;
当TXD=0时,Q3导通,导致PCRXD=0;
当PCTXD=1时,Q4导通,导致RXD=1;
当PCTXD=0时,Q4截止,导致RXD=0;
RS232
1,0
TTL
1
,0
自己总结的,希望对有需要的人有帮助
/********希望我能幸福,也希望能给别人带来幸福***/
H. STM32F103单片机的串行口通信电路和GPRS通信电路怎么实现
实现单片机模块与设备模块之间的串口通讯,首先需要将双方正确地连接起来。异步串行通讯是很常用的一种模块间互连方式,一般会使同三条连接线,分别标记为Tx(或TxD)、Rx(或RxD),以及GND。其中Tx用于数据发送,是输出信号; Rx用于数据接收,是输入信亐,GND为公共地线。
题目图1中的USART1_Rx表示单片机的数据接收端,应该与图2中的GSM_TxD相连接,而图1中的∪SART1_Tx表示单片机的数据犮送端,应与图2中的GSM_RxD相连,单片机的GND与GSM模块的GND共在一起。然后就是软件工作,双方要约定一致的通讯参数(如波特率,数据位,校验位,停止位等),在单片机一端编写串口设置程序,并根据GSM模块的命令集和命令格式编写控制程序。
需要注意一点,常用的异步串行通讯接口的电平标准有RS232和TTL,RS232用于远距离长线连接,而TTL用于短距离连接。这两者是不可以直接互联的。如果需要连接,必须先转换成相同的电平标准。单片机引脚:信号是TTL标准的,而外购模块串口电平与模块制造厂家,模块型号等有关,需要查看模块的技术说明文件。
I. 51单片机和计算机之间实现串口通信的电路图
串口通讯参考程序如下:
来源:深入浅出AVR单片机
#include<reg51.h>
unsignedcharUART_RX;//定义串口接收数据变量
unsignedcharRX_flag;//定义穿行接收标记
/*********************************************************************************************
函数名:UART串口初始化函数
调用:UART_init();
参数:无
返回值:无
结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
备注:振荡晶体为12MHz,PC串口端设置[4800,8,无,1,无]
/**********************************************************************************************/
voidUART_init(void){
EA=1;//允许总中断(如不使用中断,可用//屏蔽)
ES=1;//允许UART串口的中断
TMOD=0x20;//定时器T/C1工作方式2
SCON=0x50;//串口工作方式1,允许串口接收(SCON=0x40时禁止串口接收)
TH1=0xF3;//定时器初值高8位设置
TL1=0xF3;//定时器初值低8位设置
PCON=0x80;//波特率倍频(屏蔽本句波特率为2400)
TR1=1;//定时器启动
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口接收中断处理函数
调用:[SBUF收到数据后中断处理]
参数:无
返回值:无
结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)
备注:过长的处理程序会影响后面数据的接收
/**********************************************************************************************/
voidUART_R(void)interrupt4using1{//切换寄存器组到1
RI=0;//令接收中断标志位为0(软件清零)
UART_RX=SBUF;//将接收到的数据送入变量UART_data
RX_flag=1;//标记接收
//用户函数内容(用户可使用UART_data做数据处理)
//SBUF=UART_data;//将接收的数据发送回去(删除//即生效)
//while(TI==0);//检查发送中断标志位
//TI=0;//令发送中断标志位为0(软件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口发送函数
调用:UART_T(?);
参数:需要UART串口发送的数据(8位/1字节)
返回值:无
结果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式
备注:
/**********************************************************************************************/
voidUART_T(unsignedcharUART_data){//定义串口发送数据变量
ES=0;//禁止穿行中断
SBUF=UART_data;//将接收的数据发送回去
while(TI==0);//检查发送中断标志位
TI=0;//令发送中断标志位为0(软件清零)
ES=1;//打开穿行中断
}
/*********************************************************************************************
函数名:UART串口发送字符串函数
调用:UART_S(?);
参数:需要UART串口发送的数据(8位/1字节)
返回值:无
结果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式
备注:
/**********************************************************************************************/
voidUART_S(unsignedchar*str)
{
while(1)
{
if(*str=='