收藏 分销(赏)

单片机DS18B20数字温度计课程设计报告.pdf

上传人:w****g 文档编号:2471705 上传时间:2024-05-30 格式:PDF 页数:25 大小:284.75KB
下载 相关 举报
单片机DS18B20数字温度计课程设计报告.pdf_第1页
第1页 / 共25页
单片机DS18B20数字温度计课程设计报告.pdf_第2页
第2页 / 共25页
单片机DS18B20数字温度计课程设计报告.pdf_第3页
第3页 / 共25页
单片机DS18B20数字温度计课程设计报告.pdf_第4页
第4页 / 共25页
单片机DS18B20数字温度计课程设计报告.pdf_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、0 南京工程学院 通信工程学院 课程设计任务书课程设计任务书题 目 DS18B20 数字温度计设计 课 程 名 称 单片机原理及应用 B 专 业 班 级 学 生 姓 名 学 号 设 计 地 点 指 导 教 师 设计起止时间:年 月 日至 年 月 日 成绩1目录目录一、绪论.21.1 设计目的.21.2 设计内容.21.3 设计要求.2二、基本设计.32.1 基本思路.32.2 系统设计原理.,32.3 系统组成.3三、系统硬件设计.63.1 系统电路接线图.6 3.2 主系统.6 3.3 显示电路 LM016L.9 3.4 蜂鸣器报警.10 3.5 DS18B20 传感器.9四、系统软件设计.

2、144.1 具体步骤和设计内容144.1 程序流程图.14.4.2 源程序清单.16.五、结果验证5.1 测试结果.235.2 仿真结果.23六、学习小结.25七、参考文献252绪论绪论1.11.1 设计目的设计目的1掌握单总线协议的基本特点及通信过程;2.掌握数字温度传感器 DS18B20 的基本特点及单总线控制协议;3.掌握单片机 IO 端口模拟单总线时序控制程序的编写方法;4.掌握 LCD 液晶显示器的显示驱动方法。1.21.2 设计内容设计内容(1)基本内容)基本内容:在 nKDE51 单片机实验教学系统上,利用 DS18B20 数字温度传感器连续测试环境温度,对测试数据进行处理计算,

3、在 RT-1602 字符点阵 LCD上实时显示环境温度值;(2)附加内容)附加内容:实现环境温度越限告警功能。1.31.3 设计要求设计要求1单片机 I/O 口和 DS18B20 的数据段相连;2编写单片机通过 IO 端口模拟单总线时序控制 DS18B20 的程序,独出温度;3在 1602 字符点阵液晶显示模块上显示实时温度。3二、二、基本设计基本设计2.1 基本思路基本思路本次课程设计主要是数字式环境温度测试仪设计,实现环境温度越限告警功能。当 LCD 液晶显示器显示的温度小于 29 度时,只显示温度,当显示的温度大 29度时,LCD 液晶显示器显示“HOT!”,蜂鸣器鸣叫。2.22.2 系

4、统设计原理系统设计原理利用温度传感器 DS18B20 可以直接读取被测温度值,进行转换的特性,模拟温度值经过 DS18B20 处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。同时处理后的数据送到 LCD 中显示。2.32.3 系统组成系统组成本课题以是 AT89C51 单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路 DS18B20,温度显示电路,蜂鸣器报警电路,单片机主板电路等组成。系统框图主要由主控制器、单片机复位、蜂鸣器报警、时钟振荡、LCD 显示、温度传感器组成。系统框图如图所示:单片机复位温度传感器

5、LCD 显示电路蜂鸣器报警主 控 制 器时钟振荡电路 图 2-1 方案设计41 主控制器单片机 AT89C51 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。2 温度显示电路字符型液晶显示模块是一种专门用于显示字母、数字、符号等的点阵式液晶显示模块。它是由若干个 5*7 或 5*11 等点阵字符位组成,每一个点阵字符位都可以显示一个字符。点阵字符位之间有一定的间隔,起到字符间距和行距的作用。3 温度传感器DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电

6、阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。4 蜂鸣器报警当温度达到设定上下限时,蜂鸣器会发出报警,同时有液晶显示“LOW!”或者“HOT!”,同时可看到被测物体温度或环境实时温度。5三、系统硬件设计三、系统硬件设计3.13.1 系统电路接线图系统电路接线图 图 3-1 系统电路接线图3.2 主系统AT89C51 是一个低功耗,高性能 8 位单片机,片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储

