




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
電子信息科學系單片機實驗設計報告設計題目:數字電壓表、溫度計專業:09通信工程1班學生姓名:高詩指導教師:徐宏宏
摘要:本課題主要采用AT89S51芯片和ADC0809芯片來完成一個簡易的數字電壓表,能夠對輸入的0~5V的模擬直流電壓進行測量,并通過一個4位一體的7段LED數碼管進行顯示,測量誤差約為0.02V。該電壓表的測量電路主要由三個模塊組成:A/D轉換模塊、數據處理模塊及顯示控制模塊。A/D轉換主要由芯片ADC0809來完成,它負責把采集到的模擬量轉換為相應的數字量再傳送到數據處理模塊。數據處理則有芯片AT89S51來完成,其負責把ADC0809傳送來的數字量經一定的數據處理,產生相應的顯示碼送到顯示模塊進行顯示;另外它還控制著ADC0809芯片的工作。顯示模塊主要由7段數碼管及相應的驅動芯片(74HC245)組成,顯示測量到的電壓值。關鍵詞:簡易數字電壓表、ADC0809、AT89S51。目錄一. 總體設計 41. 電路設計 4基礎設計 4分頻設計 52. 程序設計 5二. 系統測試 141. 測試儀器 142. 測試過程 14測試條件 14測試結果 153. 結果分析 16三. 設計總結 16四. 參考文獻 16總體設計電路設計利用單片機上的P0作為液晶的數據口,P0-2作為液晶的控制口線。利用P2口采集0809轉換結束后的數據,P3^4;P3^3;P3^2,P1^7分別作為0809的控制口線OE,EOC,START,ALE,P1^6;P1^5;P1^4;作為0809的c,b,a輸入通道選擇,P3^7,P3^6,P3^5作為按鍵控制0809的通道選擇。圖11.2分頻設計通過對單片機的30引腳ALE輸出2MHz的時鐘信號4分頻,產生500KHz的時鐘信號作為0809的制作頻率,這里我們采用74LS74實現4分頻圖2程序設計#include<absacc.h>#include<reg52.h>#include<intrins.h>typedefunsignedintuint;typedefunsignedcharuchar; /***************************************************************************/********IO引腳定義***********************************************************/sbitLCD_RS=P1^0;//定義引腳sbitLCD_RW=P1^1;sbitLCD_E=P1^2;/********宏定義***********************************************************/#defineLCD_DataP0#defineBusy0x80//用于檢測LCD狀態字中的Busy標識/********函數聲明*************************************************************/voidWriteDataLCD(unsignedcharWDLCD); //寫數據voidWriteCommandLCD(unsignedcharWCLCD,BuysC); //寫命令unsignedcharReadDataLCD(void); //讀數據unsignedcharReadStatusLCD(void); //讀狀態voidLCDInit(void); //初始化voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData); //相應坐標顯示字節內容voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData); //相應坐標開始顯示一串內容voidDelay5Ms(void); //延時voidDelay400Ms(void); //延時/***********寫數據********************************************************/ voidWriteDataLCD(unsignedcharWDLCD){ ReadStatusLCD();//檢測忙 LCD_Data=WDLCD; LCD_RS=1; LCD_RW=0; LCD_E=0; //若晶振速度太高可以在這后加小的延時 LCD_E=0; //延時 LCD_E=1;}/***********寫指令********************************************************/ voidWriteCommandLCD(unsignedcharWCLCD,BuysC)//BuysC為0時忽略忙檢測{ if(BuysC)ReadStatusLCD();//根據需要檢測忙 LCD_Data=WCLCD; LCD_RS=0; LCD_RW=0; LCD_E=0; LCD_E=0; LCD_E=1;}/***********讀數據********************************************************/ unsignedcharReadDataLCD(void){ LCD_RS=1; LCD_RW=1; LCD_E=0; LCD_E=0; LCD_E=1; return(LCD_Data);}/***********讀狀態*******************************************************/ unsignedcharReadStatusLCD(void){ LCD_Data=0xFF; LCD_RS=0; LCD_RW=1; LCD_E=0; LCD_E=0; LCD_E=1; while(LCD_Data&Busy);//檢測忙信號 return(LCD_Data);}/***********初始化********************************************************/ voidLCDInit(void){ LCD_Data=0; WriteCommandLCD(0x38,0); //三次模式設置,不檢測忙信號 Delay5Ms(); WriteCommandLCD(0x38,0); Delay5Ms(); WriteCommandLCD(0x38,0); Delay5Ms(); WriteCommandLCD(0x38,1); //顯示模式設置,開始要求每次檢測忙信號 WriteCommandLCD(0x08,1); //關閉顯示 WriteCommandLCD(0x01,1); //顯示清屏 WriteCommandLCD(0x06,1); //顯示光標移動設置 WriteCommandLCD(0x0C,1); //顯示開及光標設置}/***********按指定位置顯示一個字符*******************************************/ voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){ Y&=0x1; X&=0xF; //限制X不能大于15,Y不能大于1 if(Y)X|=0x40; //當要顯示第二行時地址碼+0x40; X|=0x80; //算出指令碼 WriteCommandLCD(X,0);//這里不檢測忙信號,發送地址碼 WriteDataLCD(DData);}/***********按指定位置顯示一串字符*****************************************/ voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData){ unsignedcharListLength; ListLength=0; Y&=0x1; X&=0xF; //限制X不能大于15,Y不能大于1 while(DData[ListLength]>=0x20){//若到達字串尾則退出 if(X<=0xF){ //X坐標應小于0xF DisplayOneChar(X,Y,DData[ListLength]);//顯示單個字符 ListLength++; X++; } }}/***********短延時********************************************************/ voidDelay5Ms(void){ unsignedintTempCyc=5552; while(TempCyc--);}/***********長延時********************************************************/ voidDelay400Ms(void){ unsignedcharTempCycA=5; unsignedintTempCycB; while(TempCycA--){ TempCycB=7269; while(TempCycB--); }}#defineadc0809P2floatdy;uintdate;uchartd;sbitS1=P3^7;sbitS2=P3^6;sbitS3=P3^5;sbitOE=P3^4;sbitEOC=P3^3;sbitSTART=P3^2;sbitALE=P1^7;sbitc=P1^6;sbitb=P1^5;sbita=P1^4; voiddelay(uintz){uintx,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}voidlcd_disp(){ dy=(dy*10000);LCDInit(); DisplayListChar(0,0,"Voltege:"); DisplayOneChar(0,1,'T'); DisplayOneChar(1,1,'D'); DisplayOneChar(2,1,td%10+0x30); DisplayOneChar(9,1,(unsignedlong)dy/10000+0x30); DisplayOneChar(10,1,'.'); DisplayOneChar(11,1,(unsignedlong)dy/1000%10+0x30); DisplayOneChar(12,1,(unsignedlong)dy/100%10+0x30); DisplayOneChar(13,1,(unsignedlong)dy/10%10+0x30); DisplayOneChar(14,1,(unsignedlong)dy%10+0x30); DisplayOneChar(15,1,'V');} voidlcd_disp0(){ dy=(dy*1000000-2400000)*0.091+5000; LCDInit(); DisplayListChar(0,0,"Tempreture:"); DisplayOneChar(0,1,'T'); DisplayOneChar(1,1,'D'); DisplayOneChar(2,1,td%10+0x30); //DisplayOneChar(6,1,(unsignedlong)dy/1000000+0x30); if(dy>0) { DisplayOneChar(7,1,(unsignedlong)dy/100000%10+0x30); DisplayOneChar(8,1,(unsignedlong)dy/10000%10+0x30); DisplayOneChar(9,1,(unsignedlong)dy/1000%10+0x30); DisplayOneChar(10,1,'.'); DisplayOneChar(11,1,(unsignedlong)dy/100%10+0x30); DisplayOneChar(12,1,(unsignedlong)dy/10%10+0x30); // DisplayOneChar(13,1,(unsignedlong)dy%10+0x30); DisplayOneChar(14,1,0xdf); DisplayOneChar(15,1,'C'); }} voidmain(){date=0;td=0;ALE=0;START=0;OE=0;a=0;b=0;c=0;delay(500);LCDInit();dy=0000;DisplayListChar(0,0,"Tempreture:");while(1){if(S1==0){delay(500);td=td+1;if(td>8){td=0;}}if(S2==0){delay(500);if(td>0)td=td-1;}if(S3==0){delay(500);td=0;}if(td==0){a=0;b=0;c=0;}if(td==1){a=1;b=0;c=0;} if(td==2){a=0;b=1;c=0;} if(td==3){a=1;b=1;c=0;} if(td==4){a=0;b=0;c=1;} if(td==5){a=1;b=0;c=1;} if(td==6){a=0;b=1;c=1;} if(td==7){a=1;b=1;c=1;}ALE=0;START=0;ALE=1;START=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部隊干部考試題及答案
- 冰雪運動考試題及答案
- 保健課考試題及答案
- java常考試題及答案
- 土石方公司制服管理制度
- 專業自媒體營銷管理制度
- 化肥廠生產設備管理制度
- 制造業專項資金管理制度
- lvshi人員管理制度
- 個人管理好集體管理制度
- 2024年廣東清遠連平縣事業單位招聘工作人員51人公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 2024年西部機場集團榆林機場公司招聘35人高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 銀行智能化方案設計
- 教師口語智慧樹知到期末考試答案2024年
- 從乙醇的結構看其發生化學反應時鍵的斷裂位置和方式
- 2024年江西贛州旅游投資集團限公司招聘13人高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 小學信息技術所有知識點大匯總(最全)
- 好老師是民族的希望
- 跌倒墜床壓瘡預防與護理知識講座
- 《鋼鐵是怎樣煉成的》選擇題(含答案)
- 2024年中國融通文化教育集團有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論