ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:507.64KB ,
资源ID:4192043      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4192043.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机温度传感器课程设计要点Word格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

51单片机温度传感器课程设计要点Word格式.docx

1、4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3.3管脚说明P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口

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

3、,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器

4、写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号.RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外

5、,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。4.温度

6、传感器模块图3 DS18B20相关资料4.1DS18B20原理与分析 DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输

7、距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。 以下是DS18B20的特点: (1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (2)在使用中不需要任何外围元件。 (3)可用数据线供电,电压范围:+3.0 +5.5 V。 (4)测温范围:-55 - +125 。固有测温分辨率为0.5 。 (5)通过编程可实现9-12位的数字读数方式。 (6)用户可自设定非易失性的报警上下限值。 (7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。 (8)负压特性,电源极性

8、接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的

9、预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0

10、000 0000 00100008H0000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H图4一部分温度对应值表另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。4.2 DS18B20温度传感器与单片

11、机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各

12、位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。5软件设计系统程序主要包括主程序、读出温度子程序、温度转换子程序、计算温度子程序、显示等等。5.1主程序主要功能是完成DS18B20的初始化工作,并进行读温度,将温度转化成为压缩BCD码 并在显示器上显示传感器所测得的实际温度。5.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需

13、要进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图1如下图所示。图5程序流程图15.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。流程图图2如下图6程序流程图25.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。流程图3如下:图7程序流程图36.完整程序如下:#include intrins.htypedef unsigned char uint8;#define uint unsigned int#define uchar

14、 unsigned charsbit DQ = P33; / 定义DQ引脚为P3.3uchar code Bw10= 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;/百位编码uchar code Xsw16=0x30,0x31,0x31,0x32,0x33,0x33,0x34,0x34,0x35,0x36,0x36,0x37,0x38,0x38,0x39,0x39;/小数位编码sbit RS = P20 ;sbit RW = P21 ;sbit EN = P22 ;sbit BUSY = P07;uchar wendu;uchar temp

15、_g,temp_d;unsigned char code word1=Temperature:;void delay(uint xms) uint i,j; for(i=xms;i0;-i) for(j=110;j-j);void Delayus(int t) /在11.059MHz的晶振条件下调用本函数需要24s ,然后每次计数需16s int s; for (s=0; st;s+);/等待繁忙标志void wait(void)P0 = 0xFF; do RS = 0; RW = 1; EN = 0; EN = 1; while (BUSY = 1); EN = 0;/写数据void w_d

16、at(uint8 dat) wait(); P0 = dat; RS = 1; RW = 0; EN = 1;/写命令void w_cmd(uint8 cmd) P0 = cmd; RS = 0;/发送字符串到LCDvoid w_string(uint8 addr_start, uint8 *p) w_cmd(addr_start); while (*p != 0) w_dat(*p+); /初始化1602void Init_LCD1602(void) w_cmd(0x38); / 16*2显示,5*7点阵,8位数据接口 w_cmd(0x0c); / 显示器开、光标开、光标允许闪烁 w_cmd

17、(0x06); / 文字不动,光标自动右移 w_cmd(0x01); / 清屏uchar Reset()/完成单总线的复位操作。 uchar d; DQ = 0; / 将 DQ 线拉低 Delayus(29); / 保持 480s .复位时间为480s,因此延时时间为(480-24)/16 = 28.5,取29s。 DQ = 1; / DQ返回高电平 Delayus(3); / 等待存在脉冲.经过70s之后检测存在脉冲,因此延时时间为(70-24)/16 = 2.875,取3s。 d = DQ; / 获得存在信号 Delayus(25); / 等待时间隙结束 return(d); / 返回存在

18、信号,0 = 器件存在, 1 = 无器件void write_bit(uchar bitval)/向单总线写入1位值:bitval / 将DQ 拉低开始写时间隙 if(bitval=1) DQ =1; / 如果写1,DQ 返回高电平 Delayus(5);/ 在时间隙内保持电平值, / Delayus函数每次循环延时16s,因此Delayus(5)=5*16+24=104s void ds18write_byte(char val)/向单总线写入一个字节值:val uchar i; uchar temp; for (i=0; ii; temp &= 0x01; write_bit(temp);

19、uchar read_bit()/从单总线上读取一位信号,所需延时时间为15s,因此无法调用前面定义 的Delayus()函数,而采用一个for()循环来实现延时。 /将DQ 拉低开始读时间隙 / 然后返回高电平3; i+); / 延时15s return(DQ); / 返回 DQ 线上的电平值uchar ds18read_byte()/从单总线读取一个字节的值 uchar value = 0;ii+) / 读取字节,每次读取一个字节 if(read_bit() value|=0x01 / 然后将其左移 Delayus(6); return(value);int Readtemperature

20、()/如果单总线节点上只有一个器件则可以直接掉用本函数。如果节点上有多个器件,为了避免数据冲突,应使用Match ROM函数来选中特定器件。uchar temp_d,temp_g,k,get2,temp; Reset(); ds18write_byte(0xcc); / 跳过 ROM ds18write_byte(0x44); / 启动温度转换 ds18write_byte(0xbe); / 读暂存器 for (k=0;k4)|(temp_g&0x0f)4); w_cmd(0xc1); w_dat(0x2d);/负号 else /正数 w_dat(Bwtemp/100); return tem

21、p;main() Init_LCD1602(); w_string(0x80,word1); while (1) wendu=Readtemperature(); temp_g=wendu%100/10+0;/这里要特别注意啊少了%100就差很多 temp_d=wendu%10+ w_cmd(0xc2); delay(2); w_dat(temp_g); w_dat(temp_d); w_cmd(0xc4); w_dat(0x2e);/小数点 w_cmd(0xc6); w_dat(0xdf);/温度符号 w_dat(0x43);7.总结与体会课程设计给我们带来的不只是一个项目的一系列学习,更重

22、要的是我在这个设计过程中所锻炼的能力和培养的一种精神。在本次课程设计中,比起上学期,更多是靠自己,去查阅资料,去寻找解决办法,还有就是和同学们互相帮助学习。我们这次课题虽然不难,但要去做好它,让它实现正确的功能,也少不了不断的研究和探索,可能废寝忘食,可能绞尽脑汁。不仅是现在的学习,在以后的生活中工作也,以这样一种态度和精神去完成自己的梦想,实现自己的价值。8.参考文献1单片机原理及应用(第二版)张毅刚 彭喜元 彭宇 编著2 Protel Dxp 2004简明教程和考证指南 电子工业出版社3 C 单片机原理及应用4数字电路基础技术康华光 第五版5数字温度传感器DS18B20的原理与应用EB/OL

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2