基于單片機簡易數字電壓表的設計_第1頁
基于單片機簡易數字電壓表的設計_第2頁
基于單片機簡易數字電壓表的設計_第3頁
基于單片機簡易數字電壓表的設計_第4頁
基于單片機簡易數字電壓表的設計_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

簡易數字電壓表的設計學院:機電工程學院專業:自動化X班姓名:XXX學號:XXXXXXXXXX目錄摘要及關鍵詞-------------------------------------------3總體設計方案-------------------------------------------3硬件電路及仿真設計------------------------------------10程序設計及調試----------------------------------------12本人承當的小組工作以及設計體會------------------------13參考文獻----------------------------------------------13元器件清單及程序清單----------------------------------13摘要:本次設計主要由三個模塊組成:A/D轉換模塊,數據處理模塊及顯示模塊。A/D轉換主要由芯片ADC0809來完成,它負責把采集到的模擬量轉換為相應的數字量在傳送到數據處理模塊。數據處理那么由芯片AT89C52來完成,其負責把ADC0809傳送來的數字量經過一定的數據處理,送到LCD1602液晶顯示模塊進行顯示;此外,它還控制著ADC0809芯片工作。關鍵詞:數字電路單片機ADC0809LCD1602總體方案的設計:本次設計的要求如下:可以選擇測量8路1-5V的8路電壓值:可輪流顯示或單路選擇顯示〔可選〕;測量顯示的最小分辨率為0.01V,測量的誤差正負0.02V;具有電壓過低,過高聲光報警功能,報警限可獨立設置。設計思路:根據設計的要求,進行器件的選擇。芯片控制選取STC89C52單片機,由于要控制8路,應選取ADC0809的數模轉換,顯示局部選用目前很流行的LCD1602的液晶顯示,最后采用8個開關控制8個通道,所以選取74LS148。下面進行逐一表達:STC89C52單片機芯片管腳如下STC89C52的管腳圖STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得STC89C52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。具有以下標準功能:8k字節Flash,512字節RAM,32位I/O口線,看門狗定時器,內置4KBEEPROM,MAX810復位電路,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口。另外STC89X52可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35Mhz,6T/12T可選。復位電路設計單片機在啟動運行時都需要復位,使CPU和系統中的其他部件都處于一個確定的初始狀態,并從這個狀態開始工作。MCS-51單片機有一個復位引腳RST,采用施密特觸發輸入。當震蕩器起振后,只要該引腳上出現2個機器周期以上的高電平即可確保時器件復位[1]。復位完成后,如果RST端繼續保持高電平,MCS-51就一直處于復位狀態,只要RST恢復低電平后,單片機才能進入其他工作狀態。單片機的復位方式有上電自動復位和手動復位兩種,下列圖是51系列單片機統常用的上電復位和手動復位組合電路,只要Vcc上升時間不超過1ms,它們都能很好的工作[1]。復位電路時鐘電路設計單片機中CPU每執行一條指令,都必須在統一的時鐘脈沖的控制下嚴格按時間節拍進行,而這個時鐘脈沖是單片機控制中的時序電路發出的。CPU執行一條指令的各個微操作所對應時間順序稱為單片機的時序。MCS-51單片機芯片內部有一個高增益反相放大器,用于構成震蕩器,XTAL1為該放大器的輸入端,XTAL2為該放大器輸出端,但形成時鐘電路還需附加其他電路[1]。本設計系統采用內部時鐘方式,利用單片機內部的高增益反相放大器,外部電路簡,只需要一個晶振和2個電容即可,如下列圖所示。時鐘電路ADC0809:ADC0809是美國國家半導體公司生產的CMOS工藝8通道,8位逐次逼近式A/D模數轉換器。其內部有一個8通道多路開關,它可以根據地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。是目前國內應用最廣泛的8位通用A/D芯片。下列圖是內部電路結構及外部管腳圖:

