【正文】
壓值精確顯示出來。利用單片機 89c51與 ADC0808設計一個數(shù)字電壓表,將模擬信號 0~5 V 之間的直流電壓值轉換成數(shù)字量信號 0~ FF,以數(shù)碼管顯示。硬件即電子元器件的選擇且將它們連接成一個可行的硬件系統(tǒng),軟件是硬件系統(tǒng)功能化的重要組成部分。 ADC0808 是 ADC0809 的簡化版本,功能基本相同。 ADC0809 芯片有 28 條引腳, 各引腳定義: 引腳 1~ 5, 26~ 28( IN0~ IN7): 8 路模擬量輸入端。 7 腳 ( EOC): A/ D 轉換結束信號,輸出,當 A/ D 轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。要求時鐘頻率不高于 640KHZ. 12 腳 ( VREF( +))、 16( VREF( )):參考電壓輸入端 . 11 腳 ( Vcc):主電 源輸入端。 AT89C51的主要功能特性有:兼容 MCS51指令系統(tǒng) , 8k可反復擦寫 (1000次) Flash ROM ,32個雙向 I/O口 , 256x8bit內部 RAM, 3 個 16位可編程定時 /計數(shù)器中斷 , 時鐘頻率 024MHz,2 個串行中斷 ,可編程 UART 串行通道 , 2 個外部中斷源 ,共 8 個中斷源 ,2 個讀寫中斷口線 ,3 級加密位 ,低功耗空閑和掉電模式 ,軟件設置睡眠和喚醒功能 。當特定的某幾個數(shù)碼管點亮時,就顯示了特定的數(shù)字形狀。 圖 2 八段數(shù)碼管結構 9 74LS47 譯碼芯片 74LS47 是常用的 BCD 對七段顯示器譯碼器 /驅動器,可對共陽極七段數(shù)碼管進行譯碼功能。其四位 BCD 碼與對應的譯碼及數(shù)碼管顯示關系為: DCBA=0000,abcdefg=1000000,數(shù)碼管顯示 0; DCBA=0001,abcdefg=1111001,數(shù)碼管顯示 1; DCBA=0010,abcdefg=0100100,數(shù)碼管顯示 2; DCBA=0011,abcdefg=0110000,數(shù)碼管顯示 3; DCBA=0100,abcdefg=0011001,數(shù)碼管顯示 4; DCBA=0101,abcdefg=0010010,數(shù)碼管顯示 5; DCBA=0110,abcdefg=0000011,數(shù)碼管顯示 6; DCBA=0111,abcdefg=1111000,數(shù)碼管顯示 7; DCBA=1000,abcdefg=0000000,數(shù)碼管顯示 8; DCBA=1001,abcdefg=0011000,數(shù)碼管顯示 9; B I / R B O4R B I5LT3A7B1D6C2a13b12c11d10e9f15g14 圖 3 74LS47 芯片 系統(tǒng)整體工作原理 現(xiàn)對整體系統(tǒng)的硬件和軟件工作原理進行分析。地址不同,選擇通道不同?;璧姆謮涸?010V 變化,對此,可改變 A/D 的基準電壓 Vref( +), Vref( )接地不變。此時,將 Vref( +)接 10V,則可對 010V 的模擬電壓進行正確的量化轉換。用 C 語言進行程序的編寫。 sbit L_START=P3^7。i10。 void display10in0(uc zhi)。 11 void AD_IN1()。 //將轉換后的數(shù)字量給變量 aa; if(aa==0xff) //判斷是否超出量程; {warning(aa)。//通道 1 轉換子程序; bb=P0。 //否則調用通道 1的 10V顯示子程序; } } //5V 量程通道 0 顯示程序; void display5in0(uc zhi) { uc shu1,shu2。 /* 個位和片選信號相加, 0x20 是二進制 0010 0000,對低四位 BCD 數(shù)據(jù)值不影響,即 選中一片數(shù)碼管點亮,方便的進行動態(tài)掃描; */ shu1=zhi%51。 //點亮一片數(shù)碼管,顯示個位數(shù)值,其它均關閉; delay(1)。 zhi=zhi+5。 shu3=shu3/。 P1=shu3。 shu6=zhi/51。 shu5=shu5+0x40。 delay(1)。 shu8=shu8+0x80。 P1=shu8。 } //超出量程警告程序,若判斷超出量程,數(shù)碼管顯示零并閃爍; void warning(uc zhi) { P1=0xf0。 } //通道 0 轉換程序 void AD_IN0() { //通道 0 P3=0。 while(L_EOC!=1) //判斷轉換 是否完成; L_OE=1。 L_START=0。在芯片的選擇中,一般的 A/D芯片具有多路轉換通道,我們可利用多路通道設計成多通道的直流電壓表,對測量電壓值進行采集與處理,進而比較準 確的顯示其大小。根據(jù)電壓表的特性,設計了A/D 準換的子函數(shù),包括通道 0 和通道 1,還有數(shù)碼管顯示子 函數(shù),包括 5V和 10V 量程兩個。 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m be r R e vi s i onS i z eBD a t e : 25 S e p 20 10 S h e e t o f F i l e : C : \ D o c um e nt s a nd S e t t i ng s \ A d m i n i s t ra t or \桌面 \ M y D e s i gn .d d bD r a w n B y:IN 0 IN 1 該部分實際上是兩個滑動變阻器均接在電源和地兩端,中間的滑線端提供兩路待測信號,這兩路分別提供給模數(shù)轉換的通道 0 和通道 1。電路圖如圖 8。這四塊8 斷數(shù)碼管共用相同的數(shù)據(jù)輸入線,每塊有一根片選線,只有選中了該數(shù)碼管,它才會點亮并顯示。其中有兩塊電壓表起校準對比作用。 開始時,程序的顯示子程序里沒有修正的過程,仿真的結果精度不達要求: 例如,在 5V 量程下,標準電壓表的顯示值 ,而數(shù)碼管顯示 ;標準電壓表顯示,數(shù)碼管示值為 2。 10V 時:標準電壓表的顯示值 ,而數(shù)碼管顯示 ;標準電壓表的顯示值 ,而數(shù)碼管顯示 ;兩路通道顯示均如此,是四舍五入保留到小數(shù)點后兩位的值。此外,數(shù)碼管在正常工作顯示時,仍有一些閃爍跳動,這主要是因為用動態(tài)掃描法顯示,而在兩路通道間轉換時,要等待每次轉換完成,這之間的間隔超過 1 毫秒,使得測量值發(fā)生了變化,但總體上這不影響數(shù)碼管顯示和使用者的讀數(shù)。 通過這次綜合課程設計 ,我一對單片機的應用和開發(fā) 產(chǎn)生了 濃厚的興趣,課外也在進行一些 探究,希望能熟練地掌握它。 22 參考文獻 [l] 李現(xiàn)勇. VisualC++串口通信技術與工程實踐【 M】.北 京:人民郵電出版社. 2020. [2] 劉一. Visual C++縭程實例教程【 M】.北京:北京希望 電子出版社. 2020. [3] 康華光 .電子技術基礎(數(shù)字部分) .北京:高等教育出版社 .2020 [4] 康華光 .電子技術基礎(模擬部分) .北京:高等教育出版社 .2020 [5] 王靜霞 .單片機應 用技術( C 語言版) .北京:電子工業(yè)出版社 .2020 [6] 馬忠梅,等.單片機的 C 語言應用程序設計【 M】.北京: 北京航空航天大學出版社. 2020. [7] 江世明 . 基于 Proteus 的單片機應用技術 .北京:電子工業(yè)出版社 .20