单片机应用与项目实践ppt课件

上传人:20****08 文档编号:241301748 上传时间:2024-06-16 格式:PPT 页数:41 大小:629.52KB
返回 下载 相关 举报
单片机应用与项目实践ppt课件_第1页
第1页 / 共41页
单片机应用与项目实践ppt课件_第2页
第2页 / 共41页
单片机应用与项目实践ppt课件_第3页
第3页 / 共41页
点击查看更多>>
资源描述
任务一任务一 用用DS18B20DS18B20设计电子温度计设计电子温度计 DS18B20 DS18B20是美国是美国DALLASDALLAS公司推出的数字公司推出的数字温度传感器,将温度传感器、数字转换电路温度传感器,将温度传感器、数字转换电路集成到了一起,外形如同一只三极管。集成到了一起,外形如同一只三极管。1 1、微型化、低功耗、高性能、抗干抗性强;、微型化、低功耗、高性能、抗干抗性强;2 2、它采用独特的单线接口方式,与单片机连接时,、它采用独特的单线接口方式,与单片机连接时,仅需一根口线;仅需一根口线;3 3、每片、每片DS18B20DS18B20均有唯一的产品序列号,所以允许均有唯一的产品序列号,所以允许 在单总线上挂接数十至上百片数字式传感器,这在单总线上挂接数十至上百片数字式传感器,这 样可以非常方便地构成多路温度测量系统。样可以非常方便地构成多路温度测量系统。任务一 用DS18B20设计电子温度计 DS1一、认识数字温度传感器一、认识数字温度传感器 DS18B20 DS18B20的测温范围为的测温范围为-55-55 125125,位温度读数,分辨率为位温度读数,分辨率为1/1/,温度转换时,温度转换时 间最多为间最多为50ms50ms。1 1、DS18B20DS18B20的引脚功能的引脚功能 DQ DQ:数据输入输出,可直接与单片机的数据输入输出,可直接与单片机的I/OI/O口相连。口相连。VDDVDD:+5V+5V电源电压。电源电压。GNDGND:电源地。:电源地。GNDVDDGND一、认识数字温度传感器 1、DS18B20的引脚功能VDD:22 2、DS18B20DS18B20的序列号的序列号 每片每片DS18B20DS18B20均有一个唯一产品序列号,固化均有一个唯一产品序列号,固化在内部的在内部的6464位激光位激光ROMROM中,其格式如下:中,其格式如下:开始开始8 8位是产品的类型编号(工厂代码);位是产品的类型编号(工厂代码);接着是每个器件唯一的序号,共接着是每个器件唯一的序号,共4848位;位;最后最后8 8位是针对前面位是针对前面5656位的位的CRCCRC校验码;校验码;这也是多个这也是多个DS18B20DS18B20可以采用一条数据线进行通可以采用一条数据线进行通信的原因,只要单片机用匹配命令即可访问总线上信的原因,只要单片机用匹配命令即可访问总线上指定的指定的DS18B20DS18B20。2、DS18B20的序列号 开始8位是产33 3、温度暂存器、温度暂存器 DS18B20DS18B20内内部部有有 9 9个个字字节节的的暂暂存存器器,开开始始两两个个暂暂存存器器(TMSBTMSB、TLSBTLSB)存存放放当当前前测测到到的的温温度度值值,以以1616位位补补码码形形式式表表示示1212位位温温度度读读数数,分分辨辨率率为为1/161/16,高高位是温度值的符号扩展。位是温度值的符号扩展。单单片片机机发发出出温温度度转转换换命命令令后后,DS18B20DS18B20将将测测得得的的温度值保存在温度值保存在TMSBTMSB、TLSBTLSB中,供单片机读取。中,供单片机读取。最低四位为小数位2-4=1/16=0.0625整数部分16+9=25求补后为0000 0001 1001 0001高四位为符号位3、温度暂存器最低四位为小数位整数部分16+9=25求补后为4二、读写时序二、读写时序 DS18B20 DS18B20与单片机之间的数据传送是靠严格与单片机之间的数据传送是靠严格的时序来实现的:的时序来实现的:1 1、初始化时序、初始化时序 与与DS18B20DS18B20的通信前,首先必须对其初始化。的通信前,首先必须对其初始化。单片机在单片机在t0t0时刻发出最短时刻发出最短为为480us480us的低的低电平有效的复电平有效的复位脉冲。位脉冲。在在t1t1时刻释放总线时刻释放总线并进入接收状态,并进入接收状态,DS18B20DS18B20检测到总检测到总线变高后,等线变高后,等1515到到60us60us。在t2时刻发出低电平有效的存在脉冲响应。二、读写时序1、初始化时序 单片机在t0时刻发出最短为45bit reset(void)bit reset(void)bit err;bit err;DQ=0;DQ=0;delay15(40);delay15(40);DQ=1;DQ=1;delay15(4);delay15(4);err=DQ;err=DQ;delay15(18);delay15(18);return(err);return(err);/在数据线上产生600us的低电平/数据线拉高,延时,延时60us60us/读取数据线状态读取数据线状态 err=0:err=0:复位成功复位成功 err=1:err=1:复位失败复位失败bit reset(void)/在数据线上产生600u62 2、写时序、写时序单片机在单片机在t0t0时时刻将总线拉至刻将总线拉至低电平,从低电平,从t0t0时刻开始的时刻开始的15us15us之内应将之内应将要写的数据位要写的数据位送到总线上。送到总线上。在在t0t0后的后的1560us1560us内内对总线采样,对总线采样,若为低电平,若为低电平,写入的是写入的是0 0。若为高电平,写入的为1。连续写2位之间的间隙应大于1us。2、写时序单片机在t0时刻将总线拉至低电平,从t0时刻开始的7void wrbyte(uchar d)void wrbyte(uchar d)uchar i;uchar i;dat=d;dat=d;for(i=8;i0;i-)for(i=8;i0;i-)DQ=0;DQ=0;delay15(1);delay15(1);DQ=dat0;DQ=dat0;dat=dat1;dat=dat1;delay15(1);delay15(1);DQ=1;DQ=1;/循环写循环写8 8位(先低位,后高位)位(先低位,后高位)/产生产生15us15us的负脉冲的负脉冲/将当前数据位送数据线将当前数据位送数据线/将下一位数据移到最低位将下一位数据移到最低位/延时延时15us15us/数据线拉高,为写入下一位做准备数据线拉高,为写入下一位做准备void wrbyte(uchar d)/循环写8位(先83 3、读时序、读时序单片机在单片机在t0t0时刻将时刻将总线从高总线从高拉至低电拉至低电平,保持平,保持1us1us。在在t1t1时刻时刻将总线拉将总线拉高,释放高,释放总线。总线。将总线拉低发送“0”,并在t2时刻释放总线。DS18B20通过保持总线为高发送“1”。3、读时序单片机在t0时刻将总线从高拉至低电平,保持1us。93 3、读时序、读时序 uchar rdbyte(void)uchar rdbyte(void)dat=0;dat=0;for(i=8;i0;i-)for(i=8;i0;i-)dat=dat1;dat=dat1;DQ=0;DQ=0;_nop_();_nop_();DQ=1;DQ=1;delay15(1);delay15(1);dat7=DQ;dat7=DQ;delay15(4);delay15(4);return(dat);return(dat);/读出数据初值为读出数据初值为0 0/循环读循环读8 8位(先低位,后高位)位(先低位,后高位)/读出数据先右移一位读出数据先右移一位/产生产生1us1us的负脉冲的负脉冲/数据总线拉高,延时数据总线拉高,延时15us15us/读取数据读取数据/延时延时60us60us,为读下一位做准备,为读下一位做准备3、读时序/读出数据初值为0/循环读8位(先低位,后高位10三、基本操作指令三、基本操作指令三、基本操作指令三、基本操作指令 DS18B20DS18B20提供了一系列的指令来控制传感器的工提供了一系列的指令来控制传感器的工作,上电后,传感器处于空闲状态,需单片机向其作,上电后,传感器处于空闲状态,需单片机向其发送指令,控制它进行相应的操作。发送指令,控制它进行相应的操作。1 1、READ ROM 33HREAD ROM 33H 在多点温度测量系统安装前,首先必须知道每只在多点温度测量系统安装前,首先必须知道每只DS18B20DS18B20的产品序列号,可以将的产品序列号,可以将DS18B20DS18B20逐个与单总线逐个与单总线挂接,由单片机发该命令,从激光挂接,由单片机发该命令,从激光ROMROM读出读出8 8个字节的个字节的序列号。序列号。注意:执行该指令时,如果总线上有多个注意:执行该指令时,如果总线上有多个DS18B20DS18B20时,时,所有的所有的DS18B20DS18B20会试图同时传送信号,这样就会发生会试图同时传送信号,这样就会发生数据冲突,导致操作失败。数据冲突,导致操作失败。三、基本操作指令1、READ ROM 33H 注意:112 2、SKIP ROM CCHSKIP ROM CCH 单片机可用这一命令同时访问总线上的所有设备而单片机可用这一命令同时访问总线上的所有设备而不需送出不需送出ROMROM序列码信息。序列码信息。例如:发出例如:发出SKIP ROMSKIP ROM命令后接着送出命令后接着送出CONVERTCONVERT命令,命令,可使总线上的所有可使总线上的所有DS18B20DS18B20同时进行温度转换。同时进行温度转换。3 3、MATCH ROM55HMATCH ROM55H 执行该命令后,单片机必须接着向执行该命令后,单片机必须接着向DS18B20DS18B20发送发送8 8个个字节的产品序列号,以选中单总线上指定的字节的产品序列号,以选中单总线上指定的DS18B20DS18B20,只有完全匹配的只有完全匹配的DS18B20DS18B20才能对随后由单片机发出的读才能对随后由单片机发出的读暂存器操作命令进行响应暂存器操作命令进行响应。2、SKIP ROM CCH3、MATCH ROM124 4、CONVERT T 44HCONVERT T 44H 该命令开始一次温度转换。转换结束后,数据保存该命令开始一次温度转换。转换结束后,数据保存在暂存器中在暂存器中2 2个字节的温度寄存器个字节的温度寄存器TMSBTMSB、TLSBTLSB中。中。5 5、READ SCRTCHPAD BEHREAD SCRTCHPAD BEH 用该命令可读暂存器的内容。数据传送开始于字节用该命令可读暂存器的内容。数据传送开始于字节0 0的最低位,直到暂存器的第的最低位,直到暂存器的第9 9字节被读取。温度寄存器字节被读取。温度寄存器TLSBTLSB、TMSBTMSB处于暂存器的开始两个字节,如只需读取温处于暂存器的开始两个字节,如只需读取温度值,在读取开始的两个字节后,可用初始化命令结束度值,在读取开始的两个字节后,可用初始化命令结束读操作。读操作。4、CONVERT T 44H5、READ SCRTCH13四、电子温度计的设计 用数字温度传感器DS18B20构成一个电子温度计,将所测的温度值在LED显示器上显示出来,保留一位小数。电路连接:将实验仪的JP2短接,DSQ接P10。四、电子温度计的设计 用数字温度传感器DS18B20构成14 设计思想:设计思想:1 1、单片机首先对、单片机首先对DS18B20DS18B20进行复位操作。进行复位操作。2 2、由于总线上只有一只、由于总线上只有一只DS18B20DS18B20,单片机可用,单片机可用 SIKP ROMCCH SIKP ROMCCH指令跳过传感器序列号识别。指令跳过传感器序列号识别。3 3、用、用CONVERT T 44HCONVERT T 44H指令启动传感器温度转换,传指令启动传感器温度转换,传 感器转换完成后,自动将当前温度值放入内部暂感器转换完成后,自动将当前温度值放入内部暂 存器的开始两个字节中。存器的开始两个字节中。4 4、为了读取温度值,单片机仍需对传感器进行复位、为了读取温度值,单片机仍需对传感器进行复位 操作,并跳过操作,并跳过ROMROM识别,然后发读暂存器指令识别,然后发读暂存器指令 READ SCRTCHPAD BEH READ SCRTCHPAD BEH。5 5、单片机连续读出两个字节的温度值,将其转换为、单片机连续读出两个字节的温度值,将其转换为 十进制数在数码管上显示出来。十进制数在数码管上显示出来。设计思想:2、由于总线上只有一只DS18B2015将温度值转换为十进制的方法将温度值转换为十进制的方法将温度值转换为十进制的方法将温度值转换为十进制的方法 温度值为二个字节的十六位二进制数,高字节的低温度值为二个字节的十六位二进制数,高字节的低四位和低字节的高四位组成一个字节转换成十进制数后四位和低字节的高四位组成一个字节转换成十进制数后就是温度的百、十、个位值。就是温度的百、十、个位值。(如果是负数首先对其(如果是负数首先对其求补即可)。求补即可)。低字节的低四位化成十进制数后,就是温度的小数低字节的低四位化成十进制数后,就是温度的小数部分。小数部分只有四位,取值范围是部分。小数部分只有四位,取值范围是0 0 F F,由于只要,由于只要精确到精确到0.1,0.1,可通过查表来简化这种转换。可通过查表来简化这种转换。例例11001100表示十六进制数表示十六进制数CC,对应的十进制小数为对应的十进制小数为0.70.7。dbuf0=dpt&0 x0f;dbuf0=dpt&0 x0f;将温度值转换为十进制的方法 温度值为二个字节的十六位16 调试方法与步骤调试方法与步骤:电子温度计的硬件电路较为简单,重点是程序电子温度计的硬件电路较为简单,重点是程序的调试。在的调试。在KeilKeil环境下对工程进行编译,进入调试环境下对工程进行编译,进入调试状态后全速运行,状态后全速运行,LEDLED显示器将显示当前的温度值,显示器将显示当前的温度值,如果用手指贴在温度传感器上,所显示的温度值会如果用手指贴在温度传感器上,所显示的温度值会随之上升,当手指离开传感器时,温度值会随之下随之上升,当手指离开传感器时,温度值会随之下降。降。调试方法与步骤:172 2、如如果果t t的的值值与与当当前前温温度度相相差差很很大大,应应检检查查程程序序中中对对DQDQ脚脚的的定定义义与与实实际际电电路路是是否否一一致致,或或者者程程序序对对DS18B20DS18B20的复位、读、写函数是否有问题。的复位、读、写函数是否有问题。1 1、如果所显示的温度值不在正常范围以内,或者根本如果所显示的温度值不在正常范围以内,或者根本没有变化,可观察没有变化,可观察main()main()函数中语句函数中语句“t=readt();”“t=readt();”执行后变量执行后变量t t的值,如果的值,如果t t的值与当的值与当前温度值基本一致,说明温度测量基本正常,可能前温度值基本一致,说明温度测量基本正常,可能是数制转换及显示部分有问题,需重点检查;是数制转换及显示部分有问题,需重点检查;由由于于DS18B20DS18B20的的时时序序要要求求非非常常严严格格,编编程程时时稍稍不不注注意意就就可可能能导导致致复复位位、读读、写写操操作作的的失失败败,以以致致无无法法正正常常地地测测出出温温度度值值,因因此此可可对对照照前前面面给给出出的时序图仔细检查相应的函数。的时序图仔细检查相应的函数。2、如果t的值与当前温度相差很大,应检查程序中对DQ脚的定义18任务二任务二 单片机控制字符型液晶显示模块 液液晶晶显显示示屏屏以以其其功功耗耗低低、体体积积小小、显显示示内内容容丰丰富富、超超薄薄轻轻巧巧、使使用用方方便便等等诸诸多多优优点点,在在仪仪器器仪仪表表、电电子子设设备备、家家用用电电器器等等低低功功耗耗应应用用系统中得到越来越广泛的应用。系统中得到越来越广泛的应用。液晶模块分为字符型和点阵型两类:液晶模块分为字符型和点阵型两类:字字符符型型显显示示模模块块通通常常只只能能显显示示ASCIIASCII码码表表中中的的数数字字、字母等符号;字母等符号;点阵型显示模块点阵型显示模块除了可以显示除了可以显示ASCIIASCII字符,还能显字符,还能显 示汉字、绘制图形。示汉字、绘制图形。任务二 单片机控制字符型液晶显示模块 液晶显19 这里首先介绍字符型液晶模块这里首先介绍字符型液晶模块RT1602RT1602。RT1602RT1602液液晶晶模模块块内内带带标标准准字字库库,内内部部的的字字符符发发生生存存储储器器(CGROMCGROM)已已经经存存储储了了192192个个5757点点阵阵字字符符,可显示可显示2 2行行1616列共列共3232个点阵字符,其外观如图所示:个点阵字符,其外观如图所示:这里首先介绍字符型液晶模块RT1602。20 一、引脚功能VSS:电源地。VDD:5V正电源。V0:为液晶显示器对比度调整端,接正电源时对比度最 弱,接地时对比度最高,对比度过高会产生阴影,使用时可以通过一个10K的电位器调整对比度。一、引脚功能VSS:电源地。21RSRS:寄存器选择,高电平时选择数据寄存器、低寄存器选择,高电平时选择数据寄存器、低 电平时选择指令寄存器。电平时选择指令寄存器。R/WR/W:读写信号线,高电平时进行读操作,低电平读写信号线,高电平时进行读操作,低电平 时进行写操作。时进行写操作。E E:使能控制信号,当该引脚由高电平跳变成低电使能控制信号,当该引脚由高电平跳变成低电 平时,液晶模块执行命令。平时,液晶模块执行命令。RS=0RS=0、R/W=1R/W=1、E=1E=1时,读取液晶模块的状态字。时,读取液晶模块的状态字。RS=0RS=0、R/W=0R/W=0、E=1E=1时时,向液晶模块写入命令字。,向液晶模块写入命令字。RS=1RS=1、R/W=1R/W=1、E=1E=1时,从液晶模块读取数据。时,从液晶模块读取数据。RS=1RS=1、R/W=0R/W=0,E=1E=1时,向液晶模块写入数据。时,向液晶模块写入数据。DB0 DB0DB7DB7:8 8位双向数据线。位双向数据线。BLA BLA:背光源正极背光源正极。BLK BLK:背光源负极。背光源负极。RS:寄存器选择,高电平时选择数据寄存器、低R/W:读写信号22二二、显示模块的指令功能显示模块的指令功能 液液晶晶屏屏幕幕上上的的每每个个字字符符位位置置与与内内部部数数据据存存储储器器(DDRAMDDRAM)之间有着一一对应关系。)之间有着一一对应关系。为了将字符显示到屏幕指定位置,必须用该命令设置液晶模块的数据存储器地址。二、显示模块的指令功能 为了将字符显示到屏幕指定位置,必23二、显示模块的指令功能二、显示模块的指令功能 RT1602 RT1602液晶模块内部的控制器共有液晶模块内部的控制器共有1111条控制指令,单片条控制指令,单片机对液晶模块的控制都是通过指令编程来实现的。机对液晶模块的控制都是通过指令编程来实现的。表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据清屏:指令码01H,清屏后,光标返回到地址00H。二、显示模块的指令功能表6-3 RT1602显示模块的指令24表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据光标返回指令0X02执行后后的效果表6-3 RT1602显示模块的指令集指令RSR/WD7D25表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标。B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。关显示的效果。0X08开显示、有光标、闪烁的效果:0X0F表6-3 RT1602显示模块的指令集指令RSR/WD7D26表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据DL:高电平时为8位总线,低电平时为4位总线。N:低电平时为单行显示,高电平时双行显示。F:低电平时显示57的点阵字符,高电平时显示510的点阵字符。单行显示的效果 0X34表6-3 RT1602显示模块的指令集指令RSR/WD7D27表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据 液晶屏幕上的每个字符位置与内部数据存储器液晶屏幕上的每个字符位置与内部数据存储器(DDRAMDDRAM)之间有着一一对应关系。)之间有着一一对应关系。为了将字符显示到屏幕指定位置,必须用该命令设置液晶模块的数据存储器地址。例如:为了能在第二行第5列(数据存储器地址为45H)显示字符,必须首先置数据存储器地址为45H,相应的命令字为1000 0000B+0100 0101B=1100 0101B(C5H)。表6-3 RT1602显示模块的指令集指令RSR/WD7D28表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,BF为低电平表示不忙。单片机每次命令1602执行某项操作时,都应检测该位的状态。AC:为当前计数器地址。void lcd_cmd(uchar cmd)void lcd_cmd(uchar cmd)WRCMD_PORT=cmd;WRCMD_PORT=cmd;while(RDCMD_PORT&0 x80);while(RDCMD_PORT&0 x80);将指令码写入命令口将指令码写入命令口等待等待BFBF标志变标志变0 0(操作完成)(操作完成)表6-3 RT1602显示模块的指令集指令RSR/WD7D29表表6-3 RT16026-3 RT1602显显示模示模块块的指令集的指令集指令指令指令指令RSRSR/WR/WD7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0清屏清屏0 00 00 00 00 00 00 00 00 01 1光光标标返回返回0 00 00 00 00 00 00 00 01 1*置置输输入模式入模式0 00 00 00 00 00 00 01 1I/DI/DS S显显示开示开/关控制关控制0 00 00 00 00 00 01 1D DC CB B光光标标或字符移位或字符移位0 00 00 00 00 01 1S/CS/CR/LR/L*置功能置功能0 00 00 00 01 1DLDLN NF F*置数据存置数据存储储器地址器地址0 00 01 1显显示数据存示数据存储储器地址(器地址(ADDADD)读读忙忙标标志或地址志或地址0 01 1BFBF计计数器地址(数器地址(ACAC)写数据写数据1 10 0要写的数据要写的数据读读数据数据1 11 1读读出的数据出的数据RT1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,包括阿拉伯数字、英文字母的大小写、常用的符号以及日文假名等,每一个字符都有一个固定的代码,一般为该字符的ASCII码,只要执行写数据指令,写入该字符的代码,就可在屏幕上显示该字符。表6-3 RT1602显示模块的指令集指令RSR/WD7D30RS=0、R/W=1、E=1,读状态字。RS=0、R/W=0、E=1,写入命令。RS=1、R/W=1、E=1,读取数据。RS=1、R/W=0,E=1,写入数据。A15=1 、/RD=0或/WR=0时,E=1。A9=0、A8=0,写入命令。(0XFCFF)A9=0、A8=1,写入数据。(0XFDFF)A9=1、A8=0,读状态。(0XFEFF)A9=1、A8=1,读数据。(0XFFFF)1、总线方式三三 、液晶模块与单片机的连接、液晶模块与单片机的连接 液晶模块与单片机的连接可采用总线方式,也可采用模拟液晶模块与单片机的连接可采用总线方式,也可采用模拟I/OI/O口方式。口方式。RS=0、R/W=1、E=1,读状态字。A15=1 、/R31lcd_cmd(0 x01);lcd_cmd(0 x01);lcd_cmd(0 x3c);lcd_cmd(0 x3c);lcd_cmd(0 x0C);lcd_cmd(0 x0C);lcd_cmd(0 x80);lcd_cmd(0 x80);p=str1;p=str1;while(*p)while(*p)lcd_dat(*p+);lcd_dat(*p+);lcd_cmd(0 xc0);lcd_cmd(0 xc0);p=str2;p=str2;while(*p)while(*p)lcd_dat(*p+);lcd_dat(*p+);while(1);while(1);清屏幕清屏幕设置双行显示设置双行显示,510,510点阵点阵开显示开显示,关闭光标关闭光标显示在第一行显示在第一行显示在第显示在第2 2行行显示显示显示显示2007-07-302007-07-30lcd_cmd(0 x01);清屏幕设置双行显示,510点阵322 2、模拟、模拟I/OI/O口方式口方式 模拟模拟I/OI/O口方式就是根据图口方式就是根据图6-96-9所示的读写时序,所示的读写时序,用单片机的用单片机的I/OI/O口线来模拟数据总线、读口线来模拟数据总线、读/写控制写控制信号,相应的电路如图所示。信号,相应的电路如图所示。P3.7 P3.7、P3.6P3.6、P3.5P3.5作为作为I/OI/O口分别控制液晶模块的口分别控制液晶模块的RSRS、R/WR/W、E E引脚,产生相应的时序信号。引脚,产生相应的时序信号。图中使用图中使用P0P0口与液口与液晶模块的数据线晶模块的数据线D0D0 D7D7相连,此时相连,此时P0P0口已不口已不再是数据总线再是数据总线/低低8 8位位地址总线,而作为输地址总线,而作为输出口使用,因此需加出口使用,因此需加上拉电阻。上拉电阻。2、模拟I/O口方式 P3.7、P3.6、P3.5作为33void lcd_cmd(uchar cmd)void lcd_cmd(uchar cmd)LCD=cmd;LCD=cmd;RS=0;/RS=0;/选择命令寄存器选择命令寄存器 RW=0;/RW=0;/执行写数据操作执行写数据操作 E=1;E=1;_nop_();_nop_();/延时延时 E=0;E=0;/使能信号有效使能信号有效 while(1)while(1)LCD=0 xff;LCD=0 xff;/总线变高总线变高 RS=0;RS=0;/选择命令寄存器选择命令寄存器 RW=1;RW=1;/读操作读操作 E=0;E=0;/使能信号有效使能信号有效 _nop_();_nop_();/延时延时 E=1;E=1;/撤肖使能信号撤肖使能信号 if(RDY=0)break;/if(RDY=0)break;/如果就绪,返回如果就绪,返回 void lcd_cmd(uchar cmd)34任务三任务三 多路测温系统的设计多路测温系统的设计 在在ProteusProteus环境下,用数字温度传感器环境下,用数字温度传感器DS18B20DS18B20设计一个多路测温系统,对四个测温点设计一个多路测温系统,对四个测温点A A、B B、C C、D D的温度进行巡回检测,并将温度值在液晶显示屏的温度进行巡回检测,并将温度值在液晶显示屏上按以下格式显示出来。上按以下格式显示出来。任务三 多路测温系统的设计 351 1、硬件电路、硬件电路 如图所示,将如图所示,将4 4只数字温度传感器只数字温度传感器DS18B20DS18B20并并接在一起,数据线与单片机的接在一起,数据线与单片机的P1.0P1.0相连,液晶相连,液晶显示器与单片机的连接采用模拟接口方式。显示器与单片机的连接采用模拟接口方式。1、硬件电路362、读取序列号 当当我我们们拿拿到到温温度度传传感感器器后后,并并不不知知道道其其序序列列号号是是多多少少,为为此此可可专专门门编编写写一一段段程程序序,将将DS18B20DS18B20逐逐个个与与单单总总线线挂挂接接,然然后后调调用用该该函函数数读读出出其其序序列列号号并并记记录录下下来来,用于给保存序列号的二维数组用于给保存序列号的二维数组id48id48赋值。赋值。void readid(uchar id)void readid(uchar id)/读取序列号读取序列号 uchar n;uchar n;reset();reset();/复位复位DS18B20DS18B20 wrbyte(0 x33);wrbyte(0 x33);/发发READ ROMREAD ROM命令命令 for(n=0;n=8;n+)for(n=0;n=8;n+)/读取读取8 8个字节的序列号个字节的序列号 idn=rdbyte();idn=rdbyte();2、读取序列号 当我们拿到温度传感器后,并不知道其37 系统采样各点温度时,为了提高轮巡的速度,系统采样各点温度时,为了提高轮巡的速度,启动温度转换命令无需针对某个特定的传启动温度转换命令无需针对某个特定的传 感器,可先对总线上的所有传感器复位,并跳感器,可先对总线上的所有传感器复位,并跳 过过 ROM ROM,发启动温度转换命令,这样所有挂在,发启动温度转换命令,这样所有挂在 总线上的总线上的DS18B20DS18B20同时开始转换,同时开始转换,750mS750mS后转换后转换 结束,单片机再依次发匹配结束,单片机再依次发匹配 ROM ROM命令,将预先命令,将预先 存储的各传感器的序列号通过单总线送出,选存储的各传感器的序列号通过单总线送出,选 中指定的中指定的DS18B20DS18B20,并将温度值读入。,并将温度值读入。3 3、多路测温、多路测温 3、多路测温 38 4 4、主程序设计、主程序设计 主程序首先必须对主程序首先必须对LCDLCD初始化:包括清屏、设初始化:包括清屏、设置为双行方式、点阵大小为置为双行方式、点阵大小为5*105*10,并显示出各测,并显示出各测温点的标题,然后巡回检测各测温点的温度,转温点的标题,然后巡回检测各测温点的温度,转换成字符串,分别在换成字符串,分别在LCDLCD的相应位置显示出来。的相应位置显示出来。4、主程序设计39 为了便于管理、调试,将整个程序分成三个模为了便于管理、调试,将整个程序分成三个模块文件:液晶显示驱动模块块文件:液晶显示驱动模块1602DRV.C1602DRV.C、温度测量、温度测量模块模块DS1820DRV.CDS1820DRV.C及主模块及主模块main.cmain.c。DS1820DRV.C 包含了与DS18B20相关的函数 1602DRV.C 包含了与LCD显示器相关的函数 main.c中包含了主程序 为了便于管理、调试,将整个程序分成三个模块文件:液403 3、调试方法、调试方法 在在KeilKeil下编译项目,进入调试方式后全速运行下编译项目,进入调试方式后全速运行 然后切换到然后切换到Proteus Proteus 环境,此时在屏幕上将会显示环境,此时在屏幕上将会显示出各测温点的温度值,用鼠标指向某传感器的温度出各测温点的温度值,用鼠标指向某传感器的温度调节点并点击左键,屏幕上对应位置的温度值将随调节点并点击左键,屏幕上对应位置的温度值将随之增减,如果某个传感器的温度值总是为,应检之增减,如果某个传感器的温度值总是为,应检查它的序列号是否与二维数组查它的序列号是否与二维数组idid中所定义的值一致。中所定义的值一致。采样周期由两部分组成:采样周期由两部分组成:(1 1)启动总线上所有的)启动总线上所有的DS18B20DS18B20同时开始转换,到转换同时开始转换,到转换结束,最长不超过结束,最长不超过750ms750ms。(2 2)逐一选定总线上的)逐一选定总线上的DS18B20DS18B20,并读取其温度。根据,并读取其温度。根据读写时序,分析读写时序,分析rdbyte()rdbyte()及及wrbyte()wrbyte(),读写一字节的,读写一字节的时间均小于时间均小于1ms,1ms,所以单片机对每一路所以单片机对每一路 DS18B20 DS18B20,从发,从发匹配命令到读出其温度值,不会超过匹配命令到读出其温度值,不会超过10ms10ms。如果总线。如果总线上挂接了上挂接了1010只传感器,则采样周期小于只传感器,则采样周期小于850ms850ms。3、调试方法 在Keil下编译项目,进入调试方式41
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!