8路輸入模擬信號數值顯示電路單片機課程設計_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程設計</b></p><p>  8路輸入模擬信號數值顯示電路</p><p><b>  摘 要</b></p><p>  本系統(tǒng)是基于AT89S52單片機設計的,由具有8通道的模數轉換芯片ADC0809采集模擬信號,并將采集到的數據送入AT89S52進行處理,其中ADC0

2、809的1MHZ時鐘脈沖直接由單片機的ALE腳輸出的六分頻時鐘信號經過74LS74二分頻得到。在設計中采用了精簡電路及充分利用軟件資源為原則,采用了軟件譯碼,并利用三極管擴流來驅動數碼管。同時兼顧系統(tǒng)的性能指標,采用了四位數碼管進行動態(tài)顯示,分別顯示模擬通道數以及采集到的模擬電壓的數值。本系統(tǒng)經設計調試達到了預期的設計要求,能夠標準地自動輪流顯示8路模擬電壓數值量,精度為0.02V,誤差系數為0.01。</p><p

3、><b>  關 鍵 詞</b></p><p>  模擬信號; AT89S52; ADC0809; 數值顯示</p><p><b>  目錄</b></p><p>  一、設計任務及要求5</p><p>  二、 總體設計方案5</p>&

4、lt;p>  三、 硬件電路設計6</p><p>  1、模擬信號采集電路:6</p><p>  2、數據處理模塊電路7</p><p>  3、數碼顯示模塊電路8</p><p><b>  四、 軟件設計9</b></p><p><b>  1、主程序9&l

5、t;/b></p><p><b>  2、初始化程序9</b></p><p><b>  3、顯示子程序9</b></p><p>  4、模數轉換測量子程序9</p><p>  五、 檢測與調試10</p><p>  六、 系統(tǒng)改進設想11</

6、p><p><b>  七、 總結12</b></p><p><b>  參考文獻12</b></p><p>  附件一:總的電路原理圖13</p><p>  附件二:程序清單14</p><p>  附件三:數值量模擬量轉換對照表(ADC0809的參考電壓為5V)

7、19</p><p>  附件四:元件清單21</p><p><b>  設計任務及要求</b></p><p>  設計一個8路輸入模擬信號數值顯示電路,具體要求如下:</p><p>  a.8路模擬信號輸入;</p><p>  b.自動輪流顯示8個通道模擬信號的數值;</p&g

8、t;<p>  c.最小分辨率為0.02V;</p><p>  d.最大顯示數值為255;</p><p>  f.測量電壓最大值為5V。</p><p><b>  二、 總體設計方案</b></p><p>  8路輸入模擬信號數值顯示電路由A/D轉換、數據處理及顯示控制等組成。根據設計要求,要求能同

9、時輸入8路模擬信號,故在本設計中采用了8路的模數轉換器AD0809;由單片機AT89C52提供控制信號控制AD0809,并對采集到的數據進行處理,通過軟件編程實現8路模擬信號電壓數值自動輪流顯示;為得到8路模擬信號的數值進行輪流顯示,本設計中采用了四個數碼管,通過軟件直接譯碼,間接驅動4個共陽極數碼管,并通過動態(tài)顯示來輪流顯示4個數碼管。系統(tǒng)總體框圖設計如下圖所示:</p><p>  圖一 系統(tǒng)總體設計框圖&

10、lt;/p><p>  三、 硬件電路設計</p><p>  1、模擬信號采集電路:</p><p>  模擬信號采集需要用到模數轉換器,而ADC0809具有較高的轉換速度和精度,分辨率為8位,且受溫度影響較小,能較長時間保證精度,重現性好,功耗較低,且具有8路模擬開關,滿足本電路的設計要求,故在該電路模塊中采用了ADC0809進行8路模擬信號采集,模數轉換器ADC

11、0809各引腳功能如圖二所示:</p><p>  IN7~IN0:8個模擬量輸入端;</p><p>  START:啟動信號,當START為高電平時,A/D轉換開始;</p><p>  EOC:轉換結束信號,當A/D轉換結束后,發(fā)出一個正脈沖,表示A/D轉換完畢。此信號可用做A/D轉換是否結束的檢測信號,或向CPU申請中斷的信號;</p><

