![基于單片機的數(shù)字電壓表_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/11/a1e029fa-0a7b-407d-89a8-20ada70091c5/a1e029fa-0a7b-407d-89a8-20ada70091c51.gif)
![基于單片機的數(shù)字電壓表_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/11/a1e029fa-0a7b-407d-89a8-20ada70091c5/a1e029fa-0a7b-407d-89a8-20ada70091c52.gif)
![基于單片機的數(shù)字電壓表_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/11/a1e029fa-0a7b-407d-89a8-20ada70091c5/a1e029fa-0a7b-407d-89a8-20ada70091c53.gif)
![基于單片機的數(shù)字電壓表_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/11/a1e029fa-0a7b-407d-89a8-20ada70091c5/a1e029fa-0a7b-407d-89a8-20ada70091c54.gif)
![基于單片機的數(shù)字電壓表_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/11/a1e029fa-0a7b-407d-89a8-20ada70091c5/a1e029fa-0a7b-407d-89a8-20ada70091c55.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、廣州大學松田學院 畢業(yè)論文(設計)題 目 基于單片機的數(shù)字電壓表基于單片機的數(shù)字電壓表設計摘要:隨著電子科學技術的發(fā)展,電子測量成為廣大電子工作者必須掌握的手段,對測量的精度和功能的要求也越來越高,而電壓的測量甚為突出,因為電壓的測量最為普遍。本設計在參閱了大量前人設計的數(shù)字電壓表的基礎上,利用單片機技術結合a/d轉換芯片構建了一個八路電壓巡檢系統(tǒng)。然后詳細的介紹了八路電壓巡檢系統(tǒng)的設計流程,以及硬件系統(tǒng)和軟件系統(tǒng)的設計,并給出了硬件電路的原理圖。本設計可以循環(huán)的在lcd1602上面顯示八個電路的電壓??梢詼y量05v范圍。關鍵詞:lcd1602,獨立鍵盤,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)主要研究內容52. 總體方案論證與設計62.1主控模塊62.1.1 stc89c52單片機主要特性72.1.2 stc89c52單片機的中斷系統(tǒng)72.1.3 stc89c52單片機的定時/計數(shù)器82.2 lcd液晶顯示器簡介82.2.1 液晶原理介紹82.2.2液晶模塊簡介82.2.3液晶顯示部分與stc89c52的接口92.3鍵盤模塊設計102.4 ad采集模塊設計102.4.1 adc0809 芯片簡介102.4.2 引腳功能說明113.系統(tǒng)軟件設計133.1系統(tǒng)軟件總體設計133.2程序設計原理134.系統(tǒng)調試164.1硬件調試204.2軟
6、件調試204.3調試結果205.結論22參考文獻23附錄24系統(tǒng)整體原理圖24系統(tǒng)pcb設計圖24系統(tǒng)源程序251 緒 論1.1 目的和意義在電量的測量中電壓、電流和頻率是最基本的三個被測量,其中電壓量的測量最為經(jīng)常,而且隨著電子技術的發(fā)展,更是需要測量高精度的電壓,所以基于單片機電壓表測量儀器具有讀數(shù)準確方便、精度高、誤差小、靈敏度高和分辨率高,測量速度快等特點而倍受青睞?;趩纹瑱C電壓表式采用數(shù)字化測量技術設計的電壓表。具有讀數(shù)直觀、準確、顯示范圍寬、分辨率高、輸入阻抗大、集成度高、功耗小、抗干擾能力強,可擴展能力強等特點,本設計從各個角度分析了由單片機組成的數(shù)字電壓表的設計過程及各部分電
7、路的組成及其原理,并且分析了程序如何驅動單片機進而使系統(tǒng)運行起來的原理及方法。1.2 本系統(tǒng)主要研究內容數(shù)字電壓表采用的是數(shù)字化測量技術,把連續(xù)的模擬量,也就是連續(xù)的電壓值轉變?yōu)椴贿B續(xù)的數(shù)字量,加以處理后通過顯示器顯示出來。這次設計的硬件方面采用at89c51單片機,a/d轉換器采用adc0809對輸入的模擬信號進行轉換,最后在led屏顯示出來。而這個設計主要擬解決的是在使用過程中避免由于傳統(tǒng)電壓表指針讀書的方法而產(chǎn)生的讀書視覺差和視覺疲勞,同時因為單片機體積小、重量輕、價格便宜,電路外圍器件少,從根本上大大降低了研發(fā)成本。本系統(tǒng)設計制作一個基于單片機的多路電壓采集系統(tǒng)。能實現(xiàn)以下幾種功能:1
8、、鍵盤掃描,通過單片機檢測用戶按下的是哪個按鍵并執(zhí)行相應的功能。2、單片機通過adc0809采集8路的電壓值并可以顯示在液晶上。2. 總體方案論證與設計本系統(tǒng)以stc89c52單片機為控制核心,對系統(tǒng)進行初始化,主要完成對鍵盤的響應、lcd顯示、ad采集等功能的控制,起到總控和協(xié)調各模塊之間工作的作用。圖2-1系統(tǒng)結構框圖本系統(tǒng)結構如圖2-1所示,本設計可分為以下模塊:單片機主控模塊、鍵盤模塊、液晶模塊、ad采集模塊。下面對各個模塊的設計方案逐一進行論證分析。2.1主控模塊stc89c52單片機最初是由intel 公司開發(fā)設計的,但后來intel 公司把51 核的設計方案賣給了幾家大的電子設計
9、生產(chǎn)商,譬如 sst、philip、atmel 等大公司。如是市面上出現(xiàn)了各式各樣的但均以51 為內核的單片機,倒是intel 公司自己的單片機卻顯得遜色了。這些各大電子生產(chǎn)商推出的單片機都兼容51 指令、并在51 的基礎上擴展一些功能而內部結構是與51 一致的。stc89c52有40個引腳,4個8位并行i/o口,1個全雙工異步串行口,同時內含5個中斷源,2個優(yōu)先級,2個16位定時/計數(shù)器。stc89c52的存儲器系統(tǒng)由4k的程序存儲器(掩膜rom),和128b的數(shù)據(jù)存儲器(ram)組成。stc89c52單片機的基本組成框圖見圖2-2。圖2-2 stc89c52單片機結2.1.1 stc89c
10、52單片機主要特性1. 一個8 位的微處理器(cpu)。2. 片內數(shù)據(jù)存儲器ram(128b),用以存放可以讀寫的數(shù)據(jù),如運算的中間結果、最終結果以及欲顯示的數(shù)據(jù)等。3. 片內程序存儲器rom(4kb),用以存放程序、一些原始數(shù)據(jù)和表格。4. 四個8 位并行io 接口p0p3,每個口既可以用作輸入,也可以用作輸出。5. 兩個定時器計數(shù)器,每個定時器計數(shù)器都可以設置成計數(shù)方式,用以對外部事件進行計數(shù),也可以設置成定時方式,并可以根據(jù)計數(shù)或定時的結果實現(xiàn)計算機控制。6. 五個中斷源的中斷控制系統(tǒng)。7. 一個全雙工uart(通用異步接收發(fā)送器)的串行io 口,用于實現(xiàn)單片機之間或單機與微機之間的串行
11、通信。8. 片內振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調電容需要外接。最高允許振蕩頻率為12mhz。2.1.2 stc89c52單片機的中斷系統(tǒng)stc89c52系列單片機的中斷系統(tǒng)有5個中斷源,2個優(yōu)先級,可以實現(xiàn)二級中斷服務嵌套。2.1.3 stc89c52單片機的定時/計數(shù)器89c52單片機內集成有兩個可編程的定時/計數(shù)器:t0和t1,它們既可以工作于定時模式,也可以工作于外部事件計數(shù)模式,此外,t1還可以作為串行口的波特率發(fā)生器。2.1.4stc98c52燒錄過程1、選擇我所使用的單片機型號,就是stc89c52rc2、打開文件,要燒錄用戶程序,調入用戶的程序代碼(*.bin,*hex)3
12、、選擇串口,我選擇的是1-com1。4、設置是否雙倍速,我選擇的是雙倍速,也就是double speed。5、選擇“download/下載”按鈕,下載我所使用的程序進單片機內部,我是選擇“download/下載”按鈕,然后再給單片機上電復位。2.2 lcd液晶顯示器簡介2.2.1 液晶原理介紹液晶顯示器(lcd)英文全稱為liquid crystal display,它一種是采用了液晶控制透光度技術來實現(xiàn)色彩的顯示器。和crt顯示器相比,lcd的優(yōu)點是很明顯的。由于通過控制是否透光來控制亮和暗,當色彩不變時,液晶也保持不變,這樣就無須考慮刷新率的問題。本系統(tǒng)顯示部分用的是lcd液晶模塊,采用一
13、個161的字符型液晶顯示模塊。 2.2.2液晶模塊簡介lcd1602液晶模塊采用hd44780控制器,hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能,lm016l與單片機mcu通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個8位寄存器,指令寄存器(ir)和數(shù)據(jù)寄存器(dr)忙標志(bf),顯示數(shù)ram(ddram),字符發(fā)生器roma(cgorom)字符發(fā)生器ram(cgram),地址計數(shù)器ram(ac)。ir用于寄存指令碼,只能寫入不能讀出,dr用于寄存數(shù)據(jù),數(shù)據(jù)由內部操作自動寫入ddram和cgram,或者暫存從ddram和cgram讀出的數(shù)據(jù),bf
14、為1時,液晶模塊處于內部模式,不響應外部操作指令和接受數(shù)據(jù),ddtam用來存儲顯示的字符,能存儲80個字符碼。lcd1602液晶模塊的引腳圖如圖2-5所示。圖2-5lcd1602引腳圖寄存器選擇控制如表2-1。表2-1寄存器選擇控制rsr/w操作說明00寫入指令寄存器(清除屏等)01讀busy flag(db7)以及讀取位址計數(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ù)位為8位,顯示行數(shù)為1行,字型為57點陣,然后設置為整體顯示,取消光標和字體閃爍,最后設置為正向增量方式且不移位。向lcd的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個要顯示的字符或數(shù)據(jù)送到lcd的顯示緩沖區(qū),程序延時2.5ms,判斷是否夠顯示的個數(shù),不夠則地址加一取下一個要顯示的字符或數(shù)據(jù)。圖2-6 lcd1602與stc89c52的接口2.3鍵盤模塊設計圖2-7鍵盤模塊電路圖硬件電路設計圖如
16、上圖所示。把單片機的p2.0p2.7端口通過8聯(lián)撥動撥碼開關連接到“4*4行列式鍵盤”,其中p2.0-p2.3作為列線,p2.4-p2.7作為行線,系統(tǒng)首先通過cpu對全部鍵盤進行掃描,即把第一根行線置為“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),當某個鍵的行線和列線都為“0”狀態(tài)時,表明該鍵按下。2.4 ad采集模塊設計2.4.1 adc0809 芯片簡介adc
17、0809具有8個通道的模擬輸入線,在程序控制下對任意通道進行a/d轉換。模擬輸入部分有8路多路開關,可由3位地址輸入adda、addb、addc的不同組合來選擇,ale為地址鎖存信號,高電平有效,鎖存這三條地址輸入信號。主體部分是采用逐次逼近式的a/d轉換電路,由clk控制的內部電路的工作,start為啟動命令,高電平有效,啟動adc0809內部的a/d轉換,當轉換完成,輸出信號eoc有效,oe為輸出允許信號,高電平有效,打開輸出三態(tài)緩沖器,把轉換后的結果送db。圖5.2 adc0809管腳圖轉換數(shù)據(jù)的傳送 a/d轉換后得到的數(shù)據(jù)應及時傳送給單片機進行處理。數(shù)據(jù)傳送的關鍵問題是如何確認a/d轉
18、換的完成,因為只有確認完成后,才能進行傳送。 2.4.2 引腳功能說明in0in7:8路模擬量輸入端。 2-12-8:8位數(shù)字量輸出端。 adda、addb、addc:3位地址輸入線,選通8路模擬輸入中的一路 。ale:地址鎖存允許信號,輸入,高電平有效。 start: a/d轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復位,下降沿啟動a/d轉換)。 eoc: a/d轉換結束信號,輸出,當a/d轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。 oe:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當a/d轉換結束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸
19、出數(shù)字量。 clk:時鐘脈沖輸入端。要求時鐘頻率不高于640khz。 ref(+)、ref(-):基準電壓。 vcc:電源,單一電源:+5v。 gnd:地。2.5時鐘模塊的設計3.系統(tǒng)軟件設計3.1系統(tǒng)軟件總體設計圖3-1系統(tǒng)流程圖3.2程序設計原理軟件任務分析和硬件電路設計結合進行,哪些功能由硬件完成,哪些任務由軟件完成,在硬件電路設計基本定型后,也就基本上決定下來了。軟件任務分析環(huán)節(jié)是為軟件設計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調各執(zhí)行模塊和操作者的關系,在系統(tǒng)
20、軟件中充當組織調度角色的軟件。3.2.1 adc0809多路電壓檢測函數(shù)程序代碼如下:void delayms(unsigned int z) /延時函數(shù),z為多少就延時多少毫秒 unsigned int x,y;for(x = z; x 0 ; x-)for(y = 110 ; y 0 ; y-);void dep_key_scan(void) /獨立鍵盤掃描子函數(shù) /p1 |= 0x18; /每次掃描前,先將接鍵盤的引腳口拉高 if(key_1 = 0) /如果檢測到有鍵按下 delayms(10); /延時10msif(key_1 = 0) /再次判斷是否確實按下按鍵,進行消抖操作。 f
21、lag = flag;if(key_2 = 0) /同上,判斷第二個按鍵情況 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)%256;
23、count_time +;3.2.2 lcd1602程序代碼如下void delayn40us(unsigned int n)-延時函數(shù),延時40us的整數(shù)倍,傳入值n代表延時,時間到n *40us,不能實現(xiàn)準確延時,只能實現(xiàn)大概時間的延時,利用的是指令實現(xiàn)延時功能。開始for(i=n;i0;i-)for(j=0;j2;j+); 輸入 unsigned int i; unsigned char j; void lcd init (void) -液晶初始化函數(shù),對lcd1602進行 初始化操作,在每一次實用液晶前必須用 到的,外部可調用函數(shù)。lcd write command(0x38); -設
24、置8位格式,2行,5x7*lcd write command(0x0c) -整體顯示,關光標,不閃爍lcd write command(0x06) -設定輸入方式,增量不移位lcd write command(0x01) -清除屏幕顯示 delayn40us(100) -清屏延時 void lcd write command(unsigned char dat) -寫命令函數(shù),對lcd1602內部寄存器進 行操作。lcd_db=dat; lcd_rs=0; - 選擇寫指令lcd_rw=0 -寫入指令值 lcd_e=1 -使能lcd1602lcd_e=0 delayn40us(1) -寫命令延時
25、 void lcd disp char(unsigned char x,unsigned char y,unsigned char dat) -在某個屏幕位置上(x,y)位置顯示一個字符, 可外部調用 unsigned char address;if(y=1) yes noaddress=0x80+x; - 顯示在第一排的時候的x的地址address=0xc0+xlcd write command(address); -顯示在第二排的時候的x的地址 lcd write data(dat); -輸入地址 -輸入數(shù)據(jù)void lcd disp num (unsigned char x,unsign
26、ed char y,unsigned char dat) -在某個屏幕位置上(x,y)位置顯示一個 數(shù)字,可外部調用unsigned char address;if(y=1) address=0xc0+x;address=0x80+x; yes no -顯示在第一排的時候的x的地址 -顯示在第二排的時候的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ù)組中,為方便而作,允許外部調用while(*string != 0) -沒有檢測到字符串結尾時 lcd disp char(x,y,*string+)x+ -逐個顯示字符串 -地址+1void lcd disp num int(unsigned char x,unsigned char y,unsigned int dat) -在某個屏幕位置上(x,y)位置顯示一個無符號整形數(shù)字,可外部調用。 unsigned char temp5,i = 0,j=0; - -分離萬千百十個各個位臨時存儲temp0 = dat/10000%10;temp1 = da
28、t/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+) -依次顯示各個數(shù)4.系統(tǒng)調試4.1硬件調試基于單片機的多路電壓采集系統(tǒng)的電路較大,對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯誤,則會對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會刺破帶有包皮的導線,則會對電路造成短路現(xiàn)象。在本基于單片機的多路電壓采集系統(tǒng)的設計調試中遇到了很多的問題。回想這些
29、問題只要認真多思考都是可以避免的,以下為主要的問題:一開始的時候把adc0809的數(shù)據(jù)線接錯了一根導致不能正常的采集數(shù)據(jù),后來修正后便正常工作。4.2軟件調試單片機的多路電壓采集系統(tǒng)是多功能的數(shù)字型,所以對于它的程序也較為復雜,所以在編寫程序和調試時出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調試過程中主要遇到的問題如下:1燒入程序后,lcd液晶顯示閃動,而且亮度不均勻。解決:首先對調用的延時進行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,但是調用的顯示程序時,如果不在反回時屏蔽
30、掉最后的附值,則會出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。2當用戶按下按鍵的時候,單片機讀取的數(shù)值跟設定的數(shù)值不對。解決:重新檢查矩陣鍵盤電路的連接,重新建立一個新的對應關系。4.3調試結果(1)在測試中遇到lcd液晶為不顯示時,首先使用試測儀對電路進行測試,觀察是否存在漏焊,虛焊,或者元件損壞.經(jīng)過一系列的問題查找后系統(tǒng)最終能正常工作,并完成所有的功能。chanelvoltagech10.07vch20.39vch30.25vch40.11vch50.29vch60.41vch70.07v5.結論通過這次畢業(yè)設計,我學到了不少課本上沒有的知識,也鍛煉了自己的動手能力,
31、將以前學過的零散的知識串到一起。經(jīng)過我長時間的設計及調試,本系統(tǒng)基本能實現(xiàn)單片機的多路電壓采集系統(tǒng)的所有功能。不足之處有:1.硬件的穩(wěn)定性有待進一步提高2.系統(tǒng)人性化還不足。我的綜合設計主要涉及硬件和軟件兩方面的內容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作。基本掌握了protel99se原理圖的方法,并設計了一個單片機最小系統(tǒng)。通過開發(fā)板的設計和硬件搭建的過程,使我對51系單片機的接口有了更深層次的理解,熟悉了一些單片機常用的外圍電路引腳和連接方法,如lcd液晶,鍵盤等。并且我學會了分析問題解決問題的能力,加深了對所學理論知識的理解
32、和運用。我的動手能力得到了很大的提高,創(chuàng)新意識得到了鍛煉。參考文獻1 劉振忠.數(shù)字電壓表發(fā)展概況和原理.電訊工程.1998,12 李全利.單片機原理及接口技術.高等教育出版社.2010.93 沙占友.新型數(shù)字電壓表原理與應用.機械工業(yè)出版社.2006,1-64 余永權 atmel89系列單片機應用技術.北京航天航空大學出版社.2005 宋鳳娟 李國忠等.基于89c51單片機的數(shù)字電壓表設計.20076 楊栓科 模擬電子技術基礎.高等教育出版社.20057 胡大可 基于單片機8051的嵌入式開發(fā)指南.電子工業(yè)出版社.20018 和衛(wèi)星 李長杰 汪少華 電子電路cad實用技術.中國科學技術大學出版
33、社9 atmel corporation.microcontroller data book.oct199510 grinev.v.g,grineva.l.v. amplitude digital voltmeter.instruments and experimental techniques,1975,114-11711 李建忠單片機原理及應用西安:西安電子科技大學,2002年12 韓志軍等.單片機應用系統(tǒng)設計m.機械工業(yè)出版社,200413 周潤景等. proteus在mcs-51&arm7系統(tǒng)中的應用百例m.電子工業(yè)出版社,200614 馬忠梅等.單片機的c語言應用程序設計m.北京航空
34、航天大學出版社,200615 劉樹中,孫書膺,王春平.單片機和液晶顯示驅動器串行接口的實現(xiàn)j.微計算機信息,2007附錄系統(tǒng)整體原理圖系統(tǒng)pcb設計圖系統(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;bit
35、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;ad_
36、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ù),z為多少就延時多少毫秒 unsigned int x,y;for(x = z; x 0 ; x-)for(y = 110 ; y 0 ; y-);void dep_key_scan(void) /獨立鍵盤掃描
37、子函數(shù) /p1 |= 0x18; /每次掃描前,先將接鍵盤的引腳口拉高 if(key_1 = 0) /如果檢測到有鍵按下 delayms(10); /延時10msif(key_1 = 0) /再次判斷是否確實按下按鍵,進行消抖操作。 flag = flag;if(key_2 = 0) /同上,判斷第二個按鍵情況 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=(6
38、5536-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);l
39、cddispstring(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ù),延時40us的整數(shù)倍,傳入值n代表延時 時間到n *40us,不能實現(xiàn)準確延時,只能實現(xiàn)大 概時間的延時,利用的是指令實現(xiàn)延時功能。 calls: 沒有調用其它函
40、數(shù) called by: void lcdwritecommand(unsigned char dat); void lcdwritedata(unsigned char dat); input: unsigned int n - 用于延時時間的確定,取值、 為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進行初始化操作, 在每一次實用液晶前必須用到的,外部可調用 函數(shù)。 calls: void lcdwritecommand(unsigned char dat); delayn40us(unsigned int n); called by: main();或其他 input: 無 output: 無 return: 無*/void lcdinit(void)lcdwritecommand(0x38);/*設置8位格式,2行,5x7*/lcdwritecommand(0x38);/*設置8位格式,2行,5x7*/lcdwritecommand(0x38);/*設置8位
42、格式,2行,5x7,有的液晶做的不好,寫三遍保險!*/ lcdwritecommand(0x0c);/*整體顯示,關光標,不閃爍*/ lcdwritecommand(0x06);/*設定輸入方式,增量不移位*/lcdwritecommand(0x01);/*清除屏幕顯示*/ delayn40us(100);/*清屏延時*/ /* function: void lcdwritecommand(unsigned char dat); description: 寫命令函數(shù),對lcd1602內部寄存器進行操作。 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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《水土保持林》課件
- 《介詞加關系代詞》課件
- 新小區(qū)物業(yè)管理合同協(xié)議3篇
- 《分數(shù)應用題練習》課件
- 離婚房產(chǎn)分割與債務轉移協(xié)議書(二零二五版)3篇
- 保函擔保的合同范本
- 《金牌美容師培訓》課件
- srtp結題報告范文
- 《遠離早戀主題班會》課件
- 勞務合同范本 業(yè)務員
- 自動化設備技術合作協(xié)議書范文
- 三年級道德與法治下冊第一單元我和我的同伴教材解讀新人教版
- 全國交管12123駕駛證學法減分試題附答案
- GB/T 6404.2-2005齒輪裝置的驗收規(guī)范第2部分:驗收試驗中齒輪裝置機械振動的測定
- GB/T 11376-2020金屬及其他無機覆蓋層金屬的磷化膜
- 讖緯神學與白虎通義
- 分析化學(第6版)全套課件完整版電子教案最新板
- 海上日出配套說課PPT
- 新青島版(五年制)五年級下冊小學數(shù)學全冊導學案(學前預習單)
- (完整word版)重點監(jiān)管的危險化學品名錄(完整版)
- 詳情頁測試文檔20220802
評論
0/150
提交評論