彩電生產(chǎn)中I2C總線控制器_第1頁(yè)
彩電生產(chǎn)中I2C總線控制器_第2頁(yè)
彩電生產(chǎn)中I2C總線控制器_第3頁(yè)
彩電生產(chǎn)中I2C總線控制器_第4頁(yè)
彩電生產(chǎn)中I2C總線控制器_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精選優(yōu)質(zhì)文檔-----傾情為你奉上精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)目錄第1節(jié)引言………………………21.1課題背景………………21.2系統(tǒng)設(shè)計(jì)方法和步驟…………………2第2節(jié)硬件電路設(shè)計(jì)和分析……………………32.1總體方案和功能指標(biāo)…………………62.2復(fù)位電路………………72.3時(shí)鐘電路………………82.4外部存儲(chǔ)器電路………92.5PC機(jī)控制接口電路……………………102.6與電視機(jī)的接口電路…………………122.73一8譯碼器、鍵盤及LED顯示電路…………………13第3節(jié)軟件設(shè)計(jì)和分析………153.1主程序的初始化部分…………………153.2鍵掃描子程序…………173.3E2PROM讀寫及I2C通訊子程序……3.4LED顯示子程序………253.5與PC機(jī)接口子程序……………………26第4節(jié)系統(tǒng)開(kāi)發(fā)總結(jié)……………29第5節(jié)結(jié)束語(yǔ)……………………30參考文獻(xiàn)…………31彩電生產(chǎn)中I2C第1節(jié)引言1.1課題背景隨著我國(guó)裝備制造業(yè)的發(fā)展,嵌入式系統(tǒng)已經(jīng)成為制造業(yè)的核心技術(shù)。而基于單片一微機(jī)的嵌入式系統(tǒng)又是嵌入式領(lǐng)域中涉及范圍最為廣泛的一種。它被廣泛地應(yīng)用到工業(yè)控制、仿真系統(tǒng)、醫(yī)療儀器、信息家電、通信設(shè)備等眾多方面??梢院敛豢鋸埖卣f(shuō),嵌入式單片機(jī)系統(tǒng)己經(jīng)是耳目無(wú)所不在了。大到軍事裝備、飛機(jī)飛行的控制,小到家庭生活中冰箱、微波爐的控制,到處可見(jiàn)嵌入式單片機(jī)系統(tǒng)的影子。目前,圍繞嵌入式單片機(jī)系統(tǒng)展開(kāi)研究和開(kāi)發(fā),已經(jīng)成為計(jì)算機(jī)軟硬件技術(shù)發(fā)展最活躍的方向之一。嵌入式系統(tǒng)不同于通常純粹的軟件系統(tǒng)或硬件系統(tǒng),而是軟件與硬件通過(guò)在一起的,有些功能既可以用軟件實(shí)現(xiàn),也可以通過(guò)硬件實(shí)現(xiàn)。另外,嵌入式系統(tǒng)設(shè)計(jì)所面臨的挑戰(zhàn)不僅涉及到計(jì)算機(jī)軟件和硬件,也會(huì)涉及到許多非計(jì)算機(jī)工程中的問(wèn)題,諸如機(jī)械尺寸問(wèn)題、功耗問(wèn)題和制造成本問(wèn)題等。即使是計(jì)算機(jī)工程方面的問(wèn)題,大部分系統(tǒng)在實(shí)時(shí)性、可靠性和多速率等問(wèn)題方面也都有特別要求。要成功地設(shè)計(jì)完成一個(gè)嵌入式單片機(jī)系統(tǒng),必須以應(yīng)用環(huán)境和應(yīng)用系統(tǒng)為中心,緊密結(jié)合性能、功耗、大小、成本等方面的綜合要求來(lái)進(jìn)行考慮。1.2系統(tǒng)設(shè)計(jì)方法和步驟彩電生產(chǎn)過(guò)程中的單片微機(jī)控制系統(tǒng)的設(shè)計(jì),必須和電視機(jī)生產(chǎn)的實(shí)際需求相結(jié)合。一個(gè)系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)主要有以下幾個(gè)步驟:(1)根據(jù)生產(chǎn)實(shí)際需要,確定系統(tǒng)的總體方案和功能指標(biāo)。(2)綜合考慮成本、工藝、系統(tǒng)擴(kuò)展等方面的因素,分別進(jìn)行硬件和軟件的設(shè)計(jì)和仿真。(3)仿真調(diào)試成功后將應(yīng)用程序固化,再進(jìn)行現(xiàn)場(chǎng)調(diào)試。(4)逐漸修改和完善直至樣機(jī)試驗(yàn)成功。(5)按照人機(jī)工程學(xué)原理和嚴(yán)格的工藝標(biāo)準(zhǔn),制造正式產(chǎn)品。第2節(jié)硬件電路設(shè)計(jì)采用了I2C總線控制技術(shù)的新型彩電使得各電路之間的連接變得很簡(jiǎn)單,減少了大量元器件和連接線,提高了整機(jī)的可靠性。由于I2C總線具有多重控制能力,即“多主控”(multimalstering),總線上任何能移進(jìn)行發(fā)送和接收的設(shè)備都可以成為主控器,這就使得電視產(chǎn)品的調(diào)試可以很方便地由生產(chǎn)線上的單片微機(jī)控制系統(tǒng)來(lái)完成。我們把這個(gè)控制系統(tǒng)叫做“I2C在闡述工I2CI2C(inter-IntegratedCircui)t總線是一種由PHILI●I2Cl)總線的構(gòu)成I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CUP與被控IC之間、IC與CI之間進(jìn)行雙向傳送,最高傳送速率1OOkbPs。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一樣只有撥通各自的號(hào)碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過(guò)程中,I22)總線的信號(hào)類型I2C開(kāi)始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。應(yīng)答信號(hào):接收數(shù)據(jù)的I2C在接收到8Tit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示己收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU3).總線基本操作I2C規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)??偩€必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才一能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。參見(jiàn)圖2-圖2-10串行總線上的數(shù)據(jù)傳送順序(1)控制字節(jié)在起始條件之后,必須是器件的控制字節(jié),其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,EEPRMO一般應(yīng)為1010),接著三位為片選,最后一位為讀寫位,當(dāng)為1時(shí)為讀操作,為0時(shí)為寫操作。如圖2-11所示。圖2-11控制字節(jié)配置(2)寫操作寫操作分為字節(jié)寫和頁(yè)面寫兩種操作,對(duì)于頁(yè)面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同。頁(yè)面寫的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序參見(jiàn)圖2-12圖2-12頁(yè)面寫(3)讀操作讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。圖令13給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件。如圖2-13。圖2-13順序讀2.1總體方案和功能指標(biāo)●硬件應(yīng)包括主板、按鍵及LCD顯示板、電源板三部分。硬件核心依然是燈AT89C52及其外圍電路。按鍵及LCD顯示板提供控制狀態(tài)及數(shù)據(jù)顯示。電源板提供系統(tǒng)工作電壓+5V?!裣到y(tǒng)應(yīng)外接16KE2PROM用于電視機(jī)I2●系統(tǒng)應(yīng)提供與PC機(jī)的接口,以方便從PC機(jī)讀取和修改總線數(shù)據(jù)?!裣到y(tǒng)應(yīng)提供與電視機(jī)主板CPU的接口,從而向電視機(jī)主板E2PROM寫入總線數(shù)據(jù)。●系統(tǒng)應(yīng)具有一定的抗干擾和糾錯(cuò)能力,可設(shè)置看門狗電路。硬件框圖:如圖2一1所示。圖2-1I2C2.2復(fù)位電路當(dāng)AT89C52管腳RESET上出現(xiàn)高電平并保持至少2個(gè)機(jī)器周期,單片機(jī)進(jìn)入復(fù)位狀態(tài)。復(fù)位后,從地址Oxo開(kāi)始尋址,執(zhí)行代碼。為了確保上電復(fù)位操作正確,RESET上的復(fù)位信號(hào)應(yīng)該大于2個(gè)機(jī)器周期。由于我們使用了11.O592MHz的晶振作為主時(shí)鐘,故其1個(gè)機(jī)器周期為:12*(1/11.0592)=1.lus,因此要求復(fù)位信號(hào)大于2.2us。為此選用MAXAM公司的MAX813L看門狗監(jiān)控芯片,可為MCU提供上電復(fù)位,掉電復(fù)位,手動(dòng)復(fù)位,看門狗及電壓比較器功能。在上電期間,當(dāng)電源電壓超過(guò)其復(fù)位門限電壓(4.65V)后,MAX813L就會(huì)產(chǎn)生一個(gè)至少140ms脈寬的復(fù)位脈沖,當(dāng)?shù)綦娀螂娫床▌?dòng)下降到低于復(fù)位門限1.25V后也產(chǎn)生復(fù)位脈沖,確保在任何情況下系統(tǒng)都能正常工作。當(dāng)程序跑飛時(shí),WD0輸出低電平,并保持14OmS以上,于是MAX813L產(chǎn)生復(fù)位信號(hào),同時(shí)看門狗定時(shí)器清零。MAX813L的清看門狗輸入端WDI由AT89C52的P3.5控制,當(dāng)WDI上的電平在1.6秒內(nèi)無(wú)變化,表示程序進(jìn)入死循環(huán)或跑飛,則將產(chǎn)生復(fù)位信號(hào),使機(jī)器可以恢復(fù)正常工作。圖2-2為復(fù)位電路電原理圖。其中MR段接手動(dòng)復(fù)位鍵。圖2-2復(fù)位電路2.3時(shí)鐘電路X1和X2是AT89C52時(shí)鐘輸入和輸出端。由于其內(nèi)部有振蕩電路,所以在X1和X2端可以接一個(gè)無(wú)源晶振。在此設(shè)計(jì)中,我們使用了11.O592MHz的晶振,機(jī)器周期為輸入晶體振蕩器頻率的12分頻,即為:12x(1/11.0592)=1.lus。圖2-3為時(shí)鐘電路原理圖。圖2-3時(shí)鐘電路原理2.4外部存儲(chǔ)器電路在本設(shè)計(jì)中,程序存儲(chǔ)器為AT89C52內(nèi)部的8KbyteFlashERPMO。為了存放電視機(jī)的I2C總線數(shù)據(jù),在AT89C52外部掛接了一片16Kbit的串行EPROM,IS24CIS24C16從模式的器件地址的最低位,由P3.3(R/W)決定,片選位A2、A1、AO都接地,而器件地址的高4位固定為1010,因此,讀為AIH;寫為AOH。圖2-4為外部存儲(chǔ)器電原理圖。圖2-4外部存儲(chǔ)電路原理2.5PC機(jī)控制接口電路由于PC系列微機(jī)串行口為RS232C標(biāo)準(zhǔn)接口,與輸入、輸出均采用TTL電平的燈AT89C52單片機(jī)在接口規(guī)范上不一致,因此TTL電平到RS232C接口電平的轉(zhuǎn)換采用MAXIM公司的MAX232標(biāo)準(zhǔn)RS232接口芯片,該芯片可以用單電壓(+5v)實(shí)現(xiàn)RS232接口邏輯“1”(-3V-15V)和邏輯“0’’(+3V-15V)的電平轉(zhuǎn)換。通過(guò)AT89C52的口線P3.0(RXD)模擬接收端,P3.1(TXD)模擬發(fā)送端,波特率配置成9600bPs,如圖PC般使用8250或16550作為串行通訊的控制器,使用9針或25針的接插件將串行口的信號(hào)送出。其中9針插頭(針輸出)的信號(hào)定義如下:圖2-6RS232接口定義MCS一51的串行口使用起來(lái)非常簡(jiǎn)單,因?yàn)镸CS一51單片機(jī)的串行口沒(méi)有與MODEM控制相關(guān)的信號(hào)。這使得以上信號(hào)在通訊過(guò)程之中不會(huì)被全部使用,僅需TXD及RXD及SG即可完成,其他的握手信號(hào)可以直接懸空。圖2-5RS232接口電路原理2.6與電視機(jī)的接口電路I2C總線控制器在對(duì)電視機(jī)進(jìn)行調(diào)試時(shí),首先要通過(guò)一個(gè)帶線插頭與電視機(jī)主板上一個(gè)預(yù)留的插座相連,強(qiáng)行接管工I2Pl.4置高時(shí),將電視機(jī)主板、AV板等上的工I2C器件置于“Service’’狀態(tài),從而接管工I2C總線。P1.5置高時(shí),主板、AV板等的“BuSOff”信號(hào)有效,從而關(guān)閉工I2C圖2-7與電視機(jī)的接口電路2.73一8譯碼器、鍵盤及LED顯示電路圖2-83-8譯碼器、鍵盤及LED顯示電路其中,CL505為8段CMOS一LED組合器件?!癓E”為“選通”;置高電平有效;“BL”為“熄滅控制”,BL=1則數(shù)碼及小數(shù)點(diǎn)無(wú)條件熄滅;“V”為發(fā)光二極管的公共陰極;Al、Bl、Cl、Dl為“輸入端”;“LT”為“小數(shù)點(diǎn)點(diǎn)亮,,:“DP1、DP0”O(jiān)P.O-PO.7構(gòu)成4*4鍵盤矩陣。P2.O-P2.3為L(zhǎng)ED顯示數(shù)據(jù)輸入,P2.4-P2.6是譯碼器輸入,P2.7為“選通”,當(dāng)P2.7為低時(shí)譯碼器有輸出,否則無(wú)輸出位。Pl.0-Pl.3為L(zhǎng)ED熄滅控制。第3節(jié)軟件設(shè)計(jì)和分析3.1.主程序初始化部分主程序部分要完成以下任務(wù):堆棧指針、程序標(biāo)志寄存器、定時(shí)器、P0、Pl、P2口、P3口、中斷方式、定義的參數(shù)等的初始化,LED初始顯示,按鍵等待,兩次鍵碼比較,兩次數(shù)據(jù)比較,開(kāi)、關(guān)總線,發(fā)送數(shù)據(jù)等。程序段如下:MAIN:MOVPSW,#0;標(biāo)志寄存器清零MOVRl,#OBDHMOVR0,#2CLRAINO:MOV@R0,AINCRODJNZRl,IN0:內(nèi)部RAM清零MOVSP,#30H;堆棧指針MovTMOD,#20H;定時(shí)器T0為可自動(dòng)再裝入的8位定時(shí)器MovTCON,#00H;定時(shí)器T0初始化MOVTHO,#O6H;MOVTL0,#06H;T0定時(shí)275ps,喂狗線每隔275ps就取反CLRRI;設(shè)置串行接收中斷標(biāo)志位MOVSCON,#50H;串口1方式(8位數(shù)據(jù)位,幀10位)CLRMM;位地址位清零MOVP0,#0FH;按鍵列有效MOVPl,#0F0H;LED顯示OCLRP1.4;進(jìn)入“serviee”狀態(tài)MOVRB6,#05MOVRB7,#10LCALLDELAY1;沿時(shí)子程序MOVJIANMA,#99HMOVSHUJU,#06HMOVA,#08HPUSHACCLCALLDISPLAY;顯示初始值“9906H”CLRMDL;有無(wú)鍵標(biāo)志位清零SETBEX0;開(kāi)放外部中斷OSETBIE0;外中斷O中斷標(biāo)志SETBTR0;啟動(dòng)TOSETBET0;允許TO中斷SETBTP0;定時(shí)器O中斷優(yōu)先CLRIT0;外中斷O為邊沿觸發(fā)KEY:SETEA;開(kāi)中斷SETBP3.2;開(kāi)中斷、定時(shí)器,設(shè)置中斷方式PP:JNBMDL,PP;等待按鍵CLRMDLCLRTR0COMP:MOVA,BU1;比較上次與該次的調(diào)試鍵碼相等否LOOP5:CJNEA,BUA,NEXT8;不同則轉(zhuǎn)去NEXTSJMPCKK;相同則轉(zhuǎn)去比較數(shù)據(jù)值NETXS:LCALLNEXT;兩次鍵碼不同,執(zhí)行新按鍵功能MOVRB6,#10MOVRB7,#10LCALLDELAY1;沿時(shí)LJMPKEY;返回CKK:MOVA,BUB“MOVBU2,ALCALLOFFSET;計(jì)算偏移量LCALLWRNBYT;寫入EEPRMOCLRPl.5;關(guān)總線LJMPKEY;返回3.2鍵掃描子程序ORG1OOHISX0:PUSHPSWPUSHACCMOVPSW,#08CLRIE.7;停止接受中斷請(qǐng)求MOVP0,#0FFHDELA:MOVR6,#200IS01:MOVR7,#200DJNZR7,$DJNZR6,IS01:沿時(shí)去抖動(dòng)GETKEY:MOVR7,#09HMVOR6,#OEFH;判斷第一列IS02:DJNZR7,IS00LJMPERRIS00:MOVA,R6MOVP0,ASETBCRLCAMOVR6,A:為下一列作準(zhǔn)備MOVA,P0;按鍵讀回CPLAMOVR3,AANLA,#0FH;屏蔽高四位,只留列號(hào)JZIS02判斷下一列MOVA,R3MOVB,#0CLRCANLA,#0F0HSWAPAI1:RRCAJCI2INCBJMPI1;計(jì)算列號(hào)I2:MOVA,#04HMULABMOVR4,AMOVB,#0CLRCMOVA,R3ANLA,#0FHI3:RRCA;計(jì)算行號(hào)JCI4INCBJMPI3I4:MOVA,R4ADDA,B15:MOVB,ACLRCSUBBA,#010HJCGORIGHTGOERR:LJMPERR:按鍵數(shù)超過(guò)16,出錯(cuò)GORIGHT:MVOA,B;計(jì)算鍵號(hào)GETPROC:MOVDPTR,#PROCMOVB,#03HMULABJMP@A+DTPRRETI3.3E2PROM讀寫及I2CI2C通訊所用符號(hào)定義VSDAEQUPl.7VSCLEQUP1.6SLAEQU5OH;尋址字節(jié)存放單元NUMBYTEQU51H;傳送字節(jié)數(shù)存放單元MTDEQU3OH;發(fā)送數(shù)據(jù)緩沖區(qū)MRDEQU4OH;接收字節(jié)緩沖區(qū)SLAWEQUAOH;尋址字節(jié)寫SLAREQUA1H;尋址字節(jié)讀頁(yè)寫子程序MOVSLA,#SLAW;指向那個(gè)節(jié)點(diǎn)并認(rèn)定發(fā)送SALWMOVNUMBYT,#16;傳送幾個(gè)字節(jié)LCALLWRNBYT;調(diào)用歸一化發(fā)送子程序WRNBYT啟動(dòng)工ZC總線STA:SETBVSDA;SETBVSCLNOPNOPNOPNOP;外部晶振時(shí)鐘匹配CLRVSDANOPNOPNOPNOPCLRVSCLRET;停止I2CSTOP:CLRVSDASETBVSCLNOPNOPNOPNOPSETBVSDANOPNOPNOPNOPCLRVSDACLRVSCLRET;發(fā)送應(yīng)答位MACK:CLRVSDASETBVSCLNOPNOPNOPNOPCLRVSCLSETBVSDARET;發(fā)送非應(yīng)答位MNACK:SETBVSDASETBVSCLNOPNOPNOPNOPCLRVSCLCLRVSDARET:應(yīng)答位檢查CACK:SETBVSDASETBVSCLCLRF0MOVCVSDAJNCCENDSETBF0CEND:CLRVSCLRET;向vSDA線上發(fā)送一個(gè)數(shù)據(jù)字節(jié)WRBYT:MOVR0#08HWLPRLCAJCWR1AJMPWR0WLP1:DJNZR0WLPRETWR1:STEBVSDASETBVSCLNOPNOPNOPNOPCLRVSCLCLRVSDAAJMPWPL1WR0:CLRVSDASETBVSCLNOPNOPNOPNOPCLRVSCLAJMPWLP1;從VSDA線上讀取一個(gè)數(shù)據(jù)字節(jié)RDBYT:MOVR0#08HRLJP:SETBVSDASETBVSCLMOVCVSDAMOVAR2RLCAMOVR2CLRVSCLDJNZR0RLPRET;虛擬工ZC總線發(fā)送N個(gè)字節(jié)數(shù)據(jù)WRNBYT:MOVR3NUMBYTLCALLSTAMOVASLALCALLWRBYTLCALLCACKJBF0WRNBYTMOVRl#MTDWRDA:MOVA@RlLCALLWRBYTLCALLCACKJBFOWRNBYTINCRlDJNZR3WRDALCALLSTOPRET:模擬工℃總線接收n個(gè)字節(jié)數(shù)據(jù)RDNBYT:MOVR3NUMBYTLCALLSTAMOVASLALCALLWRBYTLCALLCACKJBF0RDNBTVRDN:MOVRl#MRDRDN1:LCALLRDBYTMOV@Rl,ADJNZR3,ACKLCALLMNACKCLALLSTOPRETACK:LCALLMACKINCRlSJMPRDN13.4LED顯示子程序DIPSLAY:MOVP1,#0FFH;先無(wú)條件熄滅5個(gè)LDEMOVA,#13H;LEDS顯示“H”CLRPl.3;選通ELDSMOVP2,AMovA,JIANMA;顯示鍵碼ANLA,#0F0H;屏蔽低4位MOVP2,ACLRPl.0;選通LEDI、LEDZMOVA,JIANMAANLA,#0FH;MOVP2,AMOVA,SHUJU;顯示數(shù)據(jù)ANLA,#0F0HCLRPl.1;選通LED3MOVP2,AMOVA,SHUJU;ANLA,#0FHCLRPl.2;選通LED4MOVP2,ARET3.5與PC機(jī)接口子程序RS-232C在空閑時(shí)處于邏輯“1”狀態(tài),在開(kāi)始傳送時(shí),首先產(chǎn)生一起始位,起始位為一個(gè)寬度的邏輯“O”,占用一位,用來(lái)表示字符開(kāi)始。其后為7或8位的數(shù)據(jù)編碼,傳送的數(shù)據(jù)從最低位開(kāi)始依此送出,第8位通常做為奇偶校驗(yàn)位,最后為停止位(高電平),用來(lái)表示字符傳送結(jié)束。串行通信中,每秒傳送的數(shù)據(jù)位稱為波特率。如數(shù)據(jù)傳送的波特率為1200波特,采用N.8.1幀格式(10位),則每秒傳送字節(jié)為120個(gè),而字節(jié)中每一位傳送時(shí)間即為波特率的倒數(shù):T=I/1200=O.833mS。同樣,如數(shù)據(jù)傳送的波特率為9600波特,則字節(jié)中每一位傳送時(shí)間為T=1/9600=0.104ms。根據(jù)數(shù)據(jù)傳送的波特率即字節(jié)中每一位的傳送時(shí)間,我們便可用普通我們用89C52單片機(jī)的P3.1和P3.0口分別模擬串行通信的發(fā)送和接收,其接口程序主要由INPUI、發(fā)送子程序和OUTPUT接收子程序組成。通信速率9600bit/s,幀格式為N.8.1。發(fā)送時(shí),先發(fā)送一個(gè)起始位(低電平),接著按低位在先的順序發(fā)送8位數(shù)據(jù),最后發(fā)送停止位。接收時(shí),先判斷P3.0接收端口是否有起始低電平出現(xiàn),如有則按低位在先的順序接收8位數(shù),最后判斷P3.0口是否有停止高電平出現(xiàn),如有則完成一個(gè)數(shù)據(jù)接收,否則繼續(xù)等待。其中軟件編寫要嚴(yán)格按照異步通信的時(shí)序進(jìn)行,每bit位傳送時(shí)間間隔按通信速率9600bit/s計(jì)算為104us。其模擬串行通信程序清單如下:TXDEQUP3.1RXDEQUP3.0;定義89C52P3.1為發(fā)送端,P3.O為接收端MOVA,#SENDDATAMOVR5,#NSETBRXD;P3.0置高TX:LCALLINPUT;調(diào)用發(fā)送子程序,將寄存器A中內(nèi)容發(fā)給CP機(jī)SETBTXD;P3.1置高M(jìn)OVR0,#40HRX:LCALLOUTPUT;調(diào)用接收子程序,將接收的N個(gè)數(shù)據(jù)存放在以40H開(kāi)始的地址中MOV@RO,AINCR0DJNZR5,RX;N個(gè)數(shù)據(jù)接收結(jié)束,則等待,否則轉(zhuǎn)Rx繼續(xù)接收AJMP$;**************延時(shí)104us子程序*DEL104:MOVR7,#65MS11:DJNZR7,MS11RET;********************************;******89C52發(fā)送數(shù)據(jù)給PC機(jī)子程序****INPUT:CLRCMOVTXD,C;發(fā)送起始位LCALLDEL104;延時(shí)MOVR3,#8REP:RRCAMOVTXD,CLCALLDEL104DJNZR3,REP;發(fā)送8位數(shù)據(jù)SETBC;發(fā)送停止位MOVTXD,CLCALLDEL104RET;***從PC機(jī)接收數(shù)據(jù)子程序****;OUTPUT:JBRXD,$;判斷是否有起始位出現(xiàn)LCALLDEL104MOVR3,#8OUT:MOVC,RXDRRCALCALLDEL104DJNZR3,OUT;接收8位數(shù)據(jù)JNBRXD,$;判斷是否有停止位出現(xiàn)RET第4節(jié)系統(tǒng)開(kāi)發(fā)總結(jié)在實(shí)際中總結(jié)出的單片機(jī)系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)如下:1)盡可能選擇典型電路,并符合單片機(jī)常規(guī)用法。為硬件系統(tǒng)的標(biāo)準(zhǔn)化、模塊化打下良好的基礎(chǔ)。比如單片機(jī)的復(fù)位電路,時(shí)鐘電路,鍵矩陣電路等都可以采用常規(guī)的連接方式,而外部的存儲(chǔ)器、看門狗、RS232電平轉(zhuǎn)換芯片的連接也是模塊化的。2)系統(tǒng)擴(kuò)展與外圍設(shè)備的配置水平應(yīng)充分滿足應(yīng)用系統(tǒng)的功能要求,并留有適當(dāng)余地,以便進(jìn)行二次開(kāi)發(fā)。例如本文實(shí)例“I2C總線控制器”,其中E23)系統(tǒng)可靠性至關(guān)重要?!褚紤]到電源和IC的相互影響:電路板上每個(gè)CI要并接一個(gè)0.01uF-0.1uF高頻電容,以減小IC對(duì)電源的影響。許多單片機(jī)對(duì)電源噪聲很敏感,要給單片機(jī)電源加濾波電路或穩(wěn)壓器,以減小電源噪聲對(duì)單片機(jī)的干擾?!袷褂秒娫幢O(jiān)控及看門狗電路:可大幅度提高整個(gè)電路的抗干擾性能。一個(gè)外部的看門狗是最好的,因?yàn)樗灰蕾囉趩纹瑱C(jī)。/r

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論