基于單片機(jī)的數(shù)字電壓表【畢業(yè)設(shè)計(jì)】_第1頁
基于單片機(jī)的數(shù)字電壓表【畢業(yè)設(shè)計(jì)】_第2頁
基于單片機(jī)的數(shù)字電壓表【畢業(yè)設(shè)計(jì)】_第3頁
基于單片機(jī)的數(shù)字電壓表【畢業(yè)設(shè)計(jì)】_第4頁
基于單片機(jī)的數(shù)字電壓表【畢業(yè)設(shè)計(jì)】_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、廣州大學(xué)松田學(xué)院 畢業(yè)論文(設(shè)計(jì))題 目 基于單片機(jī)的數(shù)字電壓表基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)摘要:隨著電子科學(xué)技術(shù)的發(fā)展,電子測量成為廣大電子工作者必須掌握的手段,對測量的精度和功能的要求也越來越高,而電壓的測量甚為突出,因?yàn)殡妷旱臏y量最為普遍。本設(shè)計(jì)在參閱了大量前人設(shè)計(jì)的數(shù)字電壓表的基礎(chǔ)上,利用單片機(jī)技術(shù)結(jié)合a/d轉(zhuǎn)換芯片構(gòu)建了一個(gè)八路電壓巡檢系統(tǒng)。然后詳細(xì)的介紹了八路電壓巡檢系統(tǒng)的設(shè)計(jì)流程,以及硬件系統(tǒng)和軟件系統(tǒng)的設(shè)計(jì),并給出了硬件電路的原理圖。本設(shè)計(jì)可以循環(huán)的在lcd1602上面顯示八個(gè)電路的電壓??梢詼y量05v范圍。關(guān)鍵詞:lcd1602,獨(dú)立鍵盤,lcd顯示管,多路電壓采集。a vol

2、tage acquisition system based on mcuabstract: with the development of electronic technology, electronic measuring a large number of electronic workers must master the means of measurement, the accuracy and functional requirements are increasingly high, while the voltage measurement is very prominent

3、, because the voltage measurement is most common. in the design of consulting a large number of previous design digital voltage meter based on a/d conversion chip, combined with the construction of a eight voltage inspection system using single chip computer technology. and then introduces the desig

4、n process of eight voltage inspection system, and the hardware and software design of the system, and the hardware circuit is given. this product can be recycled display eight circuit voltage at lcd1602. can measure range of 05v.keywords: lcd1602, keyboard, lcd display tube, a voltage acquisition.目

5、錄1 緒 論51.1 目的和意義51.2 本系統(tǒng)主要研究內(nèi)容52. 總體方案論證與設(shè)計(jì)62.1主控模塊62.1.1 stc89c52單片機(jī)主要特性72.1.2 stc89c52單片機(jī)的中斷系統(tǒng)72.1.3 stc89c52單片機(jī)的定時(shí)/計(jì)數(shù)器82.2 lcd液晶顯示器簡介82.2.1 液晶原理介紹82.2.2液晶模塊簡介82.2.3液晶顯示部分與stc89c52的接口92.3鍵盤模塊設(shè)計(jì)102.4 ad采集模塊設(shè)計(jì)102.4.1 adc0809 芯片簡介102.4.2 引腳功能說明113.系統(tǒng)軟件設(shè)計(jì)133.1系統(tǒng)軟件總體設(shè)計(jì)133.2程序設(shè)計(jì)原理134.系統(tǒng)調(diào)試164.1硬件調(diào)試204.2軟

6、件調(diào)試204.3調(diào)試結(jié)果205.結(jié)論22參考文獻(xiàn)23附錄24系統(tǒng)整體原理圖24系統(tǒng)pcb設(shè)計(jì)圖24系統(tǒng)源程序251 緒 論1.1 目的和意義在電量的測量中電壓、電流和頻率是最基本的三個(gè)被測量,其中電壓量的測量最為經(jīng)常,而且隨著電子技術(shù)的發(fā)展,更是需要測量高精度的電壓,所以基于單片機(jī)電壓表測量儀器具有讀數(shù)準(zhǔn)確方便、精度高、誤差小、靈敏度高和分辨率高,測量速度快等特點(diǎn)而倍受青睞?;趩纹瑱C(jī)電壓表式采用數(shù)字化測量技術(shù)設(shè)計(jì)的電壓表。具有讀數(shù)直觀、準(zhǔn)確、顯示范圍寬、分辨率高、輸入阻抗大、集成度高、功耗小、抗干擾能力強(qiáng),可擴(kuò)展能力強(qiáng)等特點(diǎn),本設(shè)計(jì)從各個(gè)角度分析了由單片機(jī)組成的數(shù)字電壓表的設(shè)計(jì)過程及各部分電

