1单片机io模拟串口发送

Posted sbtblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1单片机io模拟串口发送相关的知识,希望对你有一定的参考价值。

一、框图

1、单片机不能直接与

技术图片

1、单片机不能直接与电脑端进行通讯,两端的电平标准不一样
(1)pc端遵循的323电平,-12V左右表示的是高电平,而+12V左右表示的是低电平
(2)单片机端遵循的是TTL电平,5V表示高电平,0V表示电平
2、如何解决单片机和pc的通讯?
(1)可以通过SP232或MAX232转换芯片进行解决
(2)另外一个问题,现在大多笔记本电脑都没有串口,而只有usb接口,那么我们可以用CH340G、PL2303、CP2102或FT232等芯片解决,上图就是通过CH340芯片进行解决的

 

二、串口发送时序图

技术图片

1、如上图所示为8位UART协议格式
(1)一帧信息总共10位
(2)开头一位是起始位(start bit),最后一位是结束位(stop bit)
(3)中间8位是数据位(低位在先)
(4)脉冲的宽度是由波特率决定的,例如波特率位1200,则脉冲宽度为1/1200s,大约为833us

三、代码实现

 1 /********************************************************
 2 // 函数名称:UART_Send_Char(用IO模拟串口协议)
 3 // 输入参数:uartData
 4 // 输出参数:无
 5 // 函数功能:发送一个字节
 6 // 注意:延时用定时器延时(时序更准),不要用软件延时
 7 ********************************************************/
 8 void UART_Send_Char(unsigned char uartData)
 9 {
10     unsigned char i;
11     uartTXD = 1;            //单片机TX引脚拉高
12     uartTXD = 0;            //start bit
13     Delay883us();           //延时一个脉冲的时间(对应1200的波特率)
14     for (i=0;i<8;i++)
15     {
16         if(uartData & 0x01)
17         {
18             uartTXD = 1;
19         }
20         else
21         {
22             uartTXD = 1;
23         }
24         uartData >>= 1;
25     }
26     uartData = 1;            // stop bit
27     Delay883us();    
28 }

 

以上是关于1单片机io模拟串口发送的主要内容,如果未能解决你的问题,请参考以下文章

51单片机串口通讯

单片机模拟串口通讯,将串口接收到的数据原样发送,收到的数据长度不同。怎样判断数据接收完毕?

48 STM32普通IO模拟usart串口

C#中怎么向串口发送数据

单片机怎么通过串口发送一串数据?

单片机,能不能用gpio口读取ttl串口引脚输出的数值啊?