12、;p>  ENABLE:輸出允許信號。當此信號有效時,允許從A/D轉換器的鎖存器中讀取數字量。此信號可作為ADC0809的片選信號,高電平有效;</p><p>  CLOCLK:實時時鐘,可通過外接RC電路改變時鐘頻率; </p><p>  ALE:地址鎖存允許,高電平有效。當ALE為高電平時,允許C,B,A所示的通道被選中,并把該通道的模擬量接入A/D轉換器;</p>

13、;<p>  C,B,A:通道號選擇端子。C為最高位,A為最低位;</p><p>  D7~D0:數字量輸出端;</p><p>  VREF(+),VREF(-):參考電壓端子。用以提供D/A轉換器權電阻的標準電平。對于一般單極性模擬量輸入信號,VREF(+)=+5V,VREF(-)=0V;</p><p>  VCC:電源端子,接+5V;<

14、/p><p><b>  GND:接地端。</b></p><p>  ADC0809是由單一電源,+5V供電,模擬電壓的輸入范圍為0~5V,故本設計允許輸入的模擬電壓最大值為5V。該電路模塊的工作過程:第22腳ALE為地址鎖存控制,當輸入為高電平時,對地址信號進行鎖存;6腳START為測試控制,當輸入一個2us寬高電平脈沖時,就開始A/D轉換;7腳EOC為A/D轉換結束

15、標志,當A/D轉換結束時,7腳輸出高電平;9腳ENABLE為A/D轉換數據輸出允許控制,當ENABLE腳為高電平時,A/D轉換數據從端口輸出;則可讀出數據。ADC0809的轉換速度取決于芯片的時鐘頻率,要求時鐘頻率范圍為:10~1280KHZ,在本設計中我們采用了由單片機ALE腳的六分頻晶振信號再通過14024二分頻得到,故ADC0809的工作頻率為1MHZ,轉換時間為1US。</p><p>  圖二 模

16、擬信號采集電路</p><p>  2、數據處理模塊電路</p><p>  該電路主要完成將接受到的ADC0809轉換輸出的二進制數值進行BCD碼的轉換,并根據設計要求完成8路數值輪流顯示的功能,故需借助單片機來完成編程功能。</p><p>  在本設計中,采用了AT89S52單片機,AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程

17、Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,由單片機P0口接收二進制數據。</p><p>  設計中單片機中的I/O口都用做普通的輸入輸出口,由P1口接受AD0809送來的二進制數值,P0口是數碼管數值輸出口,P3.0~P3

18、.3作為數碼管的位驅動口。為得到AD0809的時鐘信號,在設計中,利用了單片機的ALE端口。ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖, 為了得到1MHZ的時鐘頻率,在電路中采用了74LS74帶預置和清除端的雙D觸發(fā)器74LS74,通過總原理圖的接法,可以得到二分頻器,連接至ALE端之后,可以得到滿足AD0809轉換的時鐘脈沖。7

19、4LS74的引腳功能表如下表一所示。</p><p>  表一 74LS74功能表</p><p>  單片機的P2口輸出控制信號,以此來控制ADC0809的轉換。具體的數據處理過程,將在軟件設計中進行詳細介紹。</p><p>  3、數碼顯示模塊電路</p><p>  根據設計要求,要求自動輪流顯示模擬通道數,以及8路模擬電壓數值,根

20、據功能要求,結合實際的布局布線復雜程度及調試的難易程度,為簡化電路起見,在設計中我們采用了動態(tài)顯示,并用四個連接的共陽數碼管取代了單個的數碼管,以做到調試簡單,實現容易。由于根據數碼管的參數要求,要求其驅動電流在10MA~20MA之間,在電路中采用9012三極管進行擴流來驅動四個數碼管;在本設計中段碼顯示是由P0口進行輸出,為防止數碼管灌入單片機的電流超出了允許的電流范圍,在數碼管與單片機的P1口之間接入了510歐姆的電阻。硬件電路圖如

21、圖 所示。</p><p>  同樣為了簡化電路,且充分利用單片機的資源,采用了軟件譯碼代替硬件譯碼的方式,來進行數值顯示。由于人眼的視覺暫留時間為0.1S(100MS),所以每位顯示的間隔不能超過20MS,并保持延時一段時間,以造成視覺暫留效果,給人看上去每個數碼管總在亮,在本設計中每位數值的顯示時間為1MS,一個通道的數值顯示包括了通道數及電壓數值輪流顯示,共輪番顯示255次,所以每個通道的停留時間為1S。

