. 串行通訊與并行通信
數(shù)字信號是八位二進制數(shù),可以使用信號線傳輸,一種方案是使用一條數(shù)據(jù)線按照次序一位一位的傳送,每傳送完8位為一個字節(jié),這就是串行通信。還有一種方法是使用八條數(shù)據(jù)線同時傳送8個位的數(shù)據(jù),一次傳送一個字節(jié),這就是并行通信。
倆種通信方式圖示如下:
并行通信
特點為傳輸速度快,控制簡單,但遠距離傳輸時成本較高且接收方同時接收各位比較難
串行通信
特點為傳輸線少,遠距離傳輸時成本低,但數(shù)據(jù)傳輸比并行通信復(fù)雜
同步通信與異步通信
串行通信分為同步通信與異步通信
1.同步通信
顧名思義,同步通信就是對發(fā)送方和接收方的時鐘實行直接控制,使雙方的數(shù)據(jù)傳輸達到完全同步。數(shù)據(jù)以位的形式連續(xù)發(fā)送,且傳送的字符之間不留間隙,即保持位同步和字符同步。雙方的同步可以通過外同步和自同步倆種方式實現(xiàn)。
(前者為外同步,后者為自同步)
2.異步通信
和同步通信不同,異步通信的發(fā)送方和接收方使用各自的時鐘控制數(shù)據(jù)的發(fā)射接收。異步通信是一種很常見的通訊方式,其發(fā)送端可以在任意時候發(fā)送字符,但與同步通信不同的是異步通信是以幀的形式發(fā)送數(shù)據(jù)的(異步通信中一個幀數(shù)據(jù)有十位:分別是一個起始位、八個數(shù)據(jù)位、一個停止位)
這樣理解倆種通信方式:下課了,二狗喊鐵蛋一起吃飯。同步通信就是:如果鐵蛋聽到了二狗叫他就馬上和他去吃飯,如果一次沒聽到二狗就繼續(xù)喊,直到鐵蛋聽到他的話并且和他去吃飯為止。異步通信就是:二狗喊了鐵蛋一聲然后就自己去吃飯了,鐵蛋收到消息后可能立即去吃飯,也可能等一會去吃飯。(讀者自行腦補hhh*.*)
圖示如下:
- 實現(xiàn)51單片機串口通信的知識儲備
目的:用異步通信實現(xiàn)單片機與計算機之間的數(shù)據(jù)交流
1.波特率
波特率可以衡量數(shù)字信號傳輸?shù)乃俾剩浯笮槊棵雮鬏敹M制數(shù)的位數(shù),單位為:bps。比如:每秒傳輸300幀數(shù)據(jù),一幀數(shù)據(jù)是十個二進制數(shù),則傳輸速率就是300x10=3000(bps)。單片機和計算機的傳輸速率要一致。
2.波特率的設(shè)置
計算機的波特率可以在界面上直接調(diào)整,那單片機的波特率要怎么設(shè)置呢?
我們一般是把T1(定時中斷1)作為波特率的發(fā)生器,而且利用的是T1的工作方式2。
此時波特率的計算公式為:
解釋一下公式內(nèi)容:
一.SMOD
SMOD屬于PCON寄存器,不可位尋址,大家可以把其理解為波特率加倍標志,置0的時候不加倍,置1的時候波特率加倍。
二. fosc
fosc就是單片機的晶振頻率,一般是11.0529MHz(還有一種情況是12MHz,但其誤差相對較大,一般不予采用)1M=1000,000
三.(256-T初)
T1的工作方式2是八位數(shù)據(jù)自動裝填(八位二進制數(shù)的范圍是0~255,共256個數(shù)),初始值在開始時裝入TH1和TL1,工作時只有TH1計數(shù),當TH1溢出時把TL1中的初始值重新賦值給TH1,這樣就實現(xiàn)了自動裝填。
(256-T初)代表著每次定時器計數(shù)的次數(shù)。
3.如何設(shè)置波特率(假如設(shè)置波特率為9600bps)
首先-設(shè)置定時器T1的工作方式:編輯TMOD寄存器為TMOD=0X20;使定時器T1處于工作方式2;
然后-計算T1的初始值并裝載TH1和TL1,波特率為9600bps時TH1=0XFD、TL1=0XFD;
最后-啟動T1:編輯TCON寄存器中的TR1,使TR1=1(打開T1定時器)。通過設(shè)置PCON寄存器PCON=0X00設(shè)置SMOD=0。
4.如何確定串行口控制
通過編輯SCON寄存器控制串行口
其實主要是控制串行口的工作方式:SM0=0、SM1=1,和打開串行口的允許接收位:REN=1。
5.打開中斷
打開總中斷和串口通信中斷:EA=1、ES=1。
6.SBUF寄存器
前面講了一大堆鋪墊,相信大家都有一個疑問:單片機是怎么發(fā)送數(shù)據(jù)呢?它又是如何接收數(shù)據(jù)呢? 如果要細講這其中的傳輸原理,那會是復(fù)雜難懂的,好在單片機的內(nèi)部硬件自帶發(fā)送和接收數(shù)據(jù)的功能,它是通過SBUF寄存器實現(xiàn)的。
SBUF寄存器有倆個,一個是發(fā)送寄存器,另一個是接收寄存器(名字都一樣),但在邏輯上SBUF只有一個(地址都為99H),物理結(jié)構(gòu)上,這是倆個完全獨立的寄存器。如果CPU寫SBUF,數(shù)據(jù)就會被送入發(fā)送寄存器準備發(fā)送;如果CPU讀SBUF,則讀入的數(shù)據(jù)一定來自接收寄存器。
簡單來講:a=SBUF,代表單片機從計算機接收到了數(shù)據(jù)(接收到的數(shù)據(jù)自動存在接收寄存器SBUF中)并且從接收寄存器SBUF讀取數(shù)據(jù)并賦給a。SBUF=a,代表單片機要給計算機發(fā)送a數(shù)據(jù),只需將a賦給發(fā)送寄存器SBUF就行,發(fā)送寄存器SBUF會自動給計算機發(fā)送SBUF中的數(shù)據(jù)。
下面是其工作圖:
(RXD是接收引腳,
(RXD是接收引腳,TXD是發(fā)送引腳)
7.TI與RI
TI和RI都在SCON寄存器中。
TI是發(fā)送中斷標志位,當數(shù)據(jù)發(fā)送完成后,TI由硬件置1,TI置1后向CPU提出中斷申請,進入中斷函數(shù)后需要軟件置0(TI=0;)
RI是接收中斷標志位,當數(shù)據(jù)接收完成后,RI由硬件置1,RI置1后向CPU提出中斷申請,進入中斷函數(shù)后需要軟件置0(RI=0;)
8.串口中斷
串口中斷函數(shù)是
void (函數(shù)名無所謂) interrupt 4
{
中斷程序;
}
一旦TI或者RI為1就執(zhí)行中斷函數(shù),并且需要在中斷函數(shù)中將TI、RI重新置0。
- 話不多說,上代碼!
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
uchar num;
void init() //初始化函數(shù)
{
TMOD=0x20;//設(shè)置定時器1的工作方式2---8位自動裝填
TH1=0xfd;//設(shè)置初始值:使比特率為9600bps
TL1=0xfd;
PCON=0x00;//SMOD=0,不加倍
TR1=1;//打開定時器中斷開關(guān)
REN=1;//打開允許串行接收位
SM0=0;//設(shè)置串行口通訊方式為方式1
SM1=1;
EA=1; //打開總中斷
ES=1; //打開串口通訊中斷
}
void hhh() interrupt 4 //中斷函數(shù)
{
num=SBUF; //從計算機接收數(shù)據(jù),賦給num
RI=0; //數(shù)據(jù)接收完畢后將RI軟件置0
SBUF=num;//向計算機發(fā)送數(shù)據(jù)num
while(!TI); //TI=0時陷入死循環(huán),直至數(shù)據(jù)發(fā)送完畢
TI=0; //數(shù)據(jù)發(fā)送完畢后軟件將TI置0
}
void main()//主函數(shù)就這么簡單
{
init();
while(1);
}
接下來的事情就交給串口調(diào)試助手了
上一篇:51單片機—紅外遙控
下一篇:C51—模擬IIC總線實現(xiàn)EEPROM存取數(shù)據(jù)
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 上汽大眾:汽車網(wǎng)絡(luò)安全漏洞防護
- 恩智浦推出全新電池控制IC系列 助力新能源解決方案發(fā)展
- 全球首條GWh級新型固態(tài)電池生產(chǎn)線樣件下線
- 總投資455億元!三大動力電池項目齊刷進度條
- 現(xiàn)代汽車韓國建氫燃料電池廠,2028年投產(chǎn)
- 6月融資一覽:智能汽車芯片、第三代半導(dǎo)體、機器人成資本焦點
- 艙駕一體“點燃”新戰(zhàn)事
- 汽車智能化2.0引爆「萬億蛋糕」,誰在改寫游戲規(guī)則?
- 2025研華智能系統(tǒng)產(chǎn)業(yè)伙伴峰會成功舉辦
- 意法半導(dǎo)體公布2025年第二季度財報和電話會議時間安排