(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 图3.8 LCD1602 管脚功能: 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 DALLAS 公司单线数字温度传感器 DS18B20 是一种新的“一线器件”,它具有体积小、适用电压宽等特点。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20支持“一线总线”接口,测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃;通过编程可实现9~12位的数字值读数方式; 可以分别在93.75ms和750ms内将温度值转化为9位和12位的数字量。每个 DS18B20 具有唯一的 64 位长序列号,存放于 DS18B20 内部 ROM 只读存储器中。 图3.9 温度采集电路 DS18B20温度传感器的内部存储器包括1 个高速暂存RAM和 1个非易失性的电可擦除E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。暂存存储器包含了8个连续字节,前2字节为测得的温度信息,第1个字节为温度的低8位,第 2个字节为温度的高8位。高 8位中,前 4位表示温度的正(全“0”)与负(全“1”);第3个字节和第 4 个字节为 TH、TL 的易失性拷贝;第5个字节是结构寄存器的易失性拷贝,此三个字节内容在每次上电复位时被刷新;第6、7、8个字节用于内部计算;第9个字节为冗余检验字节。所以,读取温度信息字节中的内容,可以相应地转化为对应的温度值。 3.2.7 复位电路 按下复位键单片机重启 图3.10 复位电路 3.2.8 时钟电路 图3.11 时钟电路 3.3 软件程序编写 3.3.1 主程序 功能详述 调用各个子程序,完成从A/D检测到校准,到PID运算,到结果显示以及D/A转换输出的流程顺序安排,并实现控制器的功能使成语能在单片机中运行 参数说明 主要函数:void main() 主要变量:temper:温度值,liuliang:流量值,shuchu:控制信号输出 主程序 详见 附录A d. 流程图 图3.12 主程序流程图 3.3.2 温度读取函数 功能详述 从BS1820读取当前的温度值,实现当前温度的获取,用以对流量的校准用 参数说明 主要函数: unsigned char read_bit();和unsigned char read_byte();向BS18B20传入指令 void write_bit(unsigned char dat);void write_byte(unsigned char dat);:从BS18B20读取字节 unsigned char reset();:重置BS1820 int read_temp();:读取温度值,返回一个当前温度的唯一对应值 程序 详见 附录B 流程图 图3.13 温度读取流程图 3.2.3 A/D、 D/A转换函数 功能详述 A/D将传感器输出的模拟信号转化为数字信号,传入单片机以用于PID运算 D/A将控制信号转化为模拟信号(电压),用以驱动执行器进行控制 参数说明 bit ISendByte(unsigned char sla,unsigned char c) :ADC发送字节[命令]数据函数,sla为控制字地址,c为指令 unsigned char IRcvByte(unsigned char sla): ADC读字节数据函数 sla为要读取A/D通道的地址,返回值为转化后的数据量 bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val) :DAC变换, 转化函,sla为控制字地址,c为指令,Val是要转化的数字量 流程图 图3.14 A/D(左)-D/A(右)转换流程图 3.3.4 PID调整函数 功能详述 将校准后的流量和PID参数以及给定值代入运算得到控制信号,用以输出控制 参数说明 主要函数 double PIDCalc( PID *pp, double NextPoint ):PID运算程序,*pp是POD结构体,NextPoint为测量值,返回值是控制信号 void PIDInit (PID *pp):初始化 PID 结构体 主要变量 PID 结构体有以下成员 double F; // 设定目标 double P; // 比例常数 double I; // 积分常数 double D; // 微分常数 程序 详见 附录A 流程图 图3.15 PID运算流程图 3.3.5 LCD显示函数 功能详述 用于显示流量值,温度值,控制量,以及PID参数和给定值,是操作可视化,数据可视化 参数说明 主要函数 void LCD_Init();屏幕初始化; void LCD_Clear(void);清屏 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);显示一个字符串,x为要显示的位置列,y为要显示的位置行,*s为要显示的字符串 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data); 显示一个字符,x为要显示的位置列,y为要显示的位置行,Data为要显示的字符 程序 详见 附录C 流程图 图3.16 LCD显示流程图 3.3.6 键盘扫描函数 功能详述 扫描键盘按键的位置并执行相应的操作,用以输入给定量和PID参数 参数说明 主要函数 void keyscan(void):扫描判断是否有键按下,并判断按下的键的位置并生成一个唯一键值 unsigned char keydown(void):按键防抖并返回唯一键值 void ctrl(void):按键控制,用于改变要输入的量和位并输入值 主要变量 unsigned char dis_buf ;唯一键值 int num[6];//0-P,1-I,2-D,3-设定标准值,4-选数,5-选位 程序 详见 附录E 流程图 图3.17键盘控制流程图 4 系统联调 4.1 各按键作用 图4.1 按键实物 从左到右从上到下依次是: 输入0,输入1,输入2,输入3,输入4,输入5,输入6,输入7,输入8,输入9,切换要输入的变量,切换要输入的位 4.2 正常运行状况 图4.2 运行实况(1) 从左到右从上到下依次是: 已校准流量Q,当前温度T,控制输出Y,运行状态 按下变量切换一次可变为: (1)设置P 图4.3 运行实况(2) (2)设置I 图4.4 运行实况(3) (3)设置D 图4.5 运行实况(4) (4)设置给定值F 图4.6 运行实况(5) 结论在控制系统中,仪器仪表作为其构成元素,它的技术进展是跟随控制系统技术的发展而发展的。目前,控制理论已发展到智能控制的新阶段,自动化仪器仪表的智能化就成为必然了。仪器仪表的智能化主要归结于微处理器和人工智能技术的发展与应用。例如运用神经网络、PID算法、进化计算、混沌控制等智能技术,使仪器仪表实现高速、高效、多功能、高机动灵活等性能。 智能仪是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。 当前我国正处于工业化中期。而国际上的大型项目所用自动化仪器仪表和控制系统的先进程度的需求已经处于世界先进水平。在工业化、信息化、现代化、市场化和国际化“五化”息息相关,广大国内企业生产要求持续研究和开发智能化流量检测仪的背景下,本论文中的基于单片机的智能流量测量控制仪的实现是响应实际生产过程需求的设计,是对智能化流量检测仪的技术完善,也是为我国测控事业的发展加力。 致谢师者,所以传道受业解惑也。