八路温度采集显示系统设计(8)

2019-03-04 15:30

八路温度采集与显示系统设计

址加在P1口和P2口的P2.0~P2.3(11位地址范围为,数据从0000H~0FFFFH)

P0输入,引脚P2.6、P2.7、P3.6、P3.7的电平设置见表4.3,错误!未找到引用

源。为低电平,RST保持高电平,错误!未找到引用源。/错误!未找到引用源。引脚是编程电源的输入端,按要求加上编程电压,ALE/错误!未找到引用源。 引脚输入编程脉冲(负脉冲)。编程时,可采用4—20MHz的时钟振荡器,AT89C51编成方法如下[47]:

(1)在地址线上加上要编程单元的地址; (2)在数据线上要写入数据的字节; (3)激活相应的控制信号;

(4)在高电压编程时,将错误!未找到引用源。/Vpp端加上+12V编程电压;

(5)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个

ALE/错误!未找到引用源。编程脉冲。

在本设计中,单片机要对DS18B20传来的数据进行处理并传送到液晶显示器和上位机,并且判断温度是否超限如果超限则控制报警端口的高低电平变换,其程序如下所示。 void main(void) {

uchar temp_data_l,temp_data_h; init_lcd1602(); send_str(str2); //向串行口发送作者信息 send_str(str3); send_str(\

ds18b20_init(); write_byte(0xcc); write_byte(0x44); //启动温度转换 delay(600); match_rom(ds18b20_romX); //匹配第X路 write_byte(0xbe); //读温度 temp_data_l= read_byte(); //温度低8位 temp_data_h = read_byte(); //温度高8位 convert_T(temp_data_h,temp_data_l); first_line[2]=LCD_3; //温度转换后的各位 first_line[3]=LCD_2; //分别存入显示缓存数组中 first_line[4]=LCD_1; first_line[6]=LCD_0;

send_str(X_line); //往串行口发送第三行和第X行温度

33

八路温度采集与显示系统设计

}

send_str(\delay(100);

表4.3 Flash存储器编程真值表

方式 RST 错误!ALE/错误!未找 未找到引用到引源。 用源。/VPP L L L L L L L H H P2.6 P2.7 P3.6 P3.7 写代码数据 读代码数据 H H H H H H H H/12V H H/12V H/12V H/12V H/12V H L L H H H H L H L H H L L L H H H L H L L H H H L L L L Bit-1 写加密位 Bit-2 Bit-3 片擦除 读签名字节 34

八路温度采集与显示系统设计

+5VADDR0000H/OFFFFHA0-A7P1VCCP2.0-P2.3A8-A11P2.6P0P2.7P3.6P3.7XTAL2ALEPGM DATA(USE 10K PULLUPS)AT89C51SEE FLASHPROGRAMMINGMODES TABLEVIHEA3-24 MHzRSTXTAL1GNDPSENVIH

图4.5 校验电路

4.3 显示模块软件设计

4.3.1 LM041L的软件应用

LCD字符型显示器模块有两种寄存器:指令寄存器和数据寄存器。单片机等主

控制系统对LCM(LCD显示器模块)的指令寄存器写操作,可以将“清屏”等控制指令发送给LCM。对指令寄存器读操作,可得到的数据的最高位是LCM的状态(空闲状态或忙状态)标志位,低7位是地址计数器的信息。对LCM的数据存储器写操作,可以修改当前地址中显示字符。读操作可以得到当前显示地址中的现实数据。

LCD字符型显示器模块的详细指令如表4.4所示[3]。

表4.4 LCD字符型显示器模块的指令集

指令功能 R/错误!RS 未DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 找到引35

八路温度采集与显示系统设计

用源。 清屏(并且光标回原点) 0 光标回原点 进入模式设定 显示开关控制 光标或字符移位 功能设定 设置CGRAM地址 设置显示地址 读忙标志和地址计数器 向CGRAM/DDRAM 写数据 从CGRAM/DDRAM 读数据 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 BF 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 DL 0 0 0 1 S/C N 0 0 1 D R/L F 0 1 I/D C X X 1 X S B X X 0 0 0 0 0 0 0 0 1 1 6位CGAM地址码 7位DDRAM地址码 7位当前显示地址码 8位数据 8位数据 表中X:任意二进制数。

I/D:显示地址计数器模式选择。I/D=1,选择加1模式;I/D=0,选择减1模式。 D:显示器开关控制位。D=1,显示器ON;D=0,显示器OFF。 C:光标开关控制位。C=1,光标ON;C=0,光标OFF。

B:光标闪烁开关控制位。B=1,光标闪烁ON;B=0,光标闪烁OFF。

S/C:显示器或光标移位选择。S/C=1,选择显示器移位;S/C=0,选择光标移位。 R/L:移位方向选择。R/L=1,向右移动;R/L=0,向左移动。

DL:传输数据的有效位长度选择。DL=1,有效位为8位;DL=0,有效位为4位。 N:显示器行数选择位。N=1,选择使用4行显示器;N=0,选择使用两行显示器。 F:字符显示块的点阵选择。F=1,选择5×10点阵;F=0,选择5×7点阵。 BF:忙标志位。BF=1,LCM处于忙状态;BF=0,LCM处于空闲状态。 CGRAM:字符发生器RAM。用户自编成的字符或图形存储器。 CDRAM:显示数据RAM。

4.3.2 LM041L的程序流程图及主要程序

液晶显示器在本系统担任显示的任务,本系统采用的LM041L液晶显示器可同时显示八路温度,可直观的看到八路温度实时的温度情况,便于及时控制处理。

LM041L为四行显示,可分别定义每路温度的显示地址,每行显示两路。其程序流

36

八路温度采集与显示系统设计

程图如图4.6所示。

开始LM041L写命令LM041L初始化LM041L测忙N定义LM041L显示位置YLM041L写数据匹配第一、二行温度值匹配第三、四行温度值返回

图4.6 LM041L的程序流程图

LM041L显示程序如下。

void init_lcd1602() //初始化LM041L {

write_command(0x3f); delay(10);

write_command(0x3f); delay(10);

write_command(0x3f); //功能设定(8位,4行,5*7点阵式) delay(10);

write_command(0x0c); //显示器ON,光标OFF,闪烁OFF delay(10);

write_command(0x06); //地址加1 delay(10);

37


八路温度采集显示系统设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考英语作文万能模板 - 图文

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

马上注册会员

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