项目智能温度计设计与调试_第1页
项目智能温度计设计与调试_第2页
项目智能温度计设计与调试_第3页
项目智能温度计设计与调试_第4页
项目智能温度计设计与调试_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目3 智能温度计的设计与调试任务1 温度传感器的初始化一、任务说明 单片机控制1片温度传感器DS18B20和1个报警指示灯,编写温度传感器的复位程序,复位成功时,指示灯闪烁。任务1 温度传感器的初始化二、任务分析1.硬件分析(1) DS18B20简介DS18B20 是单线数字温度传感器,具有独特的优点:u 采用单总线的接口方式,与微处理器连接时仅需要一条口线。u测温范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。u 在使用中不需要任何外围元件。u 支持多点组网功能,多个 DS18B20 可以并联在惟一的单线上,实现多点测温。u测量分辨率可通过程序设定 912

2、 位。u内部含有 EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。任务1 温度传感器的初始化(2)DS18B20管脚排列u GND为电源 地;u DQ为数字信号输入输出端;要求外接一个约为 4.7K10K 的上拉电阻,这样,当总线闲置时其状态为高电平。uVDD为外接供电电源输入端任务1 温度传感器的初始化(3)DS18B20内部结构 主要由4部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。ROM中的64位序列号是出厂前被光刻好的,它可以看作 是该DS18B20的地址序列码,可以实现一根总线上挂接多个DS18B20。任务1 温度传感器的初始化

3、(4)复位时序数据线下拉 500us ,然后释放, DS18B20 收到信号后等待 16us60us 左右,然后发出 60us240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。任务1 电路图任务1 温度传感器的初始化2.软件分析主函数调用DS18B20的初始化函数,然后循环执行指示灯报警。任务1 温度传感器的初始化三.任务实施步骤1:在Proteus软件中建立仿真电路文件。步骤2:在Keil中设计程序,汇编无误后,生成目标文件(.HEX)。步骤3:在Proteus软件中加载目标文件,仿真运行观察结果。步骤4:结果无误,请求教师检查、评价。步骤5:编制项目报告。任务2 整数显示温度

4、计一、任务说明 单片机控制1片温度传感器DS18B20,编写程序,完成温度测量和温度数据读取,并将温度值的整数部分显示在数码管上。任务2 整数显示温度计二、任务分析1.硬件分析 温度测量流程初始化ROM操作指令存储器操作指令数据传输DS18B20的ROM指令集DS18B20的存储器指令集任务2 整数显示温度计 向DS18B20写1位数据的时序拉低15us 写一位延时45us拉高数据线。连续写入时先低位后高位。任务2 整数显示温度计 从DS18B20读1位数据的时序(先写入读数指令0 xBE才能开始读数)数据线拉低数据线拉高读入一位延时45us 拉高数据线。任务2 整数显示温度计 温度数据处理

5、DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。任务2 整数显示温度计 温度数据处理例 如125的数字输出为0 x07D0-55的数字输出为 0 xFC90任务2 整数显示温度计 温度数据处理读出2字节温度数据后,需要进行数据拼装:将低字节的高4位(2320)右移4位、将高字节的低4位( S24 )左移4位,然后拼装成8位数据。S26252423222120若S=0,温度数据为原码,可直接求10进制显示值,同时将标志变量清零;若S=1,温度数据为补码,需要取反加1后(补码求绝对值)再求10进制显示值,同时将标志变量置1。任务2 整数显示温度计2.

6、软件分析-函数构成主函数 Void main() 不断调用温度数据读取和动态显示函数显示 Void display() 4位显示值,最高位显示符号,低3位显示温度值的整数部分数据读取 Void ds18b20() 启动温度转换,连续读取两字节数据温度转换 Void temp_convert 温度数据的拼接与显示值求取写1字节 Void write (int dat) 向ds18b20写入1字节数据读1字节 int read () 从18b20读取1字节数据初始化 Void initial() Ds18b20初始化延时 Void delayus(int i)延时12us Void delayms

7、(int i)延时1ms任务2 整数显示温度计2.软件分析-变量定义#includesbit dq=P30;/ds18b20sbit led=P31;/指示灯unsigned char t,tl,th,flag=0;/t温度,flag标志unsigned char seg10=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/共阳极七段码任务2 整数显示温度计2.软件分析-主函数流程调用动态显示函数调用温度数据读取函数任务2 整数显示温度计2.软件分析-温度读取函数调用读数子函数,读出高字节数据调用读数子函数,读出低字节数

8、据向DS18B20写入0XBE(读取温度数据)向DS18B20写入0XCC(跳过ROM操作)初始化DS18B20向DS18B20写入0X44(启动温度测量)向DS18B20写入0XCC(跳过ROM操作)初始化DS18B20Void ds18b20()完成传感器初始化、温度测量、温度数据读取。任务2 整数显示温度计2.软件分析-温度数据转换函数温度数据拼接判读符号位S=0,flag=0S=1,flag=1,求温度绝对值void temp_convert()完成温度数据拼接和温度符号定义。任务2 整数显示温度计2.软件分析-写1字节命令字右移1位拉高数据线延时60us向数据线送命令字最低位延时12

9、us拉低数据线循环8次Void write (int dat)完成向DS18B20写入1字节命令,写入顺序为先低后高。任务2 整数显示温度计2.软件分析-读1字节延时60us从数据线读1位数到temp最高位读数变量temp右移1位延时12us拉高数据线拉低数据线循环8次int read ()完成从DS18B20读出1字节温度数据,读数顺序为先低后高。任务2 整数显示温度计2.软件分析-温度数据显示P2=0X04判读符号变量flagflag=0显示百位flag=1显示 -Void display()完成温度数据和符号的显示第三位显示流程任务2 整数显示温度计三、任务实施步骤1:在Proteus软

10、件中建立仿真电路文件。步骤2:在Keil中设计程序,汇编无误后,生成目标文件(.HEX)。步骤3:在Proteus软件中加载目标文件,仿真运行观察结果。步骤4:结果无误,请求教师检查、评价。步骤5:编制项目报告。任务2 整数显示温度计四、任务拓展1.如何增加温度单位显示?2.如何实现多余显示位的消隐?3.如何增加显示温度值小数部分(保留1位小数)?任务3 小数显示温度计一、任务说明 单片机控制1片温度传感器DS18B20,编写程序,完成温度测量和温度数据读取,并将温度值精确到小数点后1位,显示在数码管上。任务3 小数显示温度计二、任务分析 从温度数据格式可知,若要取得温度值小数点后1位的值,就

11、需要将低字节温度数据(tl)的低4位数值乘以0.0625,然后扩大10倍,再取个位即可。1.温度数据转换部分原理分析任务3 小数显示温度计2.温度数据转换部分程序流程m=tl低4位m=m*625/1000在任务在任务2voidtemp_covert()中增加以下部分。中增加以下部分。任务3 小数显示温度计 十位显示值消隐的做法:判断百位和十位上的显示数字是否为零,若为零就消隐十位显示值(P0=0 xff),若不为零则正常显示数值。3.温度显示部分原理分析选中十位数码管判读百位十位是否为0是P0=0 xff否P0=segt%10任务3 小数显示温度计三、任务实施步骤1:在Proteus软件中建立

12、仿真电路文件。步骤2:在任务2程序基础上修改显示部分和温度转换部分,汇编无误后,生成目标文件(.HEX)。步骤3:在Proteus软件中加载目标文件,仿真运行观察结果。步骤4:结果无误,请求教师检查、评价。步骤5:编制项目报告。任务3 小数显示温度计四、任务拓展利用单片机项目板实测温度计,程序需要做什么修改?任务4 数字温度计一、任务说明 利用单片机项目板实现数字温度计,要求显示温度单位、温度数据精确到小数点后1位。任务4 数字温度计二、任务分析1.硬件部分修改 查看项目板上DS18B20的数据线dq实际连接情况,并修改程序变量定义。项目板上LED灯利用P3.7连接,修改程序中变量定义。按照项

13、目板硬件资源,将任务3做如下修改任务4 数字温度计二、任务分析2.软件部分修改(1)显示部分 由于项目板上的数码管公共端都连接了三极管反向放大器(增大公共端电压,提高数码管显示亮度),所以程序总凡是选中数码管的语句,都需要将控制字按二进制取反(如:0X010XFE、0X080XF7等) ,否则数码管不能点亮。任务4 数字温度计二、任务分析2.软件部分(2)DS18B20时序部分 由于项目板上的单片机(STC12C5A89S2)是一款高速单片机,指令提速6-12倍,而DS18B20的复位、读、写操作都对时序敏感,因此需要将上述三个子函数里所有延时部分的参数扩大10倍,如delayus(5)delayus(50)等。任务4 数字温度计三、任务实施步骤1:在Proteus软件中建立仿真电路文件。步骤2:在任务2程序基础上修改显示部分和温度转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论