版權(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電壓表設(shè)計(jì)要求要求:
設(shè)計(jì)一個(gè)簡(jiǎn)易的數(shù)字電壓表,用來(lái)測(cè)量我們焊接的單片機(jī)開(kāi)發(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è)定的功能.二、A/D轉(zhuǎn)換的流程圖開(kāi)始左右數(shù)碼管顯示十進(jìn)制初始化在LCD中顯示數(shù)碼管中的數(shù)值判斷是否按鍵按下?判斷是加1還是減1?否是加1減1結(jié)束四、解答上述問(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)題。五、程序#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;//lcdsbitEOC=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);
}_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;_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]);}
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);
}
}
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;}
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;}
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);//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]); //0x30+
lcd_pos(0x0B);
lcd_wdat(0x30+disp[1]);
lcd_pos(0x0C);
lcd_wdat(0x30+disp[2]);
lcd_pos(0x0D);
lcd_wdat(0x30+disp[3]);
lcd_pos(0x0E);
lcd_wdat(disp2[0]); //0x30+
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;// ET0=1;
// ET1=1;
//EA=1;
// TR0=1;
OE=0;
START=0;
EOC=1;
SystemInit();
lcd_init();
while(1)
{Test_Key();
//delay(10
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職第一學(xué)年(農(nóng)村區(qū)域發(fā)展)農(nóng)村規(guī)劃綜合試題及答案
- 2025年高職地理教育(地理教學(xué)方法)試題及答案
- 2025年高職電子商務(wù)(商品拍攝)試題及答案
- 2026年新聞寫(xiě)作(新聞稿撰寫(xiě)規(guī)范)試題及答案
- 2025年大學(xué)第三學(xué)年(設(shè)計(jì)心理學(xué))設(shè)計(jì)應(yīng)用階段測(cè)試題及答案
- 2025年高職人力資源管理(人力資源教學(xué)案例分析)試題及答案
- 2025年大學(xué)水利工程與管理(水利技術(shù)推廣)試題及答案
- 2025年大學(xué)金屬制品加工技術(shù)(金屬表面處理)試題及答案
- 2025年大學(xué)大一(交通運(yùn)輸)交通工程學(xué)階段測(cè)試試題及答案
- 2025年高職動(dòng)漫設(shè)計(jì)與制作(動(dòng)漫設(shè)計(jì)與制作)試題及答案
- 校區(qū)打印店合作服務(wù) 投標(biāo)方案(技術(shù)方案)
- DL∕T 1781-2017 電力器材質(zhì)量監(jiān)督檢驗(yàn)技術(shù)規(guī)程
- 剪刀式升降車的安全管理
- 大學(xué)《思想道德與法治》期末考試復(fù)習(xí)題庫(kù)(含答案)
- JT-T 1037-2022 公路橋梁結(jié)構(gòu)監(jiān)測(cè)技術(shù)規(guī)范
- 綜合能源管理系統(tǒng)平臺(tái)方案設(shè)計(jì)及實(shí)施合集
- 學(xué)校宿舍樓施工組織設(shè)計(jì)方案
- GB/T 7216-2023灰鑄鐵金相檢驗(yàn)
- 學(xué)術(shù)論文的撰寫(xiě)方法
- 上海市汽車維修結(jié)算工時(shí)定額(試行)
- 貴州省晴隆銻礦采礦權(quán)出讓收益評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論