今日头条
十余载开发经验述单片机基础理论知识
单片机基础理论知识包括模拟电路、数字电路和C语言知识,模拟电路与数字电路属于抽象学科,要把这些学好还得费点功夫,但是在学习单片机之前,觉得自己模拟电路和数字电路基础不好的话,先不要急着入门单片机,首先应该先回顾所学过的模拟电路和数字电路知识,为学习单片机奠定坚实基础,否则,你的单片机学习之路不仅会很艰难和漫长,意志不坚定还可能半途而废。
扎实的电子技术基础是学好单片机的关键,直接影响到你单片机学习进程的快慢,单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能很容易理解,能轻松地迈开学习的第一步,自信心也会随之树立起来,一般建议先学习模拟电路再去学习数字电路,扎实的模拟电路基础不仅让你容易看懂别人设计的电路,还能让你自己设计的电路更为可靠,从而提高产品质量。
补充一些单片机串行通信的基础知识点,硬件层是对电气特性作了一些规定,比如232它会对它的接口做一些规定,接口特性用什么样子机械的接口用什么样的标准它都会有一个规定,包括USB对信号线会有规定,对它的电气特性会有规定,对USB的接口也有一个规定,用的A型接口还是B型接口,还是type c的接口,接口标准是有严格规定的,有各种各样的标准来做工作,各种厂商包括用户都遵循标准来设计硬件,有的硬件的标准,只是电气特性的标准,比如485实际上只规定电气特性,并没有对它的接口做规定,所以做485的时候会有各种各样的接口,有的可能是用的232的接口,有的是用的网线接口,有的就是用简单的接线端子。
51单片机是异步串口通信,收发双方如何知道什么时候开始发送数据,什么时候开始接收数据,TXD和RXD它俩之间没有一根时钟信号线来做时钟的同步,同步传输是有一个时钟信号线,在它的控制下可以做数据的传输,收发双方用的同一个时钟,所以都可以来监控时钟,知道数据什么时候开始发送,什么时候开始接收,如果是异步串口通信,线上和地线之间出现电平,在做异步串口通信的时候的帧格式,在这根线上要传出的电平要么就是0V,要么就是5V,如果这根线上出现0V它传输的数据是0,如果是5V它传输的数据就是逻辑1。
来做传输的时候怎么样来表明现在开始启动传输,现在传输完了,异步串口通信信号线上默认在空闲的时候,把它处于高电平,所以在空闲的时候线上永远呈现的是5V,TXT一端要想发送数据,不管当前发送的数据是1和0,比如要发送数据是1010,低位先发,高位后发,B端要发送数据,或者数据传输开始了,可以在发送数据之前,在启动发送之前先发送一个起始位,异步串口通信是一帧一帧的字符来传输的,在发送数据之前,当的数据是八位还是七位,也是由用户来设定的。
比如八位的数据要想在发送数据之前告诉B端,要开始发送数据,加一个起始位补充一个0代表是起始位,看如果总线上一直是空闲状态,B端监控这条总线,一旦把它拉成低电平,信号线就会从高电平跳成低电平,B端就能够发现,因为在监控总线,发现这根线上从高电平变成低电平就认为要开始一次数据传输了,收发双方会约定好是几位数据位,比如接收这八个数据位,接收完发送完这八个数据位之后要把它拉成高电平,使总线继续处于空闲,首先发一个起始位,然后发一个数据位然后再发一个停止位,最后高电平叫做停止位,一帧数据就是包括这么几个部分,起始位,数据位,停止位,奇偶校验位。
当总线处于空闲的时候想启动一次发送,为使总线处于低电平,B端知道要产生一次数据传输,接下来就可以发送数据,把它出现在总线上,已经知道开始发送数据,紧接着就能够接收八个数据,接收完八个数据之后,要补充一个停止位,告诉它这一帧数据,这一个字节的数据发送完了,要想继续发送要重新按照帧格式进行传送,要发一个停止位,当B端接收到停止位的时候就知道数据已经接收完了就可以去做处理,当再次发送的时候还是照遵循约定,按照起始位数据位和停止位来进行发送,又可以按照刚才的约定来进行接收数据。
既然可以解决收发双方都知道什么时候开始,什么时候结束,比如1001再补充一个,发送的时候会增加一个起始位这一帧数据,这牵扯到另外一个概念,叫做波特率的概念,波特率是指的是一秒钟传输的数据的位数,一秒钟传出多少个位,常用的波特率都知道,在利用单片机串行通信的时候,或者打开计算机的串行口的时候经常会看到有波特率,比如300,然600,1200,2400,4800,9600,还有115200等等,各种波特率代表的是一秒钟传输多少个位,比如说9600,就是指一秒钟要传输9600个位,规定的波特率,波特率就决定了位,位和位之间时间间隔是1/9600秒,一秒钟要传出多少个位,在做异步串行通信的时候,因为没有时钟信号线,怎么样来保证传输的数据,收到之后,知道是这么一帧数据,它靠的就是波特率,接收完之后再去做处理。
收发双方波特率是一致的,所以收发双方能够解析同一个数据,不是一个值处理的时候就会出错,开始的时候,线上处于的是高电平,也是总线空闲当要发送一个数据的时候,首先内部肯定有一个电路,能够把并行的数据转成一个串行的一位一位的数据,然后让它出现在总线上,同时单片机的串行口还可以帮增加硬件的起始位和停止位,实际上的串行口比较简单,当在发送一帧数据的时候,要发送一个数据对单片机操作,就是把数据写到一个特殊功能进行当中,然后它会通过内部的电路把并行的数据转型转成串行的数据,同时增加一个起始位和1个停止位,所以要想发送1010,要增加一个起始位0,首先把总线拉成低电平就知道要发送数据了,接着就来发送这么一帧数据。
对单片机感兴趣的可以查看往期分享内容,希望能帮助大家在学习单片机的路上少走一些弯路,想要入门单片机可以持续关注创为单片机编程,,回复“带我学习”查看更多内容分享。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !