版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字電壓表
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)----數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易數(shù)字電壓表
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì).rar
- 單片機(jī)課程設(shè)計(jì)數(shù)字電壓表
- 單片機(jī)數(shù)字電壓表課程設(shè)計(jì).doc
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì).rar
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì).rar
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表 (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告——數(shù)字電壓表
- 課程設(shè)計(jì)----單片機(jī)簡(jiǎn)易數(shù)字電壓表
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì).rar
評(píng)論
0/150
提交評(píng)論