數(shù)字電壓表的設計與制作_第1頁
數(shù)字電壓表的設計與制作_第2頁
數(shù)字電壓表的設計與制作_第3頁
數(shù)字電壓表的設計與制作_第4頁
數(shù)字電壓表的設計與制作_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

附錄:核心代碼清單#include<reg52.h> //包含頭文件uintvoltdata,realvolt,i,j,k,l,t,sum,a[5]; //定義全局變量ucharadd; //地址變量ucharcodet1[]={"DCVoltmeter:IN"};ucharcodet2[]={"(0~V):.V"};ucharcodet3[]={"Hello!"};ucharcodet4[]={"Welcome!"}; //初始化顯示voiddelay(uintms) //延時程序{uinti,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}voidwritelcd_cmd(ucharcmd)//向1602液晶顯示器里寫入命令的函數(shù){en=0;rs=0;rw=0;delay(1);P0=cmd;en=1;delay(1);en=0;}voidwritelcd_dat(uchardat)//向1602液晶顯示器里寫入數(shù)據(jù)的函數(shù){en=0;rs=1;rw=0;delay(1);P0=dat;en=1;delay(1);en=0;}voidlcd_init() //初始化1602液晶顯示器的函數(shù){writelcd_cmd(0x38);delay(5);writelcd_cmd(0x38);delay(5);writelcd_cmd(0x38);writelcd_cmd(0x08);writelcd_cmd(0x01);writelcd_cmd(0x06);writelcd_cmd(0x0c);writelcd_cmd(0x80);}voidaddselect() //量程選擇{switch(add) //判斷地址{case0:adda=0;addb=0;addc=0;break;case1:adda=1;addb=0;addc=1;break;case2:adda=0;addb=1;addc=0;break; //切換到不同的量程default:break;}}uintadtrans() //AD轉換{sum=0; //濾波開始for(i=0;i<5;i++) {addselect();ale=1;ale=0;start=1; //啟動AD轉換。start=0;while(eoc==0); //等待轉換結束。oe=1;a[i]=P1; //出入轉換結果。delay(5); ////每隔5usAD轉換并采集一次數(shù)據(jù),將得到的數(shù)值存入數(shù)組中}for(j=0;j<4;j++) for(i=0;i<4-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=1;i<4;i++){sum+=a[i];} //采用冒泡法比較,取中間3個數(shù)值voltdata=sum/3;delay(1);oe=0;voltdata=(100*voltdata)/51; //處理運算結果。returnvoltdata;}voiddisvolt() //顯示函數(shù) {ucharsi,san,er,yi; //四個顯示的位switch(add){case0:realvolt=voltdata;writelcd_cmd(0x80+15);writelcd_dat('1');writelcd_cmd(0xc0+4);writelcd_dat('0');writelcd_dat('5');break; //計算并顯示對應的電壓值和量程case1:realvolt=voltdata*2.4;writelcd_cmd(0x80+15);writelcd_dat('2');writelcd_cmd(0xc0+4);writelcd_dat('1');writelcd_dat('2');break;case2:realvolt=voltdata*4.8;writelcd_cmd(0x80+15);writelcd_dat('3');writelcd_cmd(0xc0+4);writelcd_dat('2');writelcd_dat('4');break;default:break;}si=realvolt/1000;san=realvolt/100%10;er=realvolt/10%10;yi=realvolt%10; //將電壓值分成4個一位數(shù),方便顯示writelcd_cmd(0xc0+9); //顯示電壓值writelcd_dat(si+0x30);writelcd_dat(san+0x30);writelcd_cmd(0xc0+12);writelcd_dat(er+0x30);writelcd_dat(yi+0x30);}voidanjian() //按鍵掃描函數(shù){if(key1==0) //第一個按鍵按下add=0; //切換檔位elseif(key2==0)add=1;elseif(key3==0)add=2;}voidmain() //主

溫馨提示

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

評論

0/150

提交評論