7、技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单元,AT89C51 在众多嵌入式控制应用系统中得到广泛应用。主要性能特点1、4k Bytes Flash 片内程序存储器;2、128 bytes 的随机存取数据存储器;3、32 个外部双向输入/输出(I/O)口;4、5 个中断优先级、2 层中断嵌套中断5、6 个中断源;6、2 个 16 位可编程定时器/计数器7、2 个全双工串行通信口;8、片内振荡器和时钟电路;69、与 MCS-51 兼容;10、全静态工作:0Hz-33MHz;11、三级程序存储器保密锁定;12、

8、可编程串行通道;13、低功耗的闲置和掉电模式。管脚说明:VCC:电源电压输入端。GND:电源地。图 3-2 单片机引脚图引脚功能说明:P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后

9、,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的在 FLASH3 作为第八编程和校验时,P1 口编程和校验时,P1 口作为第八位地址P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且7作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进

10、行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口除了作为普通 I/O 口,还有第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2/INT0(外部中断 0)P3.3/INT1(外部中断 1)P3.4 T0(T0 定时器的外部计数输入)P3.5 T1(T1 定时

11、器的外部计数输入)P3.6/WR(外部数据存储器的写选通)P3.7/RD(外部数据存储器的读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。I/O 口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。89C51 的 P0、P1、P2、P3 口作为输入时都是准双向口。除了 P1 口外 P0、P2、P3 口都还有其他的功能。RST:复位输入端,高电平有效。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PR

12、OG:地址锁存允许/编程脉冲信号端。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE的输出可在 SFR8EH 地址上置 0。此时,ALE 只有在执行 MOVX,MOVC 指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE禁止,置位无效。PSEN:外部程序存储器的选通信号,低电平有效。在由外部

13、程序存储器取8指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。EA/VPP:外部程序存储器访问允许。当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)XTAL1:片内振荡器反相放大器和时钟发生器的输入端。XTAL2:片内振荡器反相放大器的输出端。3.3 显示电路 LM016LLM016L 的结构及功能:LM016L 液

14、晶模块采用 HD44780 控制器,hd44780 具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L 与单片机 MCU 通讯可采用 8 位或 4 位并行传输两种方式,hd44780 控制器由两个 8 位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数 RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器 RAM(CGRAM),地址计数器 RAM(AC)。IR 用于寄存指令码,只能写入不能读出,DR 用于寄存数据,数据由内部操作自动写入DDRAM 和 CGRAM,或者暂存从 DDRAM 和 CGRAM 读出的数据,BF 为 1 时,液晶模块

15、处于内部模式,不响应外部操作指令和接受数据,DDTAM 用来存储显示的字符,能存储 80 个字符码,CGROM 由 8 位字符码生成 5*7 点阵字符 160 中和 5*10点阵字符 32 种.8 位字符编码和字符的对应关系,可查找参考书。CGRAM 是为用户编写特殊字符留用的,它的容量仅 64 字节,可以自定义 8 个 5*7 点阵字符或者 4 个 5*10 点阵字符。图 3-3 引脚图 LM016L 引脚功能说明:Vss(1 脚):一般接地。Vdd(2 脚):接电源。Vee(3 脚):液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一

16、个 10K 的电位器调9整对比度)。RS(4 脚):RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。R/W(5 脚):R/W 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。E(6 脚):E(或 EN)端为使能(enable)端,下降沿使能。DB0(7 脚):底 4 位三态、双向数据总线 0 位(最低位)。DB1(8 脚):底 4 位三态、双向数据总线 1 位。DB2(9 脚):底 4 位三态、双向数据总线 2 位。DB3(10 脚):底 4 位三态、双向数据总线 3 位。DB4(11 脚):高 4 位三态、双向数据总线 4 位。DB5(12

17、脚):高 4 位三态、双向数据总线 5 位。DB6(13 脚):高 4 位三态、双向数据总线 6 位。DB7(14 脚):高 4 位三态、双向数据总线 7 位(最高位)(也是 busy flang)。寄存器选择控制如表 3-1。表 3-1 寄存器选择控制RSR/W操作说明00写入指令寄存器(清除屏等)01读 busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据3.4 蜂鸣器报警蜂鸣器的工作原理:蜂鸣器的端口定义为 P2.2,其原理根据将蜂鸣器的一端接高电平,另一端接至 P2 某一脚,编写的简单程序使那一脚为低电平即可使其发

