資源簡介
這是我們課程的一個大作業,基于網絡上的氣壓計設計完成,將網絡版的AD轉換器替換成了ADC0808,并加入了簡單的過壓報警功能,調試成功~

代碼片段和文件信息
#include??
#include?“intrins.h“
#define?uint?unsigned?int
#define?uchar?unsigned?char
#define?OUTPORT?P2
sbit?EOC=P3^0;??
sbit?START=P3^1;
sbit?pd??=P1^7;
unsigned?char?dispbitcode[8]={0xf70xfb0xfd0xfe0xef0xdf0xbf0x7f};??//位掃描
unsigned?char?dispcode[11]={0xC00xF90xA40xB00x990x920x820xF80x800x900xff};??//共陽數碼管字段碼
unsigned?char?dispbuf[4];
uint?temp;
uchar?getdata;?//獲取ADC轉換回來的值
void?delay_1ms(void)??//12mhz?delay?1.01ms
{
???unsigned?char?xy;???
???x=3;
???while(x--)?
??{
???????y=40;
???????while(y--);
????}
}
void?delayms(int?z)
{
???int?xy;
???for(x=z;z>0;z--)
{
?????for(y=114;y>0;y--);
}
}??
void?display(void)??//數碼管顯示函數
{
??char?k;
??for(k=0;k<4;k++)
??{
??P1?=?dispbitcode[k];
??P0?=?dispcode[dispbuf[k]];
??if(k==1) ??//加上數碼管的dp小數點
?? P0&=0x7f;
??delay_1ms(); ??
??}
}
unsigned?int?Adc0808()//unsigned?char?channel)
{
unsigned?int?uiResult;
//if(channel==0);
START=1; ?//啟動AD轉換。
START=0;
while(EOC==0); ?//等待轉換結束。
uiResult=OUTPORT; ?//出入轉換結果。
//uiResult=(uiResult*200)/51; ???//處理運算結果。
return?uiResult;
}
void?main(void)?
{??
??while(1)
??{ ??unsigned?int?temp;
??????float??press; ??? ??
??getdata=Adc0808();
??if(14 ? { ????
????int?vary=getdata; //y=(115-15)/(243-13)*X+15kpa
press=((10.0/23.0)*vary)+9.3; //測試時補償值為9.3
??
temp=(int)(press*10); ????????????????//放大10倍,便于后面的計算
??? ????
????
dispbuf[3]=temp/1000; ????? //取壓力值百位
dispbuf[2]=(temp%1000)/100; ???? //取壓力值十位
dispbuf[1]=((temp%1000)%100)/10; ???? //取壓力值個位
dispbuf[0]=((temp%1000)%100)%10; //取壓力值十分位
display();
??? ???} ????
?? ??if(press>100)
????????{
pd=0;
?????delayms(90);
?????????????display();
?????delayms(90);
?????????????display();
?????delayms(90);
?????????????display();
?????delayms(90);
?????????????display();
?????delayms(90);
?????????????display();
?????delayms(90);
?????????????display();
pd=1;
?????????????delayms(90);
?????????????display();
?????????????delayms(90);
?????????????display();
?????????????delayms(90);
?????????????display();
?????????????delayms(90);
?????????????display();
?????????????delayms(100);
?????????????display();
?????????????delayms(90);
?????????????display();
????}?
??????if(press<=100)
??{
pd=1;
??}??
??}
}?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7993??2013-11-03?15:35??氣壓計設計\000
?????文件???????4376??2013-11-03?15:35??氣壓計設計\000.hex
?????文件?????????40??2013-11-03?15:35??氣壓計設計\000.lnp
?????文件??????11442??2013-11-03?15:35??氣壓計設計\000.M51
?????文件???????1074??2013-11-03?15:35??氣壓計設計\000.opt.bak
?????文件???????4129??2013-11-03?15:35??氣壓計設計\000.plg
?????文件???????2171??2013-11-03?15:35??氣壓計設計\000.Uv2.bak
?????文件??????56359??2013-11-03?15:35??氣壓計設計\000.uvopt
?????文件??????13417??2013-11-03?15:35??氣壓計設計\000.uvproj
?????文件???????1072??2013-11-03?15:35??氣壓計設計\000_Opt.Bak
?????文件???????2171??2013-11-03?15:35??氣壓計設計\000_Uv2.Bak
?????文件??????56538??2013-11-03?15:35??氣壓計設計\000_uvopt.bak
?????文件???????2635??2013-11-03?15:35??氣壓計設計\MAIN.c
?????文件???????6433??2013-11-03?15:35??氣壓計設計\MAIN.LST
?????文件???????7047??2013-11-03?15:35??氣壓計設計\MAIN.OBJ
?????文件???????6376??2013-11-03?15:35??氣壓計設計\STARTUP.A51
?????文件??????14064??2013-11-03?15:35??氣壓計設計\STARTUP.LST
?????文件????????758??2013-11-03?15:35??氣壓計設計\STARTUP.OBJ
?????文件?????132221??2013-11-03?15:35??氣壓計設計\氣壓計\Last?Loaded?氣壓計.DBK
?????文件?????131472??2013-11-03?15:42??氣壓計設計\氣壓計\氣壓計.DSN
?????文件????????743??2013-11-13?18:40??氣壓計設計\氣壓計\氣壓計.PWI
?????目錄??????????0??2013-11-13?18:40??氣壓計設計\氣壓計
?????目錄??????????0??2013-11-03?15:35??氣壓計設計
-----------?---------??----------?-----??----
???????????????462531????????????????????23
評論
共有 條評論