AD0809簡(jiǎn)易數(shù)字電壓表_第1頁(yè)
AD0809簡(jiǎn)易數(shù)字電壓表_第2頁(yè)
AD0809簡(jiǎn)易數(shù)字電壓表_第3頁(yè)
AD0809簡(jiǎn)易數(shù)字電壓表_第4頁(yè)
AD0809簡(jiǎn)易數(shù)字電壓表_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

AD0809簡(jiǎn)易數(shù)字電壓表AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第1頁(yè)!一.AD0809電壓表設(shè)計(jì)要求要求:

設(shè)計(jì)一個(gè)簡(jiǎn)易的數(shù)字電壓表,用來(lái)測(cè)量我們焊接的單片機(jī)開發(fā)板中AD0809模塊前端電位器R40的實(shí)時(shí)電壓值,并用電路板中左4位數(shù)碼管的前三位顯示當(dāng)前模擬電壓的十進(jìn)制數(shù)字量值,同時(shí)用右數(shù)碼管顯示當(dāng)前的模擬電壓值.附加要求:

為了防止數(shù)字電壓表使用時(shí)出現(xiàn)測(cè)量值與實(shí)際值存在誤差的問(wèn)題,須增加能通過(guò)按鍵對(duì)十進(jìn)制數(shù)字量測(cè)量值進(jìn)行100以內(nèi)補(bǔ)償值設(shè)定的功能.AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第2頁(yè)!二、A/D轉(zhuǎn)換的流程圖開始左右數(shù)碼管顯示十進(jìn)制初始化在LCD中顯示數(shù)碼管中的數(shù)值判斷是否按鍵按下?判斷是加1還是減1?否是加1減1結(jié)束AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第3頁(yè)!三、設(shè)計(jì)中的問(wèn)題1、串口在線下載問(wèn)題;2、數(shù)碼管的顯示問(wèn)題;3、用周立公芯片實(shí)現(xiàn)按鍵加一;4、LCD的顯示;5、調(diào)試中遇到顯示不穩(wěn)定;AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第4頁(yè)!五、程序#include<reg52.h>#include"ZLG7290.h"#include"I2C.h"#include<INTRINS.H>//#include<intrins.h>#definedata_pointP0#defineucharunsignedchartypedefunsignedcharBYTE; //重新定義typedefunsignedintWORD; //重新定義typedefbitBOOL; //重新定義BYTEcodedisp2[1]={"V"};BYTEcodedisp3[3]={".-+"};BYTEcodedisp4[]={"Stander:"};sbitrs=P1^3; //定義P13端口為rssbitep=P1^5;sbitrw=P1^4;//lcdAD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第5頁(yè)!BOOLlcd_bz()

{

BOOLresult;

rs=0;

rw=1;

ep=1;

_nop_();

_nop_();

_nop_();

_nop_();

result=(BOOL)(P0&0x80);

ep=0;

returnresult;

}

lcd_wcmd(BYTEcmd)

{while(lcd_bz()==1);

rs=0;

rw=0;

ep=0;

_nop_();

_nop_();

P0=cmd;AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第6頁(yè)!_nop_();

_nop_();

_nop_();

_nop_();

ep=1;

_nop_();

_nop_();

_nop_();

_nop_();

ep=0;

}

lcd_init()