18、出声音,否则不响。同时,在上下限报警时 LCD 显示“LOW!”或“HOT!”。3.5 DS18B20 传感器1DS18B20 的外形和内部结构 DS18B20 内部结构主要由四部分组成:64 位 图 3-4 蜂鸣器引脚图10光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。图3-5 DS18B20内部结构 2DS18B20 引脚定义:(1)DQ 为数字信号输入/输出端;(2)GND 为电源地;(3)VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。图 3-6 DS18B20 引脚图 3DS18B20 工作原理DS18B20 的读写时序和测温原理与 DS18

19、20 相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由 2s 减为 750ms。低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器 1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器 2 的脉冲输入。计数器 1 和温度寄存器被预置在55所对应的一个基数值。计数器 1 对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1 的预置值减到 0 时,温度寄存器的值将加 1,计数器 1 的预置将重新被装入,计数器 1 重新开始对低温度系数晶振产生的脉冲进行计数,如此循环直64位ROM和单线接口高速缓存存储器与控制逻辑温度传感器低

20、温触发器TL8位CRC发生器高温触发器TH配置寄存器Vdd11到计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。DS18B20温度数据表如表 3-2 所示:表 3-2:DS18B20 温度数据表TEMPERTUREDIGALOUTPUT(

21、Binary)DIGITALOUTPUT(Hex)+1250000 0111 1101 000007D0h+850000 0101 0101 00000550h+25.06250000 0001 1001 000101991h+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008h00000 0000 0000 0000000h-0.51111 1111 1111 1000FFF8h-10.1251111 1111 0101 1110Ff5Eh-25.06251111 1110 0110 1111FE6Fh-551111 1100

22、1001 0000FC90h4DS18B20 温度传感器的存储器 DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 EEPRAM,后者存放高温度和低温度触发器 TH、TL 和结构寄存器。配置寄存器各位字节的意义如下表 3-3:表 3-3:配置寄存器结构TMR1R011低五位一直都是1,TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。在 DS18B20 出厂时该位被设置为 0,用 户不要去改动。R1 和R0 用来设置分辨率,如下表 3-4 所示:(DS18B20 出厂时被设置为 12 位)表 3-4:温度分辨率设置表R1R0分辨率

23、温度最大转换时间009 位93.75ms0110 位187.5ms1011 位375ms1112 位750ms5高速暂存存储器 高速暂存存储器由 9 个字节组成,其分配如表 5 所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第 0 和第 1 个字节。单片机可通过单线接口读到该数据,读取时低12位在前,高位在后,数据格式如表 1 所示。对应的温度计算:当符号位 S=0 时,直接将二进制位转换为十进制;当 S=1 时,先将补码变为原码,再计算十进制值。表 3-5 是对应的一部分温度值。第九个字节是冗余检验字节。表 3-5 DS18B20 暂存寄存器分布存储器内

24、容字节地址温度值低位(LS Byte)0温度值高位(MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC 校验值6根据 DS18B20 的通讯协议 主机(单片机)控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对 DS18B20 进行复位操作,复位成功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放,当 DS18B20 收到信号后等待 1660 微秒左右,后发出 60240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。RAM

25、 指令表如 3-6 所示:表 3-6 RAM 指令表指定约定代码功能温度变换44H启动 DS18B20 进行温度转换,12 位转换时最长为 750ms(9位 93.75ms)。结果存入内部 9 字节 RAM 中读暂存取0BEH读内部 RAM 中 9 字节的内容写暂存取4EH发出向内部 RAM 的 3 写上、下.4 字节送两字节数据限温度数据命令,紧跟该命令之后,是传送两字节的数据复制暂存48H将 ROM 中第 3、4 字节的内容复制到 EEPROM 中重调EEPROM0B8H将 EEPROM 中内容恢复到 ROM 中的第 3、4 字节读供电方式0B4H读 DS18B20 的供电模式。寄生供电时

26、 DS18B20 发送“0”,外接电源供电 DS18B20 发送“1”13 四、系统软件设计四、系统软件设计4.14.1 具体步骤和设计内容具体步骤和设计内容1、主程序中首先初始化:检测 DS18B20 是否存在,然后通过调用读温度子程序读出 DS18B20 的当前值,调用温度转换子程序把从 DS18B20 中读出的值转换成对应的温度,调用显示子程序把温度值在 LCD 液晶显示器相应位置进行显示。2 2、温度测量子程序的功能、温度测量子程序的功能:读出并处理 DS18B20 测量的当前温度值,读出的温度值以 BCD 码的形式存放在缓冲区,DS18B20 每一次读写之前都要先进行复位,复位成功后

27、发送一条 ROM 指令,最后发送 RAM 指令。3 3、温度转换子程序、温度转换子程序:把从 DS18B20 中读出的值转换成对应的温度值,以BCD 码的形式存放在缓冲区,正负号存放在符号标志位中。4 4、显示缓冲区和、显示缓冲区和 LCDLCD 液晶显示器液晶显示器:显示子程序首先把温度转换子程序得到的值变换后放入显示缓冲区,然后调用 LCD 液晶显示器动态显示程序显示4.24.2 程序流程图程序流程图主程序主程序(1)主程序)主程序 (2)温度测量子程序)温度测量子程序 开 始 初 始 化 调用测温子程序 调用温度转换子程序 调用显示子程序显示 开 始14(3)温度转换子程序)温度转换子程