7、路的組成及其原理,并且分析了程序如何驅(qū)動單片機(jī)進(jìn)而使系統(tǒng)運(yùn)行起來的原理及方法。1.2 本系統(tǒng)主要研究內(nèi)容數(shù)字電壓表采用的是數(shù)字化測量技術(shù),把連續(xù)的模擬量,也就是連續(xù)的電壓值轉(zhuǎn)變?yōu)椴贿B續(xù)的數(shù)字量,加以處理后通過顯示器顯示出來。這次設(shè)計(jì)的硬件方面采用at89c51單片機(jī),a/d轉(zhuǎn)換器采用adc0809對輸入的模擬信號進(jìn)行轉(zhuǎn)換,最后在led屏顯示出來。而這個(gè)設(shè)計(jì)主要擬解決的是在使用過程中避免由于傳統(tǒng)電壓表指針讀書的方法而產(chǎn)生的讀書視覺差和視覺疲勞,同時(shí)因?yàn)閱纹瑱C(jī)體積小、重量輕、價(jià)格便宜,電路外圍器件少,從根本上大大降低了研發(fā)成本。本系統(tǒng)設(shè)計(jì)制作一個(gè)基于單片機(jī)的多路電壓采集系統(tǒng)。能實(shí)現(xiàn)以下幾種功能:1

8、、鍵盤掃描,通過單片機(jī)檢測用戶按下的是哪個(gè)按鍵并執(zhí)行相應(yīng)的功能。2、單片機(jī)通過adc0809采集8路的電壓值并可以顯示在液晶上。332. 總體方案論證與設(shè)計(jì)本系統(tǒng)以stc89c52單片機(jī)為控制核心,對系統(tǒng)進(jìn)行初始化,主要完成對鍵盤的響應(yīng)、lcd顯示、ad采集等功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。圖2-1系統(tǒng)結(jié)構(gòu)框圖本系統(tǒng)結(jié)構(gòu)如圖2-1所示,本設(shè)計(jì)可分為以下模塊:單片機(jī)主控模塊、鍵盤模塊、液晶模塊、ad采集模塊。下面對各個(gè)模塊的設(shè)計(jì)方案逐一進(jìn)行論證分析。2.1主控模塊stc89c52單片機(jī)最初是由intel 公司開發(fā)設(shè)計(jì)的,但后來intel 公司把51 核的設(shè)計(jì)方案賣給了幾家大的電子

9、設(shè)計(jì)生產(chǎn)商,譬如 sst、philip、atmel 等大公司。如是市面上出現(xiàn)了各式各樣的但均以51 為內(nèi)核的單片機(jī),倒是intel 公司自己的單片機(jī)卻顯得遜色了。這些各大電子生產(chǎn)商推出的單片機(jī)都兼容51 指令、并在51 的基礎(chǔ)上擴(kuò)展一些功能而內(nèi)部結(jié)構(gòu)是與51 一致的。stc89c52有40個(gè)引腳,4個(gè)8位并行i/o口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級,2個(gè)16位定時(shí)/計(jì)數(shù)器。stc89c52的存儲器系統(tǒng)由4k的程序存儲器(掩膜rom),和128b的數(shù)據(jù)存儲器(ram)組成。stc89c52單片機(jī)的基本組成框圖見圖2-2。圖2-2 stc89c52單片機(jī)結(jié)2.1.1 stc8

10、9c52單片機(jī)主要特性1. 一個(gè)8 位的微處理器(cpu)。2. 片內(nèi)數(shù)據(jù)存儲器ram(128b),用以存放可以讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等。3. 片內(nèi)程序存儲器rom(4kb),用以存放程序、一些原始數(shù)據(jù)和表格。4. 四個(gè)8 位并行io 接口p0p3,每個(gè)口既可以用作輸入,也可以用作輸出。5. 兩個(gè)定時(shí)器計(jì)數(shù)器,每個(gè)定時(shí)器計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。6. 五個(gè)中斷源的中斷控制系統(tǒng)。7. 一個(gè)全雙工uart(通用異步接收發(fā)送器)的串行io 口,用于實(shí)現(xiàn)單片機(jī)之間或單機(jī)與微機(jī)之間的

11、串行通信。8. 片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12mhz。2.1.2 stc89c52單片機(jī)的中斷系統(tǒng)stc89c52系列單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級,可以實(shí)現(xiàn)二級中斷服務(wù)嵌套。2.1.3 stc89c52單片機(jī)的定時(shí)/計(jì)數(shù)器89c52單片機(jī)內(nèi)集成有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器:t0和t1,它們既可以工作于定時(shí)模式,也可以工作于外部事件計(jì)數(shù)模式,此外,t1還可以作為串行口的波特率發(fā)生器。2.1.4stc98c52燒錄過程1、選擇我所使用的單片機(jī)型號,就是stc89c52rc2、打開文件,要燒錄用戶程序,調(diào)入用戶的程序代碼(*.bin,*hex

12、)3、選擇串口,我選擇的是1-com1。4、設(shè)置是否雙倍速,我選擇的是雙倍速,也就是double speed。5、選擇“download/下載”按鈕,下載我所使用的程序進(jìn)單片機(jī)內(nèi)部,我是選擇“download/下載”按鈕,然后再給單片機(jī)上電復(fù)位。2.2 lcd液晶顯示器簡介2.2.1 液晶原理介紹液晶顯示器(lcd)英文全稱為liquid crystal display,它一種是采用了液晶控制透光度技術(shù)來實(shí)現(xiàn)色彩的顯示器。和crt顯示器相比,lcd的優(yōu)點(diǎn)是很明顯的。由于通過控制是否透光來控制亮和暗,當(dāng)色彩不變時(shí),液晶也保持不變,這樣就無須考慮刷新率的問題。本系統(tǒng)顯示部分用的是lcd液晶模塊,采

13、用一個(gè)161的字符型液晶顯示模塊。 2.2.2液晶模塊簡介lcd1602液晶模塊采用hd44780控制器,hd44780具有簡單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動,閃爍等功能,lm016l與單片機(jī)mcu通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(ir)和數(shù)據(jù)寄存器(dr)忙標(biāo)志(bf),顯示數(shù)ram(ddram),字符發(fā)生器roma(cgorom)字符發(fā)生器ram(cgram),地址計(jì)數(shù)器ram(ac)。ir用于寄存指令碼,只能寫入不能讀出,dr用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動寫入ddram和cgram,或者暫存從ddram和cgram讀出的數(shù)據(jù),

14、bf為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),ddtam用來存儲顯示的字符,能存儲80個(gè)字符碼。lcd1602液晶模塊的引腳圖如圖2-5所示。圖2-5lcd1602引腳圖寄存器選擇控制如表2-1。表2-1寄存器選擇控制rsr/w操作說明00寫入指令寄存器(清除屏等)01讀busy flag(db7)以及讀取位址計(jì)數(shù)器(db0db6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)2.2.3液晶顯示部分與stc89c52的接口 如圖2-6所示。用stc89c52的p2口作為數(shù)據(jù)線,用p3.2、p3.1、p3.0分別作為lcd的e、r/w、rs。其中e是下降沿觸發(fā)的片

15、選信號,r/w是讀寫信號,rs是寄存器選擇信號本模塊設(shè)計(jì)要點(diǎn)如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為57點(diǎn)陣,然后設(shè)置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位。向lcd的顯示緩沖區(qū)中送字符,程序中采用2個(gè)字符數(shù)組,一個(gè)顯示字符,另一個(gè)顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個(gè)要顯示的字符或數(shù)據(jù)送到lcd的顯示緩沖區(qū),程序延時(shí)2.5ms,判斷是否夠顯示的個(gè)數(shù),不夠則地址加一取下一個(gè)要顯示的字符或數(shù)據(jù)。圖2-6 lcd1602與stc89c52的接口2.3鍵盤模塊設(shè)計(jì)圖2-7鍵盤模塊電路圖硬件電路設(shè)計(jì)

