版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 題 目:基于單片機的簡易數字電壓表設計</p><p><b> 姓 名:</b></p><p><b> 學 號:</b></p><p><b> 指導老師:</b></p><p> 設計時間:2012.4</p>
2、<p><b> 目 錄</b></p><p><b> 1.引 言1</b></p><p> 1.1.設計意義1</p><p> 1.2.系統功能要求1</p><p><b> 2.方案設計1</b></p>&
3、lt;p><b> 3.硬件設計2</b></p><p> 3.1.硬件電路2</p><p> 3.1.1.硬件電路圖部分模塊設計2</p><p> 3.1.2.硬件電路圖整體設計4</p><p> 3.2.硬件電路仿真5</p><p><b&g
4、t; 4.軟件設計5</b></p><p> 4.1.初始化程序5</p><p> 4.2.主程序5</p><p> 4.3.顯示子程序6</p><p> 4.4.A/D轉換測量子程序6</p><p><b> 5.系統調試7</b><
5、;/p><p><b> 6.設計總結8</b></p><p><b> 7.附 錄8</b></p><p> 7.1.源程序代碼8</p><p> 7.2.作品實物圖片14</p><p> 8.參考文獻14</p><p
6、> 基于單片機的簡易數字電壓表設計</p><p><b> 引 言</b></p><p><b> 設計意義</b></p><p> 傳統的指針式刻度電壓表功能單一,進度低,容易引起視差和視覺疲勞。而數字電壓表讀數直觀抗干擾信號等優(yōu)點。通過本次基于AT89C52單片機為控制系統,ADC0809為轉換的簡
7、易數字電壓表的課程設計可以從中了解片機控制的數字電壓表的基本原理,將課堂上的理論知識緊密的聯系起來,掌握包括硬件的組裝及相關軟件的使用和系統調試。</p><p><b> 系統功能要求</b></p><p> 簡易數字電壓表可以測量0-5V的8路輸入電壓值,并在4位LED數碼管上輪流顯示或單路選擇顯示。測量誤差約為0.02V。</p><p
8、><b> 方案設計</b></p><p> 按系統功能實現要求,決定控制系統采用AT89C52單片機,A/D轉換采用ADC0809.系統除能實現要求的功能外,還能方便的進行8路其他A/D轉換量的測量,遠程測量結果傳送等拓展功能。數字電壓表系統設計方案框圖如圖1所示:</p><p> 圖1 數字電壓表系統設計方案框圖 </p>&l
9、t;p><b> 硬件設計</b></p><p><b> 硬件電路</b></p><p> 硬件電路圖部分模塊設計</p><p> AT89C52芯片引腳圖如圖2 所示</p><p><b> 圖2</b></p><p>&l
10、t;b> 晶振電路</b></p><p> 晶振電路用于產生單片機工作所需的時鐘信號,使用晶體震蕩器時,c2,c3取值20~40PF,使用陶瓷震蕩器時c2,c3取值30~50PF。在設計電路板時,晶振和電容應盡量靠近芯片,以減小分布電容,保證震蕩器的穩(wěn)定性。18引腳接XTAL1,19引腳接XTAL2,20引腳接地。</p><p><b> 顯示電路設計
11、 </b></p><p> LED數碼管顯示器是由發(fā)光二極管顯示字段的顯示器件,也稱為數碼管。其外形結構如圖所示。它由8個發(fā)光二極管構成,通過不同的組合可用來顯示0-9、A-F及小數點“.”等字符。</p><p> 數碼管有共陰極和共陽極兩種結構規(guī)格,如圖2.5所示。圖中電阻為外接。共陰極數碼管的發(fā)光二極管陰極共地,當某發(fā)光二極管的陽極為高電平時,二極管點亮;共陽極
12、數碼管的發(fā)光二極管是陽極,并接高電平,對于需點亮的發(fā)光二極管將其陰極接低電平即可。</p><p> 數碼管原理電路圖: </p><p><b> 共陽極圖</b></p><p><b> 字段顯示</b></p><p><b> 硬件電路圖整體設計</b><
13、;/p><p> 簡易數字電壓測量由A/D轉換、數據處理及顯示控制等組成,電路原理圖如圖3 所示,A/D轉換有集成電路ADC0809完成。ADC0809據有8路模擬輸入端口,地址線(第23-25腳)可決定對哪一路模擬輸入作A/D轉換。第22腳為地址鎖存控制,當輸入為高電平時,對地址信號進行鎖存,第6腳為測試控制,當輸入一個2us寬高電平脈沖時,就開始A/D轉換。第7腳為A/D轉換結束標志,當A/D轉換結束時,第7腳
14、輸出高電平,第9腳為A/D轉換數據輸出允許控制,當OE腳為高電平時,A/D轉換數據從端口輸出。 </p><p> 單片機的P1、P3.0~P3.3端口作為四位LED數碼管顯示控制。其中P1端口控制段碼,P3.0~P3.3端口控制位選。P3.5端口用作單路顯示/循環(huán)轉換按鈕,P3.6端口用作單路顯示時選擇顯示的通道。P0端口作A/D轉換數據讀入,P2端口用作ADC0809的A/D轉換控制。</p>
15、<p> 圖3 數字電壓表電路原理圖</p><p> ?。ㄗ煮w小4號,宋體)</p><p><b> 硬件電路仿真</b></p><p> 根據設計的硬件電路圖,在pretous中就行仿真。論證硬件電路設計的可行性,根據仿真的結果與系統功能要求就行分析,最后達到設計要求??梢蕴岣吖ぷ餍始霸O計成本。仿真硬件點圖搭建如圖
16、3試。其中二分頻用D觸發(fā)器代替模數轉換器用的是與實際電路圖中功能相當的ADC0808代替的。通過仿真論證了硬件電路圖基本能滿足系統功能設計的需要。</p><p><b> 軟件設計</b></p><p><b> 初始化程序</b></p><p> 系統剛上電時,初始化程序主要用來執(zhí)行70H—77H內存單元清空
17、0和P2口置0等準備工作。</p><p><b> 主程序</b></p><p> 在剛上電時,系統默認為循環(huán)顯示8個通道的電壓值狀態(tài),當進行一次測量后,將顯示每一通道的A/D轉換值,每個通道的數據顯示時間為1s左右。主程序在調用顯示子程序與測量子程序之間循環(huán)。主程序流程圖如所示。</p><p><b> 顯示子程序<
18、;/b></p><p> 顯示子程序采用動態(tài)掃描法實現4位數碼管的數值顯示。測量所得的A/D轉換數據放在數組中,測量數據在顯示時須經過轉換成為十進制BCD碼放在對應的數組中。</p><p><b> 主程序流程圖</b></p><p> A/D轉換測量子程序</p><p> A/D轉換測量子程序用來
19、控制對ADC0809的8路模擬輸入電壓的A/D轉換,并將對應的數值放在數組中。A/D轉換測量子程序流程圖如圖所示。</p><p> 轉換測量子程序流程圖</p><p><b> 系統調試</b></p><p> 硬件組裝基本完成后,上電后發(fā)現數碼管根本就不亮。用數字電壓表檢測個芯片發(fā)現有些芯片的電源和接地線沒連接。通過一一檢測,找出
20、了其中漏掉的線。線路連接完整后數碼管亮了,但跟其他同學數碼管顯示的規(guī)律不一樣即有錯誤,自己檢測大半個上午未果。請同學幫我檢查最后發(fā)現是有跟連線接錯了。最后硬件連線完全正確后發(fā)現所編程序并不能安要求是數碼管顯示。通過思考調試最后找出其中的錯誤,在KEIL軟件中編譯調試后沒問題。最后生成HEX文件燒入單片機中,最后數碼管完全按要求顯示,整個課程設計成功。(字體小4號,宋體)</p><p><b> 設計
21、總結</b></p><p> 經過一段時間的努力,基于單片機的簡易數字電壓表基本完成。通過這次設計學會了Proteus和Keil軟件的使用方法,掌握了從系統的需要、方案的設計、功能模塊的劃分、原理圖的設計和電路圖的仿真的設計流程,積累了不少經驗。本次設計采用了AT89S52單片機芯片,與以往的單片機相比增加了許多新的功能,使其功能更為完善,應用領域也更為廣泛。設計中還用到了模/數轉換芯片ADC08
22、09,以前在學單片機課程時只是對其理論知識有了初步的理解。通過這次設計,對它的工作原理有了更深的理解。在調試過程中遇到很多問題,硬件上的理論知識學得不夠扎實,對電路的仿真方面也不夠熟練。在以后的實踐中,我將繼續(xù)努力學習電路設計方面的理論知識,并理論聯系實際,爭取在電路設計方面能有所提升。</p><p><b> 附 錄</b></p><p><b>
23、 源程序代碼</b></p><p> ;************************;</p><p> ; ;</p><p> ; 八路電壓測量顯示電路 ;</p><p> ; ;</p><p&
24、gt; ;************************;</p><p> ;測量電壓最大為5V,顯示最大值為5.00V</p><p> ;70H—77H存放采樣值,78H—7BH存放顯示數據,依次為個位、十位、百位、通道標志</p><p> ;P3.5作單路顯示-循環(huán)顯示轉換用,P3.6作單路顯示時選擇通道用。?</p><p&
25、gt;<b> ;</b></p><p> ;*************************************</p><p> ;* *</p><p> ;* 主程序和中斷程序入口 *</p><p>
26、 ;* *</p><p> ;*************************************</p><p> ORG 0000H</p><p> LJMP START</p><p> ORG 0003H</p>
27、<p><b> RETI</b></p><p> ORG 000BH</p><p><b> RETI</b></p><p> ORG 0013H</p><p><b> RETI</b></p><p>
28、 ORG 001BH</p><p><b> RETI</b></p><p> ORG 0023H</p><p><b> RETI</b></p><p> ORG 002BH</p><p><b> RETI</b
29、></p><p><b> ;</b></p><p> ;*************************************</p><p> ;* *</p><p> ;* 初始化程序中的各變量 *
30、</p><p> ;* *</p><p> ;*************************************</p><p> CLEARMEMIO: CLR A</p><p> MOV P2,A</p><
31、;p> MOV R0,#70H</p><p> MOV R2,#0DH</p><p> LOOPMEM: MOV @R0,A</p><p> INC R0</p><p> DJNZ R2,LOOPMEM</p><p> MOV 20
32、H,#00H</p><p> MOV A,#0FFH</p><p> MOV P0,A</p><p> MOV P1,A</p><p> MOV P3,A</p><p><b> RET</b></p><p><b
33、> ;</b></p><p> ;*************************************</p><p> ;* *</p><p> ;* 主 程 序 *</p><p> ;*
34、 *</p><p> ;*************************************</p><p> START: LCALL CLEARMEMIO ;初始化</p><p> MAIN: LCALL TEST
35、 ;測量一次</p><p> LCALL DISPLAY ;顯示數據一次</p><p><b> AJMPMAIN</b></p><p> NOP;PC值出錯處理</p><p><b> NOP</b></p><p><
36、;b> NOP</b></p><p> LJMPSTART</p><p><b> ;</b></p><p> ;*************************************</p><p> ;* 顯 示 控 制 程 序 *</p>
37、;<p> ;*************************************</p><p><b> ;</b></p><p> DISPLAY: JB 00H,DISP11 ;</p><p> MOV R3,#08H ;8路信號循環(huán)顯示控制</p&
38、gt;<p> MOV R0,#70H ;顯示數據初址70H~77H</p><p> MOV 7BH,#00H ;顯示通道路數初值</p><p> DISLOOP1: LCALL TUNBCD ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大5.00v)</p><p&
39、gt; MOV R2,#0FFH ;每路顯示時間控制 4MS*255</p><p> DISLOOP2: LCALL DISP ;調四位顯示程序</p><p> LCALL KEYWORK1 ;</p><p> DJNZ R2,DISLOOP2 ;</p><
40、;p> INC R0 ;顯示下一路</p><p> INC 7BH ;通道顯示數加一</p><p> DJNZ R3,DISLOOP1</p><p><b> RET</b></p><p><b> ;</b>&
41、lt;/p><p> DISP11: MOV A,7BH ;</p><p> SUBB A,#01H ;</p><p> MOV 7BH,A ;</p><p> ADD A,#70H ;</p><p>
42、 MOV R0,A ;</p><p> DISLOOP11: LCALL TUNBCD ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大5.00v)</p><p> MOV R2,#0FFH ;每路顯示時間控制 4MS*25</p><p> DISLOOP22:
43、 LCALL DISP ;調四位顯示程序</p><p> LCALL KEYWORK2 ;</p><p> DJNZ R2,DISLOOP22</p><p> INC 7BH ;通道顯示數加一</p><p><b> RET</b>&
44、lt;/p><p><b> ;</b></p><p> ;*************************************</p><p> ;* 顯示數據轉為三位BCD碼程序 *</p><p> ;*************************************</p
45、><p> ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大值5.00v)</p><p><b> ;</b></p><p> TUNBCD: MOV A,@R0 ;255/51=5.00V運算</p><p> MOV B,#51
46、 ;</p><p> DIV AB ;</p><p> MOV 7AH,A ;個位數放入7AH</p><p> MOV A,B ;余數大于19H,F0為1,乘法溢出,結果加5</p><p> CLR F0</p>
47、<p> SUBB A,#1AH</p><p> MOV F0,C</p><p> MOV A,#10 ;</p><p> MUL AB ;</p><p> MOV B,#51 ;</p><
48、;p> DIV AB</p><p> JB F0,LOOP2 ;</p><p> ADD A,#5</p><p> LOOP2: MOV 79H,A ;小數后第一位放入79H</p><p> MOV A,B</p>
49、<p> CLR F0</p><p> SUBB A,#1AH</p><p> MOV F0,C</p><p> MOV A,#10 ;</p><p> MUL AB ;</p><p> MOV
50、 B,#51 ;</p><p> DIV AB</p><p> JB F0,LOOP3 ;</p><p> ADD A,#5</p><p> LOOP3: MOV 78H,A ;小數后第二位放入78H</p>
51、<p><b> RET</b></p><p><b> ;</b></p><p> ;*************************************</p><p> ;* ? 顯?示 程 序 *</p><p> ;**
52、***********************************</p><p> ;共陽顯示子程序,顯示內容在78H—7BH</p><p><b> ;</b></p><p> DISP: MOV R1,#78H ;共陽顯示子程序,顯示內容在78H—7BH</p><
53、p> MOV R5,#0FEH ;數據在P1輸出,列掃描在P3.0-P3.3</p><p> PLAY: MOV P1,#0FFH</p><p> MOV A,R5</p><p> ANL P3,A</p><p> MOV A,@R1</p>
54、;<p> MOV DPTR,#TAB</p><p> MOVC A,@A+DPTR</p><p> MOV P1,A</p><p> JB P3.2,PLAY1 ;小數點處理</p><p> CLR P1.7 ;小數點顯示(顯示格式為XX.XX)<
55、;/p><p> PLAY1: LCALL DL1MS</p><p><b> INC R1</b></p><p> MOV A,P3</p><p> JNB ACC.3,ENDOUT</p><p><b> RL A</
56、b></p><p> MOV R5,A</p><p> MOV P3,#0FFH</p><p> AJMP PLAY</p><p> ENDOUT: MOV P3,#0FFH</p><p> MOV P1,#0FFH</p><p
57、><b> RET</b></p><p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH</p><p><b> ;</b></p><p> ;**********************************
58、***</p><p> ;* ? ? 延時程序 *</p><p> ;*************************************</p><p><b> ;</b></p><p> DL10MS: MOV R6,#0D0H ;
59、10MS延時子程序</p><p> DL1: MOV R7,#19H</p><p> DL2: DJNZ R7,DL2</p><p> DJNZ R6,DL1</p><p><b> RET</b></p><p><b>
60、;</b></p><p> DL1MS: MOV R4,#0FFH ;513+513=1MS</p><p> LOOP11: DJNZ R4,LOOP11</p><p> MOV R4,#0FFH</p><p> LOOP22: DJNZ
61、 R4,LOOP22</p><p><b> RET</b></p><p><b> ;</b></p><p> ;*************************************</p><p> ;* ? 電壓測量(A/D)子程序 *</p&g
62、t;<p> ;*************************************</p><p> ; 一次測量數據8個,依次放入70H-77H單元中</p><p><b> ;</b></p><p> TEST: CLR A ;模數轉換子程序</p>
63、<p> MOV P2,A</p><p> MOV R0,#70H ;轉換值存放首址</p><p> MOV R7,#08H ;轉換8次控制</p><p> LCALL TESTART ;啟動測試</p><p> WAIT: JB P3.
64、7,MOVD ;等A/D轉換結束信號</p><p> AJMP WAIT</p><p><b> ;</b></p><p> TESTART: SETB P2.3 ;測試啟動</p><p><b> NOP</b></p><
65、;p><b> NOP</b></p><p> CLR P2.3</p><p> SETB P2.4</p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR
66、 P2.4</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> RET
67、</b></p><p><b> ;</b></p><p> MOVD: SETB P2.5 ;取A/D轉換數據</p><p> MOV A,P0</p><p> MOV @R0,A</p><p> CLR
68、 P2.5</p><p> INC R0</p><p> MOV A,P2 ;通道地址加1</p><p><b> INC A</b></p><p> MOV P2,A</p><p> CJNE A,#08H,TESTEND
69、 ;等8路A/D轉換結束</p><p> TESTEND: JC TESTCON</p><p> CLR A ;結束恢復端口</p><p> MOV P2,A</p><p> MOV A,#0FFH</p><p>
70、MOV P0,A</p><p> MOV P1,A</p><p> MOV P3,A</p><p><b> RET</b></p><p><b> ;</b></p><p> TESTCON: LCALL TES
71、TART</p><p> LJMP WAIT</p><p><b> ;</b></p><p> ;*************************************</p><p> ;* ? 按鍵檢測子程序 *</p><p> ;
72、*************************************</p><p><b> ;</b></p><p> KEYWORK1: JNB P3.5,KEY1</p><p> KEYOUT: RET</p><p><b> ;</b>
73、;</p><p> KEY1: LCALL DISP ;延時消抖</p><p> JB P3.5,KEYOUT</p><p> WAIT11: JNB P3.5,WAIT12</p><p> CPL 00H</p><p&g
74、t; MOV R2,#01H</p><p> MOV R3,#01H</p><p><b> RET</b></p><p><b> ;</b></p><p> WAIT12: LCALL DISP ;鍵釋放等待時顯示用<
75、/p><p> AJMP WAIT11</p><p><b> ;</b></p><p> KEYWORK2: JNB P3.5,KEY1</p><p> JNB P3.6,KEY2</p><p><b> RET</b><
76、;/p><p><b> ;</b></p><p> KEY2: LCALL DISP ;延時消抖用</p><p> JB P3.6,KEYOUT</p><p> WAIT22: JNB P3.6,WAIT21</p>&
77、lt;p> INC 7BH</p><p> MOV A,7BH</p><p> CJNE A,#08H,KEYOUT11</p><p> KEYOUT11: JC KEYOUT1</p><p> MOV 7BH,#00H</p><p> K
78、EYOUT1: RET</p><p><b> ;</b></p><p> WAIT21: LCALL DISP ;鍵釋放等待時顯示用</p><p> AJMP WAIT22</p><p><b> ;</b></p&g
79、t;<p><b> END</b></p><p><b> 作品實物圖片</b></p><p><b> 參考文獻</b></p><p> [1] 郭天祥.新概念51單片機C語言教程:入門,提高,開發(fā),擴展全攻略.北京:電子工業(yè)出版社,2009.1</p>
80、<p> [2] 張毅剛,彭喜元,彭宇.單片機原理及應用(第二版).北京:高等教育出版社,2010.5</p><p> [3] Mark Nelson著.瀟湘工作室譯.串行通信開發(fā)指南[M].中國水利水電出版社,2002. </p><p> [4] 韓潤萍,陳小萍.點陣LED顯示屏控制系統[J].微計算機信息,2003,19(10):50-51. </p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--簡易數字電壓表
- 課程設計----單片機簡易數字電壓表
- 單片機課程設計---基于單片機的數字電壓表設計
- 單片機課程設計--簡易數字電壓表的設計
- 單片機課程設計報告--基于單片機的數字電壓表
- 單片機課程設計--簡易數字電壓表的設計
- 數字電壓表課程設計--基于單片機的簡易數字電壓表的設計
- 數字電壓表課程設計--基于單片機的簡易數字電壓表的設計
- 單片機課程設計報告--基于單片機的數字電壓表
- 簡易數字電壓表單片機課程設計
- 簡易數字電壓表單片機課程設計
- 單片機課程設計-數字電壓表
- 單片機課程設計---數字電壓表
- 單片機課程設計-數字電壓表
- 單片機(數字電壓表)課程設計
- 單片機課程設計報告--基于單片機的數字電壓表.doc
- 單片機課程設計----數字電壓表
- 單片機課程設計-數字電壓表
- 單片機課程設計--數字電壓表
- 單片機課程設計--數字電壓表
評論
0/150
提交評論