22、</p><p>  圖三 數碼顯示模塊電路</p><p>  由于本設計中顯示的數值不是實際的模擬電壓值,而只是由AD0809采集的到模擬電壓顯示的二進制數,為使使用者能夠通過數值得到實際的模擬電壓數值,可以通過下表進行查閱,例如:如果數碼管顯示的數值為2136,則表示,模擬通道IN2的電壓值為由數值量136代表的模擬電壓2.6656V。詳細轉換情況見附件三。</p>

23、<p><b>  四、 軟件設計</b></p><p><b>  1、主程序</b></p><p>  當進行一次測量后,將顯示出每一通道的A/D轉換值。每個通道的數據顯示時間在1s左右。主程序在調用顯示程序和測試程序之間循環(huán),其流程圖如圖四所示。</p><p><b>  2、初始化程序&

24、lt;/b></p><p>  系統(tǒng)上電時,將70H~77H內存單元清零,P2口置零。</p><p><b>  3、顯示子程序</b></p><p>  采用動態(tài)掃描法實現四位數碼管的數值顯示。測量所得的A/D轉換數據放在70H~77H內存單元中。測量數據在顯示時需經過轉換成為十進制BCD碼放在78H~7BH中,其中7BH存放通道

25、標志數。寄存器R3用來作為8路循環(huán)控制,R0用做顯示數據地址指針。 </p><p>  4、模數轉換測量子程序</p><p>  模數轉換測量子程序是用來控制對0809 8路模擬輸入電壓的A/D轉換,并將對應的數值移入70H~77H內存單元,其程序流程如圖五所示。</p><p>  具體程序清單見附件二。</p><p>  圖四

26、主程序流程圖 圖五 A/D轉換測量程序流程圖</p><p><b>  程序的資源分配:</b></p><p>  內部RAM70H~77H是8路模擬信號經過AD轉換得到的二進制數存儲單元,78H~7BH是分別作為數碼管的的模擬通道數,電壓數值的百位、十位、個位。</p><p><b>  

27、五、 檢測與調試</b></p><p>  按照總的電路圖進行布局和布線,焊接完成之后,進行了系統(tǒng)檢測,本電路的檢測步驟如下:</p><p>  a.在通電之前,先檢查電源與地端之間的電阻大小,在正常情況下,電阻值為無窮大,但實際情況為幾千歐姆。如果電阻小,則說明電路中存在短路現象,可通過定點與動點結合的試觸法進行測試,檢查短路的引腳,并矯正。</p><

28、;p>  b.通電之后,檢測單片機是否工作正常,通過檢測單片機的30腳ALE看是否有正弦波輸出,且其電壓值是否為電源電壓的一半。如果單片機沒工作,則看振蕩電路是否正常,檢測18,19腳的電壓是否在2.2V左右。</p><p>  c.檢測復位電路是否工作正常,按下復位開關之后,單片機的第9腳是否有高電平。如果沒有,則檢查復位電路是否連接正確。</p><p>  d.檢測各集成芯片

29、是否工作正常,即檢測各芯片的電源端是否有電壓。</p><p>  經檢測完畢無異常情況之后,可以通過燒寫器下載程序進行調試。</p><p>  以下是在本次調試過程當中遇到的問題:</p><p>  a.數碼管只亮了后面兩個,經檢測數碼管是好的,通過檢測電路焊接情況,由于存在虛焊的情況,經矯正之后數碼管亮了三個,為檢查唯一一個不亮的數碼管,采用了程序檢測與硬件

30、檢測相結合的方法,最后得出結論三極管是壞的,換掉三極管之后,數碼管工作完全正常。</p><p>  b.在數碼管顯示時,發(fā)現數碼管在初次采樣顯示為00,經調節(jié)程序的順序并修改,從程序上電之初就開始輪流采集八路模擬電壓,通過數碼管顯示,可以得到標準的電壓數值量。</p><p>  c.為檢測得到的電壓數值量與其代表的模擬電壓是否相一致,用數字電壓表測量模擬量與理論計算得到的模擬量進行比較

31、,在開始檢測時出現了較大的差值,經過檢測發(fā)現,電壓輸入端存在虛焊的現象,經矯正,得到的測量值與理論值之間的誤差為0.01左右,滿足題目的精度要求。</p><p><b>  六、 系統(tǒng)改進設想</b></p><p>  本設計可進一步進行指標和性能的完善,比如:可以擴大電壓的量程范圍,可以通過自動量程轉換來實現;可以采用C語言來編寫,提高顯示數值顯示精度,并可顯示

