📄 cortrol.lst
字号:
246 //*******************************取电源状态,温湿度,亮度参数值发送函数*********************
247 void read_device_status( )
248 { // LED=0;
249 1 serial_buf_T[0]=0XAA;
250 1 serial_buf_T[1]=serial_id;
251 1 serial_buf_T[2]=POW_DATA;
252 1 serial_buf_T[3]=TEM;
253 1 serial_buf_T[4]=HUMM;
254 1 serial_buf_T[5]=LUM;
255 1 serial_buf_T[6]=serial_buf_T[0]+serial_buf_T[1]+serial_buf_T[2]+serial_buf_T[3]+serial_buf_T[4]+serial_
-buf_T[5];
256 1 DRE = 1; //485启动发送 ,发送温湿度,亮度参数值
257 1 delay(200);
258 1 serial_count_T = 0;
259 1 SBUF = serial_buf_T[0];
260 1
261 1
262 1 }
263 //******************************************************************************************
264 //*************************参数控制处理函数*************************************************
265 void set_TH_Control( )
266 {
267 1 L_Temp_set=serial_buf2[3];
268 1 H_Temp_set=serial_buf2[4];
269 1 H_Hum_set =serial_buf2[5];
270 1 serial_buf_T[0]=0XBB;
271 1 serial_buf_T[1]=serial_id;
272 1 serial_buf_T[2]=0X50;
273 1 serial_buf_T[3]=serial_buf2[3];
274 1 serial_buf_T[4]=serial_buf2[4];
275 1 serial_buf_T[5]=serial_buf2[5];
276 1 serial_buf_T[6]=serial_buf2[6];
277 1 DRE = 1; //485启动发送,返回应答数据
278 1 delay(200);
279 1 serial_count_T = 0;
280 1 SBUF = serial_buf_T[0];
281 1 }
282 //*****************************************************************************************
283
284 //********************************A/D转换函数*(P1.3)***********************************************/
285 int ADC3_Switch(void)
286 {
287 1 int ADC_DA;
288 1 ADC_CONTR=ADC_CONTR|0X80; //开A/D转换电源
289 1 delay(1000);
290 1 P1M0=P1M0|0X08; //设置P1.3为开漏模式
291 1 P1M1=P1M1|0X08;
292 1 ADC_CONTR=ADC_CONTR|0XE3; //设置P1.3为A/D转换通道
293 1 ADC_CONTR=ADC_CONTR&0XEF;
294 1 delay(10);
295 1 ADC_DATA=0;
296 1 ADC_CONTR= ADC_CONTR|0X08; //启动A/D转换
297 1 while((ADC_CONTR&0X10)==0) //判断A/D转换是否完成
298 1 {;}
299 1 ADC_CONTR=ADC_CONTR&0XE7; //清标志,关闭A/D转换
300 1 ADC_DA=ADC_DATA;
301 1 return(ADC_DA);
302 1 }
C51 COMPILER V7.20 CORTROL 08/25/2008 11:28:19 PAGE 6
303 //********************************************************************************************************
-********/
304 //*******************************************三相电源检测函数*********************************************
-********/
305 void POW_Check()
306 {
307 1 if(CHECK1==0)
308 1 {
309 2 POW_DATA=0X01;
310 2
311 2 }
312 1 else
313 1 {
314 2 POW_DATA=0;
315 2
316 2 }
317 1 if(CHECK2==0)
318 1 {
319 2 POW_DATA=(POW_DATA<<1)|0X01;
320 2
321 2 }
322 1 else
323 1 {
324 2 POW_DATA=POW_DATA<<1;
325 2
326 2 }
327 1 if(CHECK3==0)
328 1 {
329 2 POW_DATA=(POW_DATA<<1)|0X01;
330 2 }
331 1 else
332 1 {
333 2 POW_DATA=POW_DATA<<1;
334 2
335 2 }
336 1
337 1 if(POW_DATA!=0x07)
338 1 {CHECK_DATA=0XFF;
339 2
340 2 }
341 1 else
342 1 { CHECK_DATA=0XF8;
343 2
344 2 }
345 1
346 1
347 1 }
348 //========================================================================================================
-========//
349 //=============================================温湿度控制函数=============================================
-========
350 void TH_Control(void)
351 {uchar TH_Con_data;
352 1 if(TEM>H_Temp_set)
353 1 TH_Con_data=0xf7;
354 1 else if(TEM<L_Temp_set)
355 1 TH_Con_data=0xEF;
356 1 else if(L_Temp_set<TEM<H_Temp_set)
357 1 TH_Con_data=0XFF;
358 1 if(HUMM>H_Hum_set)
359 1 TH_Con_data= TH_Con_data&0XDF;
360 1 ET0=0;
C51 COMPILER V7.20 CORTROL 08/25/2008 11:28:19 PAGE 7
361 1 P2=CHECK_DATA&TH_Con_data;
362 1 C=1;
363 1 delay(5);
364 1 C=0;
365 1 ET0=1;
366 1 //P2=0XF0;
367 1
368 1 }
369 //********************************************************************************************************
-*************/
370 //************************************************数码管显示函数******************************************
-*************
371 //********函数名称: Display *******
372 //********函数功能:五位数码管显示温湿度,亮度 *******
373 //********入口参数:显示数值,参数标志 *******
374 //********返回值 :无 *******
375 //*******************************************************************************************************
376 void Display(signed int display_data,unsigned char dis_flag)
377 {uchar xdata A[5];
378 1 code uchar D[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0X89,0XC7
-,0X8C,0X88,0XC1,0X91,0XFF,0XBF,0X9C};
379 1 uchar dp_data,Y;
380 1 if(dis_flag==TEMP)
381 1 {A[0]=12;
382 2 A[1]=24;
383 2 }
384 1 if(dis_flag==HUMI)
385 1 {A[0]=16;
386 2 A[1]=19;
387 2 }
388 1 if(dis_flag==LUMM)
389 1 {A[0]=17;
390 2 A[1]=22;
391 2 }
392 1 if(display_data<=-10)
393 1 {A[2]=(display_data*(-1))%10;
394 2 A[3]=(display_data*(-1))/10;
395 2 A[4]=23;
396 2 }
397 1 else if(display_data<0)
398 1 {A[2]=display_data*(-1);
399 2 A[3]=22;
400 2 A[4]=23;
401 2 }
402 1 else if(display_data<10)
403 1 {A[2]=display_data;
404 2 A[3]=22;
405 2 A[4]=22;
406 2 }
407 1 else if(display_data<100)
408 1 {A[2]=display_data%10;
409 2 A[3]=display_data/10;
410 2 A[4]=22;
411 2 }
412 1 else if(display_data<1000)
413 1 {A[2]=display_data%10;
414 2 A[3]=(display_data/10)%10;
415 2 A[4]=display_data/100;
416 2 }
417 1 else if(display_data<10000)
418 1 {A[1]=display_data%10;
419 2 A[2]=(display_data/10)%10;
C51 COMPILER V7.20 CORTROL 08/25/2008 11:28:19 PAGE 8
420 2 A[3]=(display_data/100)%10;
421 2 A[4]=display_data/1000;
422 2 }
423 1
424 1 for(i=0;i<5;i++)
425 1 {dp_data=D[A[i]];
426 2 for(j=8;j>0;j--)
427 2 { CLK=0;
428 3 if(dp_data&0x80)
429 3 Y=1;
430 3 else Y=0;
431 3 DATA0=Y;
432 3 CLK=1;
433 3 dp_data=dp_data<<1;
434 3
435 3 }
436 2
437 2 }
438 1 STB=0;
439 1 STB=1;
440 1 delay(2);
441 1 STB=0;
442 1
443 1 }
444 //========================================================================================================
-===//
445 //**********************************************数码管显示参数 函数***************************************
-****
446 //******函数功能:显示设置参数值 *******
447 //********************************************************************************************************
-****
448 void Display_set(signed int display_set_data,unsigned char dis_set_flag)
449 {int B[5];
450 1 code uchar DD[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0X89,0XC
-7,0X8C,0X88,0XC1,0X91,0XFF,0XBF,0X9C};
451 1 uchar dp_data,Y;
452 1 if(dis_set_flag==0)
453 1 {B[4]=17;
454 2 }
455 1 if(dis_set_flag==1)
456 1 {B[4]=16;
457 2 }
458 1
459 1 if(display_set_data<=-10)
460 1 {B[0]=(display_set_data*(-1))%10;
461 2 B[1]=(display_set_data*(-1))/10;
462 2 B[2]=23;
463 2 B[3]=22;
464 2
465 2 }
466 1 else if(display_set_data<0)
467 1 {B[0]=display_set_data*(-1);
468 2 B[1]=22;
469 2 B[2]=23;
470 2 B[3]=22;
471 2 }
472 1 else if(display_set_data<10)
473 1 {B[0]=display_set_data;
474 2 B[1]=22;
475 2 B[2]=22;
476 2 B[3]=22;
477 2 }
C51 COMPILER V7.20 CORTROL 08/25/2008 11:28:19 PAGE 9
478 1 else if(display_set_data<100)
479 1 {B[0]=display_set_data%10;
480 2 B[1]=display_set_data/10;
481 2 B[2]=22;
482 2 B[3]=22;
483 2 }
484 1 else if(display_set_data<1000)
485 1 {B[0]=display_set_data%10;
486 2 B[1]=(display_set_data/10)%10;
487 2 B[2]=display_set_data/100;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -