基于单片机的液位水温控制(3)

2019-04-14 12:20

#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 * 输 出 : 无


基于单片机的液位水温控制(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:异步电动机动态数学模型仿真 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: