2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  單片機(jī)原理與應(yīng)用課程設(shè)計(jì)</p><p>  題 目: 數(shù)字電壓表 </p><p>  系 部: 信息與控制工程學(xué)院 </p><p>  專 業(yè): 測(cè)控技術(shù)與儀器 </p><p>  班 級(jí):

2、 </p><p>  學(xué)生姓名: 學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p><b>  年 12月6日</b></p><p><b>  目 錄</b></p><p&

3、gt;  1 設(shè)計(jì)任務(wù)與要求4</p><p>  1.1 課程設(shè)計(jì)的目的4</p><p>  1. 2 設(shè)計(jì)任務(wù)4</p><p>  1.3 設(shè)計(jì)要求4</p><p><b>  2 設(shè)計(jì)方案5</b></p><p>  2.1 設(shè)計(jì)思路5</p>

4、<p>  2.2 芯片選擇6</p><p>  2.2.1 單片機(jī)STC89C516</p><p>  2.2.2 74LS164芯片8</p><p>  2.2.3 MAX813芯片9</p><p>  2.2.4 MAX232芯片11</p><p>  2.2.5 ADC

5、083212</p><p>  3 設(shè)計(jì)硬件電路設(shè)計(jì)13</p><p>  3.1 硬件系統(tǒng)的整體框圖14</p><p>  3.2 AD 轉(zhuǎn)換15</p><p>  3.3 串行通信17</p><p>  3.4 復(fù)位電路17</p><p>  3.5 電壓

6、顯示電路18</p><p>  4 主要參數(shù)計(jì)算與分析20</p><p>  4.1 計(jì)算與分析20</p><p>  4.2 軟件調(diào)試21</p><p>  4.3 硬件調(diào)試21</p><p>  5 軟件設(shè)計(jì)22</p><p>  5.1 主程序流程22

7、</p><p>  5.2 子程序介紹22</p><p>  5.2.1 初始化程序22</p><p>  5.2.2 轉(zhuǎn)換子程序23</p><p>  5.2.3 顯示子程序24</p><p>  5.3 元件清單25</p><p>  6 調(diào)試過程26&l

8、t;/p><p>  6.1 焊接指南26</p><p>  6.2 硬件調(diào)試26</p><p>  6.2.1 硬件電路故障及解決方法26</p><p>  6.2.2 硬件調(diào)試方法27</p><p>  6.3 軟件調(diào)試27</p><p>  6.3.1 軟件電路

9、故障及解決方法27</p><p>  6.3.2 軟件調(diào)試方法27</p><p><b>  7 結(jié)論29</b></p><p><b>  8 附錄30</b></p><p>  8.1 數(shù)字電壓表原理圖30</p><p>  8.2 程序代碼

10、31</p><p>  9 參考文獻(xiàn)35</p><p>  1 設(shè)計(jì)任務(wù)與要求</p><p>  1.1 課程設(shè)計(jì)的目的</p><p> ?。?)根據(jù)單片機(jī)課程所學(xué)內(nèi)容,結(jié)合其他相關(guān)課程知識(shí),設(shè)計(jì)電子秒表,以加深對(duì)單片機(jī)知識(shí)的理解,鍛煉實(shí)踐動(dòng)手能力,為以后的畢業(yè)設(shè)計(jì)和工作打下堅(jiān)實(shí)基礎(chǔ);</p><p>

11、;  (2 )熟悉匯編語言或C語言的程序設(shè)計(jì)方法,熟悉51系列單片機(jī)的使用;</p><p> ?。?)掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時(shí)器/計(jì)數(shù)器、中斷、I/O口、串行口通訊等功能;</p><p>  1. 2 設(shè)計(jì)任務(wù)</p><p>  本課題實(shí)驗(yàn)主要采用STC89C51芯片和ADC0832芯片來完成一個(gè)簡(jiǎn)易的數(shù)字電壓表,該電壓表的測(cè)量電路主要由三個(gè)模

12、塊組成:A/D轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示控制模塊。</p><p> ?。?)A/D轉(zhuǎn)換主要由芯片ADC0832來完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量再傳送到數(shù)據(jù)處理模塊。</p><p> ?。?)數(shù)據(jù)處理則由芯片STC89C51來完成,其負(fù)責(zé)把ADC0832傳送來的數(shù)字量經(jīng)一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進(jìn)行顯示;另外它還控制著ADC0832芯片的工作。<

13、/p><p> ?。?)顯示模塊主要由7段數(shù)碼管及相應(yīng)的驅(qū)動(dòng)芯片(74LS164)組成,顯示測(cè)量到的電壓值。</p><p><b>  1.3 設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)一個(gè)以單片機(jī)為核心的電壓測(cè)量系統(tǒng),可實(shí)現(xiàn)功能:</p><p>  實(shí)現(xiàn)對(duì)輸入電壓值的測(cè)量,能夠測(cè)量電壓0—5.00V;</p&g

14、t;<p>  精度達(dá)到0.01V;</p><p>  使用一個(gè)3位一體LED八段數(shù)碼管顯示;</p><p><b>  2 設(shè)計(jì)方案</b></p><p><b>  2.1 設(shè)計(jì)思路</b></p><p>  傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時(shí)代的需求

15、,采用單片機(jī)的數(shù)字電壓表,精度高、抗干擾能力強(qiáng),可擴(kuò)展性強(qiáng)、集成方便,還可與PC進(jìn)行實(shí)時(shí)通信。正是由于數(shù)字電壓表的以上優(yōu)點(diǎn),本次畢業(yè)設(shè)計(jì)選擇制作一個(gè)基于單片機(jī)的數(shù)字電壓表。</p><p>  在本次設(shè)計(jì)中,數(shù)據(jù)輸入模塊,A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理及控制模塊,顯示模塊構(gòu)成數(shù)字電壓表的基本模塊。如圖2.1所示。</p><p>  在數(shù)據(jù)輸入模塊中,分為三路,經(jīng)過分壓后輸入一個(gè)合適信號(hào)送入A/

16、D轉(zhuǎn)換器中進(jìn)行轉(zhuǎn)換,模擬開關(guān)的控制信號(hào)控制通路的選擇。</p><p>  圖2.1 設(shè)計(jì)方案模塊</p><p>  在A/D轉(zhuǎn)換模塊中,A/D 轉(zhuǎn)換器的轉(zhuǎn)換精度對(duì)測(cè)量電路極其重要,它的參數(shù)關(guān)系到測(cè)量電路的性能。本設(shè)計(jì)采用逐次逼近式A/D 轉(zhuǎn)換器,它的性能比較穩(wěn)定,轉(zhuǎn)換出的數(shù)據(jù)為8位并行接口,方便檢測(cè),具有很高的抗干擾能力,電路結(jié)構(gòu)簡(jiǎn)單,其缺點(diǎn)是測(cè)量精度不高。</p>&l

17、t;p>  在數(shù)據(jù)處理及控制模塊中,通過89C51將A/D 轉(zhuǎn)換后的串行信號(hào)處理后,送到單片機(jī)的P0端中,連接LED用于顯示。同時(shí)單片機(jī)控制模擬開關(guān)進(jìn)行自動(dòng)換檔。</p><p>  在輸出顯示模塊中,采用LED顯示輸入電壓值,連接線較少,控制方便,顯示簡(jiǎn)潔且可控性強(qiáng)。</p><p><b>  2.2 芯片選擇</b></p><p&g

18、t;  2.2.1 單片機(jī)STC89C51</p><p>  STC89C51是一種低功耗、高性能CMOS8位微控制器,具有 8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。</p><p>  STC89C51具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32位I/O 口線,2個(gè)數(shù)據(jù)指針,三個(gè)1

19、6位定時(shí)器/計(jì)數(shù)器,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。</p><p>  另外,STC89C51可降至0Hz靜態(tài)邏輯操作,支持2種軟件,可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p>  單片機(jī)

20、引腳結(jié)構(gòu)及說明 </p><p>  圖2.2 STC89C51芯片</p><p>  VCC:供電電壓?! ND:接地。  P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)

21、時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高?! 1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。   P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)

22、部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 </p><p>  XTAL2:來自反向

23、振蕩器的輸出。 </p><p>  2.2.2 74LS164芯片</p><p>  8 位移位寄存器(串行輸入,并行輸出)</p><p><b>  主要電特性:</b></p><p>  當(dāng)清除端(CLEAR)為低電平時(shí),輸出端(QA-QH)均為低電平。串行數(shù)據(jù)輸入端(A,B)可控制數(shù)據(jù)。當(dāng)A、B任意一

24、個(gè)為低電平,則禁止新數(shù)據(jù)輸入,在時(shí)鐘端(CLOCK)脈沖上升沿作用下 Q0 為低電平。當(dāng) A、B有一個(gè)為高電平,則另一個(gè)就允許輸入數(shù)據(jù),并在CLOCK上升沿作用下決定Q0 的狀態(tài)。</p><p>  圖2.3 74LS164芯片</p><p>  圖2.4 74LS164芯片真值表</p><p>  H-高電平 L-低電平 X-任意電平↑-低到高電平

25、跳變QA0,QB0,QH0-規(guī)定的穩(wěn)態(tài)條件建立前的電平QAn,QGn-時(shí)鐘最近的↑前的電平</p><p><b>  時(shí)序圖</b></p><p>  圖2.5 74LS164芯片時(shí)序圖</p><p>  2.2.3 MAX813芯片</p><p><b>  芯片特點(diǎn):</b><

26、/p><p> ?。?)加電 、掉電以及供電電壓下降情況下的復(fù)位輸出 ,復(fù)位脈沖寬度典型值為 200 ms。</p><p> ?。?)獨(dú)立的看門狗輸出 ,如果看門狗輸入在 11.6s內(nèi)未被觸發(fā) ,其輸出將變?yōu)楦唠娖?。</p><p>  (3)1125 V 門限值檢測(cè)器 ,用于電源故障報(bào)警 、電池低電壓檢測(cè)或 + 5 V 以外的電源監(jiān)控 。</p>&

27、lt;p>  (4)低電平有效的手動(dòng)復(fù)位輸入 。</p><p> ?。?)8 引腳 DIP 封裝 。</p><p>  MAX813L 的引腳及功能</p><p>  圖2.6 MAX813芯片</p><p>  1) 手動(dòng)復(fù)位輸入端 (MR)</p><p>  當(dāng)該端輸入低電平保持 140 ms 以上

28、 ,MAX813就輸出復(fù)位信號(hào) 。該輸入端的最小輸入脈寬要求可</p><p>  以有效地消除開關(guān)的抖動(dòng) 。MR與 TTL/ CMOS 兼容 。</p><p>  (2) 工作電源端 (VCC) :接 + 5 V 電源 。</p><p>  (3) 電源接地端 ( GND) :接 0 V 參考電平 。</p><p>  (4) 電源故

29、障輸入端 ( PFI)</p><p>  當(dāng)該端輸入電壓低于 1125 V 時(shí) ,5 號(hào)引腳輸出端的信號(hào)由高電平變?yōu)榈碗娖?。</p><p>  (5) 電源故障輸出端 ( PFO)</p><p>  電源正常時(shí) ,保持高電平 ,電源電壓變低或掉電時(shí) ,輸出由高電平變?yōu)榈碗娖?。</p><p>  (6) 看門狗信號(hào)輸入端 (WDI)

30、</p><p>  程序正常運(yùn)行時(shí) ,必須在小于 116 s 的時(shí)間間隔內(nèi)向該輸入端發(fā)送一個(gè)脈沖信號(hào) ,以清除芯片內(nèi)部</p><p>  的看門狗定時(shí)器 。若超過 116 s該輸入端收不到脈沖信號(hào) ,則內(nèi)部定時(shí)器溢出 ,8 號(hào)引腳由高電平變?yōu)?lt;/p><p><b>  低電平 。</b></p><p>  (7)

31、 復(fù)位信號(hào)輸出端 (RST)</p><p>  上電時(shí) ,自動(dòng)產(chǎn)生 200 ms 的復(fù)位脈沖 ;手動(dòng)復(fù)位端輸入低電平時(shí) ,該端也產(chǎn)生復(fù)位信號(hào)輸出 。</p><p>  (8) 看門狗信號(hào)輸出端 (WDO)</p><p>  正常工作時(shí)輸出保持高電平 ,看門狗輸出時(shí) ,該端輸出信號(hào)由高電平變?yōu)榈碗娖?lt;/p><p>  2.2.4 MA

32、X232芯片</p><p>  MAX232芯片是美信(MAXIM)公司專為RS-232標(biāo)準(zhǔn)串口設(shè)計(jì)的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。</p><p>  圖2.7 MAX232芯片</p><p>  (1)電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個(gè)電源,提供給RS-232串口電平的需要。   </p&

33、gt;<p> ?。?)數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個(gè)數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。   </p><p>  TTL/CMOS數(shù)據(jù)從11引腳(T1IN)、10引腳(T2IN)輸入轉(zhuǎn)換成RS-

34、232數(shù)據(jù)從14腳(T1OUT)、7腳(T2OUT)送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從13引腳(R1IN)、8引腳(R2IN)輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從12引腳  ?。≧1OUT)、9引腳(R2OUT)輸出。   </p><p> ?。?)供電。15腳GND、16腳VCC(+5v)。</p><p>  2.2.5 ADC0832</p><

35、p>  ADC0832 是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的一種 8 位分辨率、雙通道 A/D 轉(zhuǎn)換芯片。由于它體積小,</p><p>  兼容性強(qiáng),性價(jià)比高而深受單片機(jī)愛好者及企業(yè)歡迎,其目前已經(jīng)有很高的普及率。學(xué)習(xí)并使用</p><p>  ADC0832 可是使我們了解 A/D 轉(zhuǎn)換器的原理,有助于我們單片機(jī)技術(shù)水平的提高。</p><p>  ADC0832

36、具有以下特點(diǎn):</p><p> ?。?)8 位分辨率; </p><p>  (2)雙通道 A/D 轉(zhuǎn)換;</p><p>  (3)輸入輸出電平與 TTL/CMOS 相兼容;</p><p>  (4)5V 電源供電時(shí)輸入電壓在 0~5V 之間;</p><p> ?。?)工作頻率為 250KHZ,轉(zhuǎn)換時(shí)間

37、為 32μS;</p><p>  (6)一般功耗僅為 15mW;</p><p> ?。?)8P、14P—DIP(雙列直插)、PICC 多種封裝;</p><p>  商用級(jí)芯片溫寬為0°C to +70°C,</p><p>  工業(yè)級(jí)芯片溫寬為?40°C to +85°C;</p>

38、<p>  圖2.8 AD0832芯片</p><p><b>  芯片接口說明</b></p><p>  CS_ 片選使能,低電平芯片使能。</p><p>  ?CH0 模擬輸入通道 0,或作為 IN+/-使用。</p><p>  ?CH1 模擬輸入通道 1,或作

39、為 IN+/-使用。</p><p>  ?GND 芯片參考 0 電位(地)。</p><p>  ?DI 數(shù)據(jù)信號(hào)輸入,選擇通道控制。</p><p>  ?DO 數(shù)據(jù)信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。</p><p>  ?CLK 芯片時(shí)鐘輸入。</p><p>  Vcc

40、/REF 電源輸入及參考電壓輸入(復(fù)用)。</p><p>  3 設(shè)計(jì)硬件電路設(shè)計(jì)</p><p>  在基于單片機(jī)的數(shù)字電壓表的設(shè)計(jì)中,硬件電路部分是整個(gè)系統(tǒng)的框架,框架的好壞直接影響到系統(tǒng)工作性能。模擬轉(zhuǎn)換器ADC0832將模擬電壓按照逐次逼近的方法轉(zhuǎn)換成數(shù)字電壓表,該數(shù)字電壓采用二進(jìn)制碼BCD編碼表示;單片機(jī)STC89C51是硬件電路的核心,數(shù)據(jù)傳遞與數(shù)據(jù)處理都是需要通過單片機(jī)

41、直接完成;電壓顯示電路是整個(gè)系統(tǒng)的輸出部分,有三位數(shù)碼管組成,通過單片機(jī)的段控和位控,以字符的形式動(dòng)態(tài)顯示出被測(cè)的模擬電壓。</p><p>  3.1 硬件系統(tǒng)的整體框圖</p><p><b>  圖3.2 硬件框圖</b></p><p>  3.2 AD 轉(zhuǎn)換</p><p>  ADC0809具有8路模擬開

42、關(guān),輸出具有TTL三態(tài)鎖存緩沖器,能直接連到單片機(jī)數(shù)據(jù)總線上,從設(shè)計(jì)硬件電路角度來說,使硬件電路的設(shè)計(jì)變簡(jiǎn)單,便于手工搭焊,使器件之間連線減少,便于調(diào)試。</p><p><b>  圖3.3 AD轉(zhuǎn)換</b></p><p>  在進(jìn)行A/D轉(zhuǎn)換時(shí),通道地址先發(fā)送到ADDA-ADDC輸入端。然后在ALE輸入端加一個(gè)正跳變脈沖,將通道地址鎖存到ADC0809的內(nèi)部地址

43、鎖存器中,這樣對(duì)應(yīng)的模擬輸入就和內(nèi)部變換電路接通。為了啟動(dòng)A/D轉(zhuǎn)換,必須在START端加一個(gè)負(fù)的跳變信號(hào),此后變換開始進(jìn)行,標(biāo)志ADC0809正在工作狀態(tài)的信號(hào)EOC由高電平變?yōu)榈碗娖?。變換結(jié)束,EOC又由低電平變?yōu)楦唠娖?,此時(shí)在OE端加一個(gè)高電平,即可打開數(shù)據(jù)線的三態(tài)緩沖器從D0-D7讀得變換后的數(shù)據(jù)。圖2.4為其工作時(shí)序圖。</p><p><b>  圖3.4 AD轉(zhuǎn)換</b><

44、;/p><p><b>  A/D模塊流程圖</b></p><p>  圖3.5 AD轉(zhuǎn)換流程圖</p><p>  在這個(gè)模塊中,主要應(yīng)用89S52將A/D轉(zhuǎn)換器送來的4位BCD碼進(jìn)行處理,根據(jù)A/D轉(zhuǎn)換器的數(shù)據(jù)及溢出位等信號(hào),來控制模擬開關(guān)進(jìn)行自動(dòng)換檔。同時(shí)控制液晶屏顯示電壓值。</p><p>  在這里,我們采用L

45、CD1602液晶顯示屏,它內(nèi)帶一定字符的字庫(kù),我們只要把對(duì)應(yīng)數(shù)字的ASCⅡ值,送到它的8位數(shù)據(jù)端,即可顯示對(duì)應(yīng)字符。因此,我們將得到的四位BCD碼進(jìn)行處理轉(zhuǎn)換,例如:數(shù)字1的BCD碼為0001,而ASCⅡ值為49,即為31H,我們只要將采集得到的BCD碼加上30H,即可得到對(duì)應(yīng)ASCⅡ值。</p><p>  我們利用A/D模塊的溢出位可以判斷,輸入電壓是否過量程。我們可以利用剛才采集的數(shù)據(jù),進(jìn)行檔位判斷,例如:

46、首先我們選擇最低檔2V,當(dāng)測(cè)的電壓大于2V時(shí),換到5V檔,以此類推。利用A/D的過量程端判斷,快速選擇一個(gè)合適的量程,顯示數(shù)據(jù)。單片機(jī)控制液晶屏顯示,我們將在下一模塊中詳細(xì)敘述。</p><p><b>  3.3 串行通信</b></p><p><b> ?。?)串行通信原理</b></p><p>  所謂“串行通

47、信”是指外設(shè)和計(jì)算機(jī)之間使用的一根信號(hào)線,數(shù)據(jù)在一根數(shù)據(jù)信號(hào)線上按位傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。串行通信有三種通信方法:?jiǎn)喂?、半雙工、全雙工。</p><p><b>  串行通信硬件的實(shí)現(xiàn)</b></p><p>  采用了電平轉(zhuǎn)換芯片MAX232來實(shí)現(xiàn)單片機(jī)電平控制。</p><p><b>  單片機(jī)端的串行通信&l

48、t;/b></p><p>  單片機(jī)STC89C51內(nèi)部有一個(gè)功能很強(qiáng)的全雙工串行口,可以同時(shí)發(fā)送和接收數(shù)據(jù),它有四種工作方式可供不同場(chǎng)合使用。</p><p><b>  圖3.6 串行通信</b></p><p><b>  3.4 復(fù)位電路</b></p><p>  復(fù)位電路通過電

49、感L、極性電容C組成的充放電振蕩回路與單片機(jī)的RST管腳相連。由于種種外界原因,單片機(jī)處于非正常工作狀態(tài)時(shí),就需要給單片機(jī)復(fù)位,此時(shí)按一下復(fù)位開關(guān),電源與單片機(jī)的RST端接通,RST端在兩個(gè)機(jī)器周期內(nèi)處于高電平,單片機(jī)即可復(fù)位。</p><p>  復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是按鍵復(fù)位。按鍵復(fù)位具有上電復(fù)位功能外,若要復(fù)位,只要按圖中的RESET鍵,電源VCC經(jīng)電阻R1、R2分壓,在RESET

50、端產(chǎn)生一個(gè)復(fù)位高電平。上電復(fù)位電路要求接通電源后,通過外部電容充電來實(shí)現(xiàn)單片機(jī)自動(dòng)復(fù)位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時(shí)間(2個(gè)機(jī)器周期),單片機(jī)就可以進(jìn)行復(fù)位操作。按鍵復(fù)位電路圖</p><p>  通過MAX813看門狗實(shí)現(xiàn)電路的復(fù)位:</p><p><b>  圖3.7 復(fù)位電

51、路</b></p><p>  3.5 電壓顯示電路</p><p>  圖3.8 LED數(shù)碼管電路及工作原理</p><p>  7段LED數(shù)碼管是利用7個(gè)LED(發(fā)光二極管)外加一個(gè)小數(shù)點(diǎn)的LED組合而成的顯示設(shè)備,可以顯示0~9等10個(gè)數(shù)字和小數(shù)點(diǎn),使用非常廣泛。</p><p>  這類數(shù)碼管可以分為共陽(yáng)極與共陰極兩種,

52、共陽(yáng)極就是把所有LED的陽(yáng)極連接到共同接點(diǎn)com,而每個(gè)LED的陰極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn));共陰極則是把所有LED的陰極連接到共同接點(diǎn)com,而每個(gè)LED的陽(yáng)極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn)),如圖2.7所示。圖中的8個(gè)LED分別與上面那個(gè)圖中的A~DP各段相對(duì)應(yīng),通過控制各個(gè)LED的亮滅來顯示數(shù)字。</p><p>  圖3.9 LED數(shù)碼管電路</p>

53、<p><b> ?。?)三位數(shù)碼管</b></p><p>  本設(shè)計(jì)使用的是三位數(shù)碼管,內(nèi)部的3個(gè)數(shù)碼管共用a-dp這8根數(shù)據(jù)線,為人們的使用提供了方便。因?yàn)槔锩嬗?個(gè)數(shù)碼管,所以它有3個(gè)公共端,加上a-dp,共有11個(gè)引腳。三位數(shù)碼管也有共陰極和共陽(yáng)極之分,共陽(yáng)極的是為選線為高電平,段選線為低電平;共陰極的是為選線為低電平,段選線為高電平。具體到本設(shè)計(jì)的硬件連接電路中,采用的

54、是四位共陽(yáng)數(shù)碼管,其內(nèi)部邏輯圖與實(shí)物引腳圖分別如圖2.8、圖2.9所示。</p><p>  圖3.10 三段數(shù)碼管</p><p>  4 主要參數(shù)計(jì)算與分析</p><p>  4.1 計(jì)算與分析</p><p>  本次設(shè)計(jì)的軟硬件調(diào)試完成后,就可以進(jìn)入軟硬件綜合調(diào)試階段了。將源程序編譯生成HEX文件用T0P852燒錄器寫入STC8

55、9C51單片機(jī)中,按照調(diào)整好的電路圖焊接好萬能板,將ADC0832的輸入通道接上5V電壓,調(diào)整電壓值可以看見LED上顯示出相應(yīng)的數(shù)字量,如表6.1所示。</p><p>  表4.1 測(cè)試結(jié)果分析</p><p>  絕對(duì)誤差=|輸出信號(hào)-輸入信號(hào)| </p><p>  相對(duì)誤差=絕對(duì)誤差/理論值×100%</p><p><

56、;b>  測(cè)試結(jié)果分析:</b></p><p>  精度是偏移誤差、增益誤差、積分線性誤差、微分線性誤差、溫度漂移等綜合因素引起的總誤差。因量化誤差是模擬輸入量在量化取整過程中引起的,因此,分辨率直接影響量化誤差的大小。量化誤差是一種原理性誤差,只與分辨率有關(guān),與信號(hào)的幅度,采樣速率無關(guān),它只能減小而無法完全消除,只能使其控制在一定的范圍之內(nèi),一般在±1/2LSB范圍內(nèi)。除此之外,影

57、響該轉(zhuǎn)換系統(tǒng)的因素還有數(shù)字萬用表精度以及參考電源精度等。</p><p><b>  4.2 軟件調(diào)試</b></p><p>  軟件調(diào)試是利用KEIL C51軟件進(jìn)行調(diào)試,新建工程后新建文件,寫好程序后進(jìn)行編譯,最后生成HEX文件,通過燒錄機(jī)將程序燒入單片機(jī)即可。</p><p>  KEIL C51軟件簡(jiǎn)介:支持8051微控制器體系結(jié)構(gòu)

58、的KEIL開發(fā)工具,產(chǎn)業(yè)標(biāo)準(zhǔn)的KEIL C編譯器、宏匯編器、調(diào)試器、實(shí)時(shí)內(nèi)核、單板計(jì)算機(jī)和仿真器,支持所有的251系列微控制器。</p><p><b>  4.3 硬件調(diào)試</b></p><p>  利用萬用板焊接的電路具有自由布局的優(yōu)點(diǎn),同時(shí)也存在焊接不牢,線路復(fù)雜的缺點(diǎn),為了減少布線,我采用了杜邦線來進(jìn)行靈活插線,在進(jìn)行硬件調(diào)試時(shí)利用示波器觀測(cè)波形變化,檢查

59、電路焊接等。</p><p>  在剛開始調(diào)試時(shí),CLK端輸入的頻率是由單片機(jī)定時(shí)器產(chǎn)生的2KHZ的頻率,遠(yuǎn)小于ADC0809的工作頻率,電壓顯示不穩(wěn)定,幾個(gè)錯(cuò)誤的電壓值來回跳動(dòng),后改變TH1=(65536-40)/256;TL1=(65536-40)%256;使得輸出大于10KHZ,電壓表顯示正常。在后期調(diào)試中,電阻的精度和基準(zhǔn)電源的輸入變化也成為影響結(jié)果的因素,經(jīng)過多次調(diào)試使得各檔位的電壓測(cè)量值誤差減小不少。

60、</p><p><b>  5 軟件設(shè)計(jì)</b></p><p>  5.1 主程序流程</p><p>  圖5.1 主程序流程圖</p><p>  5.2 子程序介紹</p><p>  5.2.1 初始化程序</p><p>  初始化程序主要包括下面幾個(gè)

61、部分:設(shè)置中斷,開啟A/D轉(zhuǎn)換器,對(duì)液晶屏的初始化以及對(duì)一些中間變量的初始化。</p><p><b>  部分程序如下:</b></p><p>  #include<reg51.h></p><p>  #include<intrins.h></p><p>  #define uchar u

62、nsigned char</p><p>  #define uint unsigned int</p><p>  //******************adc0832****************************//</p><p>  sbit CS=P1^4; //使能。</p><p>  sbit CLK=P3^5;

63、//時(shí)鐘</p><p>  sbit Do=P3^4; // 數(shù)據(jù)輸出</p><p>  sbit Di=P3^4;//數(shù)據(jù)輸入</p><p>  unsigned char CH=0x03; </p><p>  //通道的選擇:0x02就是單通道0;0x03就是單通道1;</p><p>  //0x00就是

64、雙通道ch0="+"; ch0="-"</p><p>  //0x01就是雙通道ch0="-"; ch0="+"</p><p>  //*****************************************************//</p><p>  sbit

65、 simuseri_CLK=P2^5; //用P2^5模擬串口時(shí)鐘</p><p>  sbit simuseri_DATA=P2^4; //用P2^4模擬串口數(shù)據(jù)</p><p>  sbit SEG5=P0^0; </p><p>  sbit SEG4=P0^1; </p><p>  sbit

66、SEG3=P0^2; </p><p>  sbit SEG2=P2^6; </p><p>  sbit SEG1=P2^7; </p><p>  sbit SEG0=P0^7; </p><p>  sbit a0=ACC^0;</p><p>  code unsigned char dis_code[]={

67、~0xe7,~0xa0,~0x97,~0xb5,~0xf0,~0x75,~0x77,~0xa1,~0xf7,~0xf5}; </p><p>  //共陰數(shù)碼管 0-9 '-' '熄滅‘表</p><p>  uint data dis[4]={0x00,0x00,0x00,0x00};</p><p>  5.2.2 轉(zhuǎn)換子程序<

68、/p><p><b>  工作過程:</b></p><p>  (1) 當(dāng)模擬量送至IN0后,CPU將標(biāo)識(shí)該通道編碼的三位地址信號(hào)經(jīng)數(shù)據(jù)線或地址線輸入到ADDC、ADDB、ADDA引腳上。 </p><p>  (2) 地址鎖存允許ALE鎖存這三位地址信號(hào),啟動(dòng)命令START啟動(dòng)A/D轉(zhuǎn)換。 </p><p>  (3)

69、轉(zhuǎn)換開始,EOC變低電平,轉(zhuǎn)換結(jié)束,EOC變?yōu)楦唠娖?。EOC可作為中斷請(qǐng)求信號(hào)。 </p><p>  (4) 轉(zhuǎn)換結(jié)束后,可通過執(zhí)行IN指令,設(shè)法在輸出允許OE腳上形成一個(gè)正脈沖,打開三態(tài)緩沖器把轉(zhuǎn)換的結(jié)果輸入到DB,一次A/D轉(zhuǎn)換便完成了。</p><p><b>  部分程序如下:</b></p><p>  CLK=0; // 確定通道

70、模式、第2個(gè)下降沿</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  CLK=1;</b></p><p>  Di=(bit)(0x02&CH); //設(shè)定通道初始化</p&g

71、t;<p><b>  _nop_();</b></p><p><b>  CLK=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p><b>

72、;  CLK=1; </b></p><p>  Di=(bit)(0x01&CH); //設(shè)定通道初始化 .第3個(gè)下降沿</p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p>  CLK=0; //AD轉(zhuǎn)化

73、的初始化完成。</p><p><b>  Di=1; </b></p><p><b>  CLK=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><

74、p><b>  CLK=0;</b></p><p><b>  _nop_(); </b></p><p><b>  CLK=1;</b></p><p>  5.2.3 顯示子程序</p><p>  在顯示部分中,每次電壓采集后,CPU將數(shù)據(jù)送到LCD顯示,將可

75、能出現(xiàn)不同檔位電壓值的顯示。</p><p><b>  顯示部分的流程圖:</b></p><p>  void SegDisplay()//顯示子程序</p><p><b>  {</b></p><p>  out_simuseri(dis_code[dis[0]]); <

76、/p><p><b>  SEG3=0;</b></p><p>  delay1(1);</p><p><b>  SEG3=1;</b></p><p>  out_simuseri(dis_code[dis[1]]); </p><p><b>  SEG4

77、=0;</b></p><p>  delay1(1);</p><p><b>  SEG4=1;</b></p><p>  out_simuseri(dis_code[dis[2]]&0xf7);</p><p><b>  SEG5=0;</b></p>&

78、lt;p>  delay1(1);</p><p><b>  SEG5=1;</b></p><p><b>  }</b></p><p><b>  5.3 元件清單</b></p><p>  圖5.2 單片機(jī)課程設(shè)計(jì)器件清單</p><p&

79、gt;<b>  6 調(diào)試過程</b></p><p><b>  6.1 焊接指南</b></p><p>  焊接的原則:一般從低到高,從左到右,從核心到外圍。</p><p>  本實(shí)驗(yàn)板的焊接步驟:</p><p>  1,焊接電阻:R4,R2,PWRLEDR。</p>&

80、lt;p>  2,焊接單片機(jī)座子和232座子。</p><p>  3,焊接晶振,同時(shí)焊接晶振旁邊的兩個(gè)15P的電容。</p><p>  4,焊接104無極電容,共有七個(gè)。</p><p>  5,焊接指示燈,綠的四個(gè),在左上角;紅的一個(gè),在右下角。</p><p>  6,焊接排阻,指示燈左上角,還有數(shù)碼管的在指示燈下面。</

81、p><p>  7,焊接按鍵,MODE、UP、DN、ENT。注意:(焊接的時(shí)候要看清楚,按鍵為長(zhǎng)方形,橫著為長(zhǎng)的。豎著為短的)</p><p>  8,焊接數(shù)碼管插座,然后焊接蜂鳴器。</p><p>  9,焊接三極管8550,在蜂鳴器下方。</p><p>  10,焊接串口接口(母的),和USB插座。</p><p>

82、;  11,焊接電容,232座子前的一個(gè)10UF。</p><p><b>  6.2 硬件調(diào)試</b></p><p>  單片機(jī)應(yīng)用系統(tǒng)的硬件和軟件調(diào)試是交叉相互進(jìn)行的,但通常是先排除樣機(jī)中明顯的硬件故障,尤其是電源故障,才能安全地和仿真器相連,進(jìn)行綜合調(diào)試。</p><p>  6.2.1 硬件電路故障及解決方法</p>

83、<p> ?。?)錯(cuò)線、開路、短路:由于設(shè)計(jì)錯(cuò)誤和加工過程中的工藝性錯(cuò)誤所造成的錯(cuò)線、開路、短路等故障。</p><p>  解決方法:在畫原理圖時(shí)仔細(xì)檢查、校正即可解決。</p><p> ?。?)元器件損壞:由于對(duì)元器件使用條件的不熟悉以及制作調(diào)試過程中操作不當(dāng)致使器件損壞。</p><p>  解決方法:在設(shè)計(jì)過程中要明確各元器件的工作條件,嚴(yán)格按

84、照元器件正常工況下進(jìn)行操作,損壞的元器件要及時(shí)更換,以免損壞其他元件或影響電路功能的實(shí)現(xiàn)。</p><p> ?。?)電源故障:設(shè)計(jì)中存在電源故障,即上電后將造成元器件損壞、無法正常供電,電路不能正常工作。電源的故障包括:電壓值不符和設(shè)計(jì)要求,電源引出線和插座不對(duì)應(yīng),各檔量程選擇電路之間的短路,變壓器功率不足,內(nèi)阻大,負(fù)載能力差等。</p><p>  解決方法:電源必須單獨(dú)調(diào)試好以后才能

85、加到系統(tǒng)的各個(gè)部件中。當(dāng)所有部分在該電源作用下都能正常工作,就選用該電源。</p><p>  6.2.2 硬件調(diào)試方法</p><p>  本設(shè)計(jì)調(diào)試過程中所用的調(diào)試方法是靜態(tài)測(cè)試:</p><p>  在樣機(jī)加電之前,首先用萬用表等工具,根據(jù)硬件電器原理圖和裝配圖仔細(xì)檢查樣機(jī)線路的正確性,并核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求。應(yīng)特別注意電源的走線,防止電

86、源之間的短路和極性錯(cuò)誤,并重點(diǎn)檢查擴(kuò)展系統(tǒng)總線(地址總線、數(shù)據(jù)總線和控制總線)是否存在相互間的短路或與其它信號(hào)線的短路。第二步是加電后檢查各個(gè)插件上引腳的電位,仔細(xì)測(cè)量各點(diǎn)電位是否正常,尤其應(yīng)注意單片機(jī)插座上的各點(diǎn)電位,若出現(xiàn)較高電壓值,聯(lián)機(jī)時(shí)將會(huì)損壞仿真器。第三步是在不加電情況下,除單片機(jī)以外,插上所有的元器件,最后用仿真適配器將樣機(jī)的單片機(jī)插座和仿真器的仿真接口相連,為聯(lián)機(jī)調(diào)試做準(zhǔn)備。</p><p><

87、;b>  6.3 軟件調(diào)試</b></p><p>  6.3.1 軟件電路故障及解決方法</p><p>  設(shè)計(jì)軟件部分可能出現(xiàn)這種錯(cuò)誤的現(xiàn)象:</p><p> ?。?)當(dāng)以斷點(diǎn)或連續(xù)方式運(yùn)行時(shí),目標(biāo)系統(tǒng)沒有按規(guī)定的功能進(jìn)行操作或什么結(jié)果也沒有,這是由于程序轉(zhuǎn)移到意外之處或在某處死循環(huán)所造成的。</p><p> 

88、 解決方法:這類錯(cuò)誤的原因是程序中轉(zhuǎn)移地址計(jì)算錯(cuò)誤、堆棧溢出、工作寄存器沖突等。在采用實(shí)時(shí)多任務(wù)操作系統(tǒng)時(shí),錯(cuò)誤可能在操作系統(tǒng)中,沒有完成正確的任務(wù)調(diào)度操作,也可能在高優(yōu)先級(jí)任務(wù)程序中,該任務(wù)不釋放處理器,使CPU在該任務(wù)中死循環(huán)。通過對(duì)錯(cuò)誤程序的修改使其實(shí)現(xiàn)預(yù)期的功能。</p><p><b> ?。?)結(jié)果不正確</b></p><p>  目標(biāo)系統(tǒng)基本上已經(jīng)能正

89、常操作,但控制有錯(cuò)誤動(dòng)作或者輸出的結(jié)果不正確。這類錯(cuò)誤大多是由于計(jì)算程序中的錯(cuò)誤引起的。對(duì)于本設(shè)計(jì)而言,由于采用的是單片機(jī)C51語言,在檢查程序時(shí),需要按模塊一步步查詢、修改,直到所有模塊都能正常工作,則顯示結(jié)果會(huì)達(dá)到預(yù)期值。</p><p>  6.3.2 軟件調(diào)試方法</p><p>  軟件調(diào)試所使用的方法有:計(jì)算程序的調(diào)試方法、I/O處理程序的調(diào)試法、綜合調(diào)試法等。</p&

90、gt;<p> ?。?)計(jì)算程序的調(diào)試方法</p><p>  計(jì)算程序的錯(cuò)誤是一種靜態(tài)的固定的錯(cuò)誤,因此主要用單拍或斷點(diǎn)運(yùn)行方式來調(diào)試。根據(jù)計(jì)算程序的功能,事先準(zhǔn)備好一組測(cè)試數(shù)據(jù)。調(diào)試時(shí),用仿真器的寫命令,將數(shù)據(jù)寫入計(jì)算程序的參數(shù)緩沖單元,然后從計(jì)算程序開始運(yùn)行到結(jié)束,運(yùn)行的結(jié)果和正確數(shù)據(jù)比較,如果對(duì)有的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,都沒有發(fā)生錯(cuò)誤,則該計(jì)算程序調(diào)試成功;如果發(fā)現(xiàn)結(jié)果不正確,改用單步運(yùn)行方式,

91、即可檢查出錯(cuò)誤所在。計(jì)算程序的修改視錯(cuò)誤性質(zhì)而定。若是算法錯(cuò)誤,那是根本性錯(cuò)誤,應(yīng)重新設(shè)計(jì)該程序;若是局部的指令有錯(cuò),修改即可。如果用于測(cè)試的數(shù)據(jù)沒有全部覆蓋實(shí)際計(jì)算的原始數(shù)據(jù)的類型,調(diào)試沒有發(fā)現(xiàn)錯(cuò)誤可能在系統(tǒng)運(yùn)行過程中暴露出來。</p><p> ?。?)I/O處理程序的調(diào)試</p><p>  對(duì)于A/D轉(zhuǎn)換一類的I/O處理程序是實(shí)時(shí)處理程序,因此一般用全速斷點(diǎn)運(yùn)行方式或連續(xù)運(yùn)行方式進(jìn)

92、行調(diào)試。</p><p><b> ?。?)綜合調(diào)試</b></p><p>  在完成了各個(gè)模塊程序(或各個(gè)任務(wù)程序)的調(diào)試工作以后,便可進(jìn)行系統(tǒng)的綜合調(diào)試。綜合調(diào)試一般采用全速斷點(diǎn)運(yùn)行方式,這個(gè)階段的主要工作是排除系統(tǒng)中遺留的錯(cuò)誤以便提高系統(tǒng)的動(dòng)態(tài)性能和精度。在綜合調(diào)試的最后階段,應(yīng)在目標(biāo)系統(tǒng)的晶振頻率內(nèi)工作,使系統(tǒng)全速運(yùn)行目標(biāo)程序,實(shí)現(xiàn)了預(yù)定功能技術(shù)指標(biāo)后,便可

93、將軟件固化,然后在運(yùn)行固化的目標(biāo)程序,成功后目標(biāo)系統(tǒng)便可脫機(jī)運(yùn)行。一般情況下,這樣一個(gè)應(yīng)用系統(tǒng)就算研制成功。</p><p><b>  7 結(jié)論</b></p><p>  本次實(shí)習(xí)基于單片機(jī)STC89C51采用8位逐次逼近式A/D轉(zhuǎn)換器ADC0832設(shè)計(jì)的電壓檢測(cè)裝置。用單片機(jī)進(jìn)行數(shù)據(jù)控制、處理,送到顯示器顯示,硬件結(jié)構(gòu)簡(jiǎn)單,所用元件較少,大大降低了制作成本。軟

94、件采用C語言實(shí)現(xiàn),程序簡(jiǎn)單可讀寫性強(qiáng),效率高。與傳統(tǒng)的電路相比,具有方便操作、處理速度快、穩(wěn)定性高、性價(jià)比高的優(yōu)點(diǎn),具有一定的使用價(jià)值。</p><p>  剛開始接到課程設(shè)計(jì)任務(wù),認(rèn)為挺簡(jiǎn)單的,然而真正開始動(dòng)手制作時(shí)才知道并不是那么簡(jiǎn)單,我和同組的組員了無頭緒,在不斷查閱資料,相互討論,以及請(qǐng)教指導(dǎo)老師之后,有了突破性進(jìn)展;緊接著,我們的設(shè)計(jì)有了細(xì)致的分工,分工的同時(shí)大家經(jīng)常一起探討設(shè)計(jì)過程中出現(xiàn)的種種問題,并

95、將不懂的請(qǐng)教老師解答,最終在大家不懈努力下,課程設(shè)計(jì)成功完成。</p><p>  實(shí)習(xí)的結(jié)果是我們不再是約束在理論上,而是鍛煉了我們的動(dòng)手能力和分析、解決問題的能力,積累經(jīng)驗(yàn),培養(yǎng)按部就班,一絲不茍的工作和對(duì)所學(xué)知識(shí)的綜合應(yīng)用能力,了解了很多課本上學(xué)不到的知識(shí),設(shè)計(jì)中有好多問題都是因?yàn)槔碚撝R(shí)不扎實(shí),在有些管腳的置零置一上,概念的模糊,這使我們明白要把所學(xué)到的理論轉(zhuǎn)化為實(shí)踐需要一段努力學(xué)習(xí)的過程;在做一個(gè)設(shè)計(jì)的

96、過程中,一定要注意理論和實(shí)踐同步進(jìn)行,光有理論知識(shí)還是遠(yuǎn)遠(yuǎn)不夠的,要用時(shí)間去檢驗(yàn)理論,用理論指導(dǎo)實(shí)踐。</p><p>  我想這樣的實(shí)踐環(huán)節(jié)在我的學(xué)生生涯是很難得的,也為我們以后步入社會(huì)開始工作打下了一定的基礎(chǔ),最后我也要感謝組里的同學(xué)們,只有在他們團(tuán)結(jié)協(xié)作下,本次課程設(shè)計(jì)才可以順利進(jìn)行并實(shí)現(xiàn)所有功能,同時(shí)我也明白了團(tuán)結(jié)協(xié)作的重要性。由于本人水平有限,在技術(shù)指標(biāo)和論文寫作中可能存在一些缺陷,懇請(qǐng)各位老師和同學(xué)們

97、批評(píng)指教。</p><p><b>  8 附錄</b></p><p>  8.1 數(shù)字電壓表原理圖</p><p>  8.2 程序代碼</p><p>  #include<reg51.h></p><p>  #include<intrins.h></

98、p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  //******************adc0832****************************//</p><p>  sbit CS=P1^4; //使能。<

99、/p><p>  sbit CLK=P3^5;//時(shí)鐘</p><p>  sbit Do=P3^4; // 數(shù)據(jù)輸出</p><p>  sbit Di=P3^4;//數(shù)據(jù)輸入</p><p>  unsigned char CH=0x03; </p><p>  //通道的選擇:0x02就是單通道0;0x03就是單通道

100、1;</p><p>  //0x00就是雙通道ch0="+"; ch0="-"</p><p>  //0x01就是雙通道ch0="-"; ch0="+"</p><p>  //*************************************************

101、****//</p><p>  sbit simuseri_CLK=P2^5; //用P2^5模擬串口時(shí)鐘</p><p>  sbit simuseri_DATA=P2^4; //用P2^4模擬串口數(shù)據(jù)</p><p>  sbit SEG5=P0^0; </p><p>  sbit SEG4=P0

102、^1; </p><p>  sbit SEG3=P0^2; </p><p>  sbit SEG2=P2^6; </p><p>  sbit SEG1=P2^7; </p><p>  sbit SEG0=P0^7; </p><p>  sbit a0=ACC^0;</p><p>

103、  code unsigned char dis_code[]={~0xe7,~0xa0,~0x97,~0xb5,~0xf0,~0x75,~0x77,~0xa1,~0xf7,~0xf5}; </p><p>  //共陰數(shù)碼管 0-9 '-' '熄滅‘表</p><p>  uint data dis[4]={0x00,0x00,0x00,0x00};</p

104、><p>  unsigned char ADconv(void)</p><p>  {unsigned char i;</p><p>  unsigned int data_f=0,data_c=0;</p><p><b>  Di=1;</b></p><p><b>  CS=1

105、;</b></p><p><b>  _nop_(); </b></p><p><b>  CS=0;</b></p><p>  Di=1; ;//芯片使能之前的初始化。第一個(gè)下降沿</p><p><b>  CLK=1;</b></p>&l

106、t;p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  /****************************************/</p><p>  CLK=0; // 確定通道模式、第2個(gè)下降沿</p><p>&l

107、t;b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  CLK=1;</b></p><p>  Di=(bit)(0x02&CH); //設(shè)定通道初始化</p><p><b>  _nop_();

108、</b></p><p><b>  CLK=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p><b>  CLK=1; </b></p>

109、<p>  Di=(bit)(0x01&CH); //設(shè)定通道初始化 .第3個(gè)下降沿</p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p>  CLK=0; //AD轉(zhuǎn)化的初始化完成。</p><p><

110、b>  Di=1; </b></p><p><b>  CLK=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p><b>  CLK=0;</b>

111、</p><p><b>  _nop_(); </b></p><p><b>  CLK=1;</b></p><p>  for(i=8;i>0;i--)//得到一個(gè)正常排序的8位數(shù)據(jù)</p><p><b>  { </b></p><p>

112、;  data_f|=Do;</p><p>  data_f<<=1; </p><p><b>  CLK=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><

113、p><b>  CLK=0;</b></p><p><b>  _nop_(); </b></p><p><b>  } </b></p><p>  for(i=8;i>0;i--)//得到一個(gè)反序排列的8位數(shù)據(jù)</p><p><b>  {<

114、;/b></p><p>  data_c<<=1;</p><p>  data_c|=Do;</p><p><b>  _nop_();</b></p><p><b>  CLK=1;</b></p><p><b>  _nop_();&

115、lt;/b></p><p><b>  _nop_();</b></p><p><b>  CLK=0;</b></p><p><b>  _nop_();</b></p><p><b>  }</b></p><p>

116、;<b>  CLK=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  CLK=1;</b></p><p><b>  _nop_();<

117、/b></p><p><b>  _nop_();</b></p><p><b>  CLK=0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><

118、p><b>  CLK=1;</b></p><p><b>  _nop_();</b></p><p><b>  CS=1;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();&

119、lt;/b></p><p>  return data_f;</p><p><b>  }</b></p><p>  void delay1(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</

120、b></p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void out_simuseri(uchar data_buf) //</p><p><b

121、>  { </b></p><p><b>  uchar i;</b></p><p><b>  i=8;</b></p><p>  ACC=data_buf;</p><p><b>  do</b></p><p><b

122、>  { </b></p><p>  simuseri_CLK=0; </p><p>  simuseri_DATA=a0;</p><p>  simuseri_CLK=1;</p><p>  ACC=ACC>>1;</p><p><b>  }</b>&

123、lt;/p><p>  while(--i!=0);</p><p><b>  }</b></p><p>  void SegDisplay()//顯示子程序</p><p><b>  {</b></p><p>  out_simuseri(dis_code[

124、dis[0]]); </p><p><b>  SEG3=0;</b></p><p>  delay1(1);</p><p><b>  SEG3=1;</b></p><p>  out_simuseri(dis_code[dis[1]]); </p><p>&

125、lt;b>  SEG4=0;</b></p><p>  delay1(1);</p><p><b>  SEG4=1;</b></p><p>  out_simuseri(dis_code[dis[2]]&0xf7);</p><p><b>  SEG5=0;</b>

126、;</p><p>  delay1(1);</p><p><b>  SEG5=1;</b></p><p><b>  }</b></p><p>  void show_value(uchar ad_data)</p><p><b>  {</b&g

127、t;</p><p>  dis[2]=ad_data/51; //AD值轉(zhuǎn)換為3為BCD碼,最大為5.00V,dis[2]存儲(chǔ)的電壓的整數(shù)位</p><p>  //AC0832內(nèi)部存儲(chǔ)的8位二進(jìn)制數(shù)字量。</p><p>  dis[3]=ad_data%51; //余數(shù)暫存</p><p>  dis[3]=dis[3]*10;

溫馨提示

  • 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ù)僅提供信息存儲(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)論