版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、武漢工程大學(xué)郵電與信息工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)PAGE 目錄(ml) TOC o 1-1 h z u HYPERLINK l _Toc421186935 HYPERLINK l _Toc421186936 摘 要 PAGEREF _Toc421186936 h I HYPERLINK l _Toc421186937 Abstract PAGEREF _Toc421186937 h II HYPERLINK l _Toc421186938 第一章 緒論(xln) PAGEREF _Toc421186938 h 1 HYPERLINK l _Toc421186939 第二章 方案設(shè)計(jì) PAGER
2、EF _Toc421186939 h 2 HYPERLINK l _Toc421186940 2.1設(shè)計(jì)(shj)的任務(wù) PAGEREF _Toc421186940 h 2 HYPERLINK l _Toc421186941 2.2單片機(jī)串行通信的基本概念 PAGEREF _Toc421186941 h 2 HYPERLINK l _Toc421186942 2.3通信方案 PAGEREF _Toc421186942 h 6 HYPERLINK l _Toc421186943 2.4主從控制的設(shè)計(jì)方案 PAGEREF _Toc421186943 h 8 HYPERLINK l _Toc4211
3、86944 第三章 硬件設(shè)計(jì) PAGEREF _Toc421186944 h 11 HYPERLINK l _Toc421186945 3.1單片機(jī)串行口硬件結(jié)構(gòu)介紹 PAGEREF _Toc421186945 h 11 HYPERLINK l _Toc421186946 3.2 Protues簡(jiǎn)介 PAGEREF _Toc421186946 h 11 HYPERLINK l _Toc421186947 3.3 Protues 仿真總體電路硬件設(shè)計(jì) PAGEREF _Toc421186947 h 12 HYPERLINK l _Toc421186948 3.4 輸入模塊的設(shè)計(jì) PAGEREF
4、_Toc421186948 h 14 HYPERLINK l _Toc421186949 3.5 顯示模塊的設(shè)計(jì) PAGEREF _Toc421186949 h 15 HYPERLINK l _Toc421186950 3.6 控制模塊的設(shè)計(jì) PAGEREF _Toc421186950 h 16 HYPERLINK l _Toc421186951 3.7時(shí)鐘電路模塊的設(shè)計(jì) PAGEREF _Toc421186951 h 17 HYPERLINK l _Toc421186952 3.8復(fù)位模塊的設(shè)計(jì) PAGEREF _Toc421186952 h 18 HYPERLINK l _Toc42118
5、6953 第四章 軟件設(shè)計(jì) PAGEREF _Toc421186953 h 19 HYPERLINK l _Toc421186954 4.1開發(fā)環(huán)境 PAGEREF _Toc421186954 h 19 HYPERLINK l _Toc421186955 4.2 編程思路 PAGEREF _Toc421186955 h 20 HYPERLINK l _Toc421186956 4.3 主機(jī)串口通信控制子程序設(shè)計(jì) PAGEREF _Toc421186956 h 20 HYPERLINK l _Toc421186957 4.4主機(jī)控制程序設(shè)計(jì) PAGEREF _Toc421186957 h 21
6、HYPERLINK l _Toc421186958 4.6從機(jī)控制程序設(shè)計(jì) PAGEREF _Toc421186958 h 25 HYPERLINK l _Toc421186959 第五章 仿真與調(diào)試 PAGEREF _Toc421186959 h 28 HYPERLINK l _Toc421186960 總 結(jié) PAGEREF _Toc421186960 h 30 HYPERLINK l _Toc421186961 致 謝 PAGEREF _Toc421186961 h 31 HYPERLINK l _Toc421186962 參考文獻(xiàn) PAGEREF _Toc421186962 h 32
7、HYPERLINK l _Toc421186963 附錄1 主機(jī)控制程序代碼 PAGEREF _Toc421186963 h 33 HYPERLINK l _Toc421186964 附錄2 從機(jī)控制程序代碼 PAGEREF _Toc421186964 h 37武漢工程大學(xué)郵電與信息工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)- PAGE 49 -武漢工程大學(xué)郵電與信息工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)- PAGE I -摘 要單片機(jī)應(yīng)用于數(shù)據(jù)采集或工業(yè)控制時(shí),往往需要安裝在工業(yè)現(xiàn)場(chǎng),遠(yuǎn)離主機(jī),構(gòu)成單片機(jī)多機(jī)系統(tǒng),在多機(jī)系統(tǒng)中經(jīng)常采用總線型主從多機(jī)控制系統(tǒng)。主機(jī)發(fā)送的信息可傳送到各個(gè)從機(jī),而各從機(jī)發(fā)送的信息只能被主機(jī)接
8、受。單片機(jī)的相互通信(tng xn)有并行通信和串行通信兩種,在主從多機(jī)控制系統(tǒng)中,經(jīng)常采用串行通信來交換數(shù)據(jù)和信息,采用串行通信的方式將現(xiàn)場(chǎng)數(shù)據(jù)發(fā)送給主機(jī)處理。主從控制方式已經(jīng)在工業(yè)中廣泛的運(yùn)用。在主從控制系統(tǒng)中,單片機(jī)的通信由上位機(jī)(單片機(jī))控制。主機(jī)向各個(gè)(gg)從機(jī)發(fā)送命令或者接受從機(jī)反饋的信息,主機(jī)有權(quán)修改從機(jī)的參數(shù),接受從機(jī)的數(shù)據(jù),還可以查看從機(jī)的狀態(tài),可以說主機(jī)是主從控制的大腦。本課題(kt)所討論的就是基于AT89C51單片機(jī)的主從控制系統(tǒng),采用串行通信的方式,主機(jī)和從機(jī)可以實(shí)現(xiàn)全雙工通信,主機(jī)可以向從機(jī)發(fā)送數(shù)據(jù),從機(jī)也可以向主機(jī)發(fā)送數(shù)據(jù)。關(guān)鍵詞:?jiǎn)纹瑱C(jī);主從控制;串行通信;全
9、雙工AbstractMicrocontroller used in data acquisition and industrial control often needs to be installed in the industrial field, away from the host, constitute a single chip multi-machine system, often in multi-machine system using bus-based master-slave multi-machine control system. Host sends the in
10、formation can be sent to each slave, and the information sent from the machine can only be host to accept. MCU communicate with each other are two kinds of parallel communication and serial communication, in the main from the multi-machine control systems, often using serial communication to exchang
11、e data and information, using serial communication means to send to the host processing field data.The master-slave control method has been widely used in industry. In the master-slave control system, the communication of the microcontroller (MCU) by the host computer control. Host to each from the
12、machine to send commands or receive feedback information from the machine, the host has the right to modify the parameters of the slave to accept data from the machine, you can also view the status of the slave, can be said that the host is the master-slave control of the brain.The subject under dis
13、cussion is based on master-slave control AT89C51 SCM system, using serial communication means, master and slave can be full-duplex communication, the host can send data to the slave, the slave can send data to the host.Key words: SCM;Master Control;Serial Communication;Full-duplex- PAGE 1 -第一章 緒論(xl
14、n)隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及(pj),計(jì)算機(jī)的通信功能顯得越來越重要。計(jì)算機(jī)通信是指計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。這種信息交換可以分成兩大類:并行通信和串行通信1。并行(bngxng)通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送。并行通信除了數(shù)據(jù)線外還有通信網(wǎng)絡(luò)控制線。數(shù)據(jù)發(fā)送方在發(fā)送數(shù)據(jù)之前,要詢問接受對(duì)方是否“準(zhǔn)備就緒”。數(shù)據(jù)接收方收到數(shù)據(jù)后,要向數(shù)據(jù)發(fā)送方回送數(shù)據(jù)已經(jīng)接受到的“應(yīng)答”信號(hào)2。并行通信的特點(diǎn)是:控制簡(jiǎn)單,傳輸速度快。由于傳輸線較多,長(zhǎng)距離傳輸時(shí)成本高且接收方的各位同時(shí)接受存在困難3。串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳
15、輸線上逐個(gè)地傳送。串行通信時(shí),數(shù)據(jù)發(fā)送設(shè)備先將數(shù)據(jù)代碼又并行形式轉(zhuǎn)換成串行形式,然后一位一位地放在傳輸線上進(jìn)行傳送。數(shù)據(jù)接收設(shè)備將接收到的串行形式轉(zhuǎn)換成并行形式進(jìn)行存儲(chǔ)或處理。串行通行的特點(diǎn)是:傳輸線少,長(zhǎng)距離傳送時(shí)成本低,且可以利用電話網(wǎng)等現(xiàn)成設(shè)備。但數(shù)據(jù)的傳送控制比并行通信復(fù)雜3。在數(shù)據(jù)通信、計(jì)算機(jī)網(wǎng)絡(luò)以及分布式工業(yè)控制系統(tǒng)中,經(jīng)常采用串行通信來交換數(shù)據(jù)和信息。AT89C51單片機(jī)有一個(gè)可編程的全雙工串行通信口,它可作為UART(通信異步收發(fā)器),也可作同步移位寄存器。其幀格式可為8位、10位或11位,并可以設(shè)置多種不同的波特率。通過引腳RXD(P3.0,串行數(shù)據(jù)接收引腳)和引腳TXD(P
16、3.1,串行數(shù)據(jù)發(fā)射引腳)與外界進(jìn)行通信。AT89C51單片機(jī)的串行口位計(jì)算機(jī)間的通信提供了極為便利的條件。利用單片機(jī)的串行口還可以方便地?cái)U(kuò)展鍵盤和顯示器,對(duì)于簡(jiǎn)單的應(yīng)用非常便利4。單片機(jī)構(gòu)成的多級(jí)系統(tǒng)常采用主從式結(jié)構(gòu)結(jié)構(gòu)。所謂主從式,即在數(shù)個(gè)單片機(jī)中,有一個(gè)是主機(jī),其余的是從機(jī),從機(jī)要服從主機(jī)的調(diào)度和支配5。AT89C51單片機(jī)的串行口方式2和方式3適于這種主從式的通信結(jié)構(gòu)。第二章 方案設(shè)計(jì)2.1設(shè)計(jì)(shj)的任務(wù)(rn wu)本次設(shè)計(jì)的題目是主從控制系統(tǒng)設(shè)計(jì),它是實(shí)際工程(gngchng)應(yīng)用的簡(jiǎn)化,它利用單片機(jī),單片機(jī)組成主從控制系統(tǒng),單片機(jī)控制BCD數(shù)碼管進(jìn)行簡(jiǎn)單的顯示,開發(fā)編程使用
17、Protues和keil51開發(fā)軟件實(shí)現(xiàn),單片機(jī)之間采用TTL進(jìn)行通信。故設(shè)計(jì)任務(wù)大致可分為下面幾部分:(1)設(shè)計(jì)一個(gè)具有控制功能的主機(jī),可顯示主機(jī)工作狀態(tài)和當(dāng)前串口數(shù)據(jù);(2)設(shè)計(jì)兩個(gè)從機(jī),可以接收主機(jī)信號(hào)并根據(jù)信號(hào)相應(yīng)接收或發(fā)送數(shù)據(jù);(3)設(shè)計(jì)主機(jī)的三種工作狀態(tài),A:數(shù)據(jù)發(fā)送 B:數(shù)據(jù)匯總 C數(shù)據(jù)加一;(4)設(shè)計(jì)主機(jī)和從機(jī)的顯示部分均通過BCD碼-七段數(shù)碼管顯示,控制部分通過按鈕和開關(guān)實(shí)現(xiàn)。2.2單片機(jī)串行通信的基本概念2.2.1串行口控制寄存器 AT89C51內(nèi)部擁有很多特殊的寄存器其中SBUF為串行口的收發(fā)緩沖器,它是一個(gè)可尋址的專用寄存器,其中包含了接收器和發(fā)射器寄存器,可以實(shí)現(xiàn)全雙
18、工通信。但這兩個(gè)寄存器具有同一地址(99H)。AT89C51的串行數(shù)據(jù)傳輸很簡(jiǎn)單,只要向緩沖器寫入數(shù)據(jù)就可發(fā)送數(shù)據(jù)。而從接收緩沖器讀出數(shù)據(jù)既可接收數(shù)據(jù)。此外,接收緩沖器前還加上一級(jí)輸入移位寄存器,AT89C51這種結(jié)構(gòu)的目的在于接收數(shù)據(jù)時(shí)避免發(fā)生重疊現(xiàn)象,文獻(xiàn)稱這種結(jié)構(gòu)為雙緩沖結(jié)構(gòu)。而發(fā)送數(shù)據(jù)就不需要這樣設(shè)計(jì),因?yàn)榘l(fā)送時(shí),CPU是主動(dòng)的,不可能出現(xiàn)這種情況6。A:串行通信寄存器SCON控制寄存器是一個(gè)可尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制,單元地址是98H,其結(jié)構(gòu)格式如下:表2-1 SCON寄存器結(jié)構(gòu)(jigu)SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8T
19、IRI位地址9FH9EH8DH9CH9BH9AH99H98H下面(xi mian)對(duì)個(gè)控制位功能介紹如下:SM0、SM1:串行口工作(gngzu)方式控制位 SMO SM1 工作方式 功能說明 0 0 方式0 移位寄存器方式(用于I/O擴(kuò)展) 0 1 方式1 8位UART,波特率可變(T1溢出率/ n) 1 0 方式2 9 位UART,波特率為fosc/64或fosc/32 1 1 方式3 9位UART,波特率可變(T1溢出率/ n) (2)SM2:多機(jī)通信控制位多機(jī)通信是工作方式2和方式3,SM2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作方式2或3,以及SM2=1時(shí),只有當(dāng)接收到第9位
20、數(shù)據(jù)(RB8)為1時(shí),才把接收的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請(qǐng),否則會(huì)將收到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),只有在接收到有效停止位時(shí)才啟動(dòng)RI,若沒接收到有效停止位,則RI清“0”。在方式0中SM2應(yīng)該為“0”。REN:允許接收控制位。由軟件置“1”時(shí),允許接收;軟件置“0”時(shí),不許接收。TB8:在方式3和方式3中要發(fā)送的第9位數(shù)據(jù),需要時(shí)用軟件置位和清零。RB8:在方式2和方式3中是接收到的第9位數(shù)據(jù)。在方式1時(shí),如SM2=0,RB8接收到的停止位。在方式0中,不使用RB8。TI:發(fā)送中斷標(biāo)志。由硬件在方式0發(fā)送完第8位時(shí)置“1”,或在其它方式中串行發(fā)送停止位的開始時(shí)置“1”。必
21、須由軟件清“0”。RI:接收中斷標(biāo)志。由硬件在方式0串行發(fā)射第8位結(jié)束時(shí)置“1”B:特殊功能寄存器PCONPCON:主要是是CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,單元地址為87H其機(jī)構(gòu)格式如下表:表2-2 特殊(tsh)功能寄存器PCON PCOND7D6D5D4D3D2D1D0位符號(hào)SMODGF1GF0PDIDLC:中斷(zhngdun)允許寄存器IE中斷允許寄存器這里(zhl)重述一下對(duì)串行口有影響的位ES。ES為串行中斷允許控制位,ES=1允許串行中斷,ES=0,禁止串行中斷1。2.2.2串行口工作方式一、方式0方式0時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸
22、入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。 二、方式1方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一
23、次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。三、方式2和方式3方式2或方式3時(shí)為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳 。方式2和方式3時(shí)起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時(shí)為SCON中的TB8,接收時(shí)為RB8),停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。發(fā)送(f sn)開始時(shí),先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。
24、每一個(gè)移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。第一次移位(y wi)時(shí),停止位“1”移入輸出移位寄存器的第9位上 ,以后每次移位,左邊都移入0。當(dāng)停止位移至輸出位時(shí),左邊其余(qy)位全為0,檢測(cè)電路檢測(cè)到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置TI=1,向CPU請(qǐng)求中斷。接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請(qǐng)求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的
25、負(fù)跳變7。2.2.3波特率的計(jì)算在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來決定。串行口的四種工作方式對(duì)應(yīng)三種波特率。由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =(2SMOD/64) fosc 方式1的波特率 =(2SMOD/32)(T1溢出率)當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。
26、這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。T1 溢出率 = fosc /12256 (TH1)在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定。串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制。具體步驟如下:確定T1的工作方式(編程TMOD寄存器);計(jì)算T1的初值,裝載TH1、TL1;啟動(dòng)(qdng)T1(編程TCON中的TR1位);確定(qudng)串行口控制(編程SCON寄存器);串行口在中斷(zhngdun)方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)8。2.3通信方案2.3.1通信規(guī)則串行通信是指所傳
27、送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。在串行通信中,按數(shù)據(jù)傳送方向可分為單工制式、半雙工制式、全雙工制式。下面對(duì)這幾種方式進(jìn)行簡(jiǎn)要說明:(1)單工:在此方式下,A、B兩機(jī)之間只允許單向傳輸數(shù)據(jù),只能A機(jī)發(fā)送,B機(jī)接收。(2)半雙工:在這種制式下,雙機(jī)允許雙方向傳送,但它們之間只有一個(gè)通信回路,即接收和發(fā)送不能同時(shí)進(jìn)行,只能分時(shí)發(fā)送和接收A機(jī)發(fā)送B機(jī)接收或A機(jī)接收B機(jī)發(fā)送。因此,只需要一條數(shù)據(jù)線連接A、B機(jī)。(3)全雙工:在此方式下,A、B機(jī)之間數(shù)據(jù)的發(fā)送和接收可以同時(shí)進(jìn)行,所以必須使用兩根數(shù)據(jù)線。不管哪種形式的串行通信,在兩機(jī)之間都需要共地線9。2.3.2通信協(xié)議單片機(jī)的通信協(xié)議可由用戶自行
28、定義,本次設(shè)計(jì)采用了在保證系統(tǒng)可靠性方面較好的一種方法。多機(jī)通信是,主機(jī)發(fā)送的信息分地址和數(shù)據(jù)兩類。以第9位數(shù)據(jù)位作為區(qū)分標(biāo)志,SCON的TB8為1表示地址,為0表示數(shù)據(jù)。通信以主機(jī)發(fā)送信息,從機(jī)接收信息開始。主機(jī)發(fā)送時(shí),通過設(shè)置TB8的狀態(tài)來區(qū)分發(fā)送的是地址還是數(shù)據(jù)。而從機(jī)方面,為了接收信息,初始化時(shí)應(yīng)將SCON的SM2位置1.因?yàn)槎鄼C(jī)通信時(shí),串口均工作在方式2或方式3,接收數(shù)據(jù)要受SM2控制。當(dāng)SM2=1,只有接收到的第9位RB8(由主機(jī)的TB8的狀態(tài)確定)也為1時(shí),才將數(shù)據(jù)送入SBUF,并置位RI,供查詢或中斷;否則接收的數(shù)據(jù)被舍棄,不置位RI。而當(dāng)SM=0時(shí),無論接收到的第9位RB8是
29、0還是1,都把接收的數(shù)據(jù)送至SBUF,并置位RI,供查詢或中斷。通信開始后,主機(jī)首先發(fā)送地址。各從機(jī)接收地址時(shí),由于SM2=1、RB8=1,因此各從機(jī)都能置位RI,在程序中判斷主機(jī)發(fā)送的地址與本機(jī)地址是否相符(xingf)合。若相符則把該從機(jī)的SM2位清零,以準(zhǔn)備接收其后傳來的數(shù)據(jù)。其余從機(jī)由于地址不符,仍保持SM2=1的狀態(tài)。此后主機(jī)發(fā)送的數(shù)據(jù),由于TB8=0,雖然各從機(jī)都能收到,但只有SM2=0的那個(gè)(n ge)從機(jī)才把數(shù)據(jù)送入SBUFF。其余各從機(jī)皆因SM2=1、RB8=0,而將數(shù)據(jù)舍棄。這就是多機(jī)通信中主從機(jī)一對(duì)一的通信情況,通信智能(zh nn)在主從機(jī)之間進(jìn)行。若要進(jìn)行兩個(gè)從機(jī)之間
30、的通信,需要通過主機(jī)做中介才能實(shí)現(xiàn)1。2.3.3通信方式不同的獨(dú)立系統(tǒng)相互交換數(shù)據(jù)便是通訊。通訊的目的是交換數(shù)據(jù),既數(shù)據(jù)通過設(shè)備傳輸?shù)搅硪粋€(gè)設(shè)備中去。人與人之間的對(duì)話,計(jì)算機(jī)與其他設(shè)備或者計(jì)算機(jī)間的數(shù)據(jù)交換,廣播都可以說是通訊。就通信而言,在微型計(jì)算機(jī)系統(tǒng)中,主機(jī)與外部的基本通信方式有兩種:并行通信(Parallel Communication)數(shù)據(jù)的所有位同時(shí)傳輸,一次傳輸8位;串行通信(Serial communiaction)數(shù)據(jù)的各位一位一位順序傳輸,既一個(gè)電壓標(biāo)準(zhǔn)。在單片微型內(nèi)部或與極近距離的外部一般都采用并行傳輸方式,其特點(diǎn)是傳輸速度快,效率高,但需多根總線。并行通訊是串行通訊速度
31、的8倍,在與外部距離較遠(yuǎn)的數(shù)據(jù)傳輸時(shí)多采用串行通信,其特點(diǎn)是只需要一對(duì)傳輸線,大大節(jié)省傳輸線及有關(guān)設(shè)備,成本低,但傳輸速度慢,效率低。串行通信是將構(gòu)成數(shù)據(jù)或字符的每個(gè)二進(jìn)制碼位。按照一定的順序逐位進(jìn)行傳輸,其傳輸有兩種基本的通信方式:同步和異步。 同步通信的基本特征是發(fā)送與接收時(shí)鐘需始終保持嚴(yán)格的同步。由于串行傳輸是一位位順序進(jìn)行的,為了約定數(shù)據(jù)是由哪一位開始傳輸,需要設(shè)定同步字符,稱起始同步等。通信時(shí)每位所占的時(shí)間均相等。 同步接收端在一次串行傳輸開始時(shí),即進(jìn)入“監(jiān)視同步字符串的搜索方式”,一旦檢測(cè)到設(shè)定的同步字符串后,就從同步字符串后的第一位數(shù)符開始計(jì)數(shù),按約定的數(shù)據(jù)段進(jìn)行接收。 同步串行
32、通信方式常用于傳輸信息量大,速度要求(yoqi)較高(可達(dá)800KB/S)的場(chǎng)合。因?yàn)樗笥蓵r(shí)鐘來實(shí)現(xiàn)接收/發(fā)送之間的嚴(yán)格同步,對(duì)時(shí)鐘信號(hào)的相位一致性要求非常嚴(yán)格,因此其硬件設(shè)備復(fù)雜,成本高,一般串行通信中較少用10。2.4主從(zhcng)控制的設(shè)計(jì)方案 根據(jù)設(shè)計(jì)(shj)任務(wù)的要求以及指導(dǎo)老師的意見(實(shí)際設(shè)計(jì)的下位機(jī)可以連接多臺(tái),我們根據(jù)設(shè)計(jì)要求,用了2臺(tái)),制定出本次設(shè)計(jì)的框圖如下: 主機(jī)(AT89C51)TXDRXD TXD RXD 1#AT89C51從機(jī) TXD RXD0#AT89C51從機(jī)圖2-1設(shè)計(jì)框圖 圖2-3系統(tǒng)硬件結(jié)構(gòu)圖框圖說明如下:主機(jī)與從機(jī)之間采用TTL電平通信接口進(jìn)
33、行通信,它的通信距離可以為1.5米,兩片單片機(jī)在此距離內(nèi)串行口可直接相連從機(jī)我們采用的是AT89C51,AT89C51的基本結(jié)構(gòu)包括用于執(zhí)行各種指令和運(yùn)算處理的中央處理器CPU,用于存放可以讀寫的內(nèi)部程序存儲(chǔ)器RAM,用于存放程序指令或數(shù)據(jù)表格的內(nèi)部程序存儲(chǔ)器ROM,4個(gè)8位的并行I/O口P0、P1、P2、P3,用做外部事件計(jì)數(shù)器或內(nèi)部定時(shí)的2個(gè)定時(shí)器/記數(shù)器,具有5個(gè)中斷源的中斷系統(tǒng)(2個(gè)定時(shí)器中斷、2級(jí)中斷服務(wù)程序嵌套,每個(gè)中段源都可用程序規(guī)定為高優(yōu)先中段或低優(yōu)先級(jí)中段),1個(gè)串口接口電路,內(nèi)部時(shí)鐘電路(本設(shè)計(jì)采用的是11.059mhz)。AT89C51和外設(shè)備或者外部存儲(chǔ)器的連接。連接方
34、式采用3總線結(jié)構(gòu)方式(控制(kngzh)、地址、數(shù)據(jù)),在AT89C51單片機(jī)中沒有單獨(dú)的地址總線和數(shù)據(jù)總線,而是采用的分時(shí)復(fù)用的方式,與通用的并行口P0、P2接口(ji ku)公用。P0口分時(shí)用做低8位地址線和數(shù)據(jù)線。P2口用做高8位的地址線。單片機(jī)內(nèi)部的地址線和數(shù)據(jù)線都不是獨(dú)立的總線,而是與并行I/O口公用(gngyng)。圖2-2單片機(jī)硬件結(jié)構(gòu)圖AT8951的存儲(chǔ)器結(jié)構(gòu)。物理上有4個(gè)存儲(chǔ)器空間:片內(nèi)程序存儲(chǔ)器ROM 片外存儲(chǔ)器ROM、片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM,從市容的角度來看,它有3個(gè)存儲(chǔ)器空間:稱為CODE空間 的片內(nèi)外統(tǒng)一的64kb的ROM;128字節(jié)的的片內(nèi)RAM 稱為XDATA空間的
35、64kb的外部RAM。 為了實(shí)現(xiàn)一臺(tái)單片機(jī)與多臺(tái)單片機(jī)通信的目的,必須保證串口具有識(shí)別功能。串行口控制寄存器SCON中的SM2位就是為滿足這一條件而設(shè)置的多機(jī)通信控制位。其工作原理是在串行口以方式2或方式3接收時(shí),若SM2=1,則表示進(jìn)行多級(jí)通訊,這時(shí)可能出現(xiàn)一下兩種情況:(1)從機(jī)接收主機(jī)發(fā)來的第9位數(shù)據(jù)RB8=1時(shí)前8位數(shù)據(jù)才裝入SBUF,并置斷標(biāo)志RI=1,向CPU發(fā)出中斷請(qǐng)求。在中斷服務(wù)程序中,從機(jī)把接收的SBUF中的數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū)中。(2)如果從機(jī)接收主機(jī)(zhj)發(fā)來的第9位數(shù)據(jù)RB8=0時(shí),則不產(chǎn)生中斷標(biāo)志RI=1,不引起中斷,從機(jī)不接收主機(jī)(zhj)發(fā)來的數(shù)據(jù)。若SM2=0
36、,則接收的第9位數(shù)據(jù)(shj)不論是0還是1,從機(jī)都將產(chǎn)生RI=1的中斷標(biāo)志,接收的數(shù)據(jù)裝入SBUF中。應(yīng)用AT89C51單片機(jī)串行口這一特征,可實(shí)現(xiàn)AT89C51單片機(jī)的多機(jī)通信。通信的工作過程如下:(1)各從機(jī)初始化程序允許從機(jī)的串行口中斷,將串行口編程為方式2火方式3接收,即9位異步通信發(fā)方式,且SM2和REN位置1,使從機(jī)只處于多機(jī)通信且接收地址幀的狀態(tài)。(2)在主機(jī)和某個(gè)從機(jī)通信之前,先將從機(jī)地址(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))發(fā)送給各個(gè)從機(jī),接著才傳送數(shù)據(jù)或命令,主機(jī)發(fā)送的地址幀信息的第9位為1,數(shù)據(jù)或命令幀的第9位為0.當(dāng)主機(jī)向各從機(jī)發(fā)送地址幀時(shí),各從機(jī)的串行口接收到的第9位信息RB8為
37、1,且由于各從機(jī)的SM2=1,則中斷標(biāo)志位RI置1,各從機(jī)響應(yīng)中斷。在中斷服務(wù)子程序中,各從機(jī)判斷主機(jī)送來的地址是否和本機(jī)地址相符合,若為本機(jī)地址,則該從機(jī)SM2位清零,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若地址不相符,則保持SM2=1狀態(tài)。接著主機(jī)發(fā)送數(shù)據(jù)或命令幀,數(shù)據(jù)幀的第9位為0。此時(shí)各從機(jī)接收的RB8=0,自己有與前面的地址相符合的從機(jī)系統(tǒng)(即SM2位清零的從機(jī))才能激活中斷標(biāo)志位RI,從而進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中接收主機(jī)發(fā)來的數(shù)據(jù)或命令;與主機(jī)發(fā)來的地址不相符的從機(jī),由于SM2保持為1,又RB8=0,因此不能激活中斷標(biāo)志位RI,也就不能就收主機(jī)發(fā)來的數(shù)據(jù)幀,從而保證了主機(jī)與從機(jī)之間通
38、信的真確性。此時(shí)與從機(jī)建立聯(lián)系的從機(jī)已經(jīng)設(shè)置為單機(jī)通信模式,即在真?zhèn)€通信中,通信的雙方都要保持發(fā)送數(shù)據(jù)的第9位即TB8位為0,防止其他從機(jī)誤接收數(shù)據(jù)。(3)結(jié)束數(shù)據(jù)通信并為下一次的多機(jī)通信做好準(zhǔn)備。在多機(jī)通信系統(tǒng)中每個(gè)從機(jī)都被賦予唯一的一個(gè)地址。當(dāng)主機(jī)與從機(jī)的數(shù)據(jù)通信結(jié)束后,將從機(jī)再次設(shè)置為多機(jī)通信模式,以便進(jìn)行下一次的多機(jī)通信3。第三章 硬件(yn jin)設(shè)計(jì)3.1單片機(jī)串行口硬件結(jié)構(gòu)(jigu)介紹AT89C51單片機(jī)共有(n yu)2個(gè)串行I/O口,分別記為RXD(P3.0,串行數(shù)據(jù)接收端)和TXD(P3.1,串行數(shù)據(jù)發(fā)送端)。AT89C51單片機(jī)串行接口是一個(gè)可編程的全雙工串行通信接
39、口。它可用作異步通信方式(UART),與串行傳送信息的外部設(shè)備相連接,或用于通過標(biāo)準(zhǔn)異步通信協(xié)議進(jìn)行全雙工的8051多機(jī)系統(tǒng)也能通過同步方式,使用TTL或CMOS移位寄存器來擴(kuò)充I/O口。AT89C51單片機(jī)通過管腳RXD和管腳TXD與外界通信。SBUF是串行口緩沖寄存器,包括發(fā)送寄存器和接收寄存器。它們有相同名字和地址空間,但不會(huì)出現(xiàn)沖突,因?yàn)樗鼈儍蓚€(gè)一個(gè)只能被CPU讀出數(shù)據(jù),一個(gè)只能被CPU寫入數(shù)據(jù)。P3.0和P3.1位電路結(jié)構(gòu)圖如下圖3-1所示。圖3-1 P3.0與P3.1口位電路結(jié)構(gòu)圖3.2 Protues簡(jiǎn)介Protues軟件是由英國(guó)Labcenter Electronics 公司開
40、發(fā)的EDA工具軟件,已有近20年的歷史,在全球得到了廣泛的應(yīng)用。Protues軟件的公呢個(gè)強(qiáng)大,它集電路設(shè)計(jì)、電路仿真及制版等多功能于一身,不僅能夠?qū)﹄姽ぁ㈦娮蛹夹g(shù)學(xué)科設(shè)計(jì)的電路進(jìn)行設(shè)計(jì)與分析,還能對(duì)微處理器進(jìn)行設(shè)計(jì)和仿真,并且功能齊全,界面多彩,是近年來備受電子設(shè)計(jì)愛好者青睞的一款電子線路設(shè)計(jì)與仿真軟件113.2.1 Protues軟件(run jin)組成Protues系統(tǒng)包括ISIS.EXE(電路原理圖設(shè)計(jì)、電路原理仿真)、ARES.EXE(印刷電路板設(shè)計(jì))兩個(gè)主要程序三大基本功能。Protues組合了高級(jí)原理布圖、混合模式(msh)SPICE仿真、PCB設(shè)計(jì)以及自動(dòng)布線功能,從而實(shí)現(xiàn)了
41、一個(gè)完整的電子設(shè)計(jì)系統(tǒng)12。Protues軟件由一下6部分(b fen)組成原理圖輸入系統(tǒng)ISIS;混合模型仿真器;動(dòng)態(tài)器件庫(kù);高級(jí)圖形分析模塊;處理器仿真模型VSM;PCB設(shè)計(jì)編輯ARES;本次設(shè)計(jì)只用到了ISIS,主要進(jìn)行電路原理圖設(shè)計(jì)及仿真。3.2.2 Protues ISIS 設(shè)計(jì)單片機(jī)電路的基本步驟(1) 用Proteus ISIS 進(jìn)行單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與仿真的基本步驟:(2) 新建設(shè)計(jì)文件夾或打開一個(gè)現(xiàn)有的設(shè)計(jì)文件。(3) 選擇元器件(通過關(guān)鍵字或分類檢索)。(4) 將元器件放入設(shè)計(jì)窗口。(5) 添加其他模型(電源、地線、信號(hào)源等)和相關(guān)的虛擬儀器。(6) 編輯和連接電路。(7)
42、 編寫單片機(jī)所需的源程序。(8) 加入源程序,并通過構(gòu)造,得到仿真程序或目標(biāo)程序。這里的(6)、(7)兩步可以選用其他更方便的工具完成。(9) 根據(jù)需要,設(shè)置對(duì)象的屬性,如將單片機(jī)的”Program File”屬性設(shè)置為上述仿真調(diào)試程序或目標(biāo)程序。(10) 啟動(dòng)仿真功能,對(duì)電路進(jìn)行仿真操作,驗(yàn)證其功能13。3.3 Protues 仿真總體電路硬件設(shè)計(jì)總體電路硬件設(shè)計(jì)如下圖3-2所示。圖3-2總體系統(tǒng)硬件電路設(shè)計(jì)圖整個(gè)系統(tǒng)(xtng)電路主要由輸入模塊,顯示模塊,控制模塊,時(shí)鐘(shzhng)電路模塊(m kui),復(fù)位模塊組成,按上下級(jí)的關(guān)系又可以分為主機(jī)部分和從機(jī)部分。主機(jī)根據(jù)輸入模塊輸入的
43、信號(hào)啟用不同工作模式,控制顯示模塊進(jìn)行相應(yīng)的數(shù)據(jù)顯示。主機(jī)和從機(jī)結(jié)構(gòu)框圖如下所示。圖3-3主機(jī)結(jié)構(gòu)框圖主機(jī)主機(jī)數(shù)據(jù)顯示主機(jī)工作狀態(tài)顯示串行數(shù)據(jù)接收發(fā)送按鈕控制從機(jī)串行數(shù)據(jù)接收發(fā)送按鈕控制從機(jī)數(shù)據(jù)顯示圖3-4從機(jī)結(jié)構(gòu)框圖3.4 輸入(shr)模塊的設(shè)計(jì)(shj)輸入(shr)模塊主要由按鈕和上拉電阻組成,按下按鈕時(shí),對(duì)應(yīng)I/O口接通地,相當(dāng)于將此I/O口置0。上拉電阻主要作用是確保將相應(yīng)串口嵌位在高電平,電阻起限流作用。主機(jī)部分有三個(gè)按鈕K1、K2、K3,分別作為發(fā)送數(shù)據(jù)、匯總接收、加一開關(guān),控制主機(jī)的三種工作狀態(tài)。發(fā)送數(shù)據(jù)是將主機(jī)的數(shù)據(jù)發(fā)送至從機(jī)1和從機(jī)2,匯總接受是將從機(jī)1和從機(jī)2的實(shí)際接收
44、并相加,加1是每一次按鍵數(shù)據(jù)加1。從機(jī)部分只有一個(gè)加一按鈕。圖3-5主機(jī)輸入模塊3-6從機(jī)輸入模塊 3.5 顯示(xinsh)模塊的設(shè)計(jì)(shj)圖3-7主機(jī)工作狀態(tài)顯示顯示(xinsh)模塊采用BCD碼-七段數(shù)碼管顯示譯碼器顯示,BCD碼七段數(shù)碼管顯示譯碼器是將一位BCD碼翻譯為數(shù)碼管上對(duì)應(yīng)顯示的十進(jìn)制數(shù)字。電路接線圖如下圖3-7、3-8、3-9所示。 圖3-8主機(jī)數(shù)據(jù)顯示圖3-9從機(jī)數(shù)據(jù)顯示 其實(shí)(qsh)BCD碼七段數(shù)碼管顯示(xinsh)譯碼器即為4-7線譯碼器,只是將它顯示(xinsh)在數(shù)碼管上而已。 其(數(shù)碼管為共陰極)真值表如下表:表3-1BCD七段譯碼器真值表BCD碼-七段數(shù)
45、碼管引腳從左到右依次為從高位到低位D、C、B、A,主機(jī)部分工作狀態(tài)顯示DA依次接P1.3P1.0,主機(jī)和從機(jī)數(shù)據(jù)顯示從左至右依次接P2.7P2.0。加一按鈕每按一次,數(shù)碼管顯示數(shù)據(jù)就加一。主機(jī)K1按鈕按下時(shí),狀態(tài)顯示變?yōu)閍,表示主機(jī)工作在發(fā)送數(shù)據(jù)狀態(tài);K2按鈕按下時(shí),狀態(tài)顯示變?yōu)閎,表示主機(jī)工作在匯總接受狀態(tài);K3按鈕按下時(shí),狀態(tài)變?yōu)閏,表示主機(jī)工作在數(shù)據(jù)加一狀態(tài)。3.6 控制模塊的設(shè)計(jì)本次設(shè)計(jì)控制模塊微機(jī)采用的是AT89C51單片機(jī),是AT89C5x系列單片機(jī)的代表機(jī)型,AT89C5x系列單片機(jī)繼承了MCS-51的原有功能,與MCS-51里寫單片機(jī)在原有功能、引腳以及指令方面完全兼容。此外,
46、AT89C5x系列單片機(jī)中的某些品種又增加了一些新的功能,如看門狗定時(shí)器WDT、ISP(在系統(tǒng)編程也稱在線編程)及SPI串行接口技術(shù)等。片內(nèi)Flash存儲(chǔ)器允許在線(+5V)電擦除、電寫入或使用編程器對(duì)其重復(fù)編程。另外,AT89C5x單片機(jī)即還支持由軟件選擇的兩種節(jié)電工作模式,非常適于電池供電或其他要求低功耗場(chǎng)合。AT89C51與MCS-51系列中的87C51單片機(jī)相比, AT89C51單片機(jī)片內(nèi)的4KBFlash存儲(chǔ)器取代了87C51片內(nèi)4KB的EPROM。AT89C51單片機(jī)片內(nèi)的4KBFlash存儲(chǔ)器可在線編程或使用編程器重復(fù)編程,且價(jià)格較低,因此AT89C51單片機(jī)是目前的主流芯片之一
47、。 地址(dzh)設(shè)置如圖3-11示,通過將P1口各位置0或1來設(shè)置各從機(jī)的地址。程序內(nèi)部(nib)將主機(jī)發(fā)送的地址與P1口的值進(jìn)行比較來確定正確的從機(jī)接收數(shù)據(jù)。從機(jī)選通開關(guān)(kigun)接線如圖3-12示,CONTROL1(或2)閉合表示從機(jī)1(或2)選通允許接受主機(jī)發(fā)送數(shù)據(jù)。圖3-10AT89C51圖3-11從機(jī)地址設(shè)置 圖3-12選通開關(guān)3.7時(shí)鐘(shzhng)電路模塊(m kui)的設(shè)計(jì)(shj)AT89C51單片機(jī)各功能部件的運(yùn)行都以時(shí)鐘控制信號(hào)為基準(zhǔn),有條不紊、一拍一拍的工作。因此,時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式
48、,一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。本次設(shè)計(jì)采用的是前者,電路圖如下圖3-13所示。圖3-13時(shí)鐘電路設(shè)計(jì)AT89C51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,他的輸入端為單片機(jī)引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。電路中的電容C1和C2的典型值通常選為30pF。該電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶振頻率的范圍通常在1.212MHz。晶體的頻率越高,系統(tǒng)的時(shí)鐘頻率越高,單片機(jī)的運(yùn)行速度也越快。但反過來,運(yùn)行速度快對(duì)存儲(chǔ)器的速度要求就高,對(duì)印刷電路板的工藝要求也高,即要求線間的寄生電容要小。
49、本次設(shè)計(jì),串口工作在方式三,波特率的計(jì)算公式為2SMOD*fosc/(12*(256-X),其中X為定時(shí)器初值。為了使波特率數(shù)值為整百,故取晶振為11.0592MHz。3.8復(fù)位模塊的設(shè)計(jì)圖3-14復(fù)位電路設(shè)計(jì)AT89C51的復(fù)位是由外部的復(fù)位電路實(shí)現(xiàn)的。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式,按鈕復(fù)位又有電平和脈沖兩種方式。本次設(shè)計(jì)采用的是按鈕手動(dòng)復(fù)位,電路圖如圖3-14所示。第四章 軟件設(shè)計(jì)4.1開發(fā)(kif)環(huán)境4.1.1 編程語(yǔ)言C語(yǔ)言是一種(y zhn)通用的計(jì)算機(jī)語(yǔ)言。它即編寫系統(tǒng)程序,也可用來編寫應(yīng)用程序。它同時(shí)具有匯編語(yǔ)言和高級(jí)語(yǔ)言的特點(diǎn)。在單片機(jī)開發(fā)中,以前基本上是使
50、用匯編語(yǔ)言,也有使用BASIC語(yǔ)言(yyn)進(jìn)行開發(fā)。從90年代中期以后使用C語(yǔ)言開發(fā)單片機(jī)成為一種流行的趨勢(shì)。因?yàn)樗哂惺褂梅奖恪⒕幊绦矢呒胺抡嬲{(diào)試容易等突出特點(diǎn)14。因C語(yǔ)言程序中缺少將十六進(jìn)制轉(zhuǎn)換為十進(jìn)制的函數(shù),而匯編語(yǔ)言實(shí)現(xiàn)起來很方便,故可考慮在C程序中嵌入?yún)R編程序15。C51中嵌入?yún)R編程序的格式如下:#pragma asm匯編程序#pragma endasm4.1.2 編程工具 本次設(shè)計(jì)使用的編程工具為Keil公司開發(fā)的Keil C51編譯器,Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、
51、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過匯編語(yǔ)言后再使用C來開發(fā),體會(huì)更加深刻。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,它既可以編輯、編譯和調(diào)試匯編語(yǔ)言程序,也可以編輯、編譯和調(diào)試C51程序。是一個(gè)基于Windows平臺(tái)的集成開發(fā)環(huán)境。它不但可以仿真模擬一般的程序運(yùn)行,同時(shí)還可以仿真模擬I/O口、定時(shí)/計(jì)數(shù)器、串行口及中斷等單片機(jī)特有的功能部件,甚至可以模擬在某個(gè)I/O引腳上輸入一個(gè)方波或正弦波,其功能非常強(qiáng)大。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件
52、時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。4.1.3 Keil調(diào)試基本(jbn)步驟(1)新建工程(gngchng)并選擇單片機(jī)型號(hào)。(2)設(shè)置工程(gngchng)屬性。(3)編輯源文件并加入工程(4)構(gòu)造目標(biāo)程序。(5)運(yùn)行調(diào)試,以排除程序中的邏輯錯(cuò)誤。(6)將最終的目標(biāo)程序下載到單片機(jī)芯片中。4.2 編程思路(1)主機(jī)初始化為工作方式3、允許接收、置位TB8。(2)全部從機(jī)初始化為工作方式3、允許接收、置位SM2。(3)主、從機(jī)的波特率為9600b/s。(4)主機(jī)通信程序包括發(fā)送地址、發(fā)送命令字、發(fā)送數(shù)據(jù)。(5)全部從機(jī)均接收主機(jī)發(fā)送的地址,并進(jìn)入相應(yīng)的處理程序,進(jìn)行地址比較。(6)被尋址的從機(jī)確認(rèn)后,
53、將自身SM2清零,繼續(xù)接收后續(xù)數(shù)據(jù)。主從機(jī)通信方式:主從機(jī)均采用查詢方式收發(fā)數(shù)據(jù),從機(jī)1和從機(jī)2的程序相同。4.3 主機(jī)串口通信控制子程序設(shè)計(jì)串口通信控制子程序在程序中定義為MS_CTRL()子程序,流程圖如下圖4-1所示。子程序入口TB8=1地址送串口TB8=0命令字送串口TB8=1命令字=00?TB8=1子程序返回回圖4-1MS_CTRL()子程序流程圖MS_CTRL()子程序是主機(jī)(zhj)發(fā)送和接收數(shù)據(jù)的關(guān)鍵,主機(jī)控制程序中通過對(duì)MS_CTRL()子程序的調(diào)用來實(shí)現(xiàn)(shxin)主機(jī)地址、命令字、數(shù)據(jù)的發(fā)送及數(shù)據(jù)會(huì)總時(shí)數(shù)據(jù)的接收。MS_CTRL()子程序代碼(di m)如下。void
54、MS_CTRL() /多機(jī)串口通信控制程序(地址或數(shù)據(jù)發(fā)送程序) TB8=1; /TB8=1,發(fā)送地址 SBUF=RR2; /地址送串口 while(TI=0); TI=0; TB8=0; /TB8=0,發(fā)送命令字或數(shù)據(jù) SBUF=RR3; /命令字送串口 while(TI=0); TI=0; if(RR3=0 x00) /命令字為00,發(fā)送數(shù)據(jù) SBUF=RR5; while(TI=0); TI=0;else /命令字為01,接收數(shù)據(jù) while(RI=0); RI=0; RR5=SBUF;4.4主機(jī)控制程序設(shè)計(jì)主機(jī)控制機(jī)程序主要包括初始化部分、波特率設(shè)置、工作狀態(tài)設(shè)置三部分,其中工作狀態(tài)部
55、分又分為A、B、C(數(shù)據(jù)發(fā)送,數(shù)據(jù)匯總,數(shù)據(jù)加1)三種,通過三個(gè)if語(yǔ)句來實(shí)現(xiàn)工作狀態(tài)的選擇。其中工作方式A又需要通過if語(yǔ)句判斷選通開關(guān)的狀態(tài)來向從機(jī)發(fā)送數(shù)據(jù)。最后將當(dāng)前串口數(shù)據(jù)儲(chǔ)存在R5中,并在數(shù)碼管上顯示。主機(jī)控制程序流程圖圖下圖4-2所示。K2=0?程序入口端口定義串口通信初始化K1=0?定時(shí)器T1工作方式2T1賦初值啟動(dòng)T1變量與端口初始化顯示數(shù)據(jù)送P2口等待K1松開0A送P1口命令字00送RR3從機(jī)1地址送RR2MS_CTRL()Con2=0?從機(jī)2地址送RR2MS_CTRL()K3=0?等待K2松開等待K3松開0B送P1口0C送P1口RR5+十六進(jìn)制轉(zhuǎn)為十進(jìn)制MS_CTRL()命
56、令字01送RR3從機(jī)1數(shù)據(jù)暫存從機(jī)1地址送RR2十六進(jìn)制轉(zhuǎn)為十進(jìn)制從機(jī)2地址送RR2MS_CTRL()從機(jī)1、2數(shù)據(jù)相加Con1=0?圖4-2主機(jī)控制程序流程圖主機(jī)控制(kngzh)程序代碼如下。main() SP=0 x60; /堆棧(duzhn)指針 SCON=0 xD8; /串口工作(gngzu)方式3,允許接收,TB8=1 TMOD=0 x20; /定時(shí)器T1工作(gngzu)方式2 TH1=0 xFD; /定時(shí)器賦初值(波特率為9600b/s) TL1=0 xFD; PCON=0 x00; /SMOD=0(波特率不增倍) TR1=1; /啟動(dòng)T1 RR5=0 x00; /變量初始化
57、P1=0 x00; /P1口初始化 while(1) P2=RR5; /顯示數(shù)據(jù) if(K1=0) /K1合上,發(fā)送數(shù)據(jù) while(K1=0); /等待按鍵松開 P1=0 x0A; /發(fā)送數(shù)據(jù)時(shí),數(shù)碼管顯示“A” RR3=0 x00; /命令字“00”送RR3(從機(jī)收到該命令后,從串口接收數(shù)據(jù)) if(Con1=0) /從機(jī)1是否選通 RR2=0 x07;/從機(jī)1地址送RR2 MS_CTRL();/調(diào)用串口多機(jī)通信控制程序 _nop_(); _nop_(); if(Con2=0)/從機(jī)2是否選通 RR2=0 x0F;/從機(jī)2地址送RR2 MS_CTRL(); if(K2=0) /K2合上,匯
58、總(huzng)接收 while(K2=0); P1=0 x0B; /匯總(huzng)接收時(shí),數(shù)碼管顯示“B” RR3=0 x01; /命令字“01”送RR3(從機(jī)收到該命令(mng lng)后發(fā)送數(shù)據(jù)至串口) RR2=0 x07; /從機(jī)1地址送RR2 MS_CTRL(); _nop_(); _nop_(); RR4=RR5; /從機(jī)1數(shù)據(jù)暫存入RR4 RR2=0 x0F; /從機(jī)2地址送RR2 MS_CTRL(); #pragma asm/在C語(yǔ)言中嵌入?yún)R編程序(改程序?qū)⑹M(jìn)制轉(zhuǎn)換為十進(jìn)制) MOV A,R4 /R4對(duì)應(yīng)RR4(地址均為0 x04),R5對(duì)應(yīng)RR5(地址均為0 x05)
59、 ADD A,R5 DA A MOV R5,A /轉(zhuǎn)換結(jié)果存入R5(相當(dāng)于存入RR5,實(shí)現(xiàn)了匯編語(yǔ)言寄存/器和C語(yǔ)言變量之間的數(shù)值傳遞) #pragma endasm if(K3=0) /K3合上,加1 while(K3=0); /等待按鍵松開 P1=0 x0c; /加1時(shí),數(shù)碼管顯示“C” RR5+; /加1 #pragma asm /將十六進(jìn)制轉(zhuǎn)換為十進(jìn)制 CLR A ADD A,R5 DA A MOV R5,A #pragma endasm 4.6從機(jī)控制(kngzh)程序設(shè)計(jì)程序入口端口定義串口通信初始化定時(shí)器T1工作方式2T1賦初值啟動(dòng)T1SM2=1顯示數(shù)據(jù)送P2口RI=0?RI=0
60、接收地址地址相等?SM2=0接收命令字命令字=00?接收數(shù)據(jù)發(fā)送數(shù)據(jù)KEY=0?等待按鍵松開顯示數(shù)據(jù)加1十六進(jìn)制轉(zhuǎn)為十進(jìn)制圖4-3從機(jī)程序流程圖從機(jī)控制程序主要包括初始化部分、波特率設(shè)置、數(shù)據(jù)接收(jishu)與發(fā)送三部分,程序(chngx)流程圖如下圖4-3所示。從機(jī)控制(kngzh)程序代碼如下。main() SP=0 x60; /同主機(jī)(zhj)注釋 SCON=0 xD8; TMOD=0 x20; TH1=0 xFD; TL1=0 xFD; PCON=0 x00; TR1=1; SM2=1; /接收(jishu)地址時(shí),SM2=1、RB8=1(因主機(jī)發(fā)送地址時(shí),TB8=1/作第9位,傳送
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年駕駛員培訓(xùn)合同:安全駕駛知識(shí)傳授
- 2024印刷宣傳冊(cè)年度生產(chǎn)、印刷及后期加工合同3篇
- 2024年股票交易居間協(xié)議
- 2024年豪華KTV租賃合同樣本3篇
- 2024年高端醫(yī)療服務(wù)外包合同
- 2025年度膩?zhàn)赢a(chǎn)品綠色環(huán)保認(rèn)證銷售合同3篇
- 2024幼兒園教職工綜合保障聘用合同示范文本3篇
- 2025產(chǎn)業(yè)園智慧園區(qū)建設(shè)與運(yùn)營(yíng)管理服務(wù)合同范本3篇
- 2025年度池塘水利工程設(shè)施建設(shè)與維護(hù)合同3篇
- 雙重預(yù)防體系材料明細(xì)5篇范文
- (八省聯(lián)考)2025年高考綜合改革適應(yīng)性演練 物理試卷合集(含答案逐題解析)
- 2025年安徽銅陵市公安局第二批輔警招聘158人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 車間修繕合同模板
- 商會(huì)年會(huì)策劃方案范例(3篇)
- SQE年終總結(jié)報(bào)告
- 《化學(xué)實(shí)驗(yàn)室安全》課程教學(xué)大綱
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 貼在學(xué)校食堂門口的對(duì)聯(lián)_在圖書館門前貼的對(duì)聯(lián)
- 計(jì)數(shù)培養(yǎng)基適用性檢查記錄表
- 大瀝鎮(zhèn)志愿服務(wù)隊(duì)備案成立步驟
評(píng)論
0/150
提交評(píng)論