在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機(jī)串口通信程序詳解

h1654155282.3538 ? 2018-04-11 15:51 ? 次閱讀

串口通信簡介

串行接口是一種可以將接受來自CPU的并行數(shù)據(jù)字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送出去,同時(shí)可將接受的串行數(shù)據(jù)流轉(zhuǎn)換為并行的數(shù)據(jù)字符供給CPU的器件。一般完成這種功能的電路,我們稱為串行接口電路。

本文主要介紹單片機(jī)上串口的工作原理和如何通過程序來對(duì)串口進(jìn)行設(shè)置,并根據(jù)所給出的實(shí)例實(shí)現(xiàn)與PC 機(jī)通信。

一、原理簡介

51 單片機(jī)內(nèi)部有一個(gè)全雙工串行接口。什么叫全雙工串口呢?一般來說,只能接受或只能發(fā)送的稱為單工串行;既可接收又可發(fā)送,但不能同時(shí)進(jìn)行的稱為半雙工;能同時(shí)接收和發(fā)送的串行口稱為全雙工串行口。串行通信是指數(shù)據(jù)一位一位地按順序傳送的通信方式,其突出優(yōu)點(diǎn)是只需一根傳輸線,可大大降低硬件成本,適合遠(yuǎn)距離通信。其缺點(diǎn)是傳輸速度較低。

與之前一樣,首先我們來了解單片機(jī)串口相關(guān)的寄存器

SBUF 寄存器:它是兩個(gè)在物理上獨(dú)立的接收、發(fā)送緩沖器,可同時(shí)發(fā)送、接收數(shù)據(jù),可通過指令對(duì)SBUF 的讀寫來區(qū)別是對(duì)接收緩沖器的操作還是對(duì)發(fā)送緩沖器的操作。從而控制外部兩條獨(dú)立的收發(fā)信號(hào)線RXD(P3.0)、TXD(P3.1),同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工。

串行口控制寄存器SCON(見表1) 。

pIYBAGBzrFeARRqMAAAgVtG-CCY791.jpg

表中各位(從左至右為從高位到低位)含義如下。

SM0 和SM1 :串行口工作方式控制位,其定義如表2 所示。

o4YBAGBzrKSALDghAAB1w1txjzc530.jpg

其中,fOSC 為單片機(jī)的時(shí)鐘頻率;波特率指串行口每秒鐘發(fā)送(或接收)的位數(shù)。

SM2 :多機(jī)通信控制位。 該僅用于方式2 和方式3 的多機(jī)通信。其中發(fā)送機(jī)SM2 = 1(需要程序控制設(shè)置)。接收機(jī)的串行口工作于方式2 或3,SM2=1 時(shí),只有當(dāng)接收到第9 位數(shù)據(jù)(RB8)為1 時(shí),才把接收到的前8 位數(shù)據(jù)送入SBUF,且置位RI 發(fā)出中斷申請引發(fā)串行接收中斷,否則會(huì)將接受到的數(shù)據(jù)放棄。當(dāng)SM2=0 時(shí),就不管第位數(shù)據(jù)是0 還是1,都將數(shù)據(jù)送入SBUF,并置位RI 發(fā)出中斷申請。工作于方式0 時(shí),SM2 必須為0。

REN :串行接收允許位:REN =0 時(shí),禁止接收;REN =1 時(shí),允許接收。

TB8 :在方式2、3 中,TB8 是發(fā)送機(jī)要發(fā)送的第9 位數(shù)據(jù)。在多機(jī)通信中它代表傳輸?shù)牡刂坊驍?shù)據(jù),TB8=0 為數(shù)據(jù),TB8=1 時(shí)為地址。

RB8 :在方式2、3 中,RB8 是接收機(jī)接收到的第9 位數(shù)據(jù),該數(shù)據(jù)正好來自發(fā)送機(jī)的TB8,從而識(shí)別接收到的數(shù)據(jù)特征。

TI :串行口發(fā)送中斷請求標(biāo)志。當(dāng)CPU 發(fā)送完一串行數(shù)據(jù)后,此時(shí)SBUF 寄存器為空,硬件使TI 置1,請求中斷。CPU 響應(yīng)中斷后,由軟件對(duì)TI 清零。

RI :串行口接收中斷請求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí),此時(shí)SBUF 寄存器為滿,硬件使RI 置1,請求中斷。CPU 響應(yīng)中斷后,用軟件對(duì)RI 清零。

電源控制寄存器PCON(見表3) 。

pIYBAFrNvvqAcLTrAAAQtWVVJ3g603.jpg

表中各位(從左至右為從高位到低位)含義如下。

SMOD :波特率加倍位。SMOD=1,當(dāng)串行口工作于方式1、2、3 時(shí),波特率加倍。SMOD=0,波特率不變。

GF1、GF0 :通用標(biāo)志位。

PD(PCON.1) :掉電方式位。當(dāng)PD=1 時(shí),進(jìn)入掉電方式。

IDL(PCON.0) :待機(jī)方式位。當(dāng)IDL=1 時(shí),進(jìn)入待機(jī)方式。

另外與串行口相關(guān)的寄存器有前面文章敘述的定時(shí)器相關(guān)寄存器和中斷寄存器。定時(shí)器寄存器用來設(shè)定波特率。中斷允許寄存器IE 中的ES 位也用來作為串行I/O 中斷允許位。當(dāng)ES = 1,允許 串行I/O 中斷;當(dāng)ES = 0,禁止串行I/O 中斷。中斷優(yōu)先級(jí)寄存器IP的PS 位則用作串行I/O 中斷優(yōu)先級(jí)控制位。當(dāng)PS=1,設(shè)定為高優(yōu)先級(jí);當(dāng)PS =0,設(shè)定為低優(yōu)先級(jí)。

波特率計(jì)算:在了解了串行口相關(guān)的寄存器之后,我們可得出其通信波特率的一些結(jié)論:

① 方式0 和方式2 的波特率是固定的。

在方式0 中, 波特率為時(shí)鐘頻率的1/12, 即fOSC/12,固定不變。

在方式2 中,波特率取決于PCON 中的SMOD 值,即波特率為:

o4YBAFrNvwOAOtmzAAAGtLuRNYg408.jpg

當(dāng)SMOD=0 時(shí),波特率為fosc/64 ;當(dāng)SMOD=1 時(shí),波特率為fosc/32。

② 方式1 和方式3 的波特率可變,由定時(shí)器1 的溢出率決定。

o4YBAFrNvxCAHpXFAAAKpks6oT8706.jpg

當(dāng)定時(shí)器T1 用作波特率發(fā)生器時(shí),通常選用定時(shí)初值自動(dòng)重裝的工作方式2( 注意:不要把定時(shí)器的工作方式與串行口的工作方式搞混淆了)。其計(jì)數(shù)結(jié)構(gòu)為8 位,假定計(jì)數(shù)初值為Count,單片機(jī)的機(jī)器周期為T,則定時(shí)時(shí)間為(256 ?Count)×T 。從而在1s內(nèi)發(fā)生溢出的次數(shù)(即溢出率)可由公式(1)所示:

pIYBAFrNvxuAVdomAAAM8h5lq7Y243.jpg

從而波特率的計(jì)算公式由公式(2)所示:

o4YBAFrNvyWAW76pAAAObXAZY0o387.jpg

在實(shí)際應(yīng)用時(shí),通常是先確定波特率,后根據(jù)波特率求T1 定時(shí)初值,因此式(2)又可寫為:

pIYBAFrNvzCAGwXKAAAQdGlesnY801.jpg

二、電路詳解

下面就對(duì)圖1 所示電路進(jìn)行詳細(xì)說明。

pIYBAFrNvz6AZrAoAACI-9jun7w803.jpg

最小系統(tǒng)部分(時(shí)鐘電路、復(fù)位電路等)第一講已經(jīng)講過,在此不再敘述。我們重點(diǎn)來了解下與計(jì)算機(jī)通信的RS-232 接口電路??梢钥吹?,在電路圖中,有TXD 和RXD 兩個(gè)接收和發(fā)送指示狀態(tài)燈,此外用了一個(gè)叫MAX3232 的芯片,那它是用來實(shí)現(xiàn)什么的呢?首先我們要知道計(jì)算機(jī)上的串口是具有RS-232 標(biāo)準(zhǔn)的串行接口,而RS-232 的標(biāo)準(zhǔn)中定義了其電氣特性:高電平“1”信號(hào)電壓的范圍為-15V~-3V,低電平“0”

信號(hào)電壓的范圍為+3V~+15V??赡苡行┳x者會(huì)問,它為什么要以這樣的電氣特性呢?這是因?yàn)楦叩碗娖接孟喾吹碾妷罕硎荆辽儆?V 的壓差,非常好的提高了數(shù)據(jù)傳輸?shù)目煽啃?。由于單片機(jī)的管腳電平為TTL,單片機(jī)與RS-232 標(biāo)準(zhǔn)的串行口進(jìn)行通信時(shí),首先要解決的便是電平轉(zhuǎn)換的問題。一般來說,可以選擇一些專業(yè)的集成電路芯片,如圖中的MAX3232。MAX3232 芯片內(nèi)部集成了電壓倍增電路,單電源供電即可完成電平轉(zhuǎn)換,而且工作電壓寬,3V~5.5V 間均能正常工作。其典型應(yīng)用如圖中所示,其外圍所接的電容對(duì)傳輸速率有影響,在試驗(yàn)套件中采用的是0.1μF。

