北华大学毕业设计(论文)
sbit key_manual=P1^7;//模拟手动报警和解除报警按键 bit SetUpFlag=0; bit set_manual=0; uchar key_manual_num=0; ulong gas_uplimit=150; /********定义变量*********/ unsigned char data1; unsigned char count; unsigned char cycle; unsigned long data2; long
Value,num=0;
uchar temp,getdata; uchar jian,bai,shi,ge; uchar time_ms1;
//微秒显示函数 void Delayus(uchar i) {
while(--i); }
//毫秒显示函数 void delay1ms(uint z) { }
void ad(void) //ad采样函数 {
uchar i; //data1=0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
27
uint x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--);
北华大学毕业设计(论文)
}
bADcl=0; bADda=1; bADcl=1; bADcl=0;//i down bADda=1; bADcl=1;
bADcl=0; // 2 down bADda=0; bADcl=1;
bADcl=0; // 3 down bADda=1; bADcl=1;
bADcl=0; // 4 down for(i=8;i>0;i--)
{
data1<<=1; bADcl=0; bADcl=1;
if(bADda==1) data1|=0x01; bADda=1; }
bADcs=1;
void cal() //计算把采样到的值转换成实际电压值 {
Value=data1*1.0/256*500; Value=Value*K_MG_MV; Value=Value-5; if(Value<0)Value=0;
28
北华大学毕业设计(论文)
}
void display_temp(int Value) {
temp=(uchar)(Value/1000);//分离千分位
//////////////////////////////////// //////////////先显示个位//////////// LED0=1;
LED1=0; LED2=0; LED3=0;
jian=temp;
temp=(uchar)((Value00)/100); //分离百分位 bai=temp;
temp=(uchar)((Value0)/10);//分离十位 shi=temp;
temp=(uchar)(Value);//分离个位 ge=temp;
P2=dispcode0[ge]; delay1ms(5);
/////////////接着显示十位///////// LED0=0;
LED1=1; LED2=0; LED3=0;
P2=dispcode0[shi]; delay1ms(5); //////////////////////////////////
/////////////再接着显示百位//// LED0=0; LED1=0; LED2=1; LED3=0;
29
北华大学毕业设计(论文)
P2=dispcode0[bai]; delay1ms(5);
/////////////////////////// }
}
while(!key_up);//等待按键释放
if(key_up==0) {
delay1ms(10); if(key_up==0) {
SetUpFlag=1; gas_uplimit++;
if(gas_uplimit==999)gas_uplimit=0;
////////////////////////////////// ///////////////////////////
if(key_down==0) { }
30
delay1ms(10); if(key_down==0) {
SetUpFlag=1; }
while(!key_down);//等待按键释放 gas_uplimit--;
if(gas_uplimit==0)gas_uplimit=999;
北华大学毕业设计(论文)
////////////////////////////////// /////////////////////////// }
void manual_simulate() {
if(key_manual==0) {
delay1ms(10); if(key_manual==0) { TR1=0;
alarm=0;
31
if(key_ok==0) { }
SetUpFlag=0; }
while(!key_ok);//等待按键释放 delay1ms(10); if(key_ok==0) {
//////////////////////////////////
key_manual_num++;
set_manual=1;
if(key_manual_num==2)
{ alarm=1;