




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计成绩操作报告综合指导教师签名湖南理工学院南湖学院单片机课程设计报告基于单片机的数字温度计设计姓名学号系别机电工程专业电子信息工程班级07-2BF完成时间 2010年6月23日基于单片机的数字温度计设计1 绪论2 方案设计3 系统的硬件设计3.1 主控制器3.2 显示电路3.3 温度传感器工作原理3.4 温度传感器接口电路4 系统的软件设计4.1 主程序4.2 温度测量4.2.1 初始化 DS18B204.2.2 等待应答信号423 DS18B20 读字节424 DS18B20 写字节4.2.5 启动温度测量4.2.6 读取测量结果 4.2.7各算法流程图4.3 数码管显示系统的测试与总
2、结 参考文献 附录 1 原理图 附录 2 源程序清单随着人们生活水平的不断提高 , 单片机控制无疑是人们追求的目标之 一,它所给人带来的方便也是不可否定的, 其中数字温度计就是一个典型的 例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好 的更方便的设施就需要从单片机技术入手, 一切向着数字化控制, 智能化控 制方向发展。现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增 长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展 水平。在三大信息信息采集 ( 即传感器技术 ) 、信息传输 ( 通信技术 ) 和信息处 理(计算机技术 ) 中,传感器属于信息技术
3、的前沿尖端产品, 尤其是温度传感 器技术,在我国各领域已经引用的非常广泛, 可以说是渗透到社会的每一个 领域,人民的生活与环境的温度息息相关, 在工业生产过程中需要实时测量 温度,在农业生产中也离不开温度的测量, 因此研究温度的测量方法和装置 具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶 段:传统的分立式温度传感器模拟集成温度传感器 智能集成温度传感器。目前的智能温度传感器 (亦称数字温度传感器 )是在 20 世纪 90 年代中期问世的, 它 是微电子技术、计算机技术和自动测试技术 (ATE)的结晶,特点是能输出温度数据及相 关的温度控制量,适配各种微控制器(M
4、CU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向 智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及 安全性、 开发虚拟传感器和网络传感器、 研制单片测温系统等高科技的方向迅速发展, 本文将介绍智能集成温度传感器 DS18B20 的结构特征及控制方法,并对以此传感器, 89S51 单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介 绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用 数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器 使用
5、 ATMEL 公司的 AT89S52 单片机,测温传感器使用 DALLAS 公司 DS18B20 ,用 数码管来实现温度显示。2方案设计本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软 件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:利用温度传感器(DS18B20)测量某一点环境温度测量范围为-55C+ 125C,精度为土 05C用数码管进行实际温度值显示采用AT89S52单片机P3 .5 口控制温度传感器 DS18B20的温度测量,以四 位数码感形式输出测量温度,原理图如下图1.1所示:VCXT1 Cll 1DS1SB2CT=图2.1DS18B20与单片机接口原
6、理A主控制器ATSsks上度传感器+图22总体设计方框图3系统的硬件设计3.1主控制器AT89S52是一种低功耗、 高性能CMOS位微控制器,具有8K在系统可 编程Flash存储器。使用 Atmel公司高密度非易失性存储器技术制造, 与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM 32 位I/O 口线,看门狗定时器,2个数据指针,三个16位 定时
7、器/计数器,一个6向量2级中断结构,全双工 串行口, 片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存, 振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K字节在系统可编程 Flash AT89S52C47105®ECC卜勝31P10/TPOOP11/TP01P12P02P13P03P14P04P15P05P16F06P17P07INT1P20INTOP21P22T1P23TOF24F25eDvpP2
8、SP27XIRESETKXDTXDRDALE/PWRPSENU4TMS 9ATSSS5219 nINTU3 cINT012T1 15 TO 1421 P2022 P2124卩石28 P27P1D 1F12 HP13耳巳:HF16 7P17 ®39 POD 艾PB3( F'CG3PD434 PM33 _ PU6艾PMg RXD 一T&d29图3.1时钟电路与复位电路3.2C4?<C-ISRBTRSI10U3 OFFC4SY制3OPFR29I0K<IJP10 1P11 2P12 3P13斗P145P15 6P16 7P17 S:NT1131NT012T1 15
9、T0 14Y5 110592VC匚EA311918ms9RD 17WK 16VP10TPOOP1PTP01P12PQ2P13P03PHP04P15P05P16P06P17P07INTIP20INTOP21P22T1P23TOP24P25EVPP26P27XIX2RESETRXDTXD/KDALE PWRPSENU439 POO谓PO13? PD236 P0335 P04M PO533 PO32 PO721 P2O24 P2325 P2426P2527P2628 P2710RXD11 TXD2930 ALE22 P2123P22显示电路显示采用4位数码管,图321为数码管段驱动,图322为数码
10、管位驱动,图3.2.3为温度显示电路VCC1VCCLBo CMJ6P00 2DO DiD2D3D4D5D6D7nQOQiQ21!3dp1rP01 3A1:3P02 41Ff3.4VCCP吩3516eP04 6cJJ1;5d4567SP05 ?Q414cQ6Q713bR14P07 912a0ECONSI5E1OELE1P14 1111z 吩 1_>CON:"=?4SL573S图3.2.1数码管段驱动NUM1T113R17IKR18IKNUNI4T2R20IK1NUNI4T39013| ./丿L_L1mLR211NU?C)c)c)J?寸9c2CON4ccsco”,rLLNUM1T3
11、'OB1JR1SXUAUXUM/72、T2L<901!3 .XUXI4R21IKo o oCM寸9tn归|丄,12CON4图3.2.2数码管位驱动abcdefgdp%a b c d t f g dpo-I1abcdefsdp中寸“ i G 2 vfd e f g dpT O I T,DS1SMCt<1 b c d e f g dp D S 2SMGa b c d e f e dpDS3SMGa b c d e f g dpDS4. KMGco000001IU111iiunliimii2puiu2mimm3iiinii4inniUIcowcomcomcomCODlcomcon
12、i com图323温度显示电路3.3温度传感器工作原理DS18B20温度传感器是美国 DALLAS半导体公司最新推出的一种改进型智能温度传感 器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度, 并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:?独特的单线接口仅需一个端口引脚进行通讯?简单的多点分布应用?无需外部器件?可通过数据线供电?零待机功耗?测温范围-55+125 C,以0.5C递增。华氏器件-67+2570F,以0.90F递增?温度以9位数字量读出?温度数字量转换时间200ms (典型值)?用户可定义的非易失性温度报警设置?报警搜索命令
13、识别并标志超过程序限定温度(温度报警条件)的器件DS18B2内部结构主要由四部分组成:64位光刻ROM温度传感器、非挥发的 温度报警触发器TH和TL、配置寄存器。DS18B2的管脚排列、各种封装形式如图 3.3.1所示,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生 电源下,也可以向器件提供电源;GN为地信号;VD为可选择的VD引脚。当工作于寄生电源时,此引脚必须接地。其电路图3.3.2所示.。BOTTOM VIEWDALLASDS1820DS18B2O TO-92TSOCPACKAGENCNCVddDQ182713645NCNCNCGNQzc一 CLA -OQDS18B20Z8
14、FIN SOIC(150IL)图3.3.1外部封装形式图332传感器电路图DS18B2C的测温原理如图3.3.3所示,图中低温度系数晶振的振荡频率受温 度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B2C就对低温度系数振荡器产生的 时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡 器来决定,每次测量前,首先将-55 C所对应的基数分别置入减法计数器 1和温 度寄存器中,减法计数器1和温度寄存器被预置在-55 C所对应的一个基数值。减法计
15、数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数 器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装 入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循 环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中 的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其 输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程, 直 至温度寄存器值达到被测温度值,这就是 DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因 此读写时序很重要。系统对 DS18B20
16、勺各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)一发ROM功能命令-发存储器操作命令一处理数 据。图333 DS18B20测温原理图在正常测温情况下,DS1820的测温分辨力为0.5 C,可采用下述方法获得高 分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH读出以0.5 C 为分辨率的温度测量结果,然后切去测量结果中的最低有效位 (LSE),得到所测 实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度 计数值CD考虑到DS1820测量温度的整数部分以0.25 C、0.75 C为进位界限的 关系,实际温度Ts可用下式计算:Ts (
17、 TZ-0.25C) ( CD-Cs)/ CD3.4温度传感器接口电路VCC图341温度传感器接口电路4系统的软件设计4.1主程序/* 主函数*/void mai n()while(1)Convert(); / 调用启动温度转换函数 RdTemp(); / 调用读取温度值函数4.2 温度测量4.2.1 初始化 DS18B20/* 初始化 DS18B20 */void TxReset() uint i;DQ=0; / 发送复位脉冲 i=100;while(i>0) i-;/ 拉低 900usDQ=1; / 释放总线i=4; while(i>0) i-;4.2.2 等待应答信号/* 等
18、待 DS18B20 应答 */void RxWait() uint i; while(DQ); / 等待 15-60us while(DQ); / DS18B20 发出存在脉冲 60-240us i=4;while(i>0) i-;423 DS18B20 读字节/* 读取一位数据 */bit RdBit() uchar i;bit b;DQ = 0; / 读开始 1usi+;DQ = 1; / 产生读时间隙 15usi+;i+;b = DQ; / 读位;Qi = 8;while(i>0) i-; / 等待 60usDQ = 1; / 释放总线return b;/* 读取字节数据 u
19、char RdByte() uchar i,j,d;d=0;for(i=0;i<8;i+) / 各位由低向高读出 j=RdBit(); d=(j<<7)|(d>>1); return d;424 DS18B20 写字节/* 写入字节数据 void WrByte(uchar d)uint i; uchar j; bit btmp;for(j=0;j<8;j+)/ 各位由低向高写入*/DS18B20*/DS18B20btmp=d&0x01;d=d>>1;if(btmp) / 写 1DQ=0; / 延时 15usi+;i+;DQ=1; / 写
20、1 时隙不低于 60ui=8;while(i>0) i-;else / 写 0DQ=0;i=8;while(i>0) i-;/ 保持低电平 60us 到 120usDQ=1; / 释放总线i+;i+;4.2.5 启动温度测量/* 启动温度测量 */void Convert()uint i;Delay(125);/ 延时 1msTxReset();/ 初始化 DS18B20RxWait();/ 等待 DS18B20 答应Delay(125);/ 延时WrByte(0xcc); / 跳过 ROM命令WrByte(0x44); / 温度转换命令for(i=0;i<250;i+)/
21、延时 1sDisplay();4.2.6 读取测量结果/* 读取温度值 */void RdTemp(void)short int temp;uint x;bit flag = 1;TxReset();/初始化 DS18B20RxWait();/等待DS18B20 应答Delay(125);/延时WrByte(Oxcc);/跳过ROM命令WrByte(0xbe); / 读暂存存储器命令templow = RdByte(); / 温度值低字节,低 4 位为小数 temphigh = RdByte(); / 温度值高字节temp = (temphigh << 8) | templow;
22、/ 温度为 16 位补码 if(temp<O) / 负温度flag = O;temp = temp + 1;tempzheng = temp >> 4; / 温度值整数x = temp & OxOOOf;tempxiao = (x*1O)/16;/ 温度值小数if(flag) / 正温度dispO = tempzheng/1OO; / 百位 else / 负温度dispO = 16; / 负号disp1 = (tempzheng%1OO)/1O; / 十位 disp2 = tempzheng%1O; / 个位disp3 = tempxiao;/小数427各算法流程图d
23、isp3 = tempxiao;/小数disp3 = tempxiao;/小数图4.2.7.1DS18B20初始化流程图图4.2.7.2主程序流程图结束图427.3温度转换流程图图427.3温度转换流程图图 427.4计算温度流程图图427.5显示数据刷新流程图图427.3温度转换流程图图427.3温度转换流程图4.3数码管显示/* 数码管显示*/void Display。uchar i,j;j=0x08;for(i=0;i<4;i+)P1=j;/数码管位码输出L0CK=1; /打开锁存if(i=2)P0=leddispi|0x01; / 显示小数点else P0=leddispi; /
24、 数码管段码输出 LOCK=0; /关闭锁存j=j>>1;/调整位码Delay(125);P0=0x00;5系统的测试与总结5.1测试时的图片图5.1.1温度传感器图5.1.2测试时室内温度显示图5.1.3测试时手握住传感器时的温度显示5.2总结通过近两个星期的单片机课程设计,我终于完成了“基于单片机的数 字温度计设计”,心中不免有些高兴,但高兴之余也有我值得深思的。虽然以前做过类似的实验,但这次的课程设计还是让我学到了很多东 西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算 法。有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论 有些东西是很难理解的,更
25、谈不上掌握。通过这次的单片机课程设计我认 识到了,学习要理论联系实际,把学到的理论知识同实际运用相结合,才 能是我们的知识融汇贯通,才能真正的学到知识,真正的做到学以致用。参考文献1 李朝青单片机原理及接口技术北京航空航天大学出版社,20052 马忠梅等.单片机的C语言应用程序设计(第 4版),20073 江世明.基于Proteus的单片机应用技术电子工业出版社,20094 彭伟单片机C语言程序设计实训100例电子工业出版社,20095 张毅刚 新编MCS-51单片机应用设计(第3版)哈尔滨工业大学出版社2008附录1原理图附录2源程序清单#in elude <reg52.h>#d
26、efi ne ulong un sig ned long#defi ne uint un sig ned int#defi ne uchar un sig ned charuchar code led= 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0, 0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x02,0x00 ;傲码管码表uchar disp4=1,2,3,4;/ 数码管显示缓冲区数码管位选P1低四位,段选P0sbit LOCK=P1A4;/74573 锁存端sbit DQ=P3A5; /DS18B20 数据端uchar
27、 templow;/温度值低字节uchar temphigh; /温度值高字节char tempzheng; /温度值整数 char tempxiao; /温度值小数 void Delay(uint x);void Display(); void TxReset();void RxWait(); bit RdBit(); uchar RdByte(); void WrBit(bit b);void WrByte(uchar d);void Convert(); void RdTemp();sbit ACCO = ACCS;sbit ACC7 = ACCA7;/* 主函数 */void main
28、()while(1)Convert(); /调用启动温度转换函数RdTemp();/调用读取温度值函数/* 初始化 DS18B2O */void TxReset()uint i;DQ=O; /发送复位脉冲i=1OO;while(i>O) i-;/拉低 9OOusDQ=1;/释放总线i=4;while(i>0) i-;/* 等待 DS18B20 应答 */void RxWait() uint i;while(DQ); / 等待 15-60uswhile(DQ); /DS18B20 发出存在脉冲 60-240us i=4;while(i>0) i-;/* 读取一位数据 */bit
29、 RdBit()uchar i;bit b;DQ = 0; / 读开始 1us i+;DQ = 1; / 产生读时间隙 15usi+;i+;b = DQ; /读位i = 8;while(i>0) i-; / 等待 60usDQ = 1; / 释放总线 return b;/* 读取字节数据 */uchar RdByte()uchar i,j,d; d=0;for(i=0;i<8;i+) / 各位由低向高读出 DS18B20 j=RdBit(); d=(j<<7)|(d>>1);return d;/* 写入字节数据 */void WrByte(uchar d)uint i;uchar j;bit btmp;for(j=0;j<8;j+) / 各位由低向高写入 DS18B20 btmp=d&0x01;d=d>>1;if(btmp) / 写 1DQ=0; /延时 15usi+;i+;DQ=1; /写 1 时隙不低于 60ui=8;while(i>0) i-;else /写 0DQ=0;i=8;while(i>0) i-; /保持低电平 60us 到 120us DQ=1; /释放总线i+; i+;Display();vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖批发企业市场竞争力分析与发展规划考核试卷
- 硅冶炼过程中的产品质量检验与控制考核试卷
- 影视灯光控制台租赁与租赁设备安全操作培训协议
- 高端冰球比赛冰面监测系统租赁与维护保障协议
- 生物制药中试基地股权投资与项目验收合作协议
- 翻译认证补充协议(学术论文)
- 国际配偶移民忠诚度约定书
- 影视音乐作品版权独家运营收益分配补充协议
- 新冠病毒抗原检测试剂采购及物流保障服务合同
- 研发成果转化定制保密补充协议
- 异地就医登记备案表
- iso220002024食品安全管理体系标准
- 空间中的垂直学案高三数学一轮复习
- 重庆江北国际机场有限公司招聘笔试题库2024
- ipv6升级改造建设方案
- 大学生英语四级真题模拟试卷5份
- 单位反恐专项经费保障制度
- 羽毛球比赛对阵表模板
- 2024年上海市中考数学真题试卷及答案解析
- 统编版2023-2024学年语文三年级下册第五单元导读课教学设计
- 2024年陕西延长石油(集团)有限责任公司校园招聘考试试题参考答案
评论
0/150
提交评论