16、圖如上圖所示。把單片機(jī)的p2.0p2.7端口通過8聯(lián)撥動撥碼開關(guān)連接到“4*4行列式鍵盤”,其中p2.0-p2.3作為列線,p2.4-p2.7作為行線,系統(tǒng)首先通過cpu對全部鍵盤進(jìn)行掃描,即把第一根行線置為“0”狀態(tài),其余行線置于“1”狀態(tài),讀入輸入緩沖器的狀態(tài),若其狀態(tài)全為“1”表明該行無鍵按下,再將第二根行線置為“0”狀態(tài),同樣讀入輸入緩沖器的狀態(tài),如其狀態(tài)也全為“1”,則置第一根行線置為“0”狀態(tài),以此類推5。如讀入輸入緩沖器的狀態(tài)不全為“1”,確定哪一根列線為“0”狀態(tài),當(dāng)某個(gè)鍵的行線和列線都為“0”狀態(tài)時(shí),表明該鍵按下。2.4 ad采集模塊設(shè)計(jì)2.4.1 adc0809 芯片簡介a

17、dc0809具有8個(gè)通道的模擬輸入線,在程序控制下對任意通道進(jìn)行a/d轉(zhuǎn)換。模擬輸入部分有8路多路開關(guān),可由3位地址輸入adda、addb、addc的不同組合來選擇,ale為地址鎖存信號,高電平有效,鎖存這三條地址輸入信號。主體部分是采用逐次逼近式的a/d轉(zhuǎn)換電路,由clk控制的內(nèi)部電路的工作,start為啟動命令,高電平有效,啟動adc0809內(nèi)部的a/d轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完成,輸出信號eoc有效,oe為輸出允許信號,高電平有效,打開輸出三態(tài)緩沖器,把轉(zhuǎn)換后的結(jié)果送db。圖5.2 adc0809管腳圖轉(zhuǎn)換數(shù)據(jù)的傳送 a/d轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)a/

18、d轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。 2.4.2 引腳功能說明in0in7:8路模擬量輸入端。 2-12-8:8位數(shù)字量輸出端。 adda、addb、addc:3位地址輸入線,選通8路模擬輸入中的一路 。ale:地址鎖存允許信號,輸入,高電平有效。 start: a/d轉(zhuǎn)換啟動脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復(fù)位,下降沿啟動a/d轉(zhuǎn)換)。 eoc: a/d轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)a/d轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。 oe:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)a/d轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門

19、,輸出數(shù)字量。 clk:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640khz。 ref(+)、ref(-):基準(zhǔn)電壓。 vcc:電源,單一電源:+5v。 gnd:地。2.5時(shí)鐘模塊的設(shè)計(jì)3.系統(tǒng)軟件設(shè)計(jì)3.1系統(tǒng)軟件總體設(shè)計(jì)圖3-1系統(tǒng)流程圖3.2程序設(shè)計(jì)原理軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來了。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測量,計(jì)算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在

20、系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。3.2.1 adc0809多路電壓檢測函數(shù)程序代碼如下:void delayms(unsigned int z) /延時(shí)函數(shù),z為多少就延時(shí)多少毫秒 unsigned int x,y;for(x = z; x 0 ; x-)for(y = 110 ; y 0 ; y-);void dep_key_scan(void) /獨(dú)立鍵盤掃描子函數(shù) /p1 |= 0x18; /每次掃描前,先將接鍵盤的引腳口拉高 if(key_1 = 0) /如果檢測到有鍵按下 delayms(10); /延時(shí)10msif(key_1 = 0) /再次判斷是否確實(shí)按下按鍵,進(jìn)行消抖操作。

21、 flag = flag;if(key_2 = 0) /同上,判斷第二個(gè)按鍵情況 delayms(10);if(key_2 = 0)ax+;void main(void)lcdinit();lcddispstring(2,1,ch voltage);lcddispstring(9,2,v);tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256;tr0=1;et0=1;ea=1;while(1) if(ax=8)ax=0;sel_ax(ax); /選擇通道st=0;st=1;st=0;while(eoc=0);oe=1;getdata=p2;

22、 /獲取電壓值cov2v(getdata,ax);divite_num(ax);oe=0;dep_key_scan();if(count_time = 40) if(flag = 0 )/輪換顯示lcddispnum(4,1,ax+1);lcddispstring(5,2,dispbuf);ax+;if(flag = 1)lcddispnum(4,1,ax+1);lcddispstring(5,2,dispbuf);count_time = 0;void t0(void) interrupt 1 using 0th0=(65536-50000)/256;tl0=(65536-50000)%25