{

lcd_wcmd(0x38);

lcd_wcmd(0x0c);

lcd_wcmd(0x06);

//lcd_wcmd(0x00);

//delay(1);

//lcd_wcmd(0x14);

//delay(1);

lcd_wcmd(0x01);

//lcd_pos(12);

//lcd_wdat(disp2[1]);AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第7頁(yè)!voiddisplay()

{

unsignedinti,j,k=0xfb;

for(i=0;i<4;i++)

{

// P1=0xff;

if(i==0)

{

ZLG7290_Download(3,1,0,disp[i]);

delay(1);

}

if(i==1)

{

ZLG7290_Download(2,0,0,disp[i]);

delay(1);

}

if(i==2)

{

ZLG7290_Download(1,0,0,disp[i]);

delay(1);

}AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第8頁(yè)!voidcovert(unsignedcharx)

{ unsignedintX;

charcodedispcode[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};

X=x*(1.0)*5000/255; // x=(x*100*1.0)/51;

disp[0]=dispcode[X/1000];

disp[1]=dispcode[X%1000/100]; //x/50 x/100;

//disp[0]=disp[0]+0x80;

disp[2]=dispcode[X%1000%100/10]; //x/10 x%100/10;

disp[3]=dispcode[X%1000%100%10]; //x%100%10;

// disp[4]=k/100;

// disp[5]=k%100/10;

// disp[6]=k%100%10;}

voidDispValue(charx,unsignedchardat)

{unsignedchard;

d=dat/100;

ZLG7290_Download(x+2,0,0,d);

d=dat%100/10;

ZLG7290_Download(x+1,0,0,d);

d=dat%100%10;

ZLG7290_Download(x,0,0,d);

disp[4]=dat/100;

disp[5]=dat%100/10;

disp[6]=dat%100%10;}

AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第9頁(yè)!//ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);

// //顯示鍵值、連擊計(jì)數(shù)器值、功能鍵值

if(KeyValue==2)

{

count++;

//DispValue(0,count);

}

if(KeyValue==3)

{

count--;

//DispValue(0,count);

}

if(count==100)

{

count=100;

}

if(count>=0)

{

}

//AD=ADC0809();AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第10頁(yè)! lcd_pos(0x46);

for(l=4;l<7;l++)

{

lcd_wdat(0x30+disp[l]);

// lcd_wdat(0x30+disp[5]);

// lcd_wdat(0x30+disp[6]);

}

delay(100);

i=0;

// }

// PCON|=0x01; //使CPU進(jìn)入空閑狀態(tài),任一中斷可喚醒

}

}

voidmain()

{

BYTEi;

i=0;

TMOD=0x10;

// TH1=(65536-10000)/256;

// TL1=(65536-10000)%256;

// TH1=256-2;

// TL1=256-2;AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第11頁(yè)!四、解答上述問(wèn)題硬件問(wèn)題:串口不能下載程序,通過(guò)一步步檢測(cè)MAX232是否與串口連通,是否與單片機(jī)接受和發(fā)送的端口連接上,借助萬(wàn)用表查看電阻、電容以及芯片是否正常工作。

軟件問(wèn)題:經(jīng)過(guò)了解zlg7290.h文件、zlg7290.c文件、VIIC_C51.h文件以及VIIC_C51.c文件,主要是zlg7290.c文件中Test_Key子函數(shù)、DispValue子函數(shù)、ZLG7290_Download子函數(shù)。通過(guò)在主函數(shù)中調(diào)用子函數(shù),并且多處的運(yùn)用for、while、if語(yǔ)句,經(jīng)過(guò)編譯,再一步步排查問(wèn)題。AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第12頁(yè)!sbitEOC=P3^3;

sbitADDA=P2^0;

sbitADDB=P2^1;

sbitADDC=P2^2;

sbitOE=P2^5;

sbitSTART=P2^6;

//sbitCLK=P2^7;

volatilebitFlagINT=0;

unsignedcharAD=0;

charcount=0;

unsignedchardisp[7]={0,0,0,0,0,0,0};

unsignedintt0count=0;

voiddelay(unsignedchart)

{do

{TH1=0xD8;

TL1=0xf0;

TR1=1;

while(!TF1);

TF1=0;

TR1=0;

}while(--t);

}AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第13頁(yè)!_nop_();

_nop_();

_nop_();

_nop_();

ep=1;

_nop_();

_nop_();

_nop_();

_nop_();

ep=0;

}

lcd_pos(BYTEpos)

{

lcd_wcmd(pos|0x80);

}

lcd_wdat(BYTEdat)

{

while(lcd_bz());

rs=1;

rw=0;

ep=0;

P0=dat;AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第14頁(yè)!}

voidINT0_SVC()interrupt0

{

FlagINT=1;

}

voidSystemInit()

{

I2C_Init();

TMOD=0x01;

delay(1); //等待ZLG7290復(fù)位完畢

}

voidClearAll()

{

unsignedcharx;

for(x=0;x<8;x++)

{

ZLG7290_Download(x,0,0,31);

}

}

AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第15頁(yè)!if(i==3)

{ZLG7290_Download(0,0,0,disp[i]);

delay(1);}

//ZLG7290_Download(7,0,0,disp[4]);

//ZLG7290_Download(6,0,0,disp[5]);

//ZLG7290_Download(5,0,0,disp[6]);

//P1=k;

// k=k>>=1;

for(j=200;j>0;j--);}

//P1=0xff;}

unsignedintADC0809()

{unsignedintd;

ADDC=0;

ADDB=0;

ADDA=0;

TR1=1;

START=1;START=0;

while(EOC==0);

OE=1;

d=data_point;

OE=0;

TR1=0;

returnd;}

AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第16頁(yè)!voidTest_Key()

{charfuhao;

unsignedcharKeyValue;

//BYTEi;

//i=0;

unsignedchari=0,k=0,l=0;

// unsignedcharRepeatCnt;

// unsignedcharFnKeyValue;

ClearAll();

EA=0;

IT0=1; //負(fù)邊沿觸發(fā)中斷

EX0=1; //允許外部中斷

EA=1;

for(;;)

{

if(FlagINT) //如果有鍵按下

{

//清除中斷標(biāo)志

FlagINT=0;

//讀取鍵值、連擊計(jì)數(shù)器值、功能鍵值

ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);

// ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);AD0809簡(jiǎn)易數(shù)字電壓表共19頁(yè),您現(xiàn)在瀏覽的是第17頁(yè)!//DispValue(0,KeyValue);

// DispHexValue(3,RepeatCnt);

// DispHexValue(6,FnKeyValue);}

lcd_pos(0);

// for(i=0;i<6;i++)

// {AD=ADC0809();

covert(AD+count);

display();

DispValue(5,AD+count);

while(disp4[i]!='\0')

{lcd_wdat(disp4[i]);

i++;}

lcd_pos(0x09);

lcd_wdat(0x30+disp[0]);

lcd_pos(0x0A);

lcd_wdat(disp3[0]); /

溫馨提示

  • 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)論