32、模擬電壓的實際值。</p><p><b>  七、 總結</b></p><p>  在本系統(tǒng)的設計制作過程中,經過兩人的合作與努力,雖然在設計與制作過程中出現了各種各樣的問題和情況,但是我們都能夠冷靜地進行硬件和軟件檢測,并針對性地進行糾正,在進行了全面檢測及反復調試之后,該系統(tǒng)已經完全實現了所有功能,并達到了預期的所有指標。</p><p&g

33、t;<b>  參考文獻</b></p><p>  [1]李朝青.單片機原理及接口技術.北京.1998166。</p><p>  [2]閻石.數字電子技術基礎.北京.1998.12.150。</p><p>  [3]藩新民,王燕芳.微型計算機控制技術.北京.2005.3.52。</p><p>  附件一:總的電路

34、原理圖</p><p><b>  附件二:程序清單</b></p><p>  主程序和中斷程序入口</p><p>  ORG 0000H ;程序執(zhí)行開始地址</p><p>  LJMP START ;跳至START執(zhí)行</p><p>  ORG 0003H

35、 ;外中斷0中斷入口地址</p><p>  RETI ;中斷返回(不開中斷)</p><p>  ORG 000BH ;定時器T0中斷入口地址</p><p>  RETI ;中斷返回(不開中斷)</p><p>  ORG 0013H ;外中斷1中斷入口地址</p

36、><p>  RETI ;中斷返回(不開中斷)</p><p>  ORG 001BH ;定時器T1中斷入口地址</p><p>  RETI ;中斷返回(不開中斷)</p><p>  ORG 0023H ;串行口中斷入口地址</p><p>  RET

37、I ;中斷返回(不開中斷)</p><p>  ORG 002BH ;定時器T2中斷入口地址</p><p>  RETI ;中斷返回(不開中斷)</p><p>  ;初始化程序中的各變量</p><p>  CLEARMEMIO:CLR A ;</p>&l

38、t;p>  MOV P2,A ;P2口置0</p><p>  MOV R0,#70H ;內存循環(huán)清0(70H~7BH)</p><p>  MOV R2,#0CH </p><p>  LOOPMEM: MOV @R0,A </p><p>  INC R0 </p>

39、<p>  DJNZ R2,LOOPMEM </p><p>  MOV A,#0FFH </p><p>  MOV P0,A ;P0,P1,P3端口置1</p><p>  MOV P1,A </p><p>  MOV P3,A </p><p>  RET

40、 ;子程序返回</p><p><b>  ;主程序</b></p><p>  START: LCALL CLEARMEMIO ;初始化</p><p>  MAIN: LCALL TEST ;測量一次</p><p>  LCALL DISP

41、LAY ;顯示數據一次</p><p>  AJMP MAIN ;返回MAIN循環(huán)</p><p>  NOP ;PC值出錯處理</p><p>  NOP ;空操作</p><p>  NOP ;空

42、操作</p><p>  LJMP START ;重新復位啟動</p><p>  DISPLAY: MOV R3,#08H ;8路信號循環(huán)顯示控制</p><p>  MOV R0,#70H ;顯示數據初址(70H~77H)</p><p>  MOV 7BH,#00H

43、 ;顯示通道路數(0~7)</p><p>  DISLOOP1: MOV A,@R0 ;顯示數據轉為三位十進制BCD碼存入</p><p>  MOV B,#100 ;7AH,79H,78H顯示單元內</p><p>  DIV AB ;顯示數據除100</p><p>  MOV

44、7AH,A ;商入7AH</p><p>  MOV A,#10 ;A放入數10</p><p>  XCH A,B ;余數與數10交換</p><p>  DIV AB ;余數除10</p><p>  MOV 79H,A ;商入79H</p>

45、<p>  MOV 78H,B ;余數入78H</p><p>  MOV R2,#0FFH ;每路顯示時間控制4ms*255</p><p>  DISLOOP2: LCALL DISP ;調四位LED顯示程序</p><p>  DJNZ R2,DISLOOP2 ;每路顯示時間控制</p>

46、<p>  INC R0 ;顯示下一路</p><p>  INC 7BH ;通道顯示數值加1</p><p>  DJNZ R3,DISLOOP1 ;8路顯示未完轉DISLOOP1再循環(huán)</p><p>  RET ;8路顯示完子程序結束</p><p&g

