单片机数字温度计课程设计报告_第1页
单片机数字温度计课程设计报告_第2页
单片机数字温度计课程设计报告_第3页
单片机数字温度计课程设计报告_第4页
单片机数字温度计课程设计报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录1. 设计任务 11.1设计目的11.2设计指标11.3设计要求12. 设计思路与总体框图13. 系统硬件电路的设计 23.1主控电路23.2液晶显示电路33.3按键电路33.4报警电路44. 系统仿真设计44.1仿真原理图44.2各功能元件的分析55. 系统软件设计 105.1主程序.1.15.2读出温度子程序 115.3温度转换命令子程序 125.4设计温度子程序 125.51602的温度显示 1.36. 总结与体会136 1总结136.2 体会 .147. 参考文献158. 附录161. 设计任务1.1设计目的1. 了解数数字温度计及工作原理。2. 进一步掌握数字温度计设计方法。3

2、. 进一步掌握各芯片的逻辑功能及使用方法。4. 进一步掌握keil和仿真软件的应用。5. 进一步熟悉集成电路的引脚安排.。1.2设计指标1. 显示温度。2. 可以显示大于零度的温度也可以显示小于零度的温度。3. 具有显示相应环境温度的功能,并且具有超出设定范围内温度时可以报警的功能,相应环境可以人为选择。1.3设计要求1. 画出总体设计框图,以说明数字温度计由哪些相对独立的功能模块组成,标出各个模块之间互相联系。并以文字对原理作辅助说明。2. 设计各个功能模块的电路图,加上原理说明。3. 选择合适的元器件,在面包板上接线验证、调试各个功能模块的电路, 在接线验证时设计、选择合适的输入信号和输出

3、方式,在确定电路充分正确性 同时,输入信号和输出方式要便于电路的测试和故障排除。4. 在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布 局,进行整个数字温度电路的接线调试。2. 设计思路与总体框图.数字温度计由主控制器(单片机)、温度传感器(DS18B20)显示器 (LCD1602)、独立按键和报警电路组成,温度传感器所感应的温度信号经过其数 据传输引脚传送给单片机,单片机将所接收到的温度信号经过处理,将其送至 显示器LCD1602显示,并且能够通过独立按键设置温度报警值,若温度处于报 警上限和下限之外,报警电路工作。图1所示为数字温度计的一般结构框图:报警温度调整键蜂鸣器,指示灯

4、DS18B20传感器图1 数字温度计结构框图3. 系统硬件电路的设计3.1主控电路单片机STC90C5具有低电压供电和体积小等特点,四个端口同时使用以 满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电 池供电。晶振采用12MHZLI.1*XTAL1PO.O/ADOPU.1MD1P0.2ZAD2XTAL2P0.3/AD3PD4/AD4P0.5/AD5P0.6MD8尺5TPD.7MD7P2.O/A8P2.1/A9P2.2/A10PSENP2 3XA11ALEP2.4/A12EAP2.5/A13P2.6XA14P2.7/A15P1.0r3.JJfKDP1.1P3.1 /TXDP1

5、.2PSJJtlMTOP1.3P3.3JWT1P4.4P3.4/T0P1 5P35H1P1 6P3.6AM7P1 7P3.?yRD14 ;15 :16 17 ;I13711V132 :i|!_ _ : 139亠2?;盘iw:11 1图2主控电路3.2温度显示电路采用液晶显示屏LCD1602显示,第一行显示“ 18B20OKTL”和报警下限值,第二行显示实时温度以及报警上限值,并且能够显示负温度值。用P0 口进行LCD1602的数据写操作,P2.5P2.7 口进行LCD1602的命令控制端口。电路图如下:1T1PDLiJMEIPDJjMiW 阳MHfD 31?7诫国阴P22mO 怩出Pi S-i

6、HiSK- AP5 TJWufi图4温度显示电路1?Ei2& OK TL -01&補肿.3 IH诃直皿AI-屮LFI J3.3 按键电路本系统一共设置了四个按键,k1键设置温度下限加,k2键设置温度下限减 k3键设置温度上限加,k4键设置温度上限减。图 5按键电路3.4报警电路本设计采用蜂鸣器和LED丁组成报警电路,电路图如下:图6报警电路4. 系统设计仿真4.1仿真原理图根据数字温度计的一般结构框图,我们通过查阅资料书和上网查询,了解 不同元件的功能和实用性,考虑性价比后,制作出的数字温度计的仿真电路原 理图,如图7所示。:IFTTHm砂4sKFpP3 *jaLMD VJi 1鼻 MLAR