值得一提的是MAX3232 芯片擁有兩對(duì)電平轉(zhuǎn)換線路,圖中只用了一路,因此浪費(fèi)了另一路,在一些場合可以將兩路并聯(lián)以獲得較強(qiáng)的驅(qū)動(dòng)抗干擾能力。此外,我們有必要了解圖中與計(jì)算機(jī)相連的DB-9型RS-232的引腳結(jié)構(gòu)(見圖2)。

o4YBAFrNv0uAcwtyAAAb2h-dLEc486.jpg

其各管腳定義如下(見表4)。

o4YBAFrNv1eADNx8AABFO4zGGAw544.jpg

三、程序設(shè)計(jì)

本講設(shè)計(jì)實(shí)例程序如下:

#include “AT89X52.h” (1)

void Init_Com(void) ( 2)

{

TMOD = 0x20; ( 3)

PCON = 0x00; ( 4)

SCON = 0x50; ( 5)

TH1 = 0xE8; ( 6)

TL1 = 0xE8; ( 7)

TR1 = 1; ( 8)

}

void main(void) ( 9)

{

unsigned char dat; ( 10)

Init_Com(); ( 11)

while(1) ( 12)

程序詳細(xì)說明:

(1)頭文件包含。

(2)聲明串口初始化程序。

(3)設(shè)置定時(shí)器1 工作在模式2,自動(dòng)裝載初值(詳見第二講)。

(4)SMOD 位清0,波特率不加倍。

(5)串行口工作在方式1,并允許接收。

(6)定時(shí)器1 高8 位賦初值。波特率為1200b/s(7)定時(shí)器1 低8 位賦初值。

(8)啟動(dòng)定時(shí)器。

(9)主函數(shù)。

(10)定義一個(gè)字符型變量。

(11)初始化串口。

(12)死循環(huán)。

(13)如果接收到數(shù)據(jù)。

(14)將接收到的數(shù)據(jù)賦給之前定義的變量。

(15)將接收到的值輸出到P0 口。

(16)對(duì)接收標(biāo)志位清0,準(zhǔn)備再次接收。

(17)將接收到的數(shù)據(jù)又發(fā)送出去。

(18)查詢是否發(fā)送完畢。

(19)對(duì)發(fā)送標(biāo)志位清0。

四、調(diào)試要點(diǎn)與實(shí)驗(yàn)現(xiàn)象

接好硬件,通過冷啟動(dòng)方式將程序所生成的。hex文件下載到單片機(jī)運(yùn)行后,打開串口調(diào)試助手軟件,設(shè)置好波特率1200,復(fù)位單片機(jī),然后在通過串口調(diào)試助手往單片機(jī)發(fā)送數(shù)據(jù)(見圖3),可以觀察到在接收窗口有發(fā)送的數(shù)據(jù)顯示,此外電路板上的串行通信指示燈也會(huì)閃爍,P0 口所接到LED 燈會(huì)閃爍所接收到的數(shù)據(jù)。

o4YBAFrNv3GAJzzbAABlraKxDLU167.jpg

另外串口調(diào)試助手軟件使用時(shí)應(yīng)注意的是,如果單片機(jī)開發(fā)板采用串口下載而且和串口調(diào)試助手是使用同一串口,則在打開串口軟件的同時(shí)不能給單片機(jī)下載程序,如需要下載,請首先點(diǎn)擊“關(guān)閉串口”,做發(fā)送實(shí)驗(yàn)的時(shí)候,注意如果選中16 進(jìn)制發(fā)送的就是數(shù)字或者字母的16 進(jìn)制數(shù)值,比如發(fā)送“0”,實(shí)際接收的就應(yīng)該是0x00,如果不選中,默認(rèn)發(fā)送的是ASCII 碼值,此時(shí)發(fā)送“0”,實(shí)際接收的就應(yīng)該是0x30,這點(diǎn)可以通過觀察板子P0 口上的對(duì)應(yīng)的LED 指示出來。

五、總結(jié)

本講介紹了單片機(jī)串口通信的原理并給出了實(shí)例,通過該講,讀者可以了解和掌握51 單片機(jī)串口通信的原理與應(yīng)用流程,利用串口通信,單片機(jī)可以與計(jì)算機(jī)相連,也可以單片機(jī)互聯(lián)或者多個(gè)單片機(jī)相互通信組網(wǎng)等,在實(shí)際的工程應(yīng)用中非常廣泛。從學(xué)習(xí)的角度來說,熟練的利用串口將單片機(jī)系統(tǒng)中的相關(guān)信息顯示在計(jì)算機(jī)上可以很直觀方便的進(jìn)行調(diào)試和開發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5704

    瀏覽量

    123726
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1626

    瀏覽量

    55562
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    51單片機(jī)串口檢測程序

    本內(nèi)容提供了51單片機(jī)串口檢測程序,詳解列出了本程序
    發(fā)表于 05-09 11:43 ?6958次閱讀

    51單片機(jī)串口通信代碼

    51單片機(jī)串口通信的代碼設(shè)計(jì)
    發(fā)表于 11-09 17:47 ?180次下載

    51單片機(jī)與PC串口通信程序

    51單片機(jī)與PC串口通信程序。
    發(fā)表于 12-24 11:30 ?40次下載

    51單片機(jī)串口通信程序

    51單片機(jī)串口通信程序,帶有詳細(xì)例程,希望可以給你幫助。
    發(fā)表于 05-16 11:56 ?124次下載

    基于51單片機(jī)的UART串口通信

    基于51單片機(jī)的UART串口通信詳解。
    發(fā)表于 11-21 10:14 ?6.3w次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的UART<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    如何使用51單片機(jī)實(shí)現(xiàn)串口通信

    51單片機(jī)串口引腳為P3.0引腳與P3.1引腳,分別是RXD和TXD引腳。串口通信可以用于單片機(jī)
    發(fā)表于 11-21 15:47 ?3w次閱讀
    如何使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    51單片機(jī)串口通訊詳解

    串口,作為單片機(jī)程序開發(fā)中最常用、最方便,也是應(yīng)用最廣泛的程序調(diào)試方法;無論是作為調(diào)試工具,打印出調(diào)試信息,還是對(duì)功能模塊進(jìn)行通信
    發(fā)表于 11-11 17:06 ?15次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b>通訊<b class='flag-5'>詳解</b>

    串口通信詳解51單片機(jī)

    串口傳輸,實(shí)現(xiàn)單片機(jī)與PC機(jī)的雙機(jī)通信。串口控制(51單片機(jī)
    發(fā)表于 11-12 10:06 ?81次下載
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b><b class='flag-5'>詳解</b>(<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>)

    51單片機(jī)串口通信程序實(shí)現(xiàn)與Proteus仿真

    一、51單片機(jī)串口通信關(guān)于51單片機(jī)串口
    發(fā)表于 11-12 10:36 ?16次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>的<b class='flag-5'>程序</b>實(shí)現(xiàn)與Proteus仿真

    51單片機(jī)串口通信

    51單片機(jī)串口通信文章目錄51單片機(jī)串口
    發(fā)表于 11-18 14:06 ?22次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    51單片機(jī)串口通信

    51單片機(jī)串口通信文章目錄51單片機(jī)串口
    發(fā)表于 11-21 20:36 ?64次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    Java實(shí)現(xiàn)與51單片機(jī)串口通信 Serie Library

    com.lius.series.seriesTool;/** * @author 19862 * 51單片機(jī)串口通信 Serie Library測試
    發(fā)表于 11-23 16:51 ?15次下載
    Java實(shí)現(xiàn)與<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b> Serie Library

    51單片機(jī)串口通信(自動(dòng)發(fā)送)

    51單片機(jī)串口通信(自動(dòng)發(fā)送)51單片機(jī)串口
    發(fā)表于 11-23 17:06 ?13次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>(自動(dòng)發(fā)送)

    51單片機(jī)——串口通信

    51單片機(jī)——串口通信串口通信串口
    發(fā)表于 11-23 17:36 ?33次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    基于51單片機(jī)單片機(jī)串口通信仿真設(shè)計(jì)

    基于51單片機(jī)單片機(jī)串口通信仿真設(shè)計(jì),資料包含仿真及源程序
    發(fā)表于 04-20 16:15 ?4次下載
    主站蜘蛛池模板: 欧美极品| 一级做a爱片特黄在线观看 | 字幕网中文aⅴ资源站| 婷婷国产在线| 一区二区视屏| 精品一区二区三区视频| 日本免费不卡一区| 曰本在线| 天堂视频网| 97婷婷色| 亚洲第一在线视频| 天天综合在线视频| 萝控喷水视频| 人人草草| 黄色毛片基地| 天天综合天天射| 全国男人的天堂网站| 精品啪啪| 亚洲成片在线观看12345ba| 色网综合| 免费看h网站| 在线视频亚洲色图| 色偷偷91综合久久噜噜噜男男| 农村一级片| www.色播| 国内精品手机在线观看视频| 一区二区三区四区视频在线| 伊人啪啪| 男人的天堂视频网站清风阁| www.99色.com| 久久久香蕉视频| 天堂一区二区三区在线观看| 午夜看片a福利在线| 欧美成人综合在线| xxx亚洲日本| 国产午夜在线视频| 欧美视频免费一区二区三区| 天堂在线www网亚洲| 精品一区 二区三区免费毛片| 午夜视频在线免费| 午夜aa|