28、序 负 正 DS18B20 复 位 初 始 化 发温度转换命令温度转换 DS18B20 复 位 初 始 化 发 跳 过 ROM 指 令 开 始 判 断 正 负 符 号 标 志 清 0 直 接 得 温 度 编 码 小 数 四 舍 五 入 转 换 成 BCD 码 返 回符 号 标 志 置 1 求补后得温度编码 读 转 换 温 度 值 返 回15(4)显示子程序)显示子程序 否 是4.34.3 源程序清单源程序清单#include#include#define uchar unsigned char#define uint unsigned intvoid lcd_busy();void lcd_i

29、nit();void lcd_wcmd(uchar cmd);void lcd_wdat(uchar dat);uchar ow_reset(void);温 度 大 于 29LCD 液 晶 显 示 器 闪 烁,蜂鸣器鸣叫 返 回 开 始 温 度 值 放 入 显 示 缓 充 区 LCD 液 晶 显 示 器 显 示16void initds18b20(void);uchar read_byte(void);void write_byte(uchar val);void temperature_cov(void);void display();void delay(uint i);sbit DQ=P

30、00;/DS18B20 端口sbit RS=P20;/LCD 端口sbit RW=P21;sbit E=P22;sbit buzzer=P27;/定义蜂鸣器端口unionuchar c2;uint x;temp;/联合体uchar flag;/定义温度正负值标志变量,正为0,负为1int cc,xs;/*/*延时函数 */*/void delay(uint i)for(;i0;i-);/*/*复位函数 */*/uchar ow_reset(void)uchar reset;DQ=0;delay(50);DQ=1;delay(3);reset=DQ;delay(25);17return(rese

31、t);/*/*初始化 DS18B20 */*/void initds18b20(void)ow_reset();/write_byte(0 xCC);write_byte(0 x4E);write_byte(0 x00);write_byte(0 x00);write_byte(0 x7F);/*/*从单总线读取一个字节 */*/uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-)value=1;DQ=0;DQ=1;delay(1);if(DQ)value|=0 x80;delay(6);return(value);/*/*向单总线

32、上写一个字节 */*/void write_byte(uchar val)uchar i;for(i=8;i0;i-)18DQ=0;DQ=val&0 x01;delay(5);DQ=1;val=val/2;delay(5);/*/*读取温度 */*/void Read_Temperature(void)ow_reset();write_byte(0 xCC);write_byte(0 x44);ow_reset();write_byte(0 xCC);write_byte(0 xBE);temp.c1=read_byte();temp.c0=read_byte();/*/*温度转换 */*/v

33、oid temperature_cov(void)if(temp.c00 xF8)/判断温度是正数还是负数flag=1;/温度为负数 flag 置 1temp.x=temp.x+1;xs=temp.x&0 x0F;xs=xs*10;cc=temp.c0*256.0+temp.c1;/将温度从两个八位数表示成一个十六位数cc=cc*0.0625;xs=xs*0.0625;19/*/*显示 */*/void display()int i;/SP=0 x50;/lcd_init();lcd_wcmd(0 x80);/写入缓冲区起始地址为第一行第一列 lcd_wdat(0 x54);/显示 TEMPE

34、RATURElcd_wdat(0 x45);lcd_wdat(0 x4d);lcd_wdat(0 x50);lcd_wdat(0 x45);lcd_wdat(0 x52);lcd_wdat(0 x41);lcd_wdat(0 x54);lcd_wdat(0 x55);lcd_wdat(0 x52);lcd_wdat(0 x45);lcd_wcmd(0 xc0);lcd_wdat(0 x44);lcd_wdat(0 x51);lcd_wdat(0 x59);lcd_wdat(0 x20);buzzer=1;lcd_wcmd(0 x8C);lcd_wdat(0 x20);lcd_wdat(0 x2

35、0);lcd_wdat(0 x20);lcd_wdat(0 x20);lcd_wcmd(0 xc4);if(flag=1)lcd_wdat(0 x2d);/如果 flag 为 1 表示温度为负值,显示-符号if(cc=4)buzzer=0;lcd_wcmd(0 x8C);lcd_wdat(0 x4C);lcd_wdat(0 x4F);lcd_wdat(0 x57);lcd_wdat(0 x21);lcd_wcmd(0 xc4);20if(cc=29)buzzer=0;lcd_wcmd(0 x8C);lcd_wdat(0 x48);lcd_wdat(0 x4F);lcd_wdat(0 x54);