7、2JUAt#WQAim mmi i hJM F01MI3 皿亦 FWE百 口聲叫110 BTJTmnxD mrw rjjfinti MJrirrr P3.Tn 眄vn dOTE r s.r/IFChms、R22te&i #ni tszr- I Ixriiz1117-n5Q 图7 数字温度计仿真电路原理图4.2各功能元件的分析设计原理图中各功能元件的引脚图的分析如下所示:1. DS18B20DS18B2C温度传感器是美国DALLAS导体公司最新推出的一种改进型智能 温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并 且可根据实际要求通过简单的编程实现 9-12位的数字值读数方式

8、。DS18B20勺 性能特点如下:(1) 独特的单线接口仅需要一个端口引脚进行通信,DS18B2C在与微处理 器连接时仅需要一条口线即可实现微处理器与 DS18B2啲双向通讯。(2) DS18B2C支持多点组网功能,多个 DS18B2C可以并联在惟一的三线上,实现多点组网测温;(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(4) 可通过数据线供电,电压范围为 3.0-5.5 V;(5) 零待机功耗;(6) 温度以9或12位数字,对应的可分辨温度分别为 0.5 C、0.25 C、 0.125 C和0.0625 C,可实现高精度测温;(7) 用户可定义报警设置;(8)

9、 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(9) 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;(10) 测量结果直接输出数字温度信号,以一线总线串行传送给CPU同时可传送CR(校验码,具有极强的抗干扰纠错能力 DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部结构框:伙1甜M曲 TccwcHC MCNC Euc图8DS18B20引脚排列图和損口电源检测 -出立曲哇戍图9内部结构框图T2 图10 DS18B20测温原理图64位ROM勺结构开始8位是产品类型的编号,接着是每个器件的惟一的序 号,共有48位,最后8位是前面56位的CR

10、C检验码,这也是多个DS18B2C可 以采用一线进行通信的原因。温度报警触发器 TH和TL,可通过软件写入户报 警上下限。DS18B2C温度传感器的内部存储器还包括一个高速暂存 RAM和一个非易失性 的可电擦除的EERAM高速暂存RAM勺结构为8字节的存储器,结构如图4所 示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易 失的,每次上电复位时被刷新。第 5个字节,为配置寄存器,它的内容用于确 定温度值的数字转换分辨率。DS18B2C工作时寄存器中的分辨率转换为相应精 度的温度数值。该字节各位的定义如图 5所示。低5位一直为1,TM是工作模 式位,用于设置DS18B2C在工

11、作模式还是在测试模式,DS18B2C出厂时该位被 设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCTM R1 R0 1111 1图11 DS18B20勺字节定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的 换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。DS18B20勺分辨率定义如表1所示R0R1分辨率最大温度转移时间009位96.75ms0110位187.5ms1011位375ms1112位750ms表1分辨率设置表温 度 数 据 转主机控制DS1

12、8B2C完成温度转换过程是:每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20攵到信号后等待16-60us 左右,之后发出60-240us的存在低脉冲,主CPU攵到此此信号表示复位成功; 复位成功后发送一条ROM旨令,然后发送RAM旨令,这样才能对DS18B2C进行 预订的读写操作。表2ROM旨令集指令约定代码功能读ROM33H读DS18B2C中的编码符合ROM55H发出此命令后,接着发出64位ROMS码,访问单线总 线上与该编辑相对应的DS18B2C使之做出响应,为下一步对该DS18B20勺读写作准备搜索ROM0F0H用于确定挂接在同一总线上的D

13、S18B2C个数和识别64 位ROM地址,为操作各器件作准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B2C发送温度变换指 令告警搜索命令0ECH执行后,只有温度跳过设定值上限或下限的片子才能做 出反应表3RAM旨令集指令约定代码功能温度转换44H启动DS18B20S行温度转换读暂存器0BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH TL字节复制暂存器48H把暂存器的TH TL字节写到E2RAM中2重调E RAM0B8H把ERAM中的TH TL字节写到暂存器 TH TL字节读供电方式0B4H启动DS18B2C发送电源供电方式的信号给主 CPUDS18B20勺测温原理

14、是这这样的,器件中低温度系数晶振的振荡频率受温度 的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B2就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系 数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法 计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一 个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器 1的预置值减到0时,温度寄存器的值将加1,减法计数器

15、1的预置将重新被装 入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此 循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中 的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门 仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。图12测温电路图2. LCD1602:工业字符型液晶,能够同时显示_|l6x02即32个字符(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符 位都可以显示一个字符,每位之间有一个点距的间隔,每行之

16、间也有间隔,起 到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自 定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以 显示两行,每行16个字符液晶模块(显示字符和数字)。1602芯片的接口信号 说明如下表:1602芯片的接口信号说明堀*符号引脚说期191罐Oi/o电源巫擁10iVI.擢品显麻H压启号11D1趙撫f Q1 .舫r数据,血令迭禅增读冯議择曲出IV咖0G使鮒号IID7数据ZL EXJL5Rl A背光疋權D1L6I.K5系统软件设计整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。所以软件的功能大致可分为两

17、个部分:一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新 子程序等。5.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20勺测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度, 其程序流程见图13所示。N图13主程序流程图图14读温度流程图5.2读出温度子程序读出温度子程序的主要功能是读出 RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图15示:图15温度转换流程图5.3温度转换命令子程序温度转换命令

18、子程序主要是发温度转换开始命令,当采用 12位分辨率时 转换时间约为750ms在本程序设计中采用1s显示程序延时法等待转换的完成。 温度转换命令子程序流程图如上图,图13所示5.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正 负的判定,其程序流程图如图16所示。图16计算温度温度流程图5.51602的液晶显示图17 1602液晶显示流程图6. 总结与体会6.1总结1. 根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。2. 容易出现故障为接触不良。a)集成块引脚方向预先弯好对准面包板的金属孔,再小心插入。b)导线的剥线长度与面包板的厚度相适

19、应(比板的厚度稍短)。c)导线的裸线部分不要露在板的上面,以防短路。d)导线要插入金属孔中央。3. 注意芯片的控制引脚必须正确接好4. 检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。5. 要注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。6. 接校时电路时可接模拟信号输入(如1Hz和2Hz)测试输出信号的切换 正确后,再将秒进位和分进位信号接到校时电路,再接校时电路输出到分计数 器和时计数器。从较时电路接入信号时,必须将原进位信号拔掉。6.2体会经过将近两周的单片机课程设计,终于完成了我们的数字温度计课程设计, 虽然课程设计做的不是特别好,但从

