




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*1 项目8 数字温度控制器的设计与制作 掌握单总线数字温度传感器的使用 掌握液晶显示器的使用 掌握温度报警器及数字温度控制器的设计 本章要点: *2 8.1 任务1 认识单总线 1-wire,即单线总线,又叫单总线。它是美国的 达拉斯半导体公司(DALLASSEMICONDUCTOR) 近年来推出的一项特有的技术。该技术采用单根信号 线,系统中的数据交换、控制都由这根线完成,既可 传输时钟,又能传输数据,而且数据传输是双向的, 因而这种单总线技术具有线路简单,硬件开销少,成 本低廉,便于总线扩展和维护等优点。 1.单总线数字温度传感器DS18B20 DS18B20是美国DALLAS公司生产的单总线数字温度传感 器,可把温度信号直接转换成串行数字信号供微机处理, 在一条总线上可挂接多个DS18B20芯片。 单总线通常要求外接一个约为4.7k的上拉电阻,当 总线闲置时,其状态为高电平。DS18B20数字温度传感器可 提供912位温度读数。读取或写入DS18B20的信息仅需一 根总线,总线本身可以向所有挂接的DS18B20芯片提供电源 ,而不需额外的电源。由于DS18B20这一特点,非常适合于 温度检测系统。 (1)DS18B20的优点 采用单总线的接口方式。与微处理器连接时,仅需要一条口 线即可实现微处理器与 DS18B20 的双向通信。 每个器件上都有独一无二的序列号。 测量温度范围宽,测量精度高。 在使用中不需要任何外围元件即可实现测温。 内部有温度上、下限告警设置。 支持多点组网功能。 供电方式灵活。 测量参数可配置。 负压特性。 掉电保护功能。体积小、适用电压宽、更经济。 (2) DS18B20芯片结构 DS18B20外形和引脚图如8-1所示,各引脚功能如表8-1所示 : 图图8-1 DS18B20外形和引脚配置图图 表8-1 DS18B20引脚功能 DS18B20内部结结构如图图8-2所示。 图图8-2 DS18B20内部结结构图图 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看 作是该DS18B20的地址序列码。第一个八位为单总线器件识别 码(DS18B20为28h),接下来48位是器件的惟一系列码,最后八 位是前56位的CRC校验码。每个DS18B20的序列号都各不相同, 这样就可以实现一根总线上挂接多个DS18B20的目的。 2.传感器的读写时序 由于DS18B20是在一根I/O线上读写数据,因此,对读写 的数据位有着严格的时序要求。包括初始化时序、读时序、 写时序。所有时序都是将主机作为主设备,单总线器件作为 从设备。而每一次命令和数据的传输都是从主机主动启动写 时序开始,如果要求单总线器件回送数据,在进行写命令后 ,主机需启动读时序完成数据接收。数据和命令的传输都是 低位在先。 DS18B20的一线工作协议流程是: 初始化ROM操作指令存储器操作指令数据传输。 (1) 初始化时序 DS18B20初始化时时序如图图8-3所示。 图图8-3 DS18B20初始化时时序图图 (2) 对DS18B20的写和读操作时序 DS18B20的读读和写操作时时序分别别如图图8-4、8-5所示。 图图8-4 DS18B20读读操作时时序图图 图图8-5 DS18B20写操作时时序图图 3.传感器的操作使用 DS18B20 单线通信功能是分时完成的,它有严格的时隙概 念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读 写时序很重要。根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 几 个步骤 : ()每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us ,然后释放, DS18B20 收到信号 后等待 16us60us 左右,然后发出60us240us 的存在低脉 冲,主 CPU 收到此信号后表示复位成功。 ()发送一条 ROM 指令 DS18B20的ROM指令集如表8-2所示: 表8-2 DS18B20的ROM指令集 ()发送存储器指令 DS18B20的存储器指令集如表8-3所示: 表8-3 DS18B20的存储储器指令集 DS18B20进进行一次温度转换转换 的具体操作如下: 1)主机先作个复位操作 2)主机再写跳过过ROM的操作(CCH)命令 3)然后主机接着写个转换转换 温度的操作命令,后面释释放总总 线线至少一秒,让让DS18B20完成转换转换 的操作。在这这里要注意 的是每个命令字节节在写的时时候都是低字节节先写,例如CCH的 二进进制为为11001100,在写到总线总线 上时时要从低位开始写,写 的顺顺序是“0、0、1、1、0、0、1、1”。整个操作的总线总线 状态态如下图图8-6所示。 图图8-6 DS18B20进进行一次温度转换转换 的状态图态图 读读取RAM内的温度数据的具体操作如下: 1)主机发发出复位操作并接收DS18B20的应应答(存在)脉冲。 2)主机发发出跳过对过对 ROM操作的命令(CCH)。 3)主机发发出读读取RAM的命令(BEH),随后主机依次读读取 DS18B20发发出的从第0一第8,共九个字节节的数据。如果只想读读 取温度数据,那在读读完第0和第1个数据后就不再理会后面 DS18B20发发出的数据即可。同样读样读 取数据也是低位在前的。整 个操作的总线总线 状态态如下图图8-7所示。 图图8-7 DS18B20读读取RAM内 的温度数据的状态图态图 第二步跳过对ROM操作的命令是在总线上只有一个器件 时,为节省时间而简化的操作,若总线上不止一个器件 ,那么跳过ROM操作命令将会使几器件同时响应,这样就 会出现数据冲突。 *16 8.2 任务2 认识液晶显示器 液晶显示器是日常生活中常见的输出设备,如在计算 器、万用表、电子表及很多家用电子产品中都可以看到, 显示的主要是数字、专用符号和图形。 1.1602LCD液晶模块 (1)1602LCD液晶显示模块结构 1602LCD液晶显示模 块的管脚配置图如图8-9 所示: 图8-9 1602LCD液晶模块管脚配置图 引脚功能如表8-4所示。 表8-4 1602LCD液晶模块块管脚功能 (2)1602LCD液晶显示模块控制指令 LCD1602 有11个控制指令,如表8-5所示: 表8-5 1602LCD液晶模块控制指令集 2.液晶模块读写操作时序 (1)写时序 写时序图如图8-10所示: 图8-10 1602LCD液晶模块写时序图 (2)读时序 读时序图如图8-11所示: 图8-11 1602LCD液晶模块读时序图 从图8-10和图8-11可以看出,1602液晶的读写操作时序可 总结成表8-8所示。 表8-8 1602LCD液晶模块读块读 写时时序 控制接口基本操作时序如下: 读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字 写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无 读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据 写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无 (3)RAM地址映射图 控制器内部带有808位(80字节)的RAM缓冲区,对应关 系如图8-12所示: 图图8-12 1602LCD液晶RAM地址映射图图 (4)液晶操作步骤 1)初始化设置 显显示模式设设置 显显示开/关及光标设标设 置 2)数据控制 控制器内部有一个数据地址指针,用户可用它们来访问 内部的全部80字节RAM。 数据指针设针设 置 读读数据 写数据 其他设设置 液晶初始化子程序: 液晶初始化子程序通常包含以下内容: 液晶显示使能端E清零(因为上电默认是高电平,所 以开始要清零,为E产生高脉冲做准备) 显示模式设置:com(0x38);38是以2行16字的5*7的点 阵方式显示 显示开关:com(0x0f);0f是开显示,且开光标闪烁; 0e开显示,且开光标,光标不闪烁; 0c开显示 显示模式设置:com(0x06);06地址指针自动加1,光 标加1,字符不动 清屏:com(0x01);01显示清屏,数据指针也清屏 初始化子程序参考如下: void init( ) lcde=0; /使能端E清零 write_com(0x38); /显示模式设置 write_com(0x0f); /开显示,显示光标,光标闪烁 write_com(0x06); /当写一个字符后,地址指针自 动加1,且光标加1,字符不动 write_com(0x01); /清屏 write_com(0x80); /设置数据指针 写命令子函数: 参考程序如下: void write_com(unsigned char com) lcdrs=0; /RS清零,代表指令操作 D0D7=com; delay(5); lcde=1; delay(5); lcde=0; /产生高脉冲 参考程序如下: void write_data(unsigned char data1) lcdrs=1; /RS置1,代表数据操作 D0D7=data1; delay(5); lcde=1; delay(5); lcde=0; /产生高脉冲 写数据子函数: 3.液晶显示模块应用实例 【实例8-1】如图8-13所示电路图,要求编程实现LCD1602 液晶显示模块两行分别居中显示“HELLO WORLD!”和 ”WELCOME!”,并且光标能够闪烁,整屏字符能够左移显 示。 图8-13 实例1电路图 分析:Proteus中LCD1602液晶显示元件名称是LM016L(在 元件查找里面可以找到),这个元件接法与LCD1602相同。 参考程序如下: #include unsigned char code tab=“HELLO,WORLD!“; unsigned char code tab1=“WELCOME!“; sbit lcdrs=P20; sbit lcde=P21; unsigned char i; void delay(unsigned int z) unsigned int x,y; for(x=z;x0;x-) for(y=125;y0;y-); void write_com(unsigned char com) lcdrs=0; P3=com; delay(5); lcde=1; delay(5); lcde=0; void write_data(unsigned char data1) lcdrs=1; P3=data1; delay(5); lcde=1; delay(5); lcde=0; void init( ) lcde=0; /使能端E清零 write_com(0x38); /显示模式设置 write_com(0x0f); /开显示,显示光标,光标闪烁 write_com(0x06); /当写一个字符后,地址指针自动加1, 且光标加1,字符不动 write_com(0x01); /清屏 write_com(0x80); /设置数据指针 void main() init(); write_com(0x80+0x12); /设置数据指针 for(i=0;i #define uchar unsigned char #define uint unsigned int uchar code disp=“0123456789“;/定义字符数组显示数字 uchar code disp2=“Temp:“;/说明显示的是温度 uchar code disp3=0xdf,C;/温度单位 uchar code disp4=“ L: H: “;/温度上下限显示 sbit lcden=P21;/液晶使能端 sbit lcdrs=P20;/液晶命令/数据控制端 sbit ds=P10;/DS18B20温度采集信号端 sbit led=P11; sbit led1=P23; sbit beep=P12; sbit key1=P32;/加1键 sbit key2=P33;/减1键 sbit key3=P34;/上/下限选择键 bit flag=0; uint temp;/定义无符号整型形参 float f_temp;/定义浮点型形参 uint TH=300; uint TL=200; void delay(uint z)/延时500ms程序 uint x,y; for(x=z;x0;x-) for(y=125;y0;y-); void write_com(unsigned char com) lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; delay(5); void write_data(unsigned char data1) lcdrs=1; P0=data1; delay(5); lcden=1; delay(5); lcden=0; delay(5); void lcd_init( ) lcden=0; /使能端E清零 write_com(0x38); /显示模式设置 write_com(0x0c); /开显示,不显示光标 write_com(0x06); /当写一个字符后,地址指针自动加1,且光标加1, 字符不动 write_com(0x01); /清屏 void temp_dis(uint value)/温度数据显示 uchar ge,shi,bai; bai=value/100;/十位 shi=value%100/10;/个位 ge=value%100%10;/小数位 /write_com(0x80+7); write_data(dispbai); write_data(dispshi); write_data(.); write_data(dispge); void ds_init()/DS18B20复位,初始化 uint i; ds=0; i=90;/延时 while(i0)i-;/主机发出一个480960微秒的低电平脉冲 ds=1; i=4;/延时 while(i0)i-;/释放总线后,以便从机18b20通过拉低总线来指示其是否在线, 存在检测高电平时间:1560us bit ds_read_bit()/读一位DS18B20数据 uint i ; bit value_bit; ds=0; i+;/延时,读时隙起始于微处理器将总线拉低至少1us ds=1;/拉低总线后接着释放总线,让从机18b20能够接管总线,输出有效数据 i+; i+;/小延时一下,读取18b20上的数据,因为从ds18b20上输出的数据在读“时间隙“ 下降沿出现15us内有效 value_bit=ds; i=8;/延时 while(i0)i-;/所有读“时间隙“至少需要60us return value_bit; uchar ds_read_byte()/读一个字节DS18B20数据 uchar i,j,value_byte; value_byte=0; for(i=1;i1);/将读取的数据位按读取先后顺序 低位到高位(从右往左)排列保存到value_byte return value_byte; void ds_write_byte(uchar write_byte)/写一个字节数据到DS18B20 uint i; uchar j; bit write_bit; for(j=1;j1; if(write_bit) ds=0; i+;/延时,至少延时1us,才产生写“时间隙“ ds=1;/写时间隙开始后的15s内允许数据线拉到高电平 i=8;/延时 while(i0)i-;/所有写时间隙必须最少持续60us else ds=0; i=8;/延时 while(i0)i-;/主机要生成一个写0时间隙,必须把数据线拉 到低电平并保持至少60us ds=1;/释放总线 i+;/延时 i+; void temp_convert()/DS18B20开始获取温度并进行转换,先初始化,然后跳过ROM (跳过64位ROM地址,直接向ds18B20发温度转换命令),发送温度转换命令 ds_init(); delay(1); ds_write_byte(0xcc);/ 跳过序列号命令 ds_write_byte(0x44);/ 发转换命令 44H uint temp_get()/读取DS18B20寄存器中的温度数据 uchar temp_low,temp_high; ds_init(); delay(1); ds_write_byte(0xcc); ds_write_byte(0xbe); temp_low=ds_read_byte(); temp_high=ds_read_byte(); t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度高端电子产品包装及物流运输全程质量监控服务合同
- 二零二五年度顶管施工与地下管线综合保护合同
- 二零二五年高空玻璃安装与玻璃安全性能检测合同
- 2025年风电场设备全面检修及性能优化升级合同
- 二零二五版高科技园区建设担保预付款合同
- 2025年环保企业环保技术改造项目投资合同范本
- 二零二五年度安全性能达标吊车租赁合同规范
- 2025年特色酒吧连锁经营管理合同
- 2025版测绘员技术支持与聘用合同范本
- 高端车展场地租赁及配套设施服务合同
- 急救护理学高职PPT完整全套教学课件
- AutoCAD计算机辅助设计标准教程(中职)PPT完整全套教学课件
- 安全生产费用使用范围及计量办法
- 肾脏疾病常见症状和诊疗
- 安全环保职业卫生消防题库及答案
- 数据中心负荷计算方法
- 金X绅士无双攻略
- 第八章 立体几何初步(章末复习) 高一数学 课件(人教A版2019必修第二册)
- GB/T 27518-2011西尼罗病毒病检测方法
- GB/T 26255-2022燃气用聚乙烯(PE)管道系统的钢塑转换管件
- GB/T 14202-1993铁矿石(烧结矿、球团矿)容积密度测定方法
评论
0/150
提交评论