




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目六溫度檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì)項(xiàng)目任務(wù)本項(xiàng)目的任務(wù)是以51單片機(jī)為核心,將溫度傳感器DS18B20所采集的溫度,在液晶屏上實(shí)時(shí)顯示并可實(shí)現(xiàn)報(bào)警。串口概述任務(wù)一用串口擴(kuò)展I0口(1)任務(wù)二用串口擴(kuò)展I0口(2)任務(wù)三單片機(jī)雙機(jī)通信任務(wù)四
PC與單片機(jī)通信任務(wù)五DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)六項(xiàng)目目標(biāo)●了解:基本通信知識(shí)●熟悉:?jiǎn)纹瑱C(jī)串口結(jié)構(gòu)及作用●掌握:串口通信工作原理及使用方法任務(wù)一串口概述任務(wù)描述了解單片機(jī)串口基礎(chǔ)知識(shí),掌握串口相關(guān)寄存器的初始化方法以及步驟。知識(shí)鏈接一串行通信基礎(chǔ)知識(shí)二串口結(jié)構(gòu)概述一串行通信基礎(chǔ)知識(shí)計(jì)算機(jī)與外界的信息交換稱為通信。通信的基本方式可分為并行通信和串行通信兩種。所謂并行通信是指數(shù)據(jù)的各位同時(shí)在多根數(shù)據(jù)線上發(fā)送或接收。串行通信是數(shù)據(jù)的各位在同一根數(shù)據(jù)線上依次逐位發(fā)送或接收。1.概述
并行通信示意圖P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P2.7RDWRRDWRCSD7D6D5D4D3D2D1D0825589C51
串行通信示意圖89C51外設(shè)TXDTXDRXDRXD發(fā)送接收你能由圖發(fā)現(xiàn)兩種通信方式各自的優(yōu)缺點(diǎn)嗎?串行通信可分為同步和異步兩種方式(1)同步通信同步通信中雙方使用頻率一致的時(shí)鐘,稱為一個(gè)數(shù)據(jù)幀,通過(guò)獨(dú)特的bit串作為啟停標(biāo)識(shí)。發(fā)送方要以固定的節(jié)奏去發(fā)送數(shù)據(jù),而接收方要時(shí)刻做好接收數(shù)據(jù)的準(zhǔn)備,識(shí)別到前導(dǎo)碼后馬上要開(kāi)始接收數(shù)據(jù)了。同步這種方式中因?yàn)榉纸M很大,很長(zhǎng)一段數(shù)據(jù)才會(huì)有額外的輔助位負(fù)載,所以效率更高,更加適合對(duì)速度要求高的傳輸,當(dāng)然這種通信對(duì)時(shí)序的要求也更高。(2)異步通信在異步通信中,數(shù)據(jù)通常是以字符或字節(jié)為單位組成數(shù)據(jù)幀進(jìn)行傳送的。收、發(fā)端各有一套彼此獨(dú)立,互不同步的通信機(jī)構(gòu),由于收發(fā)數(shù)據(jù)的幀格式相同,因此可以相互識(shí)別接收到的數(shù)據(jù)信息。同步字符數(shù)據(jù)字符1數(shù)據(jù)字符2…數(shù)據(jù)字符n-1數(shù)據(jù)字符n校驗(yàn)字符(校驗(yàn)字符)同步通信的數(shù)據(jù)幀格式異步通信的數(shù)據(jù)幀格式D0D1D2D3D4D5D6D70/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗(yàn)停止位8位數(shù)據(jù)8位數(shù)據(jù)起始位起始位奇偶校驗(yàn)第n-1字符幀第n+1字符幀8位數(shù)據(jù)
----起始位在沒(méi)有數(shù)據(jù)傳送時(shí),通信線上處于邏輯“1”狀態(tài)。當(dāng)發(fā)送端要發(fā)送1個(gè)字符數(shù)據(jù)時(shí),首先發(fā)送1個(gè)邏輯“0”信號(hào),這個(gè)低電平便是幀格式的起始位。其作用是向接收端表示發(fā)送端開(kāi)始發(fā)送一幀數(shù)據(jù)。接收端檢測(cè)到這個(gè)低電平后,就準(zhǔn)備接收數(shù)據(jù)信號(hào)。D0D1D2D3D4D5D6D70/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗(yàn)停止位8位數(shù)據(jù)8位數(shù)據(jù)起始位起始位奇偶校驗(yàn)第n-1字符幀第n+1字符幀8位數(shù)據(jù)----數(shù)據(jù)位在起始位之后,發(fā)送端發(fā)出(或接收端接收)的是數(shù)據(jù)位,數(shù)據(jù)的位數(shù)沒(méi)有嚴(yán)格的限制,5~8位均可。由低位到高位逐位傳送。D0D1D2D3D4D5D6D70/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗(yàn)停止位8位數(shù)據(jù)8位數(shù)據(jù)起始位起始位奇偶校驗(yàn)第n-1字符幀第n+1字符幀8位數(shù)據(jù)----奇偶校驗(yàn)位數(shù)據(jù)位發(fā)送完(接收完)之后,可發(fā)送一位用來(lái)檢驗(yàn)數(shù)據(jù)在傳送過(guò)程中是否出錯(cuò)的奇偶校驗(yàn)位。奇偶校驗(yàn)是收發(fā)雙方預(yù)先約定好的有限差錯(cuò)檢驗(yàn)方式之一,有時(shí)也可不用奇偶校驗(yàn)。D0D1D2D3D4D5D6D70/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗(yàn)停止位8位數(shù)據(jù)8位數(shù)據(jù)起始位起始位奇偶校驗(yàn)第n-1字符幀第n+1字符幀8位數(shù)據(jù)----停止位字符幀格式的最后部分是停止位,邏輯“1”電平有效,它可占1/2位、1位或2位。停止位表示傳送一幀信息的結(jié)束,也為發(fā)送下一幀信息作好準(zhǔn)備。D0D1D2D3D4D5D6D70/11111D70/1100D0D1第n字符幀空閑位停止位奇偶校驗(yàn)停止位8位數(shù)據(jù)8位數(shù)據(jù)起始位起始位奇偶校驗(yàn)第n-1字符幀第n+1字符幀8位數(shù)據(jù)
波特率(BaudRate)是串行通信中一個(gè)重要概念,它是指?jìng)鬏敂?shù)據(jù)的速率,亦稱比特率。波特率的定義是每秒傳輸二進(jìn)制數(shù)碼的位數(shù)。
如:波特率為1200bps是指每秒鐘能傳輸1200位二進(jìn)制數(shù)碼。2.串行通信的波特率
波特率的倒數(shù)即為每位數(shù)據(jù)傳輸時(shí)間。例如:波特率為1200bps,每位的傳輸時(shí)間為:Td=1/1200=0.833(ms)
二串口結(jié)構(gòu)概述AT89C51內(nèi)部有一個(gè)可編程全雙工串行通信接口。該部件不僅能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個(gè)同步移位寄存器使用。下面將對(duì)其內(nèi)部結(jié)構(gòu)、工作方式以及波特率進(jìn)行介紹。1.串行接口的結(jié)構(gòu)及功能AT89C51串行口結(jié)構(gòu)框圖發(fā)送SBUF(99H)接收SBUF(99H)同步時(shí)鐘門(mén)電路發(fā)送控制器接收控制器輸入移位寄存器串行口控制寄存器(98H)內(nèi)部總線≥1串行口中斷TIRITXD(P3.1)RXD(P3.0)
發(fā)送數(shù)據(jù)過(guò)程:CPU通過(guò)內(nèi)部總線將并行數(shù)據(jù)寫(xiě)入發(fā)送SBUF,在發(fā)送控制電路的控制下,按設(shè)定好的波特率,每來(lái)一次移位脈沖,通過(guò)引腳TXD向外輸出一位。一幀數(shù)據(jù)發(fā)送結(jié)束后,向CPU發(fā)出中斷申請(qǐng),TI位置1。CPU響應(yīng)中斷后,開(kāi)始準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。發(fā)送SBUF(99H)接收SBUF(99H)同步時(shí)鐘門(mén)電路發(fā)送控制器接收控制器輸入移位寄存器串行口控制寄存器(98H)內(nèi)部總線≥1串行口中斷TIRITXD(P3.1)RXD(P3.0)發(fā)送SBUF(99H)接收SBUF(99H)同步時(shí)鐘門(mén)電路發(fā)送控制器接收控制器輸入移位寄存器串行口控制寄存器(98H)內(nèi)部總線≥1串行口中斷TIRITXD(P3.1)RXD(P3.0)
接收數(shù)據(jù)過(guò)程:CPU不停地檢測(cè)引腳RXD上的信號(hào),當(dāng)信號(hào)中出現(xiàn)低電平時(shí),在接收控制電路的控制下,按設(shè)定好的波特率,每來(lái)一次移位脈沖,讀取外部設(shè)備發(fā)送的一位數(shù)據(jù)到移位寄存器。一幀數(shù)據(jù)結(jié)束后,數(shù)據(jù)被存入接收SBUF,同時(shí)向CPU發(fā)出中斷申請(qǐng),RI位1。CPU響應(yīng)中斷后,開(kāi)始接收下一幀數(shù)據(jù)。
(1)串行數(shù)據(jù)緩沖器SBUF
SBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器,以便能以全雙工方式進(jìn)行通信。此外,在接收寄存器之前還有移位寄存器,從而構(gòu)成了串行接收的雙緩沖結(jié)構(gòu),這樣可以避免在數(shù)據(jù)接收過(guò)程中出現(xiàn)幀重疊錯(cuò)誤。發(fā)送數(shù)據(jù)時(shí),由于CPU是主動(dòng)的,不會(huì)發(fā)生幀重疊錯(cuò)誤,因此發(fā)送電路不需要雙重緩沖結(jié)構(gòu)。在邏輯上,SBUF只有一個(gè),它既表示發(fā)送寄存器,又表示接收寄存器,具有同一個(gè)單元地址99H。但在物理結(jié)構(gòu)上,則有兩個(gè)完全獨(dú)立的SBUF,一個(gè)是發(fā)送緩沖寄存器SBUF,另一個(gè)是接收緩沖寄存器SBUF。如果CPU寫(xiě)SBUF,數(shù)據(jù)就會(huì)被送入發(fā)送寄存器準(zhǔn)備發(fā)送;如果CPU讀SBUF,則讀入的數(shù)據(jù)一定來(lái)自接收緩沖器。即CPU對(duì)SBUF的讀寫(xiě),實(shí)際上是分別訪問(wèn)上述兩個(gè)不同的寄存器。(2)串行控制寄存器SCON串行控制寄存器SCON用于設(shè)置串行口的工作方式、監(jiān)視串行口的工作狀態(tài)、控制發(fā)送與接收的狀態(tài)等。它是一個(gè)既可以字節(jié)尋址又可以位尋址的8位特殊功能寄存器。其格式如下圖所示:串行口控制寄存器SCONRITIRB8TB8RENSM2SM1SM0SCON98H99H9AH9BH9CH9DH9EH9FH位地址0:雙機(jī)1:多機(jī)多機(jī)通信0:禁止1:允許接收控制發(fā)送數(shù)據(jù)第9位接收數(shù)據(jù)第9位發(fā)送中斷標(biāo)志接收中斷標(biāo)志----SM0SM1
串行口工作方式選擇位。其狀態(tài)組合所對(duì)應(yīng)的工作方式如表所示。SM0SM1工作方式功能說(shuō)明000同步移位寄存器輸入/輸出,波特率固定為fosc/1201110位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)10211位異步收發(fā),波特率固定為f0sc/n,n=64或32)11311位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)串行口工作方式----SM2多機(jī)通信控制器位。在方式0中,SM2必須設(shè)成0。在方式1中,當(dāng)處于接收狀態(tài)時(shí),若SM2=1,則只有接收到有效的停止位“1”時(shí),RI才能被激活成“1”(產(chǎn)生中斷請(qǐng)求)。在方式2和方式3中,若SM2=0,串行口以單機(jī)發(fā)送或接收方式工作,TI和RI以正常方式被激活并產(chǎn)生中斷請(qǐng)求;若SM2=1,RB8=1時(shí),RI被激活并產(chǎn)生中斷請(qǐng)求。----REN串行接受允許控制位。該位由軟件置位或復(fù)位。當(dāng)REN=1,允許接收;當(dāng)REN=0,禁止接收。----TB8方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。該位由軟件置位或復(fù)位。在方式2和方式3時(shí),TB8是發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):TB8=1表示地址,TB8=0表示數(shù)據(jù)。TB8還可用作奇偶校驗(yàn)位。----RB8接收數(shù)據(jù)第9位。在方式2和方式3時(shí),RB8存放接收到的第9位數(shù)據(jù)。RB8也可用作奇偶校驗(yàn)位。在方式1中,若SM2=0,則RB8是接收到的停止位。在方式0中,該位未用。----TI
發(fā)送中斷標(biāo)志位。TI=1,表示已結(jié)束一幀數(shù)據(jù)發(fā)送,可由軟件查詢TI位標(biāo)志,也可以向CPU申請(qǐng)中斷。
注意:TI在任何工作方式下都必須由軟件清0。----RI接收中斷標(biāo)志位。RI=1,表示一幀數(shù)據(jù)接收結(jié)束。可由軟件查詢RI位標(biāo)志,也可以向CPU申請(qǐng)中斷。
注意:RI在任何工作方式下也都必須由軟件清0。
在AT89C51中,串行發(fā)送中斷TI和接收中斷RI的中斷入口地址是同是0023H,因此在中斷程序中必須由軟件查詢TI和RI的狀態(tài)才能確定究竟是接收還是發(fā)送中斷,進(jìn)而作出相應(yīng)的處理。單片機(jī)復(fù)位時(shí),SCON所有位均清0。2.電源控制寄存器PCON
SMOD:串行口波特率倍增位。在工作方式1~工作方式3時(shí),若SMOD=1,則串行口波特率增加一倍。若SMOD=0,波特率不加倍。系統(tǒng)復(fù)位時(shí),SMOD=0。PCOND7D6D5D4D3D2D1D0位名稱SMOD---GF1GF0PDIDL任務(wù)實(shí)施程序設(shè)計(jì)#include<reg51.h> //包含單片機(jī)寄存器的頭文件SCON=0x00;//設(shè)定串口工作于方式0PCON=0x00;//波特率不加倍知識(shí)總結(jié)1.串行通信的概念;2.單片機(jī)串行口的結(jié)構(gòu);3.串行口使用時(shí)的程序設(shè)置。綜合評(píng)價(jià)課后作業(yè)請(qǐng)?jiān)O(shè)定串口工作于方式1,給出C語(yǔ)言代碼。謝謝觀看《單片機(jī)技術(shù)與應(yīng)用》課程項(xiàng)目六溫度檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì)串口概述任務(wù)一用串口擴(kuò)展I0口(1)任務(wù)二用串口擴(kuò)展I0口(2)任務(wù)三單片機(jī)雙機(jī)通信任務(wù)四
PC與單片機(jī)通信任務(wù)五DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)六任務(wù)二用串口擴(kuò)展I0口(1)任務(wù)描述本次任務(wù)要求用單片機(jī)的串口擴(kuò)展出8個(gè)IO口,實(shí)現(xiàn)數(shù)碼管顯示效果。知識(shí)鏈接串行口工作方式0串行口工作方式0
AT89C51串行通信共有4種工作方式,它們分別是方式0、方式1、方式2和方式3,由串行控制寄存器SCON中的SM0SM1決定。在方式0下,串行口作為同步移位寄存器使用。此時(shí)SM2、RB8、TB8均應(yīng)設(shè)置為0。
---發(fā)送:TI=0時(shí),執(zhí)行“MOVSBUF,A”啟動(dòng)發(fā)送,8位數(shù)據(jù)由低位到高位從RXD引腳送出,TXD發(fā)送同步脈沖。發(fā)送完后,由硬件置位TI。
---接收:RI=0,REN=1時(shí)啟動(dòng)接收,數(shù)據(jù)從RXD輸入,TXD輸出同步脈沖。8位數(shù)據(jù)接收完,由硬件置位RI??赏ㄟ^(guò)“MOVA,SBUF”讀取數(shù)據(jù)。說(shuō)明:(1)方式0的波特率為fosc/12,即一個(gè)機(jī)器周期發(fā)送或接收一位數(shù)據(jù)。(2)方式0并非是同步通信方式。它的主要用途是外接同步移位寄存器,以擴(kuò)展并行I/O口。
----數(shù)據(jù)發(fā)送TI=0,發(fā)送數(shù)據(jù)前,先由軟件設(shè)置TB8,可使用如下指令完成:
TB8=1;將TB8位置1
TB8=0;將TB8位置0
然后再向SBUF寫(xiě)入8位數(shù)據(jù),并以此來(lái)啟動(dòng)串行發(fā)送。一幀數(shù)據(jù)發(fā)送完畢后,CPU自動(dòng)將TI置1,其過(guò)程與方式1相同。----數(shù)據(jù)接收
REN=1,RI=0時(shí),啟動(dòng)接收。①若SM2=0,接收到的8位數(shù)據(jù)送SBUF,第9位數(shù)據(jù)送RB8。②若SM2=1,接收到的第9位數(shù)據(jù)為0,數(shù)據(jù)不送SBUF;接收到的第9位數(shù)據(jù)為1,數(shù)據(jù)送SBUF,第9位送RB8。任務(wù)實(shí)施1.硬件電路2.程序設(shè)計(jì)1.硬件電路2.程序設(shè)計(jì)#include<reg51.h> //包含單片機(jī)寄存器的頭文件unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰段碼/**********延時(shí)程序***********/voiddelay(){intm,n;for(m=0;m<400;m++)for(n=0;n<400;n++);}/***********************主程序*************************///功能:將串口發(fā)送的數(shù)據(jù)通過(guò)74LS164串并轉(zhuǎn)換送數(shù)碼管顯示/*****************************************************/voidmain(){inti=0;//循環(huán)變量
SCON=0x00;//設(shè)定串口工作于方式0for(i=0;i<10;i++){SBUF=dispcode[i];
//將dispcode數(shù)組中的段碼依次發(fā)送出去
delay();
//延時(shí)
while(TI==0);//等待發(fā)送完畢
TI=0;
//發(fā)送完畢清除發(fā)送中斷標(biāo)志位
if(i==10)//10個(gè)數(shù)據(jù)發(fā)送完畢就清為0 { i=0; }}}知識(shí)總結(jié)當(dāng)發(fā)送使用時(shí),就采用SBUF=XXX;
(XXX為需要傳送的數(shù)據(jù));當(dāng)接收使用時(shí),采用XXX=SBUF;串行的傳輸都是一位一位進(jìn)行的。綜合評(píng)價(jià)課后作業(yè)利用串行口設(shè)計(jì)4位數(shù)碼管的顯示,畫(huà)出電路圖并編寫(xiě)程序,要求4位數(shù)碼管每間隔1s交替顯示“1234”和“5678”。謝謝觀看《單片機(jī)技術(shù)與應(yīng)用》課程項(xiàng)目六溫度檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì)串口概述任務(wù)一用串口擴(kuò)展I0口(1)任務(wù)二用串口擴(kuò)展I0口(2)任務(wù)三單片機(jī)雙機(jī)通信任務(wù)四
PC與單片機(jī)通信任務(wù)五DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)六任務(wù)三用串口擴(kuò)展I0口(2)任務(wù)描述通過(guò)指撥開(kāi)關(guān)動(dòng)作產(chǎn)生高低電平,作為74ls165的輸入,74ls165將接收到的數(shù)據(jù)發(fā)往串口,串口負(fù)責(zé)接收,串口將接收到的數(shù)據(jù)送P0口顯示。知識(shí)鏈接74ls164的基本使用(回顧)74ls165的基本使用74ls164的基本使用74ls165的基本使用
74ls165是8位并入串出移位寄存器。當(dāng)74LS165的SH/LD端由高到低跳變,并行輸入端的數(shù)據(jù)被置入寄存器;當(dāng)SH/LD=1,且時(shí)鐘禁止端(15腳)為低時(shí),允許TXD(P3.1)移位時(shí)鐘輸入,在該脈沖作用下,數(shù)據(jù)由右向左方向移動(dòng)。任務(wù)實(shí)施1.硬件電路2.程序設(shè)計(jì)1.硬件電路2.程序設(shè)計(jì)/***********延時(shí)函數(shù)***********/voidDelayMS(uintms){uchari;while(ms--)for(i=0;i<120;i++);}#include<reg51.h>//包含單片機(jī)寄存器的頭文件#defineucharunsignedchar //宏定義,定義uchar為無(wú)符號(hào)字符型#defineuintunsignedint//宏定義,定義int為無(wú)符號(hào)整型sbitSPL=P2^5;//shift/load
/***********串口初始化函數(shù)***********/voidInit(){SCON=0x10;//串口工作于方式0,允許接收
EA=1;//CPU開(kāi)中斷
ES=1; //允許串口中斷}/***********串口中斷服務(wù)函數(shù)***********/voidDateGet()interrupt4{SPL=0;//數(shù)據(jù)載入位設(shè)為低電平,將按鍵數(shù)據(jù)存入74LS165寄存器
DelayMS(50);//延時(shí)一會(huì)等待存入完成
P0=SBUF;//將串口收到的數(shù)據(jù)送P0口
SPL=1;//數(shù)據(jù)載入位設(shè)為高電平,將74LS165寄存器數(shù)據(jù)寫(xiě)入串口寄存器
RI=0;//復(fù)位串口開(kāi)始接收74LS165寄存器數(shù)據(jù)}知識(shí)總結(jié)當(dāng)發(fā)送使用時(shí),就采用SBUF=XXX;
(XXX為需要傳送的數(shù)據(jù));當(dāng)接收使用時(shí),采用XXX=SBUF;串行傳輸都是一位一位進(jìn)行的。綜合評(píng)價(jià)課后作業(yè)利用串行口設(shè)計(jì)4位靜態(tài)LED顯示,畫(huà)出電路圖并編寫(xiě)程序,要求4位LED每間隔1s交替顯示“1234”和“5678”。謝謝觀看《單片機(jī)技術(shù)與應(yīng)用》課程項(xiàng)目六溫度檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì)串口概述任務(wù)一用串口擴(kuò)展I0口(1)任務(wù)二
用串口擴(kuò)展I0口(2)任務(wù)三單片機(jī)雙機(jī)通信任務(wù)四
PC與單片機(jī)通信任務(wù)五DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)六任務(wù)四單片機(jī)雙機(jī)通信雙機(jī)通訊就是:
兩個(gè)單片機(jī)之間或單片機(jī)與PC之間的通訊。
什么是雙機(jī)通信呢?任務(wù)描述甲機(jī)發(fā)送信息,乙機(jī)就將接收到的信息送數(shù)碼管顯示,反之,乙機(jī)發(fā)送信息,甲機(jī)就將接收到的信息同樣送數(shù)碼管顯示出來(lái)。知識(shí)鏈接一工作方式1、2、3二多機(jī)通信基礎(chǔ)一工作方式1、2、3方式1是一幀10位的異步串行通信方式,包括1個(gè)起始位(0),8個(gè)數(shù)據(jù)位和一個(gè)停止位(1),其幀格式如下:1.工作方式1
起始位0D0D1D2D3D4D5D6D7
停止位1(1)數(shù)據(jù)發(fā)送過(guò)程當(dāng)TI=0時(shí),執(zhí)行“SBUF=0xxx”指令后開(kāi)始發(fā)送,由硬件自動(dòng)加入起始位和停止位,構(gòu)成一幀數(shù)據(jù),然后由TXD端串行輸出。發(fā)送完后,TXD輸出線維持在“1”狀態(tài)下,并將SCON中的TI置1,表示一幀數(shù)據(jù)發(fā)送完畢。(2)數(shù)據(jù)接收過(guò)程
RI=0,REN=1時(shí),接收電路以波特率的16倍速度采樣RXD引腳,如出現(xiàn)由“1”變“0”跳變,認(rèn)為有數(shù)據(jù)正在發(fā)送。在接收到第9位數(shù)據(jù)(即停止位)時(shí),必須同時(shí)滿足以下兩個(gè)條件:RI=0和SM2=0或接收到的停止位為“1”,才把接收到的數(shù)據(jù)存入SBUF中,停止位送RB8,同時(shí)置位RI。若上述條件不滿足,接收到的數(shù)據(jù)不裝入SBUF被舍棄。在方式1下,SM2應(yīng)設(shè)定為0。(3)波特率波特率=2SMOD×(T1溢出率)/32T1溢出率=1/T1定時(shí)時(shí)間=1/((M-T初)·T機(jī))波特率=2SMOD·fosc/(32·12·(M-T初))工作方式2和方式3都是11位異步收發(fā)串行通信方式,兩者的差異僅在波特率上有所不同。2.工作方式2、3方式2:波特率=2SMOD·fosc/64(SMOD=0或1)方式3:波特率=2SMOD·fosc/(32·12·(M-T初))(與方式1相同)二雙機(jī)通信基礎(chǔ)當(dāng)要使用單片機(jī)的串口進(jìn)行雙機(jī)通信時(shí),需要保證通信雙方使用同樣的波特率。單片機(jī)串口初始化需完成單片機(jī)串口工作方式選擇、波特率設(shè)置、波特率發(fā)生器設(shè)置等基本的設(shè)置。
如設(shè)置單片機(jī)晶振頻率為11.0592MHz,串口波特率為9600b/s,串口選擇工作方式1,定時(shí)器配置為工作方式2。初始化程序如下:
voidUartInit(void){ TMOD=(TMOD&0x0f)|0x20;
//設(shè)置定時(shí)器T1為定時(shí)方式2 TH1=110592001/12/32/9600;
//求波特率為9600時(shí)定時(shí)器初值 TL1=TH1; TR1=1;
//啟動(dòng)T1計(jì)數(shù)器 SCON=0x70;
//設(shè)置串行工作方式1,允許接收 PCON=0x80;}任務(wù)實(shí)施1.硬件電路2.程序設(shè)計(jì)1.硬件電路2.程序設(shè)計(jì)#include<reg51.h> //包含單片機(jī)寄存器的頭文件#defineucharunsignedchar //宏定義,定義uchar為無(wú)符號(hào)整型#defineuintunsignedint
//宏定義,定義uint為無(wú)符號(hào)整型#definekey_portP1
//P1=key_port#definedis_portP2 //P2=dis_port2.程序設(shè)計(jì)/***********主函數(shù)***********/voidmain(void){ ucharkey_in=0xff; SCON=0x50;
//方式1,允許接收
TMOD=0x20;
//定時(shí)器1工作于方式2 TH1=0xf3;
//波特率2400波特
TL1=0xf3; ET1=1;
//開(kāi)放定時(shí)器1中斷
TR1=1; //啟動(dòng)定時(shí)器中斷
EA=1;
//中斷允許
ES=1;
//開(kāi)放串行中斷while(1) {if(key_in!=key_port)//P1狀態(tài)不等于0xff { key_in=key_port;//把P1狀態(tài)送給key_in SBUF=key_in;// 將P1的值發(fā)給串口
}}/***********串口中斷服務(wù)函數(shù)***********/voidget_disp(void)interrupt4using0{ if(RI) //如果是串口輸入引起中斷
{dis_port=SBUF;
//將串口值送P2口
RI=0;//清除接收中斷標(biāo)志,便于下一次接收
} elseTI=0; //否則就是串口輸出引起的中斷}2.程序設(shè)計(jì)知識(shí)總結(jié)雙機(jī)通信一般要求通信速率要相同。綜合評(píng)價(jià)課后作業(yè)利用單片機(jī)雙機(jī)通信,假如乙機(jī)在P1.0引腳接有一按鍵,每次按鍵執(zhí)行加1操作,把加一的結(jié)果送甲機(jī),甲機(jī)收到以后驅(qū)動(dòng)數(shù)碼管后顯示出來(lái)。謝謝觀看《單片機(jī)技術(shù)與應(yīng)用》課程項(xiàng)目六溫度檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì)串口概述任務(wù)一用串口擴(kuò)展I0口(1)任務(wù)二
用串口擴(kuò)展I0口(2)任務(wù)三
單片機(jī)雙機(jī)通信任務(wù)四
PC與單片機(jī)通信任務(wù)五DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)六任務(wù)五PC與單片機(jī)通信任務(wù)描述
PC機(jī)鍵盤(pán)輸入的1個(gè)字符發(fā)送給51單片機(jī),單片機(jī)接收到PC機(jī)發(fā)來(lái)的數(shù)據(jù)后,回送同一數(shù)據(jù)給PC機(jī),并在PC機(jī)屏幕上顯示出來(lái)。只要PC機(jī)屏幕上顯示的字符與鍵入的字符相同,即表明PC機(jī)與單片機(jī)間通信正常。知識(shí)鏈接串行通信接口標(biāo)準(zhǔn)串行通信接口標(biāo)準(zhǔn)RS-232定義的是DTE(數(shù)據(jù)終端設(shè)備與)DCE(數(shù)據(jù)通信設(shè)備或者數(shù)據(jù)電路終端設(shè)備)間的接口標(biāo)準(zhǔn)。1.機(jī)械特性DB-25(陽(yáng)頭)連接器DB-9(陰頭)連接器陽(yáng)頭通常用于計(jì)算機(jī)側(cè),陰頭用于連接線側(cè)
2.功能特性插針序號(hào)信號(hào)名稱功能信號(hào)方向1PGND保護(hù)接地2(3)TXD發(fā)送數(shù)據(jù)(串行輸出)DTE→DCE3(2)RXD接收數(shù)據(jù)(串行輸入)DTE←DCE4(7)RTS請(qǐng)求發(fā)送DTE→DCE5(8)CTS允許發(fā)送DTE←DCE6(6)DSRDCE就緒(數(shù)據(jù)建立就緒)DTE←DCE7(5)SGND信號(hào)接地8(1)DCD載波檢測(cè)DTE←DCE20(4)DTRDTE就緒(數(shù)據(jù)終端準(zhǔn)備就緒)DTE→DCE22(9)RI振鈴指示DTE←DCERS-232采用負(fù)邏輯電平,規(guī)定(-3~-25V)為邏輯“1”,(+3~+25V)為邏輯“0”。-3V~+3V是未定義的過(guò)渡區(qū)。3.電氣特性RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,使用時(shí)必須進(jìn)行電平轉(zhuǎn)換---早期常用MC1488、MC1489---近期常用MAXM232
片內(nèi)帶有自升壓電路
僅需+5V電源
內(nèi)含2個(gè)發(fā)送器,2個(gè)接收器遠(yuǎn)程通信,需要調(diào)制解調(diào)器。4.過(guò)程特性(1)接口的信號(hào)電平值較高,易損壞接口電路的芯片。
(2)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps。
(3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。
(4)傳輸距離有限,最大傳輸距離實(shí)際在50米左右。5.
RS-232的不足新標(biāo)準(zhǔn)RS-485改善了傳輸特性,應(yīng)用廣泛!任務(wù)實(shí)施1.硬件電路2.程序設(shè)計(jì)1.硬件電路2.程序設(shè)計(jì)#include<reg51.h> //包含單片機(jī)寄存器的頭文件#defineucharunsignedchar //宏定義,定義uchar為無(wú)符號(hào)整型#defineuintunsignedint
//宏定義,定義uint為無(wú)符號(hào)整型#definekey_portP1
//P1=key_port#definedis_portP2 //P2=dis_port/***********主函數(shù)***********/voidmain(void){ ucharkey_in=0xff; SCON=0x50;
//方式1,允許接收
TMOD=0x20;
//定時(shí)器1工作于方式2 TH1=0xf3;
//波特率2400波特
TL1=0xf3; ET1=1;
//開(kāi)放定時(shí)器1中斷
TR1=1; //啟動(dòng)定時(shí)器中斷
EA=1;
//中斷允許
ES=1;
//開(kāi)放串行中斷while(1) { if(key_in!=key_port)//P1狀態(tài)不等于0xff { key_in=key_port;//把P1狀態(tài)送給key_in SBUF=key_in;// 將P1的值發(fā)給串口
}}}/***********串口中斷服務(wù)函數(shù)***********/voidget_disp(void)interrupt4using0{ if(RI) //如果是串口輸入引起中斷
{dis_port=SBUF;
//將串口值送P2口
RI=0;//清除接收中斷標(biāo)志,便于下一次接收
} elseTI=0; //否則就是串口輸出引起的中斷}知識(shí)總結(jié)PC與單片機(jī)的通信同樣要求通信速率要相同,RS-232使用時(shí)必須進(jìn)行電平轉(zhuǎn)換。綜合評(píng)價(jià)課后作業(yè)編程實(shí)現(xiàn)甲乙兩個(gè)單片機(jī)進(jìn)行點(diǎn)對(duì)點(diǎn)通信,甲機(jī)每間隔1s發(fā)送一次“A”字符,乙機(jī)接收到以后,在LCD上顯示出來(lái)。謝謝觀看《單片機(jī)技術(shù)與應(yīng)用》課程項(xiàng)目六溫度檢測(cè)報(bào)警系統(tǒng)設(shè)計(jì)串口概述任務(wù)一用串口擴(kuò)展I0口(1)任務(wù)二
用串口擴(kuò)展I0口(2)任務(wù)三單片機(jī)雙機(jī)通信任務(wù)四
PC與單片機(jī)通信任務(wù)五DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)六任務(wù)六DS18B20溫度采集報(bào)警系統(tǒng)設(shè)計(jì)任務(wù)描述使用數(shù)字溫度傳感器DS18B20,將采集到的溫度信息送單片機(jī),單片機(jī)處理該實(shí)時(shí)溫度信息后,通過(guò)串口送PC進(jìn)行顯示。知識(shí)鏈接溫度傳感器DS18B20溫度傳感器DS18B20
DS18B20是美國(guó)DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供單片機(jī)處理,可實(shí)現(xiàn)溫度的精度測(cè)量與控制。DS18B20封裝外形如圖所示。
值得一提的是DQ引腳的I/O為數(shù)據(jù)輸入/輸出端(即單總線),該引腳為漏極開(kāi)路輸出,常態(tài)下呈高電平。DS18B20引腳功能描述序號(hào)名稱描述1GND地信號(hào)2DQ數(shù)據(jù)輸入輸出引腳3Vdd(Vcc)電源輸入引腳,當(dāng)工作于寄生電源模式時(shí),此引腳必須接地1、內(nèi)部結(jié)構(gòu)
DS18B20的內(nèi)部框圖如圖所示,主要包括寄生電源、溫度傳感器、存放中間數(shù)據(jù)的高速貯存器、用于存儲(chǔ)用戶設(shè)定的溫度上下限值、觸發(fā)器存儲(chǔ)與控制邏輯、8位循環(huán)冗余校驗(yàn)碼發(fā)生器和64位編號(hào)ROM等7部分。下面重點(diǎn)說(shuō)明高速貯存器。高速寄存器RAM由9個(gè)字節(jié)的存儲(chǔ)器組成。其中,第0、1字節(jié)是溫度轉(zhuǎn)換有效位,第0字節(jié)的低3位存放了溫度的高位,高5位存放溫度的正負(fù)值;第1字節(jié)的高4位存放溫度的低位,后4位存放溫度的小數(shù)部分;第2和第3個(gè)字節(jié)是DS18B20的與內(nèi)部E2PROM的有關(guān)的TH和TL,用來(lái)存儲(chǔ)溫度上限和下限,可以通過(guò)程序設(shè)計(jì)把溫度的上下限從單片機(jī)中讀到TH和TL中,并通過(guò)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【課件】大氣壓強(qiáng)教學(xué)課件2024-2025學(xué)年初中物理人教版(2024)八年級(jí)下冊(cè)+
- 中小學(xué)教師思政課培訓(xùn)
- 腫瘤介入術(shù)后護(hù)理
- 2024年度青海社區(qū)工作者練習(xí)題庫(kù)及答案
- 員工入職安全培訓(xùn)大綱
- 生產(chǎn)工藝研發(fā)培訓(xùn)課件
- 2.0信息技術(shù)培訓(xùn)
- 護(hù)理循環(huán)系統(tǒng)
- 襯衫制作流程
- 腫瘤放療病人心理護(hù)理
- 加氣站反恐怖防范安全風(fēng)險(xiǎn)評(píng)價(jià)報(bào)告
- 2025年吉林國(guó)資委出資企業(yè)招聘筆試參考題庫(kù)含答案解析
- 慢性病健康教育
- 金融營(yíng)銷宣傳八不得
- 2024年中國(guó)燈影牛肉市場(chǎng)調(diào)查研究報(bào)告
- 2024年高中生物學(xué)業(yè)水平合格考及答案
- 車給別人開(kāi)的協(xié)議書(shū)
- 1.3探索三角形全等的條件第7課時(shí) 蘇科版八年級(jí)數(shù)學(xué)上冊(cè)
- 蘇教版四年級(jí)科學(xué)下冊(cè)復(fù)習(xí)方法
- 壯族文化宣傳介飲食服飾建筑風(fēng)俗習(xí)慣特點(diǎn)傳統(tǒng)節(jié)日課件
- 牛津譯林版英語(yǔ)八年級(jí)下冊(cè)期末復(fù)習(xí)各單元話題寫(xiě)作范文背誦
評(píng)論
0/150
提交評(píng)論