20、心底里说,还是高兴的,因为我们收获了 很多很多,这些在平常的学习当中是收获不到的,但高兴之余不得不静下来深 思!在本次课程设计的过程中,我们发现很多的问题,虽然以前还做过类似的课 程设计,但这次设计真的让我学到了很多、长进了很多,单片机课程设计的重 点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过一些程序, 但觉的要写好一个程序并不是一件简单的事,所以我们只能不断的调试不断的 修改才能把程写的更好。所以得出结论是:有好多的东西,只有我们去试着做 了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握,实 践才是硬道理,实践是检验真理的唯一标准。通过这次的课程设计,我们真正

21、的意识到,在以后的学习中,要理论联系实 际,把我们所学的理论知识用到实际当中,这样我们才能更好的理解、掌握这 些知识,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高, 这就是我在这次课程设计中的最大收获。通过这次对数字温度计的设计与制作, 让我们了解了设计电路的程序,也让我们了解了关于数字温度计的原理与设计 理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的 成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制 约着。并且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而 能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法

22、。通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不 如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。当然在这个过程中我们还会遇到很多其它的问题,这些问题我们也不是那 么轻易的就能够解决的,此时我们就会去翻阅相关资料,或者是问同学、问老 师,我们的同学和老师那一个个真的事知无不答的,这样我们就能很快的把问 题给决绝掉了,那种感觉真的让人很舒畅,这也让我们明白了一件事,在学习 中我们缺少不了同学、老师的帮助,他们能够很快的解决一些问题。从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实 际,把我们所学的理论知识应用到实际当中,学习单机片机更是如此,程序只

23、 有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获.7. 参考文献1 单片机原理及应用杨恢先、黄辉光主编M.湘潭大学出版社2 电子技术基础(第五版)华中科技大学电子技术课程组编M.康 华光主编,陈大钦、张林副主编,高等教育出版社3 单片机课程指导楼然苗、李光飞编著,北京航空航天大学大学出版社4 51单片机C语言教程郭天祥编著8附录:#in clude#in elude vintrin s.h#define uchar unsigned char#define uint unsigned intuchar temp,num,k1 num;uchar code table=18

24、B20 OKTL;charsha ngxiaxia n2=-10,10;char a;sbitk仁 P1A0;sbit k2=P1Al;sbit k3=P1A2;sbit k4=P1A3;sbit LCD_RW=P2A5;sbit lcdrs=P2A6;sbitlcde n=P2A7;sbit Beep=P3A0;sbit led=P3A1;sbit DQ=P3A7;/*液晶显示屏的延时程序*/void delay(uint z)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);/*温度传感器的延时程序*/void Delay1(ui nt y)uint x;f