47、t;  ;LED共陽顯示子程序,顯示內容在78H~7BH,數據在P1輸出,列掃描在P3.0~P3.3口</p><p>  DISP: MOV R1,#78H ;賦顯示數據單元首址</p><p>  MOV R5,#0FEH ;掃描字</p><p>  PLAY: MOV P1,#0FFH ;關顯示&l

48、t;/p><p>  MOV A,R5 ;取掃描字</p><p>  ANL P3,A ;開顯示</p><p>  MOV A,@R1 ;取顯示數據</p><p>  MOV DPTR,#TAB ;取段碼表首址</p><p>  MOVC A,

49、@A+DPTR ;查顯示數據對應段碼</p><p>  MOV P1,A ;段碼放入P1口</p><p>  LCALL DL1MS ;顯示1ms</p><p>  INC R1 ;指向下一地址</p><p>  MOV A,P3 ;取P3口

50、掃描字 </p><p>  JNB ACC.3,ENDOUT ;四位顯示完轉ENDOUT結束</p><p>  RL A ;掃描字循環(huán)右移</p><p>  MOV R5,A ;掃描字放入R5暫存</p><p>  MOV P3,#0FFH ;顯示暫停

51、</p><p>  AJMP PLAY ;轉PLAY循環(huán)</p><p>  ENDOUT: MOV P3,#0FFH ;顯示結束,端口置1</p><p>  MOV P1,#0FFH </p><p>  RET ;子程序返回</p><p>

52、  ;LED數碼顯示管用共陽段碼表,分別對應0~9,最后一個是"熄滅符"</p><p>  TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH</p><p>  ;1ms延時子程序,LED顯示用</p><p>  DL1ms: MOV R6,#14H</p

53、><p>  DL1: MOV R7,#19H</p><p>  DL2: DJNZ R7,DL2</p><p>  DJNZ R6,DL1</p><p><b>  RET</b></p><p>  ;模數轉換測量子程序</p><p>

54、;  TEST: CLR A ;清累加器A</p><p>  MOV P2,A ;清P2口</p><p>  MOV R0,#70H ;轉換值存放首址</p><p>  MOV R7,#08H ;轉換8次控制</p><p>  LCALL TESTART

55、 ;啟動測試</p><p>  WAIT: JB P3.7,MOVD ;等A/D轉換結束后轉MOVD</p><p>  AJMP WAIT ;P3.7為0等待</p><p>  TESTART: SETB P2.3 ;鎖存測試通道地址</p><p>  NOP

56、 ;延時2us</p><p>  NOP </p><p>  CLR P2.3 ;測試通道地址鎖存完畢</p><p>  SETB P2.4 ;啟動測試,發(fā)開始脈沖</p><p>  NOP ;延時2us</p><p> 

57、 NOP </p><p>  CLR P2.4 ;發(fā)啟動脈沖完畢</p><p>  NOP ;延時4us</p><p>  NOP </p><p>  NOP </p><p>  NOP

58、 </p><p>  RET ;子程序調用結束</p><p>  ;取A/D轉換數據至70H~77H內存單元</p><p>  MOVD: SETB P2.5 ;0809輸出允許</p><p>  MOV A,P0 ;將A/D轉換值移入A</p>

59、<p>  MOV @R0,A ;放入內存單元</p><p>  CLR P2.5 ;關閉0809輸出</p><p>  INC R0 ;內存地址加1</p><p>  MOV A,P2 ;通道地址移入A</p><p>  INC A ;

60、通道地址加1</p><p>  MOV P2,A ;通道地址送0809</p><p>  CLR C ;清進位標志</p><p>  CJNE A,#08H,TESTCON ;通道地址不等于8轉TESTCONT再測試</p><p>  JC TESTCON ;通道地址小于8轉TESTC

61、ONT再測試</p><p>  CLR A ;大于或等于8,A/D轉換結束,恢復端口</p><p>  MOV P2,A ;P2口置1</p><p>  MOV A,#0FFH ;</p><p>  MOV P0,A ;P0置1</p><p> 

62、 MOV P1,A ;P1置1</p><p>  MOV P3,A ;P3置1</p><p>  RET ;取A/D轉換數據結束</p><p>  TESTCON: LCALL TESTART ;再發(fā)測試啟動脈沖</p><p>  LJMP WAIT ;跳至

溫馨提示

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

評論

0/150

提交評論