版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘要</b></p><p> 通用串行總線(USB)是一種高傳輸速率的串行接口總線,由于它具有即插即用、易于擴(kuò)展和高傳輸速率的特點(diǎn)(與老式的串、并口相比),隨著計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)在已經(jīng)被廣為應(yīng)用于各種計(jì)算機(jī)外設(shè)、數(shù)字設(shè)備以及工業(yè)領(lǐng)域之中。對(duì)基于USB總線的數(shù)據(jù)傳輸?shù)姆椒ㄟM(jìn)行研究,充分利用這種數(shù)據(jù)傳輸?shù)膬?yōu)越性,能提高數(shù)據(jù)傳輸?shù)乃俾省⒖煽啃耘c方便性,這樣就能更
2、有效的利用計(jì)算機(jī)資源,在實(shí)際應(yīng)用中更好地發(fā)揮作用。 </p><p> 畢設(shè)設(shè)計(jì)是USB輸出數(shù)據(jù)存儲(chǔ)器設(shè)計(jì),采用上位機(jī)控制信息的發(fā)送。由于USB接口在當(dāng)今社會(huì)的廣泛使用,所以在硬件這一部分采用的是將USB轉(zhuǎn)換成串行口通信來實(shí)現(xiàn)的。主要采用的是PL2303芯片,該芯片具有此項(xiàng)功能。本次畢設(shè)的主要部分是單片機(jī)接收上位機(jī)發(fā)送的信息,然后運(yùn)用12864液晶在將這些信息顯示出來。另外12864液晶中含有漢字庫(kù),也使
3、顯示字符串變得比較容易了。在上位機(jī)這一塊要采用MSComm控件,使上位機(jī)完成與單片機(jī)的通信。</p><p> 關(guān)鍵詞:通用串行總線;單片機(jī);12864液晶</p><p><b> Abstract</b></p><p> Universal Serial Bus(USB) is a kind of the serial buses
4、with high speed on transmitting. With the development of computer technology,it has been used widely for the peripheral equipment、digital device and the industrial field,for it has such advantages as Plug and Play,easy t
5、o be eapanded and the high speed on transmitting(Compared with the old-fashioned serial and parallel port).Studying the method of transmitting data based on USB、using the advantage of this method sufficie-ntly,we can imp
6、rove</p><p> Graduation design theme is usb output data storage design. and uses a machine to control information sending. Usb interfaces are used widely in our society,so we change the usb ports into the
7、serial communication in this part of the hardware.It mainly adopts pl2303 chip,and this chip has this function.The main part is that monolithic takes over the information from the upper,then we use Lcd12864 to show this
8、information. In addition, Lcd12864 contains chinese character library,so displaying the</p><p> Key Words:USB;MCU;Lcd12864</p><p> 1 緒論
9、 </p><p><b> 1.1 USB簡(jiǎn)介</b></p><p> USB是由世界著名計(jì)算機(jī)和通信公司等共同推出的新一代接口標(biāo)準(zhǔn),全稱為Universal Serial Bus(通用串行總線),是一種快速、靈活的總線接口。它是為了解決日益增加的PC外設(shè)與有限的主板插槽和端口之間的矛盾而制定的一種串行通信標(biāo)準(zhǔn)。USB應(yīng)用十分廣泛,并具有下述優(yōu)點(diǎn):<
10、;/p><p> 1、適用于多種外設(shè),使它不需要為不同的外設(shè)準(zhǔn)備不同的接口和協(xié)議;</p><p> 2、Windows能自動(dòng)檢測(cè)到USB設(shè)備的熱插拔,并自動(dòng)配置;</p><p> 3、PC機(jī)上的接口線非常緊缺,而USB設(shè)備并不需要用戶設(shè)置端口故無論從用戶使用方便性,或從對(duì)資源的占用方面看,USB都很優(yōu)秀;</p><p> 4、當(dāng)接入
11、一個(gè)USB設(shè)備時(shí),全速USB接口可達(dá)12Mbit/s??紤]到狀態(tài)、控制和出錯(cuò)信息,最大理論速度仍可達(dá)到9.6Mbit/s,這是其他串行接口協(xié)議所不能比擬的,且USB也支持1.5Mbit/s的低速傳輸。</p><p> 5、USB接口芯片價(jià)格低廉,這也大大促進(jìn)USB設(shè)備的開發(fā)與應(yīng)用。</p><p> 1.2 I2C總線簡(jiǎn)介</p><p> I2C(Inte
12、r-Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。</p><p>
13、; 1.3 本文主要研究工作</p><p> 隨著電子科技的發(fā)展與應(yīng)用,各種計(jì)算機(jī)外圍接口不斷推陳出新,USB接口已經(jīng)成為現(xiàn)今個(gè)人計(jì)算機(jī)上最重要的接口之一,各種電子消費(fèi)產(chǎn)品也逐漸配置這種接口。USB接口是速度比較高的串行接口,具有較廣闊的發(fā)展前景和應(yīng)用潛力。USB適用于低檔外設(shè)與主機(jī)之間的高速數(shù)據(jù)傳輸。從USB問世至今,USB在不斷的自我完善,并走向成熟。從普通計(jì)算機(jī)用戶、計(jì)算機(jī)工程師、到硬件芯片生產(chǎn)廠商,
14、都已經(jīng)完全認(rèn)可了USB。</p><p> 傳統(tǒng)的設(shè)備主要是基于RS-232的串行接口,隨著計(jì)算機(jī)速度的提升,已經(jīng)明顯不能適應(yīng)發(fā)展的需要。不僅是速度上比較慢,而且由于其不支持熱插拔。而USB接口由于支持熱插拔,占有較少的系統(tǒng)軟件硬件資源,廠商對(duì)于USB的硬件軟件的支持也越來越完備,現(xiàn)在開發(fā)一個(gè)USB外設(shè)產(chǎn)品所需要的成本和時(shí)間大大降低了。USB技術(shù)取得了迅速的發(fā)展。</p><p> 單
15、片機(jī)作為最典型的嵌入式系統(tǒng),推動(dòng)了嵌入式系統(tǒng)的發(fā)展,成為現(xiàn)代電子系統(tǒng)中重要的智能化器件。因此,USB I/O外圍設(shè)備的設(shè)計(jì)已成為電子領(lǐng)域的主要技術(shù)之一。本課題就是利用單片機(jī)設(shè)計(jì)一個(gè)功能簡(jiǎn)單的嵌入式USB外設(shè),將其與PC機(jī)連接,通過USB接口實(shí)現(xiàn)PC機(jī)與外設(shè)之間的相互通信。</p><p> 對(duì)于一些學(xué)校、工業(yè)、科研客戶來說,電腦的串口非常重要,很多設(shè)備都必須采用串口和電腦端軟件連接,很多電路模塊可以非常直觀方便
16、地利用串口調(diào)試軟件進(jìn)行調(diào)試,很多儀器必須通過串口進(jìn)行通訊和數(shù)據(jù)交換。 USB轉(zhuǎn)串口模塊全稱為USB to Serial port Module,它可以將USB接口虛擬成一個(gè)串口,解決客戶無串口的苦惱。現(xiàn)在市面上的USB轉(zhuǎn)串品的設(shè)備可謂是琳瑯滿目,質(zhì)量也是參差不齊。造成這種現(xiàn)象的根本原因就在于控制芯片的不同?,F(xiàn)在USB轉(zhuǎn)串口橋接芯片有很多,比如CP2102、FT232、PL2303等等。但并非每一種芯片都可以用作ISP下載。經(jīng)過
17、測(cè)試CP2102是不能下載的,而FT232可以下載,但其價(jià)格實(shí)在不菲。最為適中的就是臺(tái)灣生產(chǎn)的PL2303,可以穩(wěn)定下載,并可以支持多種操作系統(tǒng)。 </p><p> 用PL2303芯片將串口轉(zhuǎn)換成USB接口,這樣就避免了基于RS-232的串行接口不支持熱插拔。通過上位機(jī)軟件向單片機(jī)傳送信息,然后將信息存儲(chǔ)到片外存儲(chǔ)器中,利用單片機(jī)控制12864液晶將文字顯示出來。本畢設(shè)具有實(shí)際作用,可以將此次畢業(yè)設(shè)計(jì)成果運(yùn)用
18、到戶外廣告牌的設(shè)計(jì),通過電腦控制液晶的顯示。</p><p> 2 串行口通信原理及操作流程</p><p> 2.1 并行與串行基本通信方式</p><p> 隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及,計(jì)算機(jī)的通信功能愈來愈顯得重要。計(jì)算機(jī)通信是指計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。通信有并行通信和串行通信兩種方式。在多微機(jī)系統(tǒng)以及現(xiàn)代測(cè)控
19、系統(tǒng)中信息的交換多采用串行通信方式。 </p><p> 2.1.1 并行通信方式</p><p> 并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送 。每一個(gè)數(shù)據(jù)都需要一條傳輸線,如圖2.1.1所示,8位數(shù)據(jù)總線的通信系統(tǒng),一次傳送8位數(shù)據(jù)(1個(gè)字節(jié)),將需要8條數(shù)據(jù)線。此外,還需要一條信號(hào)線和若干控制信號(hào)線,這種方式僅適合于短距離的數(shù)據(jù)傳輸,如
20、比較老式的打印機(jī)就是通過并行口方式與計(jì)算機(jī)連接,現(xiàn)在都用傳輸速度非??斓腢SB2.0接口通信了。由于并行口通信已經(jīng)用的比較少,因此我們?cè)谶@里也僅做簡(jiǎn)單介紹,大家了解即可。</p><p> 圖2.1.1 并行通信方式</p><p> 并行通信控制簡(jiǎn)單、傳輸速度快;由于傳輸線較多,長(zhǎng)距離傳送時(shí)成本高且接收方的各位同時(shí)接收存在困難。</p><p> 2.1.2
21、 串行通信方式</p><p> 串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個(gè)的傳送。此時(shí)只需要一條數(shù)據(jù)線,外加一條公共信號(hào)地線和若干控制信號(hào)線。因?yàn)橐淮沃荒軅魉鸵晃?,所以?duì)于一個(gè)字節(jié)的數(shù)據(jù),至少要分8位才能傳送完畢,如圖2.1.2所示。</p><p> 圖2.1.2 串行通信方式</p><p> 串行通信的特點(diǎn):傳輸線少,長(zhǎng)距離傳送時(shí)成本低,
22、且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的傳送控制比并行通信復(fù)雜。</p><p> 串行通信又有兩種方式:異步串行通行和同步串行通信。</p><p> 2.1.3 異步串行通信方式</p><p> 異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。如圖2.1.3所示。</p&
23、gt;<p> 圖2.1.3 異步串行通信方式</p><p> 異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系,但同一字符內(nèi)的各位之間的距離均為“位間隔”的整數(shù)倍。</p><p> 異步通信一幀字符信息由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停
24、止位,如圖2.1.4所示。</p><p> 圖2.1.4 異步串行通信數(shù)據(jù)格式</p><p> 異步通信的特點(diǎn):不要求收發(fā)雙方時(shí)鐘的嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷較小,但每個(gè)字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。</p><p> 在單片機(jī)與單片機(jī)之間,單片機(jī)與計(jì)算機(jī)之間通信時(shí),通常采用異步串行通信方式。</p>&
25、lt;p> 2.1.4 同步串行通信方式</p><p> 同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。此時(shí),傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時(shí)傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對(duì)接收方的同步可以通過兩種方法實(shí)現(xiàn)。分別如圖2.1.5和2.1.6所示。</p><p> 圖2.1.5 外同步
26、 圖2.1.6 自同步</p><p> 由于本次課設(shè)主要采用異步串行通信方式,所以在這里不仔細(xì)介紹同步串行通信方式</p><p> 2.1.5 串行通信的制式</p><p> ?。?)單工。單工是指數(shù)據(jù)傳輸僅能沿一個(gè)方向,不能實(shí)現(xiàn)反向傳輸。</p><p> ?。?)半雙工。半雙工是指數(shù)據(jù)傳輸可以沿兩個(gè)方向,但
27、需要分時(shí)進(jìn)行。</p><p> (3)全雙工。全雙工是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸。 </p><p> 三種制式分別如圖2.1.7、圖2.1.8、圖2.1.9所示。</p><p> 圖2.1.7 單工 圖2.1.8 半雙工 圖2.1.9 全雙工 </p><p> 2.1.6 串行通信的錯(cuò)誤校驗(yàn) <
28、/p><p><b> ?。?)奇偶校驗(yàn)</b></p><p> 在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨的1位為奇偶校驗(yàn)位(1或0)。奇校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”的個(gè)數(shù)之和應(yīng)為偶數(shù)。接收字符時(shí),對(duì)“1”的個(gè)數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯(cuò)。</p><p>&
29、lt;b> ?。?)代碼和校驗(yàn)</b></p><p> 代碼和校驗(yàn)是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時(shí)對(duì)數(shù)據(jù)塊(除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)送方的“校驗(yàn)和”進(jìn)行比較,相符則無差錯(cuò),否則即認(rèn)為傳送過程中出現(xiàn)了差錯(cuò)。</p><p><b> ?。?)循環(huán)冗余校驗(yàn)&
30、lt;/b></p><p> 這種校驗(yàn)是通過某種數(shù)學(xué)運(yùn)算實(shí)現(xiàn)有效信息與校驗(yàn)位之間的循環(huán)校驗(yàn),常用于對(duì)磁盤信息的傳輸、存儲(chǔ)區(qū)的完整性校驗(yàn)等。這種校驗(yàn)方法糾錯(cuò)能力強(qiáng),廣泛應(yīng)用于同步通信中。</p><p> 2.1.7 傳輸速率與傳輸距離 </p><p><b> (1)傳輸速率</b></p><p>
31、 比特率是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps)。如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位、1個(gè)停止位、8個(gè)數(shù)據(jù)位),這時(shí)的比特率為:</p><p> 10位×240個(gè)/秒 = 2400 bps</p><p> ?。?)傳輸距離與傳輸速率的關(guān)系</p><p> 串行接口或終端直接傳送串行信息位流的最大距離與傳
32、輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時(shí),傳輸距離隨傳輸速率的增加而減小。當(dāng)比特率超過1000 bps 時(shí),最大傳輸距離迅速下降,如9600 bps 時(shí)最大距離下降到只有76m(約250英尺)。</p><p> 2.2 串行通信接口標(biāo)準(zhǔn) </p><p> RS-232C是EIA(美國(guó)電子工業(yè)協(xié)會(huì))1969年修訂RS-232C
33、標(biāo)準(zhǔn)。RS-232C定義了數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)之間的物理接口標(biāo)準(zhǔn)。</p><p><b> ?。?)機(jī)械特性</b></p><p> RS-232C接口規(guī)定使用25針連接器,連接器的尺寸及每個(gè)插針的排列位置都有明確的定義。如圖2.2.1所示。</p><p> 圖2.2.1 RS-232C接口</p>
34、;<p><b> (2)過程特性</b></p><p> 過程特性規(guī)定了信號(hào)之間的時(shí)序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù) 。RS-232C的近程通信如圖2.2.2所示。</p><p> 圖2.2.2 RS-232C近程通信連接</p><p> ?。?)采用RS-232C接口存在的問題</p><p&g
35、t; 第一,傳輸距離短,傳輸速率低,RS-232C總線標(biāo)準(zhǔn)受電容允許值的約束,使用時(shí)傳輸距離一般不要超過15米(線路條件好時(shí)也不超過幾十米)。最高傳送速率為20Kbps。第二,有電平偏移,RS-232C總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較大時(shí),收發(fā)雙方的地電位差別較大,在信號(hào)地上將有比較大的地電流并產(chǎn)生壓降。第三,抗干擾能力差, RS-232C在電平轉(zhuǎn)換時(shí)采用單端輸入輸出,在傳輸過程中當(dāng)干擾和噪聲混在正常的信號(hào)中。為了提高信噪比,RS
36、-232C總線標(biāo)準(zhǔn)不得不采用比較大的電壓擺幅。</p><p> 2.3 51單片機(jī)的串行口</p><p> 2.3.1 串行結(jié)構(gòu)</p><p> 51單片機(jī)的串行口是一個(gè)可編程的全雙工的通信接口,具有UART(通用異步收發(fā)器)的全部功能,能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為同步移位寄存器使用。</p><p> 51單片機(jī)的串行
37、口主要由兩個(gè)獨(dú)立的串行數(shù)據(jù)緩沖寄存器SBUF(一個(gè)發(fā)送緩沖寄存器,一個(gè)接收緩沖寄存器)和發(fā)送控制器、接收控制器、輸入移位寄存器及若干控制門電路組成。</p><p> 串行口的基本結(jié)構(gòu)如圖2.3.1所示。</p><p> 圖2.3.1 串行口基本結(jié)構(gòu)</p><p> 51單片機(jī)有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H ;接收器是雙
38、緩沖結(jié)構(gòu) ;發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生重疊錯(cuò)誤。 </p><p> 2.3.2 串行口的控制寄存器</p><p> SCON 是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志。單元地址是98H,其結(jié)構(gòu)格式如表2.3.1所示。</p><p> 表2.3.1 串行口控制寄存器SCON</p>&
39、lt;p> 各控制位功能介紹如下: </p><p> SM0、SM1:串行口工作方式控制位。 </p><p> 串行口有4種工作方式,它們由SM0,SM1設(shè)定,對(duì)應(yīng)關(guān)系如表2.3.2所示。</p><p> 表2.3.2 串行口工作方式</p><p> SM2:多機(jī)通信控制位。 </p><p>
40、 多機(jī)通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收狀態(tài),當(dāng)串行口工作于方式2或3,以及SM2=1時(shí),只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時(shí),才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請(qǐng),否則會(huì)將接受到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),就不管第位數(shù)據(jù)是0還是1,都難得數(shù)據(jù)送入SBUF,并發(fā)出中斷申請(qǐng)。</p><p> 工作于方式0時(shí),SM2必須為0。 </p><
41、;p> REN:允許接收位。 </p><p> REN用于控制數(shù)據(jù)接收的允許和禁止,REN=1時(shí),允許接收,REN=0時(shí),禁止接收。 </p><p> TB8發(fā)送接收數(shù)據(jù)位8。 </p><p> 在方式2和方式3中,TB8是要發(fā)送的——即第9位數(shù)據(jù)位。在多機(jī)通信中同樣亦要傳輸這一位,并且它代表傳輸?shù)牡刂愤€是數(shù)據(jù),TB8=0為數(shù)據(jù),TB8=1時(shí)為地
42、址。 </p><p> RB8:接收數(shù)據(jù)位8。 </p><p> 在方式2和方式3中,RB8存放接收到的第9位數(shù)據(jù),用以識(shí)別接收到的數(shù)據(jù)特征。 </p><p> TI:發(fā)送中斷標(biāo)志位。 </p><p> 可尋址標(biāo)志位。方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)
43、束,TI可由軟件清“0”。 </p><p> RI:接收中斷標(biāo)志位。 </p><p> 可尋址標(biāo)志位。接收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。 </p><p> 在串口中斷處理時(shí),TI,RI都需要軟件清"0",硬件置位后不可能自動(dòng)清0,此外,在進(jìn)行緩沖區(qū)操作時(shí),需要ES=0,以防止
44、中斷出現(xiàn)。</p><p> 2.3.3 串行口的工作方式 </p><p><b> ?。?)方式0</b></p><p> 方式0時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固
45、定為fosc/12。 </p><p><b> ?。?)方式1</b></p><p> 方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖2.3.2所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。</p><p> 串行口方式1傳送數(shù)據(jù)格式圖如圖2.3.2所示。</p><
46、;p> 圖2.3.2 串行口方式1傳送數(shù)據(jù)格式</p><p> 串行口方式1傳送一幀數(shù)據(jù)共10位,1位起始位(0),8位數(shù)據(jù)位,最低位在前,高位在后,1位停止位(1),幀與幀之間可以后空閑,也可以無空閑。方式1數(shù)據(jù)輸出時(shí)序圖和數(shù)據(jù)輸入時(shí)序圖分別如圖2.3.3和2.3.4所示。</p><p> 圖2.3.3 方式1數(shù)據(jù)輸出時(shí)序圖</p><p> 圖
47、2.3.4 方式1數(shù)據(jù)輸入時(shí)序圖</p><p> 用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8
48、位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。</p><p> ?。?)方式2和方式3</p><p> 方式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的波特率固定為晶
49、振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。 </p><p> 2.3.4 波特率的計(jì)算</p><p> 在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來決定。</p><p> 串行口的四種
50、工作方式對(duì)應(yīng)三種波特率。由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。</p><p> 方式0的波特率 = fosc/12</p><p> 方式2的波特率 =(2SMOD/64)· fosc </p><p> 方式1的波特率 =(2SMOD/32)·(T1溢出率)</p><p>
51、方式3的波特率 =(2SMOD/32)·(T1溢出率)</p><p> 當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。</p><p> T1 溢出率 = fosc /{12×[256 -(TH1)]}</p><p>
52、在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定。</p><p> 串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器1、串行口控制和中斷控制。具體步驟如下:</p><p> (1)確定T1的工作方式(編程TMOD寄存器);</p><p> (2)計(jì)算T1的初值,裝載TH1、TL1;</
53、p><p> ?。?)啟動(dòng)T1(編程TCON中的TR1位);</p><p> (4)確定串行口控制(編程SCON寄存器);</p><p> ?。?)串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。</p><p> 3.I2C串行總線AT24C02芯片應(yīng)用</p><p> 3.1 I2C串行總線
54、概述</p><p> 3.1.1 I2C總線系統(tǒng)硬件結(jié)構(gòu)圖</p><p> I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。</p><p> I2C總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。I2C總線通過上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總
55、線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系,如圖3.1.1所示。</p><p> 圖3.1.1 I2C總線系統(tǒng)硬件結(jié)構(gòu)圖</p><p> 每個(gè)接到I2C總線上的器件都有唯一的地址。主機(jī)與其它器件間的數(shù)據(jù)傳送可以是由主機(jī)發(fā)送數(shù)據(jù)到其它器件,這時(shí)主機(jī)即為發(fā)送器。由總線上接收數(shù)據(jù)的器件則為接收器。</p><p>
56、 在多主機(jī)系統(tǒng)中,可能同時(shí)有幾個(gè)主機(jī)企圖啟動(dòng)總線傳送數(shù)據(jù)。為了避免混亂, I2C總線要通過總線仲裁,以決定由哪一臺(tái)主機(jī)控制總線。</p><p> 3.1.2 I2C總線工作原理</p><p> ?。?)數(shù)據(jù)位的有效性規(guī)定</p><p> I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的
57、高電平或低電平狀態(tài)才允許變化。如圖3.1.2所示。</p><p> 圖3.1.2 數(shù)據(jù)位的有效性規(guī)定</p><p> ?。?)起始和終止信號(hào)</p><p> SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào),如圖3.1.3所示。</p><p> 圖
58、3.1.3 起始和終止信號(hào)</p><p><b> ?。?)數(shù)據(jù)傳送格式</b></p><p> 每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。如果一段時(shí)間內(nèi)沒有收到從機(jī)的應(yīng)答信號(hào),則自動(dòng)認(rèn)為從機(jī)已正確接收到數(shù)據(jù)。圖3.1.4所示。</p><p> 圖3
59、.1.4 數(shù)據(jù)傳送格式</p><p> 3.2 單片機(jī)模擬I2C總線通信</p><p> 主機(jī)可以采用不帶I2C總線接口的單片機(jī),如80C51、AT89C2051等單片機(jī),利用軟件實(shí)現(xiàn)I2C總線的數(shù)據(jù)傳送,即軟件與硬件結(jié)合的信號(hào)模擬。為了保證數(shù)據(jù)傳送的可靠性,標(biāo)準(zhǔn)的I2C總線的數(shù)據(jù)傳送有嚴(yán)格的時(shí)序要求。I2C總線的起始信號(hào)、終止信號(hào)、發(fā)送“0”及發(fā)送“1”的模擬時(shí)序 ,圖3.2所示
60、: </p><p> 圖3.2 I2C總線通信的模擬</p><p><b> 總線初始化</b></p><p> void init()</p><p><b> {</b></p><p><b> sda=1;</b></p&g
61、t;<p> delay0();;</p><p><b> scl=1;</b></p><p><b> delay0();</b></p><p><b> }</b></p><p> 將總線都拉高以釋放總線。</p><p&
62、gt;<b> 啟動(dòng)信號(hào)</b></p><p> void start()</p><p><b> {</b></p><p><b> sda=1;</b></p><p><b> delay0();</b></p><
63、;p><b> scl=1;</b></p><p><b> delay0();</b></p><p><b> sda=0;</b></p><p><b> delay0();</b></p><p><b> }<
64、/b></p><p> SCL在高電平期間,SDA一個(gè)下降沿啟動(dòng)信號(hào)。</p><p><b> 應(yīng)答信號(hào)</b></p><p> void respons()</p><p><b> {</b></p><p> uchar i; </p&
65、gt;<p><b> scl=1;</b></p><p><b> delay0();</b></p><p> while(sda==1&&i<255)</p><p><b> i++;</b></p><p><b&g
66、t; scl=0;</b></p><p><b> delay0();</b></p><p><b> }</b></p><p><b> 停止信號(hào)</b></p><p> void stop()</p><p><b
67、> { </b></p><p><b> sda=0;</b></p><p><b> delay0();</b></p><p><b> scl=1;</b></p><p><b> delay0();</b>&
68、lt;/p><p><b> sda=1;</b></p><p><b> delay0();</b></p><p><b> }</b></p><p><b> 寫一個(gè)字節(jié)</b></p><p> void writ
69、ebyte(uchar date)</p><p><b> {</b></p><p> uchar i,temp;</p><p> temp=date; </p><p> for(i=0;i<8;i++)</p><p><b> { </b>&
70、lt;/p><p> temp=temp<<1;</p><p><b> scl=0;</b></p><p><b> delay0();</b></p><p><b> sda=CY;</b></p><p><b>
71、 delay0();</b></p><p><b> scl=1;</b></p><p><b> delay0();</b></p><p><b> }</b></p><p><b> scl=0;</b></p>
72、<p><b> delay0();</b></p><p><b> sda=1;</b></p><p><b> delay0();</b></p><p><b> }</b></p><p> 串行發(fā)送一個(gè)字節(jié)時(shí),需要把這
73、個(gè)字節(jié)中的8為一位一位的發(fā)送出去,“temp=temp<<1;”表示將temp左移一位,最高位將移入PSW寄存器CY位中,然后將CY值賦給SDA進(jìn)而在SCL的控制下發(fā)送出去。</p><p><b> 讀一個(gè)字節(jié)</b></p><p> uchar readbyte()</p><p><b> {</b&g
74、t;</p><p> uchar i,k;</p><p><b> scl=0;</b></p><p><b> delay0();</b></p><p><b> sda=1;</b></p><p><b> delay0
75、();</b></p><p> for(i=0;i<8;i++)</p><p><b> { </b></p><p><b> scl=1;</b></p><p> delay0(); </p><p> k=(k<<1)|
76、sda;</p><p><b> scl=0;</b></p><p><b> delay0();</b></p><p><b> }</b></p><p><b> return k;</b></p><p>&l
77、t;b> }</b></p><p> 同樣的,串行接收一個(gè)字節(jié)時(shí)需要將8位一位一位的接收,然后再組合成一個(gè)字節(jié),上面代碼中我們定義了一個(gè)臨時(shí)變量k,將k左移一位后與SDA進(jìn)行“或”</p><p> 運(yùn)算,依次把8個(gè)獨(dú)立的位放入一個(gè)字節(jié)中來完成接收。</p><p> 3.3 串行E2PROM AT24C02與單片機(jī)的通信實(shí)例</p
78、><p> 具有I2C總線接口的E2PROM有多個(gè)廠家的多種類型產(chǎn)品,在這里我們只介紹ATMEL公司生產(chǎn)的AT24C系列E2PROM,主要型號(hào)有AT2401/02/04/08/16等,其對(duì)應(yīng)的存儲(chǔ)容量分別為AT24C01:128字節(jié)(128×8位);AT24C02:256字節(jié)(256×8位);AT24C04:512字節(jié)(512×8位)AT24C08:1K字節(jié)(1K×8位);A
79、T24C16:2K字節(jié)(2K×8位)。采用這類芯片可解決掉電數(shù)據(jù)保存問題,可對(duì)所存數(shù)據(jù)保存100年,并可多次擦寫,擦寫次數(shù)可達(dá)10萬次以上。</p><p> 3.3.1 AT24C02引腳配置與引腳功能</p><p> AT24C02引腳如圖3.3.1所示。</p><p> 圖3.3.1 AT24C02引腳圖</p><p&
80、gt;<b> 各引腳功能如下:</b></p><p> 1,2,3(A0、A1、A2)—可編程地址輸入端。</p><p> 4(GND)—電源地。</p><p> 5(SDA)—串行數(shù)據(jù)輸入/輸出端。</p><p> 6(SCL)—串行時(shí)鐘輸入端、</p><p> 7(WP
81、)—寫保護(hù)輸入端,用于硬件的數(shù)據(jù)保護(hù)。當(dāng)為低電平時(shí),可以對(duì)整個(gè)存儲(chǔ)器進(jìn)行正常的讀/寫操作;當(dāng)其為高電平時(shí),存儲(chǔ)器具有寫保護(hù)功能,但讀寫操作不受影響。</p><p> 3.3.2 存儲(chǔ)結(jié)構(gòu)與尋址</p><p> AT24C02的存儲(chǔ)容量為2Kb,內(nèi)部分成為32頁,每頁8B。共256B,操作時(shí)有來年高中尋址方式:芯片地址和片內(nèi)子地址尋址。</p><p> ?。?/p>
82、1)芯片尋址。AT24C02的芯片地址為1010,A0,A1,A2正好與芯片的1,2,3引角對(duì)應(yīng),為當(dāng)前電路中的地址選擇線,三根線可選擇8個(gè)芯片同時(shí)連接在電路中,當(dāng)要與哪個(gè)芯片通信時(shí)傳送相應(yīng)的地址即可與該芯片建立連接,TX-1B實(shí)驗(yàn)板上三根地址線都為0。最后一位R/W為告訴從機(jī)下一字節(jié)數(shù)據(jù)是要讀還是寫,0為寫入,1為讀出。</p><p> (2)片內(nèi)子地址尋址。芯片尋址可對(duì)內(nèi)部256中的任一個(gè)進(jìn)行讀/寫操作,
83、其尋址范圍為00-FF,共256個(gè)尋址單元。</p><p> 3.3.3 讀/寫操作時(shí)序</p><p> AT24C系列E2PROM芯片地址的固定部分為1010,A2、A1、A0引腳接高、低電平后得到確定的3位編碼。形成的7位編碼即為該器件的地址碼。</p><p> 單片機(jī)進(jìn)行寫操作時(shí),首先發(fā)送該器件的7位地址碼和寫方向位“0”(共8位,即一個(gè)字節(jié)),發(fā)
84、送完后釋放SDA線并在SCL線上產(chǎn)生第9個(gè)時(shí)鐘信號(hào)。被選中的存儲(chǔ)器器件在確認(rèn)是自己的地址后,在SDA線上產(chǎn)生一個(gè)應(yīng)答信號(hào)作為相應(yīng),單片機(jī)收到應(yīng)答后就可以傳送數(shù)據(jù)了。</p><p> 傳送數(shù)據(jù)時(shí),單片機(jī)首先發(fā)送一個(gè)字節(jié)的被寫入器件的存儲(chǔ)區(qū)的首地址,收到存儲(chǔ)器器件的應(yīng)答后,單片機(jī)就逐個(gè)發(fā)送各數(shù)據(jù)字節(jié),但每發(fā)送一個(gè)字節(jié)后都要等待應(yīng)答。</p><p> AT24C系列器件片內(nèi)地址在接收到每
85、一個(gè)數(shù)據(jù)字節(jié)地址后自動(dòng)加1,在芯片的“一次裝載字節(jié)數(shù)”(不同芯片字節(jié)數(shù)不同)限度內(nèi),只需輸入首地址。裝載字節(jié)數(shù)超過芯片的“一次裝載字節(jié)數(shù)”時(shí),數(shù)據(jù)地址將“上卷”,前面的數(shù)據(jù)將被覆蓋。寫入過程如圖3.3.2所示。</p><p> 圖3.3.2 任一地址寫入數(shù)據(jù)格式</p><p> 讀出過程,單片機(jī)先發(fā)送該器件的7位地址碼和寫方向位“0”(“偽寫”),發(fā)送完后釋放SDA線并在SCL線上
86、產(chǎn)生第9個(gè)時(shí)鐘信號(hào)。被選中的存儲(chǔ)器器件在確認(rèn)是自己的地址后,在SDA線上產(chǎn)生一個(gè)應(yīng)答信號(hào)作為回應(yīng)。然后,再發(fā)一個(gè)字節(jié)的要讀出器件的存儲(chǔ)區(qū)的首地址,收到應(yīng)答后,單片機(jī)要重復(fù)一次起始信號(hào)并發(fā)出器件地址和讀方向位(“1”),收到器件應(yīng)答后就可以讀出數(shù)據(jù)字節(jié),每讀出一個(gè)字節(jié),單片機(jī)都要回復(fù)應(yīng)答信號(hào)。當(dāng)最后一個(gè)字節(jié)數(shù)據(jù)讀完后,單片機(jī)應(yīng)返回以“非應(yīng)答”(高電平),并發(fā)出終止信號(hào)以結(jié)束讀出操作。讀出過程如圖3.3.3所示。</p>&l
87、t;p> 圖3.3.3 任一地址讀出數(shù)據(jù)格式</p><p> 3.3.4 TX-1C實(shí)驗(yàn)板上AT24C02連接圖</p><p> TX-1C實(shí)驗(yàn)板上AT24C02與單片機(jī)連接如圖3.3.4所示。其中A0,A1,A2與WP都接地,SDA接單片機(jī)P2.0腳,SCL接單片機(jī)P2.1腳,SDA與SCL分別于Vcc之間接一10KΩ電阻,因?yàn)锳T24C02內(nèi)部是漏極開路形式,不解上拉電
88、阻無法確定總線的空閑時(shí)的電平狀態(tài)。</p><p> 圖3.3.4 TX-1C實(shí)驗(yàn)板上AT24C02連接圖</p><p> 此部分程序在后面會(huì)詳細(xì)介紹。</p><p> 4 USB輸出數(shù)據(jù)存儲(chǔ)器的總體設(shè)計(jì)</p><p> 4.1 USB輸出數(shù)據(jù)存儲(chǔ)器的總體結(jié)構(gòu)</p><p> USB輸出數(shù)據(jù)存儲(chǔ)器設(shè)計(jì)
89、的總體思路是用VB編寫上位機(jī)軟件,通過此軟件向單片機(jī)發(fā)送文字信息。硬件部分則是采用芯片PL2303模塊將USB接口轉(zhuǎn)換成串口,這樣就可以直接將硬件接到電腦上,支持熱插拔。用80C51作為控制器,外部顯示用12864液晶屏。整體框圖如4.1所示。</p><p><b> 圖4.1 整體框圖</b></p><p> 4.2 USB輸出數(shù)據(jù)存儲(chǔ)器的硬件設(shè)計(jì)</
90、p><p> 4.2.1 單片機(jī)8051介紹</p><p> 本課題設(shè)計(jì)USB系統(tǒng)比較簡(jiǎn)單,單片機(jī)執(zhí)行的功能不多,在確保實(shí)驗(yàn)功能的情況下,為了降低成本,因此選用性價(jià)比高的8051單片機(jī)。</p><p> MCS-51是Intel公司生產(chǎn)的一個(gè)單片機(jī)系列名稱。屬于這一系列的單片機(jī)有多種。8051便是其中一種性價(jià)比高的單片機(jī)。</p><p&g
91、t; 8051單片機(jī)內(nèi)部結(jié)構(gòu)按其功能部件劃分可以看出由8大部分組成的。這8大部分是: </p><p> 1、一個(gè)8位中央處理機(jī)CPU。 </p><p> 2、128個(gè)字節(jié)的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM。</p><p> 3、4KB的片內(nèi)程序只讀存儲(chǔ)器ROM或EPROM。</p><p> 4、18個(gè)特殊功能寄存器SFR。 </p
92、><p> 5、4個(gè)8位并行輸入輸出I/O接口: P0口、 P1口、 P2口、 P3口(共32線), 用于并行輸入或輸出數(shù)據(jù)。</p><p> 6、1個(gè)串行I/O接口。 </p><p> 7、2個(gè)16位定時(shí)器/計(jì)數(shù)器。 </p><p> 8、1個(gè)具有5個(gè)中斷源, 可編程為2個(gè)優(yōu)先級(jí)的中斷系統(tǒng)。 它可以接收外部中斷申請(qǐng), 定時(shí)器/計(jì)
93、數(shù)器中斷申請(qǐng)和串行口中斷申請(qǐng)。</p><p> 本課題選用的8051單片機(jī)芯片為40個(gè)引腳,它是HMOS工藝制造的芯片,采用雙列直插(DIP)方式封裝。</p><p> 1、主電源引腳Vcc和Vss </p><p> VCC(40腳):接+5V電源正端; </p><p> VSS(20腳):接+5V電源地端。 </p&g
94、t;<p> 2、外接晶體引腳XTAL1和XTAL2</p><p> XTAL1(19腳):接外部石英晶體的一端。在單片機(jī)內(nèi)部, 它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;</p><p> XTAL2(18腳):接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于
95、HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。</p><p> 3、控制信號(hào)或與其它電源復(fù)用引腳</p><p> 4、I/O口線引腳排列</p><p> ?。?)P0口——8位、漏極開路的雙向I/O口。</p><p> 當(dāng)使用片外儲(chǔ)存器及外擴(kuò)I/O口時(shí),P0口做為低字節(jié)地址/數(shù)據(jù)復(fù)</p><p>
96、線。在編程時(shí),P0口可用于接收指令代碼字節(jié);在程序校檢時(shí),P0口可輸出指令字節(jié)(這是需要外加上拉電阻)。</p><p> ?。?)P0口也可作為通用I/O使用,變成準(zhǔn)雙向口。當(dāng)作為普通輸入時(shí),應(yīng)將輸出鎖存器置1。P0口可驅(qū)動(dòng)8個(gè)TTL負(fù)載。</p><p> P1口——8位、準(zhǔn)雙口I/O,具有內(nèi)部上拉電阻。</p><p> P1口是為用戶準(zhǔn)備的I/O雙向口。
97、在編程和校檢時(shí),可用做輸入低8位地址;用做輸入時(shí),應(yīng)先將輸出鎖存器置1;P1口可驅(qū)動(dòng)4個(gè)TTL負(fù)載。</p><p> P1口的P1.0和P1.1具有替代功能。</p><p> ?。?)P2口——8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。</p><p> 當(dāng)使用片外儲(chǔ)存器或外擴(kuò)I/O端口時(shí),P2口輸出高8位地址;在編程</p><p>
98、 校檢時(shí),P2口可接收高字節(jié)地址和某些控制信號(hào);P2口也可作為I/O口使用。用做輸入時(shí),應(yīng)先將輸出鎖存器置1;P2口可驅(qū)動(dòng)4個(gè)TTL負(fù)載。</p><p> (4)P3口——8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。</p><p> P3口可作為普通I/O口。用作輸入時(shí),應(yīng)先將輸出鎖存器置1;在編程校檢時(shí),P3口接收某些控制信號(hào);可驅(qū)動(dòng)4個(gè)TTL。P3口還提供各種替代功能。</
99、p><p> 4.2.2.USB接口轉(zhuǎn)串口</p><p> 對(duì)于一些學(xué)校、工業(yè)、科研客戶來說,電腦的串口非常重要,很多設(shè)備都必須采用串口和電腦端軟件連接,很多電路模塊可以非常直觀方便地利用串口調(diào)試軟件進(jìn)行調(diào)試,很多儀器必須通過串口進(jìn)行通訊和數(shù)據(jù)交換。 USB轉(zhuǎn)串口模塊全稱為USB to Serial port Module,它可以將USB接口虛擬成一個(gè)串口,解決客戶無串口的苦惱
100、?,F(xiàn)在市面上的USB轉(zhuǎn)串品的設(shè)備可謂是琳瑯滿目,質(zhì)量也是參差不齊。造成這種現(xiàn)象的根本原因就在于控制芯片的不同。現(xiàn)在USB轉(zhuǎn)串口橋接芯片有很多,比如CP2102、FT232、PL2303等等。但并非每一種芯片都可以用作ISP下載。經(jīng)過測(cè)試CP2102是不能下載的,而FT232可以下載,但其價(jià)格實(shí)在不菲。最為適中的就是臺(tái)灣生產(chǎn)的PL2303,可以穩(wěn)定下載,并可以支持多種操作系統(tǒng)。 PL2303HX采用28腳貼片SOIC封裝,工作頻
101、率為12MHZ,符合USB 1.1通信協(xié)議,可以直接將USB信號(hào)轉(zhuǎn)換成串口信號(hào),波特率從75~1228800,有22種波特率可以選擇,并支持5、6、7、8、16共5種數(shù)據(jù)比特位,是一款相當(dāng)不錯(cuò)的USB轉(zhuǎn)串口芯片。連接圖如4.2.1所示。</p><p> 圖4.2.1 USB轉(zhuǎn)串口</p><p> 4.2.3 12864液晶</p><p> 本次畢設(shè)128
102、64液晶采用ST7920控制器,有漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(16X16點(diǎn)陣)、128個(gè)字符(8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)。</p><p> ?。?)模塊引腳說明,如表4.2.1所示。</p><p> 表4.2.1 128X64 引腳說明</p><p> 邏輯工作電壓(VDD):4.5~
103、5.5V</p><p> 電源地(GND):0V</p><p> 工作溫度(Ta):-10℃ ~60℃(常溫) / -20℃~70℃(寬溫)</p><p> (2)并行基本操作時(shí)序</p><p> 讀狀態(tài) 輸入:RS=L,R/W=H,E=H 輸出:D0-D7=狀態(tài)字。</p>&
104、lt;p> 讀數(shù)據(jù) 輸入:RS=H,R/W=H,E=H 輸出:無。</p><p> 寫指令 輸入:RS=L,R/W=L,E=高脈沖,D0-D7=指令碼,輸出:D0-D7=數(shù)據(jù)。</p><p> 寫數(shù)據(jù) 輸入:RS=H,R/W=L,E=高脈沖,D0-D7=數(shù)據(jù), 輸出:無。</p><p> ?。?)指令說明,如
105、表4.2.2所示</p><p> 表4.2.2 12864液晶指令表</p><p><b> ?。?)寫時(shí)序圖</b></p><p> 圖4.2.2 寫時(shí)序圖</p><p> ?。?)外圍電路圖,如圖4.2.3所示。</p><p> 圖4.2.3 12864液晶與單片機(jī)并行連接圖
106、</p><p> 4.3 USB輸出數(shù)據(jù)存儲(chǔ)器的軟件設(shè)計(jì)</p><p> USB輸出數(shù)據(jù)存儲(chǔ)器的軟件部分主要有兩個(gè)部分:一是上位機(jī)軟件的設(shè)計(jì),主要采用VB編寫,其中涉及到要用VB6.0(企業(yè)版)中的MSComm控件發(fā)送數(shù)據(jù);二是硬件部分單片機(jī)程序設(shè)計(jì),該部分涉及數(shù)據(jù)的接收,主要是文字信息,然后在將這些信息顯示到12864液晶屏上。</p><p> 4.3
107、.1 上位機(jī)軟件設(shè)計(jì)</p><p><b> 設(shè)計(jì)步驟如下。</b></p><p> ?。?)打開VB軟件,在新建工程對(duì)話框中選擇“標(biāo)準(zhǔn)EXE”項(xiàng),單擊“打開”按鈕。單擊“工程—部件”菜單項(xiàng),打開“部件”對(duì)話框,選擇“Microsoft Comm Control 6.0”控件列表項(xiàng),單擊確定,添加串行口通信所用的標(biāo)準(zhǔn)控件MSComm。然后根據(jù)畢設(shè)需要添加其它控件
108、,建立如圖4.3.1所示的用戶界面。</p><p> 圖4.3.1 用戶界面</p><p> (2)設(shè)置對(duì)象屬性,如表4.3所示</p><p><b> 表4.3 對(duì)象屬性</b></p><p><b> ?。?)編寫事件代碼</b></p><p> Dim
109、 OutByte() As Byte</p><p> 編寫“結(jié)束”命令按鈕CmdExit的Click事件代碼:</p><p> Private Sub CmdExit_Click()</p><p><b> End</b></p><p><b> End Sub</b></p&
110、gt;<p> 編寫“發(fā)送數(shù)據(jù)”命令按鈕CmdSend的Click事件代碼:</p><p> Private Sub CmdSend_Click()</p><p><b> Dim Buf$</b></p><p> Buf = Trim(TextSend.Text)</p><p> Out
111、Byte = StrConv(Buf, vbFromUnicode)</p><p> MSComm1.OutBufferCount = 0</p><p> MSComm1.Output = OutByte</p><p><b> End Sub</b></p><p> 編寫窗體加載項(xiàng)代碼:</p&g
112、t;<p> Private Sub Form_Load()</p><p> MSComm1.Settings = "300,N,8,1"</p><p> If MSComm1.PortOpen = True Then MSComm1.PortOpen = False</p><p> MSComm1.SThreshol
113、d = 1</p><p> If MSComm1.PortOpen = False Then MSComm1.PortOpen = True</p><p> Form1.Caption = "上位機(jī)"</p><p><b> End Sub</b></p><p> 編寫單選鈕Optio
114、n1~ Option4的Click事件代碼:</p><p> Private Sub Option1_Click(Index As Integer)</p><p> MSComm1.CommPort = 1</p><p><b> End Sub</b></p><p> Private Sub Optio
115、n2_Click(Index As Integer)</p><p> MSComm1.CommPort = 2</p><p><b> End Sub</b></p><p> Private Sub Option3_Click(Index As Integer)</p><p> MSComm1.CommP
116、ort = 3</p><p><b> End Sub</b></p><p> Private Sub Option4_Click(Index As Integer)</p><p> MSComm1.CommPort = 4</p><p><b> End Sub</b></p
117、><p> (4)編譯代碼,生成可執(zhí)行文件。</p><p> 4.3.2 硬件部分程序設(shè)計(jì)</p><p> 硬件部分程序設(shè)計(jì)思路是:在主函數(shù)中,先將液晶、串口、AT24C02初始化,然后調(diào)用顯示子函數(shù),子函數(shù)中包含有從存儲(chǔ)器中讀取電腦向單片機(jī)發(fā)送的文字信息,然后在將這些信息顯示到12864液晶屏上。利用中斷函數(shù)接收從上位機(jī)發(fā)送來的文字信息,而且在將這些信息存儲(chǔ)
118、到存儲(chǔ)器中,并將字符串的長(zhǎng)度存到AT24C02第一個(gè)單元。程序主程序流程圖如圖4.3.2所示。</p><p> 圖4.3.2 主程序</p><p> 單片機(jī)處理中斷函數(shù)流程圖如下所示。</p><p> 圖4.3.2 中斷函數(shù)</p><p> 顯示子函數(shù)流程圖如下所。</p><p> 圖4.3.3 顯
119、示子函數(shù)</p><p><b> 5 總結(jié)與展望</b></p><p><b> 5.1 總結(jié)</b></p><p> 本次畢設(shè)是USB輸出數(shù)據(jù)存儲(chǔ)器設(shè)計(jì),采用上位機(jī)控制信息的發(fā)送。由于USB接口在當(dāng)今社會(huì)的廣泛使用,所以在硬件這一部分采用的是將USB轉(zhuǎn)換成串行口通信來實(shí)現(xiàn)的。主要采用的是PL2303芯片,該芯
120、片具有此項(xiàng)功能,也有現(xiàn)成的驅(qū)動(dòng)程序,這樣就免除了要設(shè)計(jì)USB的驅(qū)動(dòng)程序問題,因此大大簡(jiǎn)化了工作量。本次畢設(shè)的主要部分是單片機(jī)接收上位機(jī)發(fā)送信的信息,然后運(yùn)用12864液晶在將這些信息顯示出來。另外12864液晶中含有漢字庫(kù),也使顯示字符串變得比較容易了。在上位機(jī)這一塊要采用MSComm控件,使上位機(jī)完成與單片機(jī)的通信。此外,上位機(jī)也可采用串口調(diào)試助手來實(shí)現(xiàn),此軟件還有接收從單片機(jī)返回來的字符串信息,讓上位機(jī)和單片機(jī)之間的通信更加直觀,更
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子信息畢業(yè)設(shè)計(jì)---電子琴設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)運(yùn)動(dòng)電子貓?jiān)O(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)wifi天線設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)gps軌跡數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)運(yùn)動(dòng)電子狗設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)外文翻譯
- 電子信息工程畢業(yè)設(shè)計(jì)安卓手機(jī)遙控器的設(shè)計(jì)
- 電子信息工程技術(shù)專業(yè)畢業(yè)設(shè)計(jì)
- 電子信息工程學(xué)院畢業(yè)設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)保密監(jiān)控系統(tǒng)的設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)保密監(jiān)控系統(tǒng)的設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)無線信號(hào)增強(qiáng)系統(tǒng)設(shè)計(jì)
- 某系統(tǒng)大容量數(shù)據(jù)存儲(chǔ)器設(shè)計(jì).pdf
- 電子信息工程畢業(yè)設(shè)計(jì)-無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)(論文)多功能智能函數(shù)發(fā)生器設(shè)計(jì)
- 存儲(chǔ)器及其組成設(shè)計(jì)
- usb數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 電子信息系畢業(yè)設(shè)計(jì)任務(wù)書
- 電子信息系畢業(yè)設(shè)計(jì)任務(wù)書
- 電子信息系畢業(yè)設(shè)計(jì)任務(wù)書
評(píng)論
0/150
提交評(píng)論