1.主要特性1〕8路輸入通道,8位A/D轉換器,即分辨率為8位。2〕具有轉換起停控制端。3〕轉換時間為100μs(時鐘為640kHz時),130μs〔時鐘為500kHz時〕4〕單個+5V電源供電5〕模擬輸入電壓范圍0~+5V,不需零點和滿刻度校準。6〕工作溫度范圍為-40~+85攝氏度7〕低功耗,約15mW。2.內部結構ADC0809是CMOS單片型逐次逼近式A/D轉換器,內部結構如下圖,它由8路模擬開關、地址鎖存與譯碼器、比擬器、8位開關樹型A/D轉換器、逐次逼近存放器、邏輯控制和定時電路組成。3.外部特性〔引腳功能〕ADC0809芯片有28條引腳,采用雙列直插式封裝,如下圖。下面說明各引腳功能。IN0~IN7:8路模擬量輸入端。2-1~2-8:8位數字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路ALE:地址鎖存允許信號,輸入,高電平有效。START:A/D轉換啟動脈沖輸入端,輸入一個正脈沖〔至少100ns寬〕使其啟動〔脈沖上升沿使0809復位,下降沿啟動A/D轉換〕。EOC:A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平〔轉換期間一直為低電平〕。OE:數據輸出允許信號,輸入,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能翻開輸出三態門,輸出數字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。REF〔+〕、REF〔-〕:基準電壓。Vcc:電源,單一+5V。GND:地。ADC0809的工作過程首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經譯碼選通8路模擬輸入之一到比擬器。START上升沿將逐次逼近存放器復位。下降沿啟動A/D轉換,之后EOC輸出信號變低,指示轉換正在進行。直到A/D轉換完成,EOC變為高電平,指示A/D轉換結束,結果數據已存入鎖存器,這個信號可用作中斷申請。當OE輸入高電平時,輸出三態門翻開,轉換結果的數字量輸出到數據總線上。注釋:由于仿真軟件proteus沒有adc0809,故仿真的時候選取adc0808取代,只有輸出數字信號時引腳的排序不同。LCD1602液晶:Lcd1602的引腳圖工業字符型液晶,能夠同時顯示16x02即32個字符。〔16列2行〕注:為了表示的方便,后文皆以1表示高電平,0表示低電平。1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊它有假設干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用。1602是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊〔顯示字符和數字〕。管腳功能1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器比照度調整端,接正電源時比照度最弱,接地電源時比照度最高〔比照度過高時會產生“鬼影〞,使用時可以通過一個10K的電位器調整比照度〕。第4腳:RS為存放器選擇,高電平1時選擇數據存放器、低電平0時選擇指令存放器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端。第7~14腳:D0~D7為8位雙向數據端。1602液晶模塊內部的字符發生存儲器〔CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比方大寫的英文字母“A〞的代碼是01000001B〔41H〕,顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A〞。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如'A’。以下是1602的16進制ASCII碼表地址:讀的時候,先讀左邊那列,再讀上面那行,如:感慨號!的ASCII為0x21,字母B的ASCII為0x42〔前面加0x表示十六進制〕74LS148:管腳圖如上輸入輸出關系如下列圖硬件電路以及仿真設計:硬件電路設計由6個局部組成;A/D轉換電路,AT89C52單片機系統,LCD顯示系統、時鐘電路、復位電路以及測量電壓輸入電路。硬件電路設計框圖如下列圖所示。時鐘電路時鐘電路復位電路A/D轉換電路測量電壓輸入顯示系統STC89C52P1P2P0P2本次選用proteus仿真軟件,因為該軟件具備了革命性的特點1.互動的電路仿真用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,局部SPI器件,局部IIC器件。2.仿真處理器及其外圍電路可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設計開發環境。在選擇完所要用的元器件后連接得如圖:連接如下圖電路并仿真成功!誤差分析通過以上仿真測量結果可得到簡易數字電壓表與“標準〞數字電壓表比照測試表,如下表所示:標準電壓值/V簡易電壓表測量值/V絕對誤差/V0.000.000.000.500.510.011.001.000.001.501.510.012.002.000.002.502.500.003.003.000.003.503.500.004.004.000.004.995.000.01程序設計及調試:開始初始化開始初始化調用A/D轉換子程序調用顯示子程序結束初始化程序所謂初始化,是對將要用到的MCS_51系列單片機內部部件或擴展芯片進行初始工作狀態設定,初始化子程序的主要工作是設置定時器的工作模式,初值預置,開中斷和翻開定時器等[9]。A/D轉換子程序A/D轉換子程序用來控制對輸入的模塊電壓信號的采集測量,并將對應的數值存入相應的內存單元,其轉換流程圖如圖13所示。開始啟動轉換開始啟動轉換A/D轉換結束?輸出轉換結果數值轉換顯示結束圖13A/D轉換流程圖3顯示子程序跟據LCD1602液晶的顯示方式,先對其進行初始化,輸入設置方式,在顯示數值的時候要先寫地址符號。Write_LCD_Command(0x80);//設置顯示的初始位置LCD_Display(display_buffer[0]);//顯示測得的數據本人在小組中的工作及設計體會:由于我承當小組長的職位,在設計的時候兼顧整體的方案。根據本小組成員的需要及個人所長,工作分配如下:XXX〔我〕:仿真電路圖的設計及程序的設計XX:仿真電路圖的設計及電路圖的布線XXX:元器件的采購及電路圖的焊接設計體會:本次設計很大程度考驗了一個團隊的合作能力,一個人并不能擅長做所有的東西,而對于設計,其關鍵就在于設計的思路,有步驟的設計可以省去很多不必要的麻煩,我覺得做這樣的課程設計,不僅僅是考驗我們的設計能力,或者說是寫程序能力,而是我們將成品做出來后,它并沒有按照我們的設定工作,更大程度的考驗我們解決問題的能力。比方這次我們的設計,在仿真成功后,電路板焊接完畢,連線完畢,將程序輸入到單片機里工作時就出了過失,檢查了很久的連線都沒有檢查出來,然后就想到了測電位的方法來判斷,當時就得出了結論:單片機沒有工作。省去了大量的不必要的檢查導線的問題,最后查出復位開關焊接出錯了,也就很容易的改正過來了!參考文獻:1.MCS-51單片機原理、系統設計與應用〔萬福君等著清華大學出版社〕2.51單片機C語言教程〔郭天祥著電子工業出版社〕元器件清單:STC89C52單片機*1LCD1602液晶*1杜邦線導線假設干電阻1K*9ADC0809*1按鍵*1晶振12M*174LS148*1排針假設干點解電容10uf*1104電容*2程序清單:#include<reg52.h>#include<intrins.h>#include<string.h>#definedat_portP0#defineucharunsignedchar#defineuintunsignedint#definedelay4us(){_nop_();_nop_();_nop_();_nop_();}sbitAB3=P3^0;//對74HC148進行判斷sbitAB2=P3^1;//報警設置sbitRS=P2^0;//RS=1數據RS=0命令sbitRW=P2^1;//RW=1讀取RW=0寫入sbitE=P2^2;//E使能信號sbitEOC=P2^4;sbitOE=P2^5;sbitSTART=P2^3;sbitCLOCK=P2^6;voidRefresh_show();voiddelay50us(uintm){uintn,k;for(n=m;n>0;n--)for(k=25;k>0;k--);}voidWrite_LCD_Command(ucharcmd);//向LCD寫入命令voidWrite_LCD_Data(uchardat);//向LCD寫入一個字節的數據函數voidInitialize_LCD1602();//液晶初始化函數voidLCD_Display(uchar*str);//在LCD上顯示字符串//---------------忙檢查-------------------//ucharLCD_Busy_Check(){ucharLCD_Status;RS=0;RW=1;E=1;delay50us(4);LCD_Status=P0;E=0;returnLCD_Status;}//--------------向LCD寫入命令--------------------//voidWrite_LCD_Command(ucharcmd){while((LCD_Busy_Check()&0x80)==0x80);//忙等待RS=0;RW=0;E=0;P0=cmd;delay4us();E=1;delay4us();E=0;}//-----------向LCD寫入一個字節的數據函數-----------------*/voidWrite_LCD_Data(uchardat){while((LCD_Busy_Check()&0x80)==0x80);RS=1;RW=0;E=0;P0=dat;delay4us();E=1;delay4us();E=0;}//-----------LCD初始化-----------------*/voidInitialize_LCD1602()//液晶初始化函數{Write_LCD_Command(0x38);delay50us(10);//功能設置,數據長度為8位,雙行顯示,5×7點陣字體Write_LCD_Command(0x0C);delay50us(10);//顯示開,關光標Write_LCD_Command(0x06);delay50us(10);//字符進入模式:屏幕不動,字符后移Write_LCD_Command(0x01);delay50us(10);//清屏}//-----------在LCD上顯示字符串-----------------*/voidLCD_Display(uchar*str){uchari;for(i=0;i<strlen(str);i++){Write_LCD_Data(str[i]);delay50us(100);}}unsignedlongdat_adc0808;uchardisplay_buffer[][16]={{"voltage:"},{"DC=0.00"}};uintadc0808_init()//AD初始化{START=0;START=1;START=0;while(EOC==0);OE=1;delay50us(20);dat_adc

溫馨提示

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

評論

0/150

提交評論