精华内容
下载资源
问答
  • 单片机TTL电平软件模拟串口通讯 利用单片机TTL电平模拟串口通信收发数据,字符串,模拟波特率9600模拟成功稳定有效,19200波特率不稳定,更高波特率模拟失败;以下为模拟9600波特率程序 定时器0定时100us模拟9600...

    单片机TTL电平软件模拟串口通讯

    利用单片机TTL电平模拟串口通信收发数据,字符串,模拟波特率9600模拟成功稳定有效,19200波特率不稳定,更高波特率模拟失败;以下为模拟9600波特率程序

    定时器0定时100us模拟9600波特率;定时器1定时1ms用于接收判断,收到第一个数据后定时器1开始累加,10ms后接收完毕处理接收数据,10ms一次性可接收10个字符左右,若需要一次性接收更多字符,累加设置长一点即可

    程序实现了自发自收,单片机收到数据后再原样发出来

    #include <STC12C5A60S2.H>
    #include <intrins.h>
    /*--------------------------------------------------------------------------------------------
                      函数定义
    -----------------------------------------------------------------------------------------------*/
    void delayms(unsigned int time);
    void uart_initialize();
    void SimulateSendData(char dat);
    void SimulateStringSendData(char *s);
    void SimulateReceiveData(); 
    /*--------------------------------------------------------------------------------------------
                                  位定义
    -----------------------------------------------------------------------------------------------*/
    
    
    sbit send=P2^0;             //发送引脚
    sbit receive=P2^1;          //接收引脚
    
    bit simulate_flag,over_flag;
    
    
    /*--------------------------------------------------------------------------------------------
                              变量定义
    -----------------------------------------------------------------------------------------------*/
    int i;
    char rec=0;
    int number=0;                            //接收数组下标                
    char receivestring[50]="\0";             //接收数组
    int over_count;
    /*--------------------------------------------------------------------------------------------
                                      主函数
    -----------------------------------------------------------------------------------------------*/
    void main()
    {
    	uart_initialize();
    	while(1)
    	{
    		SimulateReceiveData();	//接收数据	
    		if(over_flag)           //接收完成
    		{
    			receivestring[number]='\0';
    			SimulateStringSendData(receivestring); 
    			rec=0;
    			number=0;
    			receivestring[0]='\0';
    			over_flag=0;
    		}
    	}
    }
    
    /*--------------------------------------------------------------------------------------------
                                       接收函数
    -----------------------------------------------------------------------------------------------*/
    void SimulateReceiveData()
    {
    	if(!receive)
    		{
    			simulate_flag=1;
    			TR0=1;
    			while(simulate_flag);
    			simulate_flag=1;
    			while(simulate_flag);
    			for(i=0;i<8;i++)
    			{
    				if(receive) {rec=rec | 0x80;}
    				else {rec=rec & 0x7f;}
    				if(i<7) {rec=rec>>1;}	
    				simulate_flag=1;
    				while(simulate_flag);
    			}
    			receivestring[number++]=rec;
    			TR0=0;		
    		}
    		
    }
    /*--------------------------------------------------------------------------------------------
                                      发送字符串
    -----------------------------------------------------------------------------------------------*/
    void SimulateStringSendData(char *s)
    {
    	while(*s!='\0')
    	{
    		SimulateSendData(*s);
    		s++;
    	}
    }
    /*--------------------------------------------------------------------------------------------
                                      发送单字节
    -----------------------------------------------------------------------------------------------*/
    void SimulateSendData(char dat)
    {
    		send=0;
    		simulate_flag=1;
    		TR0=1;
    		while(simulate_flag);
    		for(i=0;i<8;i++)
    		{
    			send=dat & 0x01;
    			simulate_flag=1;
    			dat=dat>>1;
    			while(simulate_flag);
    		}
    		send=1;
    		simulate_flag=1;
    		while(simulate_flag);
    		TR0=0;
    }
    /*--------------------------------------------------------------------------------------------
                                     定时器初始化
    -----------------------------------------------------------------------------------------------*/
    void uart_initialize()
    {  
    	AUXR |= 0xC0;		//定时器0,1为1T模式  
    	TMOD = 0x11;		 
    	TL1 = 0xCD;			//定时器1定时1ms 
    	TH1 = 0xD4;			
    	ET1 = 1;			   
    	TR1 = 1;			   
    	TL0 = 0xAE;	//定时器0定时100us,模拟9600波特率
    	TH0 = 0xFB;		  
    	TR0 = 0;         
    	ET0 = 1;         
    	PT0 = 1;         
    	EA = 1;              
    	
    
    }
    /*--------------------------------------------------------------------------------------------
                                     延时函数,毫秒单位
    -----------------------------------------------------------------------------------------------*/
    void delayms(unsigned int time)
    {
    		unsigned char i, j;
    		while(time--)
    		{
    			i = 9;
    			j = 143;	
    			do
    			{
    				while (--j);
    			} while (--i);
    		}
    
    }
    
    /*--------------------------------------------------------------------------------------------
    					定时器0中断														
    -----------------------------------------------------------------------------------------------*/
    void timer_to() interrupt 1
    {
    		TL0 = 0XAE;			
    		TH0 = 0xFB;	
    	  if(simulate_flag) simulate_flag=0;
    	
    } 
    /*--------------------------------------------------------------------------------------------
    				定时器1中断														
    -----------------------------------------------------------------------------------------------*/
    void timer_t1() interrupt 3
    {
    	TL1 = 0xCD;			
    	TH1 = 0xD4;	
    	
    	if(receivestring[0]!='\0' & !over_flag)
    		{
    			over_count++;
    			if(over_count==10)
    			{
    				over_flag=1;
    				over_count=0;
    			}
    			
    		}
    }
    
    展开全文
  • 武汉波仕单片机TTL电平RS-232/RS-485/RS-422转换器pdf,
  • 在使用的单片机的串口与电脑的通信过程,以及硬件设计设计外部通信方式中经常会遇到TTL电平,RS232,RS485相互兼容等设计要求,下面来简单介绍一下RS485,RS232,TTL电平的区别和应用。 简介 《1》TTL电平...

    在使用的单片机的串口与电脑的通信过程,以及硬件设计设计外部通信方式中经常会遇到TTL电平,RS232,RS485相互兼容等设计要求,下面来简单介绍一下RS485,RS232,TTL电平的区别和应用。

    <一>简介

    《1》TTL电平就是处理器控制的设备内部各部分之间通信的标准技术,以STM32F1x系列的单片机以3.3V作为逻辑“1”,0V等价于逻辑“0”。而且单片机常用的USART通信采用的就是TTL电平方式。

    《2》RS232是串口通讯的一种标准接口和其所对应的通信方式。其标准接口有9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现。工业控制的RS-232口一般只使用RXD、TXD、GND三条线,便是单片机中的串口的形态。只是其逻辑1(MARK)范围为-3V~-15V范围为+3~+15V,需要电平转换芯片实现转换。

    《3》RS485是串口通讯的一种标准接口和其所对应的通信方式。采用差分信号负逻辑,逻辑"0”以两线间的电压差为+(2~6)V表示;逻辑"1"以两线间的电压差为-(2~6)V表示。

    <二>区别

      从本质上来说大多数的的单片机的串口通讯方式是TTL电平的RS232方式,其通信距离较短,传递速度较慢,且只能实现点对点通信。而RS485最高传输速率为10Mbps,传递速度快,半双工网络方式,能过实现主从间的切换。

        



    展开全文
  • TTL电平:一般用作数字芯片的电平,单片机大多是TTL电平(电压标准不同)。 232电平:电脑串口的电平 二:USB转串口包括两种: 1.USB转232串口 2.USB转TTL串口 三:三者转换 (1)TTL与232串口互转: 单片机串口...

    USB、TTL电平、232电平之间的相互转换

    USB、TTL电平、232电平之间的相互转换

    一:什么是TTl电平、232电平?
        TTL电平:一般用作数字芯片的电平,单片机大多是TTL电平(电压标准不同)。
        232电平:电脑串口的电平

    二:USB转串口包括两种:
           1.USB转232串口
           2.USB转TTL串口

    三:三者转换
    (1)TTL与232串口互转:

    单片机串口(TTL电平)想和电脑串口(232电平)通信,就需要使得他两的电平逻辑一样才可以通信。这时候,就需要用到转换TTL--232电平的芯片,常用的有MAX232、MAX3232、SP232、SP3232等。MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,不同引脚实现TTL转RS-232或RS-232转TTL的功能。连接方式为:单片机串口—232芯片–串口

    (2)USB转TTL串口:
    USB转TTL芯片有很多,例如:CH340、PL2303、CP2102、FT232等。开发板上,板载USB转TTL芯片:CH340,所以你只需要用USB连接线把电脑和开发板连起来,就可以下载程序和进行串口通信了。连接方式:单片机TTL串口—USB转TTL芯片–USB口



    (3)USB转232串口:
    USB经过PL2303转成了TTL串口(中间那四个窟窿可以引出,TTL再经由MAX232转换为RS-232电平,9针串口引出。(公口,泛指所有带针的口,样子与台式电脑后边自带的串口相同。)

    或者直接CH341芯片USB转RS232

    或者集成了USB TTL RS232三者的串口模块

     

    ISP烧录 和三者转换电路原理图参考 https://www.docin.com/p-2143981023.html

     

    https://blog.csdn.net/robinson_911/article/details/30029545

    这两天在调试带UART的蓝牙模块和NFC模块,由于刚开始分不清UART电平和RS232电平的区别,直接将蓝牙上UART的RX和TX接到PC上串口的TX和RX,导致所有数据都是乱码。后来才弄清楚:在UART上使用的TTL电平,而PC的串口是RS232,它有自己的电平定义,所以在UART和RS232之间需要做一个电平转换。现在来认识一下什么是TTL电平和RS232电平。

    1.MCU的Rx和Tx可以直接 接蓝牙模块和NFC模块的UART口,而不需要Max3232做电平转换。这是因为此二者(MCU和这两个模块之间)都是TTL电平,所以可以直接相互的通信,而不需要转换电平。另外还需要注意:MCU的Rx接蓝牙模块和NFC模块的Tx,MCU的Tx接蓝牙模块和NFC模块的Rx。

    2.当需要通过电脑的232串口直接调试蓝牙模块和NFC模块时,需要在PC端的232串口和蓝牙模块或NFC模块之间接一块电平转换芯片——max323。通过电平匹配,可以将模块的TTL电平转换为串口的RS232电平,当电平一致时,就可以通信了。另外还需要注意:PC的Rx接蓝牙模块和NFC模块的Tx,PC的Tx接蓝牙模块和NFC模块的Rx。

    TTL电平

           TTL是Transistor-Transistor Logic,即晶体管-晶体管逻辑的简称,它是计算机处理器控制的设备内部各部分之间通信的标准技术。TTL电平信号应用广泛,是因为其数据表示采用二进制规定,+5V等价于逻辑"1",0V等价于逻辑"0"。

           数字电路中,由TTL电子元器件组成电路的电平是个电压范围,规定:

    • 输出高电平>=2.4V,输出低电平<=0.4V;
    • 输入高电平>=2.0V,输入低电平<=0.8V。

           噪声容限是0.4V。

     

    RS232电平

     

           RS232是串口的一个标准,它有自己的电平定义:它采用负逻辑,-15V~-3V代表逻辑"1",+3V~+15V代表逻辑"0"。

    展开全文
  • RS232电平和TTL电平

    千次阅读 2018-09-04 19:41:47
    为了把单片机TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如SP3232。 RS232是工业上常用的串口标准,无论是PLC的RS232串口模块,还是工控机的串口(COM),输出的电平都称为RS232电平。同时我们...

    结论:TTL电平和RS232电平,无论是在电压范围还是在极性上(RS232是负逻辑)都有很大的不同。显然,这两种电平是不能直接相连的。为了把单片机的TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如SP3232。

    RS232是工业上常用的串口标准,无论是PLC的RS232串口模块,还是工控机的串口(COM),输出的电平都称为RS232电平。同时我们知道这些模块的内部控制单元都是单片机,其电平为TTL电平。

    TTL电平

    TTL(Transistor-Transistor Logic,晶体管-晶体管逻辑),TTL电平即TTL电路输出的电平,TTL电路的工作电压是5V,它的输出可以是高电平(3.6V)或者低电平(0.3V)。由于电平是一个连续变化的电压范围,为了用这种模拟量的电压来表示数字量的逻辑1和逻辑0,TTL电平规定:

    对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;

    对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;

    RS232电平

    RS232是美国电子工业协会于1962年发布的串行通信接口标准,RS即Recomend Standard,推荐标准,232为标示号。该标准对串行通信的物理接口及逻辑电平都做了规定。最简单的RS232通信由三条数据线组成,即TxD、RxD和GND。RS232采用负逻辑电平,即-15V~-3V代表逻辑"1",+3V~+15V代表逻辑"0"。这里的电平,是TxD线(或者RxD线)相对于GND的电压。

     

    展开全文
  • TTL电平CMOS电平

    2016-09-10 10:35:28
    单片机 模拟 器件搜索 半导体基础知识 放大电路分析 放大电路频率特性 负反馈放大电路 集成运算放大器 ...TTL电平CMOS电平 来源:http://www.21ic.com/jichuzhishi/analog/ques
  • 教训-单片机TTL串口电平不稳定

    千次阅读 2017-04-12 15:43:40
    目前的一个项目中,需要使用单片机的串口通讯,由于外部设备的串口电平为TTL电平,故在应用中,将单片机的串口IO与外部设备上直接相连的。 但是在后来的调试中,暂时不需要连接外部设备,发现单片机总是会莫名的...
  • usb转串口,232电平,TTL电平

    千次阅读 2019-05-04 16:44:10
    TTL电平:一般用作数字芯片的电平(单片机大多是TTL电平,只是不同的电压标准) 232电平:232电平特制电脑串口的电平 USB:除去屏蔽层,有4根线,分别是VCC、GND和D+、D-两根信号线。5V是USB的电源电压,给USB ...
  • TTL电平与RS232电平的区别

    千次阅读 2017-09-08 18:45:42
    51系列单片机接口是TTL电平,其中就有串口,如 Tx Rx 等。 电脑自带串口是标准 RS232电平。51系列单片机 串口 ,一般要用 max232电平转换后才能与电脑自带串口 相连。RS-232  RS-232 对电器特性、逻辑电平和各种...
  • 电子电路是单片机硬件部分的基础知识,电子电路...单片机中一般使用TTL电平。51单片机中(0-5V,小于0.4V表示低电平,大于2.4V表示高电平)。STM32单片机中(0-3.3V,小于0.4V表示低电平,大于2V表示高电平)。 CM...
  • 首先来说串口通讯协议,串口通讯协议包括物理部分与协议部分嘛,物理部分既硬件部分,协议部分既软件部分。形象店来说就是物理层决定人们用嘴巴还是肢体交流,协议层决定...由上图可以看出RS232电平与TTL电平逻辑刚.
  • 这样电路有好多种,一般来说商业化的成品会用到MAX232,DS275等专用的RS232、TTL电平转换集成电路,对于普通电子爱好者来说使用这样的器件一来不太好购买,二来使制作的费用提高,那用什么样的电路去代替它们呢?...
  • 232电平和TTL电平

    千次阅读 2014-04-16 22:57:27
    RS-232分TX/RX,全双工的,可以同时收发; USB只有一对差分数据线D+/D-,是半双工的;要实现串口的功能,首先需要有一个串口,不过现在的好多电脑 都不带串口的功能 ,因此 ...但是此时 的串口还不能直接与单片机连接,
  • 一般、DSP、FPGA他们之间管教能否直接相连. 一般情况下,同电压的是可以的,不过是要好好查查...其中TTL和CMOS的逻辑电平按典型电压可分为四类:5V系列(5V TTL和5V CMOS)、3.3V系列,2.5V系列和1.8V系列。5V TTL
  • T1IN,T2IN可直接连接TTL/CMOS电平的51单片机串行发送端TXD; R1OUT,R2OUT可直接连接TTL/CMOS电平的51单片机的串行接收端RXD; T1OUT,T2OUT可直接连接PC机的RS-232串口的接收端RXD; R1IN,R2IN可直接连接PC机...
  • 我们单片机的输出与输入时TTL电平,其中高电平为+5V,低电平为-5V,因此我们需要通过电平转换才能通信。 二、单片机的串口通信方式 第一种是直接用USB转TTL电平(CH340)的方式进行通信,如下图。 上图中USB转串...
  • 简单的RS232C/TTL电平转换和串口取电

    千次阅读 2010-09-18 16:45:00
    单片机的串口有很大一部分是使用TTL电平标准的(PIC的可以直接连接在电脑串口),它的逻辑1电平是5V,逻辑0电平是0V,而电脑串行口所使用的是RS232C的电平标准,它的逻辑1电平是-3V--12V,逻辑0电平是+3V-+12V。...
  • 但是,如果你的单片机的输出是TTL电平的话,由于TTL的输出高电平Voh的保证值是2.7V,而74HC573的输入高电平的保证值是3.6V,所以必须接提升电阻把TTL的输出高电平Voh提升到至少3.6V以上,否则会造成数据传送的不稳定...
  • GND为单片机系统电源参考地 TXD为串行发送引脚 RXD为串行接收引脚 低位先发,高位后发 波特率:发送二进制数据位的速率 UART串口通信 通信三种基本类型 【1】单工通信:只允许一方向另外一方传送信息,另一方...
  • 试验过程:开始的时候从机TX是设置的推挽输出,主机连接一个从机时,可以收到从机回复的信息,但是并联两个从机后就收不到回复信息了,把从机TX引脚设置成开漏输出,用的STM32单片机内部可以设置上拉,可以收到从机...
  • 只需要增加一个二极管和一个电阻,就可以大幅提高PL-2303/CP2102芯片的usb转TTL电平下载线的速度和兼容性,未改装之前,下载线只能以1200波特率下载,还经常发生连接失败,增加这两个元件后,可以使用软件默认的最高...
  • 手头有一个GPS模块带有串口功能,TTL电平,希望用MSP430实现控制,由于都是TTL电平的(应该是吧?如果不是请纠正,因为MSP430是3.3V供电的有点拿不准),考虑可以采用TX/RX交叉连接实现直接通信,但是不知道这样是否...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 456
精华内容 182
关键字:

单片机ttl电平