CAN总线温度控制节点设计

发布时间 : 星期一 文章CAN总线温度控制节点设计更新完毕开始阅读

如表2-3所示:

表2-3 液晶主要技术参数表 显示容量 芯片工作电压 工作电流 模块最佳工作电压 字符尺寸 16 X 2个字符 4.5~5.5V 2.0mA(5.0V) 5.0V 2.95 X 4.35(W*H)mm 2.4.3 基本操作时序

读状态 输入:RS=L,R/W=H,E=H 输出:D0~D7=状态字。 读数据 输入:RS=H, R/W=H,E=H 输出:无。

写指令 输入:RS=L, R/W=L,D0~D7=指令码,E=高脉冲 输出:D0~D7=数据。 写数据 输入:RS=H, R/W=L,D0~D7=数据, E=高脉冲 输出:无。

2.4.4 RAM地址映射图 如图2-11所示:

LCD 16字*2行 00 01 02 03 04 05 06 07 08 40 41 42 43 44 45 46 47 48 09 0A 0B OC 49 4A 4B 4C 0D ...... 4D ...... 27 67 图2-11 1602内部RAM地址映射图 注:1.当我们向图2.11中的00~0F,40~4F地址中的任一处写入显示数据时,液晶都可以立即显示出来,但当写入到10~27或是50~67地址处时,必须通过移屏指令将它们移入可显示区域才可以正常显示。

2.设置数据地址指针时,不能单纯的输入上图中所示的地址码,需在地址码前加上80H,此一点尤为重要。

正确的设置数据地址指针的方式为:指令码=80H+地址码(00~27H,40~67H) 2.4.5 其它设置

如表2-4所示:

表2-4 其它设置

指令码 01H 02H 功能 显示清屏:1.数据指针清零 2.所有显示清零 显示回车: 数据指针清零 2.4.6 初始化设置

(1)显示模式设置(如表2-5所示)

14

表2-5 显示模式设置

指令码 0 0 1 1 1 0 0 0 功能 设置16*2显示,5*7点阵,8位数据接口 (2) 显示开/关及光标设置(如表2.6所示) 表2-6 显示开/关及光标设置

指令码 0 0 0 0 0 0 0 0 1 0 D 1 C N B S 功能 D=1 开显示;D=0关显示 C=1显示光标;C=0不显示光标 B=1光标闪烁;B=0光标不显示 N=1 当读或写一个字符后地址指针加1,且光标加1;N=0 当读或写一个字符后地址指针减1,且光标减1 S=1当写一个字符时,整屏显示左或右移,得到光标不移动而屏幕移动的效果 S=0当写一个字符时,整屏显示不移动 光标左移 光标右移 整屏左移,同时光标跟随移动 整屏右移,同时光标跟随移动 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0

2.4.7 写操作时序(时序图如图2-12所示)

分析时序图可知操作1602液晶的流程如下:

(1)通过RS确定是写数据还是写命令。写命令包括使液晶的光标显示与否、光标闪烁与否,需不需要移屏、在液晶的什么位置显示等等;写数据是指液晶上要显示的内容。

(2)读/写控制端要设为低电平0,即写模式。 (3)将数据或命令送到数据线上。

(4)给E一个高脉冲将数据送入液晶控制器,至此完成写操作。

RS RWE DB0~DB7 tsp1 tpw tHD1tF tHD1tHD2 tR tsp2 tc 图2-12 1602写操作时序图

2.4.8 液晶显示模块子程序流程:开始→液晶显示初始化→写入RAM地址→写入

15

显示的数据→显示在液晶上→结束,其流程图如2-13所示:

开始

液晶初始化

写入RAM地址

写入数据

液晶显示

结束

图2-13 液晶显示模块子程序流程图 2.4.9 程序如下:

(1) 液晶初始化函数如下: void init()

{

rw=0; //液晶从此只能写不能读

en=0; //使能端刚开始为低电平

write_com(0x38); //初始化液晶设置16*2显示, 5*7点阵,8为数据接口

write_com(0x0f); //显示开 光标开且光标闪烁 write_com(0x06); //000001NS(N=1地址加1.N=0 地址减1.S=0整屏不移动.S=1(左移或右移)) write_com(0x80); //地址指针从第一行第一个字开始

}

(2) 写命令函数如下: void write_com(unchar com) //写命令带字符参数函数

{

rs=0; //RS设置为写命令

P1=com; //给八个端口输值 delay(5); //根据时序图在给使能端高电平前先延时 en=1; //使能端高脉冲 delay(5); //延时

en=0; //变为低电平

16

}

(3) 写数据函数如下:

void write_dat(unchar dat) //写数据带字符参数函数 {

rs=1; //RS设置为写数据 P1=dat; //给八个端口输值

delay(5); //根据时序图在给使能端高电平前先延时 en=1; //使能端高脉冲 delay(5); //延时

en=0; //变为低电平

}

2.5 PID算法程序设计

2.5.1 PID概述

根据偏差的比例(P)、积分(I)、微分(D)进行控制(简称PID 控制)是控制系统中应用中最广泛的一种控制规律。实际运行的经验和理论分析都表明,这种控制规律对许多工业过程进行控制时,都能得到满意的效果。不过,用计算机实现PID控制,不是简单地模拟PID控制规律数字化,而是进一步与计算机逻辑判断功能相结合,使PID控制更加灵活,更能满足生产过程提出的要求。

PID工作原理:由于来自外界的各种扰动不断产生,要想达到现场控制对象值(在此指的是水温值)保持恒定的目的,控制作用就必须不断的进行。若扰动出现使得现场控制对象值(在此指的是水温值)发生变化,温度传感器ds18b20就会将这种变化采集后送至PID 控制器的输入端,并与其给定值进行比较得到偏差值(以下简称e 值),调节器按此偏差以我们预先设定的整定参数控制规律发出控制信号,去改变调节器的开度,使调节器的开度增加或减少,从而使现场控制对象值(在此指水温值)发生改变,并趋向于给定值,以达到控制目的。如图2-14所示,其实PID 的实质就是对偏差进行比例、积分、微分运算,根据运算结果控制执行部件的过程。

设定 + e(t) -PID+ u(t) + +执行部 y(t)件 图2-14 PID工作原理图

2.5.2 数学模型的建立

在本设计中,将采用数字PID位置型控制算法。 在加热的过程中,没有必要全程进行PID控制,可以在设定温度值前一个温度域

17

联系合同范文客服:xxxxx#qq.com(#替换为@)