码迷,mamicode.com
首页 > 其他好文 > 详细

1、单片机io模拟串口发送

时间:2020-07-18 22:39:42      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:mamicode   如何   start   color   com   height   top   col   ttl   

一、框图

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模拟串口发送

标签:mamicode   如何   start   color   com   height   top   col   ttl   

原文地址:https://www.cnblogs.com/sbtblogs/p/13336763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!