25、or( ; y0; y-)for(x=110;x0; x-);/*蜂鸣器,18b20写数据函数的延时程序*/void delay2(uinta)while(-a);/*温度传感器初始化函数*/void in it_18b20()DQ=1;delay2(8);DQ=0; delay2(90);DQ=1;_n op_();_n op_(); delay2(100);DQ=1;/*温度传感器写字节命令函数*/void Ds18b20xiezijie(uchar date) uchar i;for(i=0;i=1;/*温度传感器读字节命令函数*/uchar Ds18b20duzijie()uchar

26、i,dat=0;DQ=1;_n op_();for(i=0;i=1; DQ=1;_nop_();_nop_();if(DQ) dat|=0x80; delay2(30); DQ=1;return dat;/*void/在写入一位数据之前先把总线拉低/写入一个数据,从最低位开始写/延时一下/将总线拉高,等待第二位数据写入/右移一位,写入第二位数据/先将总线拉低然后释放总线 延时一下等待数据稳定/读取数据,从最低位开始读取/读取完之后等待一下,再接着读取下一个数/返回所读到的温度写温度转换命令函数*/Ds18b20Cha ngTemp()in it_18b20();Delay1(1);Ds18b2

27、0xiezijie(0xcc);Ds18b20xiezijie(0x44);/跳过ROM操作命令/温度转换命令/*void读温度命令函数*/Ds18b20ReadTempCom()in it_18b20();Delay1(1);/跳过ROM操作命令/发送读取温度命令/先写入转换命令/然后等待转换完后发送读取温度命令/读取温度值共16位,先读低字节/再读高字节Ds18b20xiezijie(0xcc);Ds18b20xiezijie(0xbe);/*读温度函数*/int Ds18b20ReadTemp()int temp = 0; uchar tmh, tml; Ds18b20Cha ngTem

28、p(); Ds18b20ReadTempCom(); tml = Ds18b20duzijie(); tmh = Ds18b20duzijie(); temp = tmh;temp = 8;temp |= tml; return temp;/*液晶屏写指令函数*/void write_com(uchar com) lcdrs=0;lcde n=0;LCD_RW=0;P0=com;delay(5);lcde n=1;delay(5);lcde n=0;/*液晶屏写指令函数*/void write_com2(int com)lcdrs=0;LCD_RW=0;lcde n=0;delay(5);P0

29、=com;delay(5);lcde n=1;delay(5);lcde n=0;P0=(co m&OxOf)4; delay(5);lcde n=1;delay(5);lcde n=0;/*液晶屏写数据命令函数*/ void write_data(char date) -lcdrs=1;LCD_RW=O;lcde n=0;PO=date;delay(5);lcde n=1;delay(5);lcde n=0;lcdrs=1;LCD_RW=0;lcde n=0;P0=(date&0x0f)4;/ 一次写入 4 位delay(5); lcde n=1;delay(5);lcde n=0;/*液晶

30、屏初始化函数*/void init()lcde n=0;write_com(0x28);write_com2(0x28);write_com2(0x0c);write_com2(0x06);write_com2(0x01);write_com2(0X80);/*报警上下线处理函数*/void write_hl(uchar add,char date)uchar bai,shi,ge;if(dateO)date=-date; bai=date/100; shi=date%100/10; ge=date%100%10; write_com2(0x80+0x40+add);write_data(0x

31、30+bai);write_data(0x30+shi); write_data(0x30+ge);-/*报警上下线处理函数*/void write_hl1(uchar add,char date) -uchar bai,shi,ge;if(date0)date=-date; bai=date/100; shi=date%100/10; ge=date%100%10; write_com2(0x80+add); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge);/*液晶屏显示函数,显示温度值*/void Lcdxia

32、 nshi (inttemp)uchar sz4=0,0,0,0;unsigned char datas = 0,0, 0, 0, 0;/ 定义数组float tp;if(temp 0)/当温度值为负数write_com2(0x80+0x40);/写地址80表示初始地址write_data(-);/ 显示负temp=temp-1;因为读取的温度是实际温度的补码,所以减1,再取反求出原码temp=temp;tp=temp;temp=tp*0.0625*100+0.5;elsewrite_com2(0x80+0x40);/写地址80表示初始地址write_data(+);/ 显示正tp=temp;

33、/因为数据处理有小数点所以将温度赋给一个浮点型变量如果温度是正的那么,那么正数的原码就是补码它本 身temp=tp*0.0625*100+0.5;datas0=temp/10000;/百位datas1=temp%10000 / 1000;/十位datas2=temp%1000 / 100;/个位datas3=temp%100 / 10;/小数write_com2(0x80+0x40+1);write_data(0+datas0);write_com2(0x80+0x40+2);write_data(0+datas1);write_com2(0x80+0x40+3);write_data(0+d

34、atas2);write_com2(0x80+0x40+4);write_data(.);write_com2(0x80+0x40+5); write_data(0+datas3);a=(datas0*100+datas1*10+datas2);/ 用于温度的比较值write_hl(13,shangxiaxian1);/ 显示报警上限write_hl1(13,shangxiaxian0);/ 显示报警下限 -/*按键处理函数,用于设置温度报警值*/void key()if(k1=0)delay(5);if(k1=0)/温度报警下限加sha ngxiaxia n 0+;if(sha ngxiaxia n0=127)sha ngxiaxia n0=126; write_hl1(13,sha ngxi

温馨提示

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

评论

0/150

提交评论