23、6;count_time +;3.2.2 lcd1602程序代碼如下void delayn40us(unsigned int n)-延時(shí)函數(shù),延時(shí)40us的整數(shù)倍,傳入值n代表延時(shí),時(shí)間到n *40us,不能實(shí)現(xiàn)準(zhǔn)確延時(shí),只能實(shí)現(xiàn)大概時(shí)間的延時(shí),利用的是指令實(shí)現(xiàn)延時(shí)功能。開始for(i=n;i0;i-)for(j=0;j2;j+); 輸入 unsigned int i; unsigned char j; void lcd init (void) -液晶初始化函數(shù),對lcd1602進(jìn)行 初始化操作,在每一次實(shí)用液晶前必須用 到的,外部可調(diào)用函數(shù)。lcd write command(0x38);

24、-設(shè)置8位格式,2行,5x7*lcd write command(0x0c) -整體顯示,關(guān)光標(biāo),不閃爍lcd write command(0x06) -設(shè)定輸入方式,增量不移位lcd write command(0x01) -清除屏幕顯示 delayn40us(100) -清屏延時(shí) void lcd write command(unsigned char dat) -寫命令函數(shù),對lcd1602內(nèi)部寄存器進(jìn) 行操作。lcd_db=dat; lcd_rs=0; - 選擇寫指令lcd_rw=0 -寫入指令值 lcd_e=1 -使能lcd1602lcd_e=0 delayn40us(1) -寫命令

25、延時(shí) void lcd disp char(unsigned char x,unsigned char y,unsigned char dat) -在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)字符, 可外部調(diào)用 unsigned char address;if(y=1) yes noaddress=0x80+x; - 顯示在第一排的時(shí)候的x的地址address=0xc0+xlcd write command(address); -顯示在第二排的時(shí)候的x的地址 lcd write data(dat); -輸入地址 -輸入數(shù)據(jù)void lcd disp num (unsigned char x,unsi

26、gned char y,unsigned char dat) -在某個(gè)屏幕位置上(x,y)位置顯示一個(gè) 數(shù)字,可外部調(diào)用unsigned char address;if(y=1) address=0xc0+x;address=0x80+x; yes no -顯示在第一排的時(shí)候的x的地址 -顯示在第二排的時(shí)候的x的地 址lcd write command(address); lcd write data(dat+48); -輸入地址 -輸入數(shù)據(jù)void lcd disp string(unsigned char x,unsigned char y,unsigned char *string) -

27、在屏幕上顯示一串字符,考慮 到我的數(shù)值均存儲于數(shù)組中,為方便而作,允許外部調(diào)用while(*string != 0) -沒有檢測到字符串結(jié)尾時(shí) lcd disp char(x,y,*string+)x+ -逐個(gè)顯示字符串 -地址+1void lcd disp num int(unsigned char x,unsigned char y,unsigned int dat) -在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)無符號整形數(shù)字,可外部調(diào)用。 unsigned char temp5,i = 0,j=0; - -分離萬千百十個(gè)各個(gè)位臨時(shí)存儲temp0 = dat/10000%10;temp1 =

28、dat/1000%10;temp2 = dat/100%10;temp3 = dat/10%10;temp4 = dat%10;while(tempi = 0)&(i!=4) i+ -為保證即使傳入的數(shù)都是0也能顯示,加上i!=4for(j=0;j5-i;j+) -依次顯示各個(gè)數(shù)4.系統(tǒng)調(diào)試4.1硬件調(diào)試基于單片機(jī)的多路電壓采集系統(tǒng)的電路較大,對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,則會對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺破帶有包皮的導(dǎo)線,則會對電路造成短路現(xiàn)象。在本基于單片機(jī)的多路電壓采集系統(tǒng)的設(shè)計(jì)調(diào)試中遇到了很多的問題?;叵?/p>

29、這些問題只要認(rèn)真多思考都是可以避免的,以下為主要的問題:一開始的時(shí)候把a(bǔ)dc0809的數(shù)據(jù)線接錯(cuò)了一根導(dǎo)致不能正常的采集數(shù)據(jù),后來修正后便正常工作。4.2軟件調(diào)試單片機(jī)的多路電壓采集系統(tǒng)是多功能的數(shù)字型,所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時(shí)出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:1燒入程序后,lcd液晶顯示閃動,而且亮度不均勻。解決:首先對調(diào)用的延時(shí)進(jìn)行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時(shí),如果不在反回時(shí)

30、屏蔽掉最后的附值,則會出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。2當(dāng)用戶按下按鍵的時(shí)候,單片機(jī)讀取的數(shù)值跟設(shè)定的數(shù)值不對。解決:重新檢查矩陣鍵盤電路的連接,重新建立一個(gè)新的對應(yīng)關(guān)系。4.3調(diào)試結(jié)果(1)在測試中遇到lcd液晶為不顯示時(shí),首先使用試測儀對電路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞.經(jīng)過一系列的問題查找后系統(tǒng)最終能正常工作,并完成所有的功能。chanelvoltagech10.07vch20.39vch30.25vch40.11vch50.29vch60.41vch70.07v5.結(jié)論通過這次畢業(yè)設(shè)計(jì),我學(xué)到了不少課本上沒有的知識,也鍛煉了自己的動手能

31、力,將以前學(xué)過的零散的知識串到一起。經(jīng)過我長時(shí)間的設(shè)計(jì)及調(diào)試,本系統(tǒng)基本能實(shí)現(xiàn)單片機(jī)的多路電壓采集系統(tǒng)的所有功能。不足之處有:1.硬件的穩(wěn)定性有待進(jìn)一步提高2.系統(tǒng)人性化還不足。我的綜合設(shè)計(jì)主要涉及硬件和軟件兩方面的內(nèi)容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。基本掌握了protel99se原理圖的方法,并設(shè)計(jì)了一個(gè)單片機(jī)最小系統(tǒng)。通過開發(fā)板的設(shè)計(jì)和硬件搭建的過程,使我對51系單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,如lcd液晶,鍵盤等。并且我學(xué)會了分析問題解決問題的能力,加深了對所學(xué)理論知識的

32、理解和運(yùn)用。我的動手能力得到了很大的提高,創(chuàng)新意識得到了鍛煉。參考文獻(xiàn)1 劉振忠.數(shù)字電壓表發(fā)展概況和原理.電訊工程.1998,12 李全利.單片機(jī)原理及接口技術(shù).高等教育出版社.2010.93 沙占友.新型數(shù)字電壓表原理與應(yīng)用.機(jī)械工業(yè)出版社.2006,1-64 余永權(quán) atmel89系列單片機(jī)應(yīng)用技術(shù).北京航天航空大學(xué)出版社.2005 宋鳳娟 李國忠等.基于89c51單片機(jī)的數(shù)字電壓表設(shè)計(jì).20076 楊栓科 模擬電子技術(shù)基礎(chǔ).高等教育出版社.20057 胡大可 基于單片機(jī)8051的嵌入式開發(fā)指南.電子工業(yè)出版社.20018 和衛(wèi)星 李長杰 汪少華 電子電路cad實(shí)用技術(shù).中國科學(xué)技術(shù)大學(xué)

33、出版社9 atmel corporation.microcontroller data book.oct199510 grinev.v.g,grineva.l.v. amplitude digital voltmeter.instruments and experimental techniques,1975,114-11711 李建忠單片機(jī)原理及應(yīng)用西安:西安電子科技大學(xué),2002年12 韓志軍等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)m.機(jī)械工業(yè)出版社,200413 周潤景等. proteus在mcs-51&arm7系統(tǒng)中的應(yīng)用百例m.電子工業(yè)出版社,200614 馬忠梅等.單片機(jī)的c語言應(yīng)用程序設(shè)計(jì)m.北京

34、航空航天大學(xué)出版社,200615 劉樹中,孫書膺,王春平.單片機(jī)和液晶顯示驅(qū)動器串行接口的實(shí)現(xiàn)j.微計(jì)算機(jī)信息,2007附錄系統(tǒng)整體原理圖系統(tǒng)pcb設(shè)計(jì)圖系統(tǒng)源程序#include #includelcd1602.hunsigned char dispbuf8=0;float ad_res8 = 0;unsigned int count_time = 0;sbit st=p30;sbit oe=p32;sbit eoc=p31;sbit adda = p15;sbit addb = p16;sbit addc = p17;sbit key_1 = p13;sbit key_2 = p14;bi

35、t flag = 0;unsigned char getdata;unsigned int ax = 0;void sel_ax(unsigned char ax)if(ax & 0x01) = 0x01)adda = 0;else adda = 1;if(ax & 0x02) = 0x02)addb = 0;else addb = 10;if(ax & 0x04) = 0x04)addc = 0;else addc = 1;void cov2v(unsigned char res,unsigned char ax)float temp;temp = (double)res/255*5.0;a

36、d_resax = temp-255;void divite_num(unsigned char ax)dispbuf0=(int)ad_resax%10+48;dispbuf1=.; dispbuf2=(int)(ad_resax*10)%10+48;dispbuf3=(int)(ad_resax*100)%10+48; void delayms(unsigned int z) /延時(shí)函數(shù),z為多少就延時(shí)多少毫秒 unsigned int x,y;for(x = z; x 0 ; x-)for(y = 110 ; y 0 ; y-);void dep_key_scan(void) /獨(dú)立鍵盤

37、掃描子函數(shù) /p1 |= 0x18; /每次掃描前,先將接鍵盤的引腳口拉高 if(key_1 = 0) /如果檢測到有鍵按下 delayms(10); /延時(shí)10msif(key_1 = 0) /再次判斷是否確實(shí)按下按鍵,進(jìn)行消抖操作。 flag = flag;if(key_2 = 0) /同上,判斷第二個(gè)按鍵情況 delayms(10);if(key_2 = 0)ax+;void main(void)lcdinit();lcddispstring(2,1,ch voltage);lcddispstring(9,2,v);tmod=0x01;th0=(65536-50000)/256;tl0=

38、(65536-50000)%256;tr0=1;et0=1;ea=1;while(1) if(ax=8)ax=0;sel_ax(ax); /選擇通道st=0;st=1;st=0;while(eoc=0);oe=1;getdata=p2; /獲取電壓值cov2v(getdata,ax);divite_num(ax);oe=0;dep_key_scan();if(count_time = 40) if(flag = 0 )/輪換顯示lcddispnum(4,1,ax+1);lcddispstring(5,2,dispbuf);ax+;if(flag = 1)lcddispnum(4,1,ax+1)

39、;lcddispstring(5,2,dispbuf);count_time = 0;void t0(void) interrupt 1 using 0th0=(65536-50000)/256;tl0=(65536-50000)%256;count_time +;#include#includelcd1602.h/* function: void delayn40us(unsigned int n) description: 延時(shí)函數(shù),延時(shí)40us的整數(shù)倍,傳入值n代表延時(shí) 時(shí)間到n *40us,不能實(shí)現(xiàn)準(zhǔn)確延時(shí),只能實(shí)現(xiàn)大 概時(shí)間的延時(shí),利用的是指令實(shí)現(xiàn)延時(shí)功能。 calls: 沒有調(diào)用其

40、它函數(shù) called by: void lcdwritecommand(unsigned char dat); void lcdwritedata(unsigned char dat); input: unsigned int n - 用于延時(shí)時(shí)間的確定,取值、 為165535 output: 無 return: 無*/void delayn40us(unsigned int n)unsigned int i;unsigned char j; for(i=n;i0;i-)for(j=0;j2;j+); /* function: void lcdinit(void); description:

41、液晶初始化函數(shù),對lcd1602進(jìn)行初始化操作, 在每一次實(shí)用液晶前必須用到的,外部可調(diào)用 函數(shù)。 calls: void lcdwritecommand(unsigned char dat); delayn40us(unsigned int n); called by: main();或其他 input: 無 output: 無 return: 無*/void lcdinit(void)lcdwritecommand(0x38);/*設(shè)置8位格式,2行,5x7*/lcdwritecommand(0x38);/*設(shè)置8位格式,2行,5x7*/lcdwritecommand(0x38);/*設(shè)置

42、8位格式,2行,5x7,有的液晶做的不好,寫三遍保險(xiǎn)!*/ lcdwritecommand(0x0c);/*整體顯示,關(guān)光標(biāo),不閃爍*/ lcdwritecommand(0x06);/*設(shè)定輸入方式,增量不移位*/lcdwritecommand(0x01);/*清除屏幕顯示*/ delayn40us(100);/*清屏延時(shí)*/ /* function: void lcdwritecommand(unsigned char dat); description: 寫命令函數(shù),對lcd1602內(nèi)部寄存器進(jìn)行操作。 calls: delayn40us(unsigned int n); called by: void lcdinit(void); void lcddispchar(unsigned char x,unsigned char y,unsigned char dat); void lcddispnum(unsigned char x,unsigned char y,unsigned char dat); input: unsigned char dat - 寫入的命令 output: 無 return: 無*/void

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論