數(shù)字電壓表實(shí)驗(yàn)報(bào)告_第1頁(yè)
數(shù)字電壓表實(shí)驗(yàn)報(bào)告_第2頁(yè)
數(shù)字電壓表實(shí)驗(yàn)報(bào)告_第3頁(yè)
數(shù)字電壓表實(shí)驗(yàn)報(bào)告_第4頁(yè)
數(shù)字電壓表實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)報(bào)告姓名:何紹金班級(jí):自動(dòng)化1202學(xué)號(hào):201203870408指導(dǎo)教師:賈立新2014年11月26日設(shè)計(jì)題目采用C8051F360單片機(jī)最小系統(tǒng)設(shè)計(jì)一個(gè)簡(jiǎn)易數(shù)字電壓表,實(shí)現(xiàn)對(duì)0~3.3V直流電壓的測(cè)量。二.設(shè)計(jì)原理模擬輸入電壓通過(guò)實(shí)驗(yàn)板PR3電位器產(chǎn)生,A/D轉(zhuǎn)換器將模擬電壓轉(zhuǎn)換成數(shù)字量,并用十進(jìn)制的形式在LCD上顯示。用一根杜邦實(shí)驗(yàn)線將J8口的0~3.3V輸出插針與J7口的P2.0插針相連。注意A/D轉(zhuǎn)換器模擬輸入電壓的范圍取決于其所選擇的參考電壓,如果A/D轉(zhuǎn)換器選擇內(nèi)部參考電壓源,其模擬電壓的范圍0~2.4V,如果選擇外部電源作為參考電壓,則其模擬輸入電壓范圍為0~3.3V。原理框圖如圖1所示。圖1簡(jiǎn)易數(shù)字電壓表實(shí)驗(yàn)原理框圖設(shè)計(jì)方案1.設(shè)計(jì)流程圖如圖2所示。圖2簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)A/D轉(zhuǎn)換和計(jì)時(shí)流程圖2.實(shí)驗(yàn)板連接圖如圖3所示。圖3簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)實(shí)驗(yàn)板接線圖3.設(shè)計(jì)步驟(1)編寫(xiě)C8051F360和LCD初始化程序。(2)AD轉(zhuǎn)換方式選用逐次逼近型,A/D轉(zhuǎn)換完成后得到10位數(shù)據(jù)的高低字節(jié)分別存放在寄存器ADCOH和ADC0L中,此處選擇右對(duì)齊,轉(zhuǎn)換時(shí)針為2MHZ。(3)選擇內(nèi)部參考電壓2.4V為基準(zhǔn)電壓(在實(shí)際單片機(jī)調(diào)試中改為3.311V),正端接P2.0,負(fù)端接地。四、測(cè)試結(jié)果在0V~3.3V中取10組測(cè)試數(shù)據(jù),每組間隔約為0.3V左右,實(shí)驗(yàn)數(shù)據(jù)如表1所示:顯示電壓(V)0.2060.5040.8051.0541.406實(shí)際電壓(v)0.2100.5100.8121.0611.414相對(duì)誤差(%)1.9051.1760.8620.6590.565顯示電壓(V)2.0502.3832.6522.9353.246實(shí)際電壓(v)2.0612.3912.6602.9433.253相對(duì)誤差(%)0.4210.3340.3010.2720.215表1簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)實(shí)驗(yàn)數(shù)據(jù)(注:其中顯示電壓指LCD顯示值,實(shí)際電壓指高精度電壓表測(cè)量值)五.設(shè)計(jì)結(jié)論1.LCD顯示模塊的CPLD部分由FPGA充當(dāng),芯片本身自帶程序,所以這個(gè)部分不用再通過(guò)quartus軟件進(jìn)行編程。2.在參考電壓選擇過(guò)程中發(fā)現(xiàn),單片機(jī)實(shí)際最大電壓并不是2.4V而是3.3V,則在轉(zhuǎn)換中將3.3V替換2.4V即可。3.開(kāi)始時(shí)發(fā)現(xiàn)調(diào)節(jié)電阻之后,實(shí)際電壓值改變但LCD顯示電壓值并沒(méi)有發(fā)生改變,原因是:EC6仿真器沒(méi)有開(kāi)啟并且每次KEIL重新開(kāi)啟后,要重新輸入相應(yīng)解碼。附錄:程序源代碼(C語(yǔ)言)/*簡(jiǎn)易數(shù)字電壓表*/#include<C8051F360.H>#defineucharunsignedchar#defineuintunsignedint#defineWCOMADDR 0xC008//寫(xiě)命令寄存器的地址#defineWDATADDR 0xC009//寫(xiě)數(shù)據(jù)寄存器的地址#defineRCOMADDR 0xC00A//讀命令寄存器的地址#defineRDATADDR 0xC00B//讀數(shù)據(jù)寄存器的地址#defineKEYCS0xC00Cucharcodehanzi[]="簡(jiǎn)易數(shù)字電壓表";ucharcodekeynum[]="鍵值";ucharcodekeyc[]="次數(shù)";uinttime=0;floatvolt;uintv[4];uintAT,voltage;ucharkeyn,keycode;voidOscInit(); //內(nèi)部振蕩器初始化 voidPortIoInit();//I/O端口初始化voidXramInit();//外部數(shù)據(jù)存儲(chǔ)器接口初始化voidPcaInit(); //PCA初始化(設(shè)置看門(mén)狗定時(shí)器的工作狀態(tài))voidInitDevice();//內(nèi)部資源初始化voidCheckLcd(); //檢查L(zhǎng)CD是否空閑子程序voidWriteCom(ucharn); //Lcd寫(xiě)指令子程序voidWriteData(ucharm); //Lcd寫(xiě)數(shù)據(jù)子程序voidInsitiLcd(); //Lcd初始化子程序voidDispHan(ucharcode*a,ucharm,uchark);//顯示漢字子程序voidTimerInit();//定時(shí)器初始化voidInterruptsInit();//中斷系統(tǒng)初始化voidADC_init();//ADC0初始化詳見(jiàn)書(shū)本P144voidInt0Init();//外部中斷初始化voidmain(){uchari;InitDevice(); //F360初始化InsitiLcd(); //LCD模塊初始化ADC_init();DispHan(hanzi,0x90,0x0e); //顯示“鍵盤(pán)顯示測(cè)試程序”AD0BUSY=1;while(1){if(TF0==1){ TF0=0; TL0=0xf0; TH0=0xd8;//重置時(shí)間常數(shù)10ms time++; } if(time>=49) { time=0; AT=ADC0H*256+ADC0L; volt=AT*0.003234; voltage=volt*1000; for(i=0;i<4;i++) { v[i]=voltage%10; voltage=voltage/10; } WriteCom(0x8d); WriteData(v[3]+0x30); WriteData(0x2e); WriteData(v[2]+0x30); WriteData(v[1]+0x30); WriteData(v[0]+0x30); TR0=1; AD0BUSY=1; }}}voidReadKey()interrupt0{ ucharxdata*addr; ucharc1,c2; addr=KEYCS; keycode=*addr; keycode&=0x0F; keyn++; DispHan(keynum,0x88,0x04); WriteCom(0x8b); if(keycode<10) { WriteData(0x30); WriteData(keycode+0x30); } else { c1=keycode%10; c2=keycode/=10; WriteData(c2+0x30); WriteData(c1+0x30); } DispHan(keyc,0x98,0x04); WriteCom(0x9b); if(keyn==10) keyn=0; WriteData(keyn+0x30); }voidInt0Init(){ EA=1; IT01CF=0x05; EX0=1; IT0=1; }voidOscInit(void) //內(nèi)部振蕩器初始化 { SFRPAGE=0x0f; //選擇特殊功能寄存器頁(yè)地址 OSCICL=OSCICL+4; OSCICN=0xc2; //允許內(nèi)部振蕩器,頻率除2作為SYSCLK=12MHz CLKSEL=0x00; //選擇內(nèi)部振蕩器 SFRPAGE=0x00; }voidADC_init() { ADC0CF=0x28;//選擇內(nèi)部參考電壓2.4V為基準(zhǔn) ADC0CN=0x80;//正端接P2.0 AMX0P=0x08;//負(fù)端接地 AMX0N=0x1F;//右對(duì)齊,轉(zhuǎn)換時(shí)針為2MHZ REF0CN=0x08;//寫(xiě)AD0BUSY啟動(dòng)A/D轉(zhuǎn)換器 }voidTimerInit() { TMOD=0x01; TH0=0xd8; TL0=0xf0; TR0=1; }voidInterruptsInit(void) { EA=1; ET0=1; EX0=1; PX0=1; IE0=0; }voidPortIoInit(void) //I/O口初始化{ SFRPAGE=0x0f; P0MDIN=0xe7; //P0.3、P0.4模擬量輸入 P0MDOUT=0x83; //P0.0、P0.1、P0.7推拉式輸出 P0SKIP=0xf9; //P0.1、P0.2被交叉開(kāi)關(guān)跳過(guò) P1MDIN=0xff; //P1設(shè)置為數(shù)字量輸入 P1MDOUT=0xff; //P1設(shè)置為推拉式輸出 P1SKIP=0xff; //P1被交叉開(kāi)關(guān)跳過(guò) P2MDIN=0xff; //P2設(shè)置為數(shù)字量輸入 P2MDOUT=0xff; //P2設(shè)置為推拉式輸出 P2SKIP=0xff; P3MDIN=0xff; //P3設(shè)置為數(shù)字量輸入 P3MDOUT=0xff; //P3設(shè)置為推拉式輸出 P3SKIP=0xff; P4MDOUT=0xff; //P4.5設(shè)為OC輸出,其余推拉式輸出 XBR0=0x01; //使能UART XBR1=0xC0; //禁止弱上拉,交叉開(kāi)關(guān)允許 SFRPAGE=0x00; return; }voidXramInit(void) //外部數(shù)據(jù)儲(chǔ)存器初始化 { SFRPAGE=0x0f; EMI0CF=0x07; //引腳復(fù)用方式 SFRPAGE=0x00; return; }voidPcaInit(void) //PCA初始化 { PCA0CN=0x40; //允許PCA計(jì)數(shù)器/定時(shí)器 PCA0MD=0x00; //禁止看門(mén)狗定時(shí)器 return; }voidInitDevice(void) { OscInit(); PortIoInit(); XramInit(); //SmbInit(); //UartInit(); ADC_init(); TimerInit(); InterruptsInit(); Int0Init(); PcaInit(); return; }voidCheckLcd(){uchartemp=0x00; ucharxdata*addr; while(1) { addr=RCOMADDR; temp=*addr; temp&=0x80;if(temp==0x00) break; }}voidWriteCom(ucharn){ ucharxdata*addr; CheckLcd(); addr=WCOMADDR; *addr=n;}voidWriteData(ucharm){ ucharxdata*addr; CheckLcd(); addr=WDATADDR; *addr=m;}voidInsitiLcd() { WriteCom(0x30);//設(shè)為基本指令集 WriteCom(0x01); //清屏 WriteCom(0x0c); //開(kāi)整體顯示 }voidDispHan(ucharcode*a,ucharm,uchark) // 書(shū)本177頁(yè)有詳細(xì)解釋{ uchardat,i,j,length; length=k/2; WriteCom(m);

溫馨提示

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

評(píng)論

0/150

提交評(píng)論