36、lcd_wdat(0 x21);lcd_wcmd(0 xc4);if(cc 99)lcd_wdat(cc/100+0 x30);/百位数转换为 LCD 显示模式 lcd_wdat(cc%100/10+0 x30);/十位数转换为 LCD 显示模式 lcd_wdat(cc%10+0 x30);/个位数转换为 LCD 显示模式 lcd_wdat(0 x2e);/显示.小数点lcd_wdat(xs+0 x30);lcd_wdat(0 xdf);/显示。符号 lcd_wdat(0 x43);/显示C 符号for(i=0;i3;i+)delay(5000);/*/*检查 LCD 忙状态 */*lcd_b

37、usy 为 1 时,忙,等待 lcd-busy 为 0 时,闲,可写指令与数据 */*/void lcd_busy()P1=0 xff;RS=0;RW=1;E=1;E=0;while(P1&0 x80)E=0;E=1;delay(256);21/*/*LCD 初始化设定 */*/void lcd_init()delay(15);lcd_wcmd(0 x01);/清屏lcd_wcmd(0 x38);/使用八位数据,显示两行,使用 5*7 的字型delay(5);lcd_wcmd(0 x0c);/显示器开,光标开,字符不闪烁delay(5);lcd_wcmd(0 x06);/字符不动,光标自动右移

38、一格delay(5);/*/*写指令数据到 LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码 */*/void lcd_wcmd(uchar cmd)lcd_busy();E=0;RS=0;RW=0;E=1;P1=cmd;E=0;delay(256);/*/*写显示数据到 LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据 */*/void lcd_wdat(uchar dat)22lcd_busy();E=0;RS=1;RW=0;E=1;P1=dat;E=0;/*/*主函数 */*/void main()delay(10);EA=0;flag=0;lcd_init

39、();initds18b20();while(1)flag=0;Read_Temperature();temperature_cov();display();五、五、结果验证结果验证5.15.1 测试结果测试结果在 Keil 中建立新工程,将上述程序代码加入工程,编译连接后,将生成的 HEX 文件烧写到单片机中,验证运行结果和设计要求是否相符合。用手捂住温度传感器,观察 LCD显示器上温度是否变化,该变化能否达到精度要求。然后对设计的报警温度进行测试,观察当上下限触发时,蜂鸣器是否响,LCD 显示频有无“LOW!”和“HOT!”提示。经验证,设计结果和设计目标相一致。5.25.2 仿真结果仿真

40、结果设置温度上限为 30 度,温度下限为-3 度。1.如图 5-1 所示。此时温度时-3 度,到达下限温度,蜂鸣器响,LCD 显示频出现 LOW!提23示,实现报警。图 5-1 仿真 12.如图 5-4 所示。此时温度为 30 度,达到上限温度,蜂鸣器响,LCD 显示频出现HOT!提示,实现报警。图 5-2 仿真 2243.如图 5-5 所示。此时温度为 1 度,在所设范围内,蜂鸣器不响,LCD 显示频上为“TEMPERATURE IS”说明温度正常。图 5-3 仿真 3六、实验小结六、实验小结通过近一个星期的单片机课程设计,我终于完成了“数字式环境温度测试仪。这次的课程设计还是让我学到了很多东西,包括用 OFFICE WORD 完成系统流程图设计、用 PROTEL 完成系统电路设计等等。通过这次的单片机课程设计我认识到了,学习要理论联系实际,把学到的理论知识同实际运用相结合,才能是我们的知识融汇贯通,才能真正的学到知识,真正的做到学以致用。七、参考文献七、参考文献:1、单片机原理与应用及 C51 程序设计(第二版),谢维成等 编著,清华大学出版社,2009.7。2、单片机的 C 语言应用程序设计(第 4 版),马忠梅等编著,北京航空航天大学出版社,2007.1。3、单片机原理及应用试验与课程设计指导书,岳俊生 宗慧编,南京工程学院,2013.3。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服