




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本章學(xué)習(xí)目標(biāo) :了解并行通信與串行通信的含義理解波特率的概念,學(xué)會(huì)波特率的計(jì)算方法能按要求正確設(shè)置特殊功能寄存器SCON和PCON的SMOD位能區(qū)分串行口的4種工作方式, 熟悉方式1、方式2、方式3 程序的編制方法知道RS-232C、RS-422A和RS485 基本性能理解雙機(jī)通信和多機(jī)通信的基本過程能讀懂教材中的控制實(shí)例,學(xué)會(huì)編寫同等難度的控制程序第5章 串行口與通信5.1串行通信的基礎(chǔ)知識(shí) 在實(shí)際應(yīng)用中,80C51單片機(jī)經(jīng)常要與外設(shè)進(jìn)行信息交換;單片機(jī)與單片機(jī)之間或單片機(jī)與計(jì)算機(jī)之間往往也要交換信息,這些信息交換都可以稱為通信。并行通信:數(shù)據(jù)的各位同時(shí)送出。占用I/O多,速度快。串行通信:
2、數(shù)據(jù)的各位逐位送出。線路簡(jiǎn)單,速度慢。數(shù)據(jù)通信的傳輸方式:并行通信和串行通信傳送數(shù)據(jù)1101 0010B時(shí)并行通信和串行通信的示意圖。5.1.1串行通信的制式按照信息傳送的方向,串行通信可分為3種制式。1單工制式2半雙工制式3全雙工制式 5.1.2串行通信的方式串行通信有兩種基本的通信方式:同步通信與異步通信。1.異步通信(Asynchronous Communication) 在異步通信中,數(shù)據(jù)通常是以字符(或字節(jié))為單位組成字符幀傳送的。字符幀由發(fā)送端逐幀發(fā)送,接收端逐幀接收。發(fā)送端和接收端由各自的時(shí)鐘來控制。這兩個(gè)時(shí)鐘源可以彼此獨(dú)立、互不同步。 在幀格式中,一個(gè)字符由4個(gè)部分組成:起始位
3、、二進(jìn)制數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。下圖給出了典型的異步幀格式。 5.1.2串行通信的方式2同步通信(Synchronous Communication) 同步通信在發(fā)送一組數(shù)據(jù)時(shí),只在開始用12個(gè)同步字符作為雙方取得同步的號(hào)令,然后連續(xù)發(fā)送整組數(shù)據(jù)。不像異步通信那樣將字符一個(gè)一個(gè)地分開來傳送。格式下圖所示。5.1.3串行通信的傳輸速率 所謂傳輸速率就是指每秒傳輸多少位,傳輸速率也稱波特率(bps)。 如果數(shù)據(jù)傳送的速率是120幀/秒,每個(gè)幀包含10位,則波特率為 10120=1200 bps,于是每位傳送的時(shí)間 T=1/1200=0.833ms 標(biāo)準(zhǔn)波特率系列為110、300、600、120
4、0、1800、2400、4800、9600和19200bps。5.1.4調(diào)制解調(diào)器(MODEM 又稱貓) 在進(jìn)行遠(yuǎn)程異步串行數(shù)據(jù)通信時(shí),二進(jìn)制的數(shù)據(jù)位在傳輸時(shí)會(huì)出現(xiàn)畸變,可以利用調(diào)制解調(diào)器解決這個(gè)問題。 利用調(diào)制解調(diào)器進(jìn)行數(shù)據(jù)遠(yuǎn)距離串行通信的過程如下圖所示。5.2串行口的基本結(jié)構(gòu)和工作方式 5.2.1串行口的基本組成 全雙工的串行通信口,可同時(shí)接收和發(fā)送。接收和發(fā)送緩沖器SBUF在物理上共用一個(gè)地址99H。發(fā)送緩沖器SBUF只能寫入不能讀出。接收緩沖器SBUF只能讀出不能寫入。5.2.2串行口的特殊功能控制寄存器 與串行口有關(guān)的特殊功能寄存器有SBUF、SCON、PCON,與串行口中斷有關(guān)的特
5、殊功能寄存器有IE、IP. 1串行口發(fā)送/接收緩沖器SBUF(99H) 2串行口控制寄存器SCON SCON的各位的定義和功能如下:SM0、SM1: 串行口工作方式選擇位(內(nèi)容見節(jié))。SM2: 多機(jī)通信控制位。具體用法見節(jié)。REN: 串行接收允許位。由軟件置1或清0。軟件置1時(shí),串行口允許接收,清0后禁止接收。TB8: 在方式2和方式3中是發(fā)送的第9位數(shù)據(jù)。RB8: 在方式2和方式3中是接收的第9位數(shù)據(jù)。TI: 發(fā)送中斷標(biāo)志位。發(fā)送結(jié)束時(shí)由硬件置位。該位必須用軟件清零。RI: 接收中斷標(biāo)志位。結(jié)束接收時(shí)由硬件置位。該位必須用軟件清零。 3電源控制寄存器PCON 串行口借用了電源控制寄存器PCO
6、N的最高位。PCON是8位寄存器,字節(jié)地址為87H,不可進(jìn)行位尋址。它的低4位全部用于80C51/80C31子系列單片機(jī)的電源控制。只有最高位SMOD位用于串行口波特率系數(shù)的控制。當(dāng)SMODl時(shí),方式1、2、3的波特率加倍,否則不加倍。PCON的格式如下:5.2.3串行口的四種工作方式 80C51單片機(jī)串行口有4種工作方式,用特殊功能寄存器SCON中的SM0、 SM1兩位進(jìn)行設(shè)定,見表5-1。 (1)特點(diǎn) 用于串行I/O口擴(kuò)展,有固定的波特率,為fOSC/12。 同步發(fā)送/接收功能,由TXD提供移位脈沖,RXD用作數(shù)據(jù)輸入/輸出通道。 發(fā)送接收8位數(shù)據(jù),低位在前,高位在后。(2)發(fā)送操作 由指
7、令MOV SBUF,A 啟動(dòng)發(fā)送操作,發(fā)送時(shí)由TXD輸出移位脈沖,RXD發(fā)送SBUF中的數(shù)據(jù)。發(fā)送完8位數(shù)據(jù)后,TI自動(dòng)置1,請(qǐng)求中斷。要繼續(xù)發(fā)送時(shí),TI必須由指令清0(CLR TI)。(3)接收操作 在RI=0的前提下,用指令置REN=1,可以啟動(dòng)一幀數(shù)據(jù)的接收。同樣由TXD輸出移位脈沖,由RXD接收串行數(shù)據(jù)。接收完一幀RI自動(dòng)置1,請(qǐng)求中斷。想繼續(xù)接收時(shí)要用指令清除RI。1方式02方式1(1)特點(diǎn) 8位異步串行通信UART接口。 幀結(jié)構(gòu)為10位,包括起始位0,8位數(shù)據(jù)位,1位停止位。 波特率由軟件設(shè)置,由T1 的溢出率決定。(2)發(fā)送操作 由指令MOV SBUF,A 啟動(dòng)A中的數(shù)據(jù)從TXD
8、端異步發(fā)送。發(fā)送完一幀數(shù)據(jù)后,TI自動(dòng)置1,請(qǐng)求中斷。要繼續(xù)發(fā)送時(shí),TI必須由指令清0(CLR TI)。(3)接收操作 在RI=0的前提下,用指令置REN=1,啟動(dòng)一幀數(shù)據(jù)的接收。串行口采樣RXD,當(dāng)采樣到1至0的跳變時(shí),表明接到串行數(shù)據(jù)的起始位,開始接收一幀數(shù)據(jù),直到停止位到來時(shí),把停止位送到RB8中,此時(shí)RI自動(dòng)置1,請(qǐng)求中斷并通知CPU從SBUF中取走已接收到的數(shù)據(jù) 。想繼續(xù)接收時(shí)要用指令清除RI。 方式2和方式3具有多機(jī)通信功能,兩種方式除了波特率設(shè)置不同外,其余功能完全相同。(1)特點(diǎn) 8位異步串行通信UART接口。幀結(jié)構(gòu)為11位,包括起始位0,8位數(shù)據(jù)位,1位可編程位TB8/RB8
9、,1位停止位。 方式2的波特率固定,由PCON中的SMOD位選擇,當(dāng)SMOD=0時(shí),波特率為fOSC/64;當(dāng)SMOD=1時(shí),波特率為fOSC/32;SMOD位狀態(tài)用軟件設(shè)置。見表5-1。3方式2和方式3(2)發(fā)送操作 發(fā)送操作前,用指令定義TB8(如作為奇偶校驗(yàn)位或地址/數(shù)據(jù)標(biāo)志位),由指令MOV SBUF,A 將A中的數(shù)據(jù)送入SBUF后啟動(dòng)發(fā)送操作;在發(fā)送操作中,已定義的TB8位能自動(dòng)加入待發(fā)送的8位數(shù)據(jù)之后構(gòu)成第9位,這樣組成的一幀完整數(shù)據(jù)自動(dòng)從TXD端異步發(fā)送;發(fā)送完成后,TI自動(dòng)置1,請(qǐng)求中斷。要繼續(xù)發(fā)送時(shí),TI必須由指令清0(CLR TI)。 在多機(jī)通信的發(fā)送操作中,用TB8作地址
10、/數(shù)據(jù)標(biāo)志位。TB8=1,地址幀;TB8=0,數(shù)據(jù)幀。 3方式2和方式3(3)接收操作 在RI=0的前提下,用指令置REN=1,啟動(dòng)一幀數(shù)據(jù)的接收,將接收數(shù)據(jù)的第9位送入RB8。該數(shù)據(jù)能否接收,要由SM2和RB8的狀態(tài)決定:SM2=0時(shí),串行口不看RB8狀態(tài),無條件接收。SM2=1是多機(jī)通信方式,接收到的RB8是地址/數(shù)據(jù)標(biāo)志位: 若RB8=1,接收的信息是地址,此時(shí)RI自動(dòng)置1,串行口接收發(fā)送來的數(shù)據(jù)。 若RB8=0,接收的信息是數(shù)據(jù)。對(duì)于SM2=1的從機(jī),RI不置1,此數(shù)據(jù)丟失;對(duì)于SM2=0的從機(jī),SBUF自動(dòng)接收發(fā)來的數(shù)據(jù)。3方式2和方式3 80C51單片機(jī)常與其它51單片機(jī)或PC機(jī)進(jìn)
11、行串行通信。 80C51單片機(jī)串行接口的信號(hào)電平為TTL類型,抗干擾能力差,傳輸距離短。為了提高串行通信的可靠性,延長(zhǎng)通信距離,工程設(shè)計(jì)人員一般采用標(biāo)準(zhǔn)串行接口,如RS-232C、RS-422A和RS-485等。這三種接口最初都是由美國(guó)電子工業(yè)協(xié)會(huì)(EIA)制訂并發(fā)布的。5.3串行通信的常用標(biāo)準(zhǔn)接口 5.3.1 RS-232C接口 RS-232C(又稱 EIA RS-232-C)是目前PC機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。圖5-7是利用RS-232C通過電話網(wǎng)實(shí)現(xiàn)遠(yuǎn)程通信的示意圖。 圖5-7 RS-232C通過電話網(wǎng)實(shí)現(xiàn)遠(yuǎn)程通信的示意圖1接口信號(hào) RS-232C是EIA在1969年推出的
12、。全名是“數(shù)據(jù)終端設(shè)備DTE(如計(jì)算機(jī)和各種終端機(jī))和數(shù)據(jù)通訊設(shè)備DCE(如調(diào)制解調(diào)器MODEM)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。它適合于數(shù)據(jù)傳輸速率在020 000bps范圍內(nèi)的通信。 圖5-8 RS-232C串口結(jié)構(gòu) 目前較為常用的RS-232C有9針串口(DB9)和25針串口(DB25),結(jié)構(gòu)分別如圖5-8所示。在保證通信準(zhǔn)確性的前提下,如果通信距離較近 (小于12米),可以用電纜線直接連接,圖5-9是這種連接方式的示意圖;若距離較遠(yuǎn),需附加調(diào)制解調(diào)器(MODEM),見圖5-7。 圖5-9 近程通信示意圖 實(shí)際上DB25中有許多引腳很少使用,在計(jì)算機(jī)與終端通訊中一般只使用3-9條引
13、線。最常用的9條引線的信號(hào)內(nèi)容見表5-2所示。最為簡(jiǎn)單且常用的是三線制接法,即地、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)三腳相連。傳輸線采用屏蔽雙絞線。如圖5-10 所示。 圖5-10 RS-232C串口結(jié)構(gòu)表5-2 DB9和DB25的常用信號(hào)腳說明 2.邏輯電平 RS-232C是早期為促進(jìn)公用電話網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信而制定的標(biāo)準(zhǔn)。它采用負(fù)邏輯,即-3V-15V規(guī)定為“1”;+3V+15V規(guī)定為“0”;-3V+3V為過渡區(qū),不做定義。 3電平轉(zhuǎn)換芯片與接口電路 RS232C信號(hào)的電平和單片機(jī)串口信號(hào)的電平不一致,必須進(jìn)行二者之間的電平轉(zhuǎn)換。常用芯片有MC1488(TTL轉(zhuǎn)換成RS232C信號(hào))、MC1489(RS23
14、2C信號(hào)轉(zhuǎn)換成TTL)等。另一種常用的集成電平轉(zhuǎn)換芯片MAX232可以實(shí)現(xiàn)RS232CTTL電平的雙向轉(zhuǎn)換,它只使用單一的5V電源供電,配接4個(gè)1F電解電容即可完成RS232電平與TTL電平之間的轉(zhuǎn)換。其原理圖如圖5-11所示。轉(zhuǎn)換完畢的串口信號(hào)TXD、RXD直接和80C51的串行口連接。圖5-11 電平匹配原理圖注:1.為提高電路抗干擾能力,C1C4要用鉭電容1.0F/16V,且盡 量靠近MAX232; 2. MAX232對(duì)噪聲很敏感,在VCC與GND之間加C5=0.1F,起去耦作用 1性能特點(diǎn) RS-485以良好的抗噪聲干擾性,長(zhǎng)距離傳輸特性和多站能力等優(yōu)點(diǎn)成為首選的串行接口。表現(xiàn)為: 接
15、口信號(hào)電平比RS-232C低(1.5V6V),不易損壞接口電路芯片,且該電平與TTL電平兼容,可方便與TTL 電路連接。 RS-485傳輸數(shù)據(jù)的速度較快,最高速率達(dá)到10Mbps 。 采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗噪聲干擾性能好。 最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,折合1219米,實(shí)際上可達(dá) 3000米。 RS-485接口允許在總線上同時(shí)連接32個(gè)發(fā)送器和32個(gè)接收器,即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地建立起設(shè)備網(wǎng)絡(luò)。 因RS-485接口組成的半雙工網(wǎng)絡(luò)一般只需二根連線,所以RS-485接口均采用屏蔽雙絞線傳輸。RS-485接口連接器采用D
16、B9的9芯插頭座。與智能終端RS-485接口采用DB9(孔);與鍵盤連接的鍵盤接口RS-485采用DB9(針)。5.3.2 RS-485接口2、與其它標(biāo)準(zhǔn)接口的對(duì)照表5-3 列出了RS-485與其它標(biāo)準(zhǔn)接口的對(duì)照表接口標(biāo)準(zhǔn)RS-232CRS-422ARS-485功能雙向,全雙工雙向,全雙工雙向,半雙工工作方式單端差分差分邏輯“0”電平3V15V2V6V1.5V6V邏輯“1”電平-3V-15V-2V-6V-1.5V-6V節(jié)點(diǎn)數(shù)1收、1發(fā)1發(fā)10收1發(fā)32收最大傳輸距離15米1219米1219米最大傳輸速率20Kb/S10Mb/s10Mb/s驅(qū)動(dòng)器加載輸出電壓5V15V2V1.5V接收器輸入電阻(
17、)3K7K4K(最小)12K抗干擾能力弱強(qiáng)強(qiáng) 應(yīng)用指導(dǎo)1串行通信中的常用波特率5.4串行口應(yīng)用與訓(xùn)練 80C51的四種工作方式中,方式0和方式2的波特率固定,見表5-1和方式0、方式2的特點(diǎn)。方式1和方式3的波特率可變,其具體數(shù)值由定時(shí)器T1的溢出率和SMOD位共同決定,公式見表5-1。 定時(shí)器T1作波特率發(fā)生器時(shí),為了防止溢出中斷,應(yīng)保持T1為中斷禁止?fàn)顟B(tài)。表5-4列出了T1的常用波特率。表5- 4 T1的常用波特率 2利用串行口擴(kuò)展I/O口 80C51單片機(jī)串行口方式0為同步移位寄存器方式,可進(jìn)行8位并行I/O口的擴(kuò)展。當(dāng)串行口別無它用時(shí),可通過使用串行輸入并行輸出移位寄存器(如74LS1
18、64)擴(kuò)展并行輸出口;或使用并行輸入串行輸出移位寄存器(如74LS165)擴(kuò)展并行輸入口。這種方法不占用片外RAM地址,而且還能簡(jiǎn)化單片機(jī)系統(tǒng)的硬件結(jié)構(gòu)。但缺點(diǎn)是操作速度較慢,且擴(kuò)展芯片越多,速度越慢。 圖5-12是利用一片74LS165擴(kuò)展8位并行輸入口的實(shí)用電路。當(dāng)移位/置入端S/由“1”變?yōu)椤?”時(shí),并行輸入端的數(shù)據(jù)被置入寄存器。當(dāng)S/1,且時(shí)鐘禁止端(15腳)接地時(shí),在時(shí)鐘脈沖的作用下,數(shù)據(jù)由QA向QH方向(即D7D0)移動(dòng)。 圖5-12 利用一片74LS165擴(kuò)展8位并行輸入口電路 圖中RXD(P3.0)作為80C51的串行輸入端與74LS165的串行輸出端相連,TXD(P3.1)為
19、移位脈沖輸出端,與74LS165芯片的移位脈沖輸入端連接,用一根I/O口線P1.0與74LS165芯片的S/相連來控制移位與置位過程。注:圖中74LS165的SIN引腳為串行輸入端,用于兩片74LS165的串行擴(kuò)展連接。3串行通信編程基礎(chǔ) (1)串行口初始化編程 串行口初始化應(yīng)該包括對(duì)SCON、PCON和T1的初始化。對(duì)T1的初始化又包含TMOD寄存器初始化(將T1設(shè)置為波特率發(fā)生器)、根據(jù)波特率求時(shí)間常數(shù)并對(duì)TH1和TL1賦值、啟動(dòng)T1等過程,串口初始化格式如下,其中加括號(hào)的指令可根據(jù)情況選擇使用: SIO:MOV SCON,#控制狀態(tài)字 ;寫方式字且TI=RI=0 (MOV PCON,#8
20、0H) ;波特率加倍 (MOV TMOD,#20H ) ;T1作波特率發(fā)生器 ( MOV TH1,#X ) ;選定波特率 ( MOV TH1,#X ) ( SETB TR1) ;啟動(dòng)T1 ( SETB EA) ;開串行口中斷 ( SETB ES)(2)發(fā)送程序 發(fā)送程序可以采用中斷和查詢兩種方式設(shè)計(jì)。查詢方式:TRAM:MOV A,R0 ;取數(shù)據(jù) MOVSBUF,A ;發(fā)送一個(gè)字符WAIT:JBCTI,NEXT ;等待發(fā)送結(jié)束 SJMPWAITNEXT:INCR0 ;準(zhǔn)備下一次發(fā)送 SJMPTRAM 中斷方式: ORG 0023H ;串行口中斷入口 AJMP SINT MAIN: ;初始化編程
21、 TRAM: MOV A,R0 ;取數(shù)據(jù)MOV SBUF,A ;發(fā)送第一個(gè)字符 SJMP$ ;其它工作 SINT:CLR TI ;中斷服務(wù)程序INC R0MOV A,R0 ;取數(shù)據(jù)MOV SBUF,A ;發(fā)送下一個(gè)字符RETI (3)接收程序 與發(fā)送相類似,接收也可以采用中斷和查詢兩種方式設(shè)計(jì)。 當(dāng)REN=1、RI=0時(shí)80C51處于等待接收狀態(tài);一旦檢測(cè)到RI=1,80C51開始從SBUF讀取數(shù)據(jù)。 查詢方式: WAIT:JBCRI,NEXT ;查詢等待 SJMPWAIT NEXT:MOVA,SBUF ;讀取接收數(shù)據(jù)MOVR0,A ;保存數(shù)據(jù)INC R0 ;準(zhǔn)備下一次接收SJMPWAIT5.
22、4.2 基本訓(xùn)練 1初始化訓(xùn)練 要求:某80C51單片機(jī)通信系統(tǒng),晶振頻率為12MHz,要求串行口發(fā)送8位數(shù)據(jù),波特率1200bmp,請(qǐng)編寫它的初始化程序。思路與計(jì)算:要選擇串行口和定時(shí)器T1的工作方式,計(jì)算時(shí)間常數(shù)并賦值給TH1、TL1。我們可以利用表5- 1中求波特率的公式: 初始化程序: MOV SCON,#40H ;串口工作于方式1 MOV PCON,#80H ;SMOD=1 MOV TMOD,#20H ;T1 作定時(shí)器,工作于方式2 MOV TH1,#0CCH ;裝入時(shí)間常數(shù)初值 MOV TL1 ,#0CCH ;自動(dòng)重裝時(shí)間常數(shù) CLR ET1 ;禁止T1中斷 SETB TR1 ;啟
23、動(dòng)T1波特率發(fā)生器 總結(jié):用上述公式計(jì)算出的波特率不為整數(shù),近似取整后,波特率也就不能精確地等于1200bps。但在異步傳送中,每接收一個(gè)字符實(shí)際上都要整步一次,因此這點(diǎn)微小誤差并不影響收發(fā)。 要求:利用80C51的串行口實(shí)現(xiàn)一個(gè)數(shù)據(jù)塊的發(fā)送。設(shè)發(fā)送數(shù)據(jù)區(qū)首地址為58H,數(shù)據(jù)塊長(zhǎng)度(字節(jié)數(shù))為10,串行口工作于方式1,波特率1200bps,晶振頻率為11.0592MHz。思路:串行口工作于方式1時(shí),波特率要編程設(shè)定。通常使T1工作在方式2,當(dāng)波特率取1200bps時(shí),可以查表或計(jì)算時(shí)間常數(shù)初值,得0E8H(SMOD=0時(shí))。發(fā)送子程序TRAM清單: TRAM:MOV TMOD,#20H ;T1
24、工作在方式2 MOV TH1,#0E8H;裝入時(shí)間常數(shù)初值 MOV TL1,#0E8H ;自動(dòng)重裝時(shí)間常數(shù)2串行傳送訓(xùn)練 CLR ET1 ;禁止T1中斷 SETB TR1 ;啟動(dòng)T1波特率發(fā)生器 MOV SCON,#40H ;串口工作于方式1 MOV PCON,#00H ;SMOD=0,該指令可不寫 MOV R1,#58H ;數(shù)據(jù)發(fā)送區(qū)首址送R1 MOV R5,#10 ;發(fā)送長(zhǎng)度送R5LOOP:MOV A,R1 ;發(fā)送一幀數(shù)據(jù) MOV SBUF,A WAIT:JBC TI,NEXT ;發(fā)送等待,發(fā)完一幀轉(zhuǎn)去NEXT SJMP WAIT NEXT:INC R1 ;準(zhǔn)備取下一數(shù)據(jù) DJNZ R5,
25、LOOP ;數(shù)據(jù)塊發(fā)完?未發(fā)完轉(zhuǎn)LOOP RET ;發(fā)完,結(jié)束 發(fā)送等待時(shí)為什么不用“JB TI,NEXT”指令,而用“ JBC TI,NEXT”指令? 5.4.3 課題與實(shí)訓(xùn)10 串行輸出控制彩燈一實(shí)訓(xùn)目的1熟悉74LS164的使用,掌握串行口的基本應(yīng)用方法。2學(xué)習(xí)串行口的擴(kuò)展技術(shù),掌握串行口相關(guān)寄存器的設(shè)定方法。3掌握串行口擴(kuò)展顯示器的電路設(shè)計(jì)原理和編程方法二課題要求 利用一片AT89C51芯片,使之工作于方式0。在其串口擴(kuò)展一片74LS164控制8個(gè)LED,要求使用建表方式,控制LED閃爍,其閃爍規(guī)律為:8個(gè)LED作左移2次,閃2次;右移2次,閃2次。閃爍間隔0.2秒。 三背景知識(shí)174
26、LS164是串行輸入并行輸出移位寄存器,接在80C51的串行口,可以實(shí)現(xiàn)對(duì)8位并行數(shù)據(jù)的控制。280C51與74LS164連接時(shí),RXD(P3.0)作為串行輸出與74LS164的數(shù)據(jù)輸入端(1、2)相連,TXD(P3.1)作為移位脈沖輸出與74LS164的時(shí)鐘脈沖輸入端(8)相連,74LS164的CLR端(9)通過電阻、電容接在電源和地上。 四硬件電路 圖5-13 串行輸出控制彩燈硬件電路 ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SCON,#00H;串口工作于方式0START:MOV DPTR,#TABLE;指向TABLE表LOOP:CLR A;清除A M
27、OVC A,A+DPTR;從TABLE表取數(shù)據(jù) CJNE A,#05H,NEXT;取到結(jié)束碼05H?沒有跳到NEXT AJMP START;結(jié)束,重新開始NEXT:CPL A;取到數(shù)據(jù)反相 MOV SBUF,A;向串口發(fā)送LOOP1:JBC TI,LOOP2;發(fā)送結(jié)束?是,跳到LOOP2 AJMP LOOP1;沒結(jié)束,再檢測(cè)LOOP2:ACALL DELAY;延時(shí)0.2秒 INC DPTR;指向下一地址 AJMP LOOP五軟件設(shè)計(jì)(參考程序如下:)DELAY:MOV R7,#4 ;延時(shí)0.2SD1: MOV R6,#20 D2: MOV R5,#123 NOP DJNZ R5,$ DJNZ
28、R6,D2 DJNZ R7,D1 RETTABLE:DB 01H,02H,04H,08H DB 10H,20H,40H,80H DB 01H,02H,04H,08H DB 10H,20H,40H,80H DB 00H,0FFH,00H,0FFH DB 80H,40H,20H,10H DB 08H,04H,02H,01H DB 80H,40H,20H,10H DB 08H,04H,02H,01H DB 00H,0FFH,00H,0FFH DB 05H END六總結(jié)與思考174LS164無輸出控制端,故串行輸入過程中,輸出端會(huì)不斷地變化。所以一般應(yīng)在74LS164和輸出裝置之間加接輸出控制門,以保
29、證串行輸入結(jié)束后再輸出數(shù)據(jù)。2如果不用建表方式,如何實(shí)現(xiàn)? 5.5.1 單片機(jī)與顯示器的串行通信 例:某車間擬設(shè)置一塊生產(chǎn)進(jìn)度顯示板,顯示當(dāng)天已完成的產(chǎn)品數(shù)量(不超過256),所需的產(chǎn)量數(shù)據(jù),要從主單片機(jī)傳送到顯示板,請(qǐng)幫助設(shè)計(jì)相應(yīng)的傳送程序。 分析與設(shè)計(jì) 該任務(wù)中,每當(dāng)生產(chǎn)線上完成一臺(tái)合格產(chǎn)品時(shí),通過自動(dòng)計(jì)數(shù)裝置向主單片機(jī)外部中斷輸入端送出一個(gè)低電平“0”,作為請(qǐng)求中斷信號(hào);主單片機(jī)響應(yīng)中斷后,在中斷服務(wù)程序中,將產(chǎn)量值(存放在50H中)加1,并通過串口將其送給顯示板。 顯示版接收主單片機(jī)送來的顯示數(shù)據(jù)。顯示板的CPU平時(shí)運(yùn)行顯示程序,顯示當(dāng)前的產(chǎn)量(產(chǎn)量數(shù)據(jù)存放在數(shù)據(jù)存儲(chǔ)區(qū)50H單元中)。
30、只有當(dāng)顯示板的串口接收到主單片機(jī)發(fā)來的顯示數(shù)據(jù)時(shí),才會(huì)因串口中斷,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,以便將新接收到的產(chǎn)量數(shù)據(jù)存放到50H單元中,再返回到主程序執(zhí)行顯示程序。5.5 單片機(jī)串行口應(yīng)用舉例1主單片機(jī)主程序發(fā)送端的主程序要完成外部中斷和串行口的初始化工作,然后等待外部中斷。 ORG 0000H AJMP MAIN ORG 0013H AJMP SUBG ;中斷入口 ORG 0100H MAIN:MOV 50H,#00H ;當(dāng)天產(chǎn)量從0開始 MOV SP,#60H SETB IT1;采用邊沿觸發(fā)方式 MOV SCON,#40H;串口工作于方式1,禁止接收 MOV PCON,#00H;波特率不加倍
31、MOV TMOD,#20H;T1工作于方式2 軟件設(shè)計(jì) MOV TH1,#0E8H;波特率為1200bps MOV TL1,#0E8H SETB EX1;開中斷 SETB EA;開中斷 SETB TR1;打開波特率發(fā)生器 AJMP $;等待中斷中斷服務(wù)子程序 當(dāng)外部中斷申請(qǐng)中斷時(shí),表示生產(chǎn)線上已完成一臺(tái)成品,因此中斷服務(wù)程序的任務(wù)就是將產(chǎn)量單元50H加1,并將加1后的數(shù)值從串口輸出。程序如下: ORG 0200HSUBG:PUSH ACC INC 50H MOV A,50H MOV SBUF,AWAIT:JBC TI,NEXT SJMP WAITNEXT:POP ACC RETI2顯示板的CP
32、U主程序主程序的初始化部分與發(fā)送端基本相同,只是要將SCON的禁止接收改成允許接收。并且要一邊執(zhí)行顯示程序,一邊等待中斷。顯示程序從略,可參看第6章。 ORG 0000H AJMP MAIN ORG 0023H AJMP SUBG ;串口中斷入口 ORG 0100H MAIN:MOV 50H,#00H ;當(dāng)天產(chǎn)量從0開始 MOV SP,#60H MOV SCON,#50H;串口工作于方式1,允許接收 MOV PCON,#00H;波特率不加倍 MOV TMOD,#20H;T1工作于方式2 MOV TH1,#0E8H;波特率為1200bps MOV TL1,#0E8H SETB ES;開串口中斷
33、SETB EA;開中斷 SETB TR1;打開波特率發(fā)生器 WAIT:ACALL DISPLAY;轉(zhuǎn)顯示子程序 AJMP WAIT;等待中斷中斷服務(wù)子程序當(dāng)接收端的串口收到單片機(jī)發(fā)來的數(shù)據(jù)時(shí),串口申請(qǐng)中斷。在中斷服務(wù)程序中,要保護(hù)現(xiàn)場(chǎng),將新接收到的產(chǎn)量數(shù)據(jù)存放到50H單元中,再返回主程序。 ORG 0200HSUBG:PUSH ACC CLR RI MOV A, SBUF MOV 50H, ANEXT:POP ACC RETI一實(shí)訓(xùn)目的1學(xué)習(xí)雙機(jī)通信的常識(shí)。2掌握雙機(jī)通信程序狀態(tài)字的設(shè)置方法。3學(xué)習(xí)雙機(jī)通信程序的編制方法。二課題要求 利用2片AT89C51芯片,一片用作發(fā)送器,記作89C51-
34、T,用來讀入P1口指撥開關(guān)的狀態(tài);另一片用作接收器,記作89C51-R,用來接收89C51-T發(fā)送過來的指撥開關(guān)的狀態(tài),并將其在89C51-R輸出的8個(gè)LED上顯示出來。三背景知識(shí)1雙機(jī)通信 如果兩個(gè)80C51單片機(jī)相距很近,將它們的串行口直接相連,即可實(shí)現(xiàn)雙機(jī)通信。采用圖5-14所示的兩個(gè)80C51串行口直接相連的方法,通信距離只限于1.5m以內(nèi)。如果要增加通信距離,可以在兩個(gè)單片機(jī)之間采用標(biāo)準(zhǔn)異步串行接口連接,如使用RS-232C、RS-422A及RS-485等串行接口總線。5.5.2 課題與實(shí)訓(xùn)11 雙機(jī)通信 2通信協(xié)議 在雙機(jī)通信或多機(jī)通信時(shí),通常要規(guī)定通信協(xié)議。所謂通信協(xié)議是指通信雙
35、方的一種約定。它對(duì)數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢糾錯(cuò)方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守。因此,也叫做通信控制規(guī)程,或稱傳輸控制規(guī)程。本實(shí)訓(xùn)所用的兩片AT89C51芯片,一個(gè)只作輸入,另一個(gè)只作輸出,形式非常簡(jiǎn)單,不用規(guī)定通信協(xié)議。圖5-14 雙機(jī)通信簡(jiǎn)圖四硬件電路 圖5-15 雙機(jī)通信硬件電路 參考程序如下:AT89C51-T的發(fā)送程序 ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SP,#50H;設(shè)定堆棧區(qū) MOV SCON,#40H ;串行口工作在方式1,禁止接收 MOV TMOD,#20H;定時(shí)器1工作在方式2 MOV
36、 TL1,#0E8H;波特率為1200 MOV TH1,#0E8H; SETB TR1;啟動(dòng)定時(shí)器1 MOV 30H,#0FFH;設(shè)定指撥開關(guān)初值 MOV P1, #0FFH;P1 口設(shè)為輸入狀態(tài)READ:MOV A,P1;讀入指撥開關(guān)值 CJNE A,30H,KEY;輸入值改變則跳至KEY AJMP READ;否則繼續(xù)讀指撥開關(guān)值五軟件設(shè)計(jì) KEY:MOV 30H,A;存指撥開關(guān)新值 MOV SBUF,A;送串行口發(fā)送WAIT:JBC TI,READ;查看是否送完 AJMP WAIT ENDAT89C51-R的接收程序 ORG 0000H AJMP MAIN ORG 0100H MAIN:M
37、OV SP,#50H ;設(shè)定堆棧區(qū) MOV SCON,#50H;串行口工作在方式1,允許接收 MOV TMOD,#20H;定時(shí)器1工作在方式2 MOV TL1,#0E8H;波特率為1200 MOV TH1,#0E8H SETB TR1;啟動(dòng)定時(shí)器1READ:JBC RI,UART;是否接收到數(shù)據(jù),收到則跳到UART AJMP READUART:MOV A,SBUF;收到的數(shù)據(jù)送A MOV P1,A;發(fā)送至P1口 AJMP READ END六總結(jié)與提高在編寫串行口應(yīng)用程序時(shí)應(yīng)注意這樣幾個(gè)問題:必須對(duì)串行口進(jìn)行初始化。具體包括SCON、PCON 和波特率的設(shè)定。在接收和發(fā)送一個(gè)字節(jié)完畢后必須用軟件
38、清除中斷標(biāo)志。本實(shí)訓(xùn)采用軟件查詢方式編程,請(qǐng)嘗試用中斷方式實(shí)現(xiàn)該功能。 串行口的方式2和方式3具有多機(jī)通信功能,能實(shí)現(xiàn)一臺(tái)主單片機(jī)和若干從單片機(jī)構(gòu)成的多機(jī)分布控制系統(tǒng),其連接方式如圖5-16所示。 圖5-16 多機(jī)通信示意圖5.5.3 多機(jī)通信 多機(jī)通信時(shí),充分利用單片機(jī)SCON中的多機(jī)通信控制SM2位。當(dāng)從機(jī)SM2=1時(shí),從機(jī)只接收主機(jī)發(fā)來的地址幀(特點(diǎn)是第9位為1),對(duì)數(shù)據(jù)幀不予理睬;當(dāng)從機(jī)SM2=0時(shí),從機(jī)可以接收主機(jī)發(fā)來所有信息。過程如下:置所有從機(jī)的SM2=1,都處于只接收地址的狀態(tài)。 主機(jī)發(fā)送一幀地址(前8位是地址值,第9位為1,表示該幀信息是地址)。 所有從機(jī)接到地址幀后,轉(zhuǎn)去執(zhí)行中斷,目的是將接收到的地址與自身地址相比較,二者相同,則SM2=0,否則,SM2=1。 由于被呼叫從機(jī)已令SM2=0,所以它可以接收主機(jī)接下來傳送的所有數(shù)據(jù),實(shí)現(xiàn)與主機(jī)的通信。 被呼叫從機(jī)通信完成后,置SM2=1,恢復(fù)多機(jī)通信的原始狀態(tài)。 本章小結(jié) 80C51單
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 月球熔巖管基地輻射防護(hù)結(jié)構(gòu)設(shè)計(jì)論文
- 2024年中石油專屬財(cái)產(chǎn)保險(xiǎn)股份有限公司秋季高校畢業(yè)生招聘5人筆試參考題庫(kù)附帶答案詳解
- 2025年大學(xué)輔導(dǎo)員招聘:學(xué)生社團(tuán)文化節(jié)策劃與籌備方案試題
- 2025年茶藝師職業(yè)技能鑒定模擬試卷與評(píng)分標(biāo)準(zhǔn)
- 2025年小學(xué)語文畢業(yè)升學(xué)考試句式變換與修辭解題技巧解析解析試卷
- 2025年拍賣師職業(yè)資格考試專業(yè)題集:拍賣師職業(yè)資格考試重點(diǎn)難點(diǎn)試題
- 2025年消防工程師執(zhí)業(yè)資格考試題庫(kù)(專業(yè)技能提升題)解析版
- 2025員工競(jìng)業(yè)禁止協(xié)議合同范本
- 2025年版?zhèn)€人與企業(yè)房屋租賃合同范本
- 2025年法語DELFB2水平測(cè)試卷:聽力技巧與實(shí)戰(zhàn)訓(xùn)練試題
- 第四單元 民族團(tuán)結(jié)與祖國(guó)統(tǒng)一 -【背誦清單】2022-2023學(xué)年八年級(jí)歷史下冊(cè)期末復(fù)習(xí)必背核心知識(shí)梳理(部編版)
- 2025年高考政治一輪復(fù)習(xí)知識(shí)清單選擇性必修三 《邏輯與思維》知識(shí)點(diǎn)復(fù)習(xí)
- 基于物聯(lián)網(wǎng)的農(nóng)產(chǎn)品質(zhì)量安全監(jiān)測(cè)平臺(tái)建設(shè)方案
- 臨床腸氣囊腫病影像診斷與鑒別
- DB11T 382-2017 建設(shè)工程監(jiān)理規(guī)程
- 產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目教學(xué)內(nèi)容和課程體系改革項(xiàng)目申報(bào)書模板-基于產(chǎn)業(yè)學(xué)院的實(shí)踐應(yīng)用型人才培養(yǎng)
- DB34∕T 3790-2021 智慧藥房建設(shè)指南
- 被盜竊賠償協(xié)議書范文范本
- 物理因子治療技術(shù)-光療法
- 垃圾填埋場(chǎng)運(yùn)營(yíng)合同范本
- CJT 289-2008 城鎮(zhèn)污水處理廠污泥處置 制磚用泥質(zhì)
評(píng)論
0/150
提交評(píng)論