这是具体C语言文字,问下 S=(time*1.87)/10; 这是怎么转换计算的,而且现在液晶显示屏显示的S是传感器到液位的距离,怎么填写C语言转换成为液位的液面高度。急急急
单片机源程序如下:
- #include<reg52.h>
- #include <intrins.h>
- #include "LCD1602.h"
- sbit RX = P3^6;
- sbit TX = P3^7;
- sbit LED = P2^0;
- sbit SPEAK = P2^1;
- sbit Motor = P2^2;
- sbit KEY1 = P1^3;
- sbit KEY2 = P1^4;
- sbit KEY3 = P1^5;
- unsigned int time=0;
- unsigned int timer=0;
- unsigned int S=0;
- unsigned int SET_H=100,SET_L=10;
- bit flag =0;
- unsigned char Table[3],Table1[5];
- unsigned char KEY_flag=0;
- //?óê±oˉ
- void Delay_ms(int jj)
- {
- int ii;
- while(jj--)
- for(ii=0;ii<116;ii++);
- }
- void Conut(void)
- {
- time=TH0*256+TL0;
- TH0=0;
- TL0=0;
-
- S=(time*1.87)/10;
- if((S>=700)||flag==1)
- {
- flag=0;
- }
- else
- {
- Table1[0]= S/1000+0X30;
- Table1[1]= S/100%10+0X30;
- Table1[2]= S/10/10+0X30;
- Table1[3]= '.';
- Table1[4]= S%10+0X30;
- LCD1602_Disp_ZF(0x88,Table1,5);
- }
- }
- void main(void)
- {
- LCD1602_init();
- //////////////////////0123456789ABCDEF
- LCD1602_Disp_ZF(0x80," Now S: CM ",16);
-
- LCD1602_Disp_ZF(0x80+0X40,"Set H: L: ",16);
- TMOD=0x11;
- TH0=0;
- TL0=0;
- TH1=0xf8;
- TL1=0x30;
- ET0=1;
- ET1=1;
- TR1=1;
- EA=1;
- EA=0;
- ///SET_H = ISP_READ(0x2c00)*256+ISP_READ(0x2c01);//?áè?′?′¢μ?×?′ó?μ
-
- EA=1;
- while(1)
- {
- while(!RX);
- TR0=1;
- while(RX);
- TR0=0;
- Conut();
- /////////////////////////////////////
- if((S/10>SET_H)||(S/10<SET_L))
- {
- LED=0;SPEAK=0;
- }
- else
- {
- LED=1;SPEAK=1;
- }
- ////////////////////////////////
- if((S/10>SET_H))
- {
- Motor=0;
- }
- else
- {
- Motor=1;
- }
- if(!KEY1)
- {
- Delay_ms(10);
- if(!KEY1)
- {
- KEY_flag++;
-
-
-
-
-
- }
- while(!KEY1);
- }
- if(!KEY2)
- {
- Delay_ms(10);
- if(!KEY2)
- {
- if(KEY_flag%2==0)SET_H++;
- if(KEY_flag%2==1)SET_L++;
- }
- }
- if(!KEY3)
- {
- Delay_ms(10);
- if(!KEY3)
- {
- if(KEY_flag%2==0)SET_H--;
- if(KEY_flag%2==1)SET_L--;
- }
- }
- Table[0]= SET_H/100+0X30;
- Table[1]= SET_H%100/10+0X30;
- Table[2]= SET_H%10+0X30;
- LCD1602_Disp_ZF(0x86+0x40,Table,3);
- Table[0]= SET_L/100+0X30;
- Table[1]= SET_L%100/10+0X30;
- Table[2]= SET_L%10+0X30;
- LCD1602_Disp_ZF(0x8C+0x40,Table,3);
- }
- }
- /********************************************************/
- void zd0() interrupt 1
- {
- flag=1;
- }
- /********************************************************/
- void zd3() interrupt 3
- {
- TH1=0xf8;
- TL1=0x30;
- timer++;
- if(timer>=100)
- {
- timer=0;
- TX=1;
- _nop_(); _nop_(); _nop_();
- _nop_(); _nop_(); _nop_();
- _nop_(); _nop_(); _nop_();
- _nop_(); _nop_(); _nop_();
- _nop_(); _nop_(); _nop_();
- _nop_(); _nop_();_nop_();
- _nop_(); _nop_(); _nop_();
- TX=0;
- }
- }
复制代码
|