#define NOP() {_nop_();_nop_();_nop_();_nop_();} #define LCD_DATA P2
sbit DSPORT=P1^0; sbit Heat = P0^0; sbit Push = P0^1; //------Beep----- sbit BEEP = P1^1; //sbit LED = P1^4; //------Key----- sbit AUTO = P3^4; sbit MOV = P3^5; sbit ADD = P3^6; sbit DEC = P3^7; //sbit EN = P2^4;
sbit INT = P3^3; //------LCD引脚----- sbit LCD_RS=P0^4; sbit LCD_RW=P0^5; sbit LCD_EN=P0^6; //------超声波引脚------- sbit Tx=P3^1; sbit Rx=P3^2;
//触发控制信号输入 //回响信号输出
//
//DS18b20 //温度控制继电器 //抽水控制
uchar temp_dis[] = {\ uchar table[] = {\ uchar Hand_table[]= {\ push \//uchar Auto_table[]= {\
uchar Set_Table[7] ={3,6,0,0,2,0,0}; uchar Con_Flag=0;
uchar aa=0, bb=0;
//LCD第一行 //LCD第二行显示
//设定温度值,水位值数组
//控制标志位1为自动,0为手动
long int t,distance,S_Distance=0,R_Distance=0;//L=500; //distance=超声波安装点 与 水面的距离,水深=
超声波安装点-distance
long int temp = 0,S_Temp=0,R_Temp=0; int TError=0,DError=0; uchar cache[4]={0,0,0,0};
uchar datas[3] = { 0,0,0}; //定义数组 //double Kp=0.0;
//PID控制的比例、积分、微分常数
/******************************************************************************* * 函 数 名 : Delay1ms * 函数功能
: 延时函数
* 输 入 : 无 * 输 出 : 无
*******************************************************************************/ void Delay1ms(uint ms) { }
/******************************************************************************* * 函 数 名 : Init_Config * 函数功能
: 中断配置
uint t; while(ms--)
for(t=0;t<120;t++);
* 输 入 : 无 * 输 出 : 无
*******************************************************************************/ void Init_Config(void) {
TMOD=0x19; TR0=1; EX0=1; IT0=1;
//启动定时器 //开外部中断
}
EX1=1; IT1=1; PX0=1; PX1=0; EA=1;
//开总中断
/******************************************************************************* * 函 数 名 : read_lcd_state * 函数功能
: 读取LCD状态
* 输 入 : 无 * 输 出 : 无
*******************************************************************************/ uchar read_lcd_state() { }
/******************************************************************************* * 函 数 名 : lcd_busy_wait * 函数功能
: LCD测忙
uchar state; LCD_RS=0; LCD_RW=1; LCD_EN=1; _nop_();
state=LCD_DATA; LCD_EN=0; _nop_(); return state;
* 输 入 : 无 * 输 出 : 无
*******************************************************************************/ void lcd_busy_wait() {
while((read_lcd_state() & 0x80)==0x80); NOP();
}
/***************************************************************************** * 函 数 名 : lcd_write_com * 函数功能
: 写命令入LCD
* 输 入 : 无 * 输 出 : 无
*****************************************************************************/ void lcd_write_com(uchar com) { }
/***************************************************************************** * 函 数 名 : lcd_write_data * 函数功能
: 写数据入LCD
lcd_busy_wait(); LCD_RS=0; LCD_RW=0; LCD_DATA=com; NOP(); LCD_EN=1; NOP(); LCD_EN=0;
//RS为0时,写指令,RS为1时,写数据
* 输 入 : dat * 输 出 : 无
*****************************************************************************/ void lcd_write_data(uchar dat) { }
lcd_busy_wait(); LCD_RS=1; LCD_RW=0; LCD_DATA=dat; NOP(); NOP(); LCD_EN=0;
LCD_EN=1;
/****************************************************************************** * 函 数 名 : lcd_init * 函数功能
: LCD初始化
* 输 入 : 无 * 输 出 : 无
*****************************************************************************/ void lcd_init() { }
/***************************************************************************** * 函 数 名 : set_lcd_pos * 函数功能
: 设置LCD显示地址
LCD_EN=0;
lcd_write_com(0x38); lcd_write_com(0x0c); lcd_write_com(0x06); lcd_write_com(0x01);
//LCD显示模式设置 //LCD显示开/关及光标设置
//当写一个字符后地址指针加1,且光标加1 //显示清屏
* 输 入 : p * 输 出 : 无
*****************************************************************************/ void set_lcd_pos(uchar p) { }
/***************************************************************************** * 函 数 名 : lcd_print * 函数功能
: 打印显示字符
lcd_write_com(p|0x80);
* 输 入 : p,*s,low * 输 出 : 无