版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1.设计任务. . . .1 1.1 设计目的. . .1 1.2 设计指标. . .11.3 设计要求. .12. 设计思路与总体框图. .13. 系统硬件电路的设计. .23.1主控电路. . .23.2液晶显示电路. .33.3按键电路. . . .33.4报警电路. . .44. 系统仿真设计.4 4.1仿真原理图. . . .4 4.2各功能元件的分析.55. 系统软件设计.10 5.1 主程序.11 5.2 读出温度子程序.11 5.3 温度转换命令子程序.12 5.4 设计温度子程序.12 5.5 1602的温度显示.136. 总结与体会. . . .136 1 总结. .
2、 . .136. 2体会. . . .147. 参考文献. . . .158. 附录.161. 设计任务1.1 设计目的1. 了解数数字温度计及工作原理。2. 进一步掌握数字温度计设计方法。 3. 进一步掌握各芯片的逻辑功能及使用方法。 4. 进一步掌握keil和仿真软件的应用。5. 进一步熟悉集成电路的引脚安排.。1.2 设计指标1. 显示温度。2. 可以显示大于零度的温度也可以显示小于零度的温度。3. 具有显示相应环境温度的功能,并且具有超出设定范围内温度时可以报 警的功能,相应环境可以人为选择。1.3 设计要求1.画出总体设计框图,以说明数字温度计由哪些相对独立的功能模块组 成,标出各个
3、模块之间互相联系。并以文字对原理作辅助说明。2.设计各个功能模块的电路图,加上原理说明。3.选择合适的元器件,在面包板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。4.在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个数字温度电路的接线调试。2.设计思路与总体框图.数字温度计由主控制器(单片机)、温度传感器(ds18b20)、显示器(lcd1602)、独立按键和报警电路组成,温度传感器所感应的温度信号经过其数据传输引脚传送给单片机,单片机将所接收到的温度信号经过处
4、理,将其送至显示器lcd1602显示,并且能够通过独立按键设置温度报警值,若温度处于报警上限和下限之外,报警电路工作。图1所示为数字温度计的一般结构框图:报警温度调整键 lcd1602显示 stc90c51 主 控 制 器 蜂鸣器,指示灯单片机时钟振荡 ds18b20传感器 图1 数字温度计结构框图3. 系统硬件电路的设计3.1 主控电路单片机stc90c51具有低电压供电和体积小等特点,四个端口同时使用以满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。晶振采用12mhz。 图2 主控电路 图3 晶振电路 3.2 温度显示电路采用液晶显示屏lcd1602显示,第一行
5、显示“18b20 ok tl”和报警下限值,第二行显示实时温度以及报警上限值,并且能够显示负温度值。用p0口进行lcd1602的数据写操作,p2.5p2.7口进行lcd1602的命令控制端口。电路图如下: 图4 温度显示电路 3.3 按键电路本系统一共设置了四个按键,k1键设置温度下限加,k2键设置温度下限减k3键设置温度上限加,k4键设置温度上限减。 图5 按键电路3.4 报警电路本设计采用蜂鸣器和led灯组成报警电路,电路图如下: 图6 报警电路4系统设计仿真4.1仿真原理图根据数字温度计的一般结构框图,我们通过查阅资料书和上网查询,了解不同元件的功能和实用性,考虑性价比后,制作出的数字温
6、度计的仿真电路原理图,如图7所示。 图7 数字温度计仿真电路原理图4.2各功能元件的分析2设计原理图中各功能元件的引脚图的分析如下所示:1ds18b20:ds18b20温度传感器是美国dallas半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。ds18b20的性能特点如下:(1)独特的单线接口仅需要一个端口引脚进行通信,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。(2)ds18b20支持多点组网功能,多个ds18b20可以并联在惟一的
7、三线上,实现多点组网测温;(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(4)可通过数据线供电,电压范围为3.0-5.5;(5)零待机功耗;(6)温度以9或12位数字,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;(7)用户可定义报警设置;(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;(10)测量结果直接输出数字温度信号,以一线总线串行传送给cpu,同时可传送crc校验码,具有极强的抗干扰纠错能力ds18b20采用3脚pr35封装或
8、8脚soic封装,其引脚排列及内部结构框: 图8 ds18b20引脚排列图 图9 内部结构框图预置斜率累加器比较低温度系数振荡器计数器1温度寄存器tx预置=0高温度系数振荡器-0计数器2t1加1停止t2 图 10 ds18b20测温原理图64位rom的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的crc检验码,这也是多个ds18b20可以采用一线进行通信的原因。温度报警触发器th和tl,可通过软件写入户报警上下限。ds18b20温度传感器的内部存储器还包括一个高速暂存ram和一个非易失性的可电擦除的eeram。高速暂存ram的结构为8字节的存储器,
9、结构如图4所示。头2个字节包含测得的温度信息,第3和第4字节th和tl的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。ds18b20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图5所示。低5位一直为1,tm是工作模式位,用于设置ds18b20在工作模式还是在测试模式,ds18b20出厂时该位被设置为0,用户不要去改动,r1和r0决定温度转换的精度位数,来设置分辨率。温度 lsb温度 msbth用户字节1tl用户字节2配置寄存器保留保留保留crctmr1r011111图11 ds18b20的字节定义 ds18b20的
10、分辨率定义如表1所示表1 分辨率设置表r0r1分辨率最大温度转移时间009位96.75ms0110位187.5ms1011位375ms1112位750ms由表1可见,ds18b20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。主机控制ds18b20完成温度转换过程是:每一次读写之前都要对ds18b20进行复位,即将数据总线下拉500us,然后释放,ds18b20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主cpu收到此此信号表示复位成功;复位成功后发送一条rom指令,然后发送ram指令,这样才能对
11、ds18b20进行预订的读写操作。表2 rom指令集指令约定代码功能读rom33h读ds18b20中的编码符合rom55h发出此命令后,接着发出64位rom编码,访问单线总线上与该编辑相对应的ds18b20使之做出响应,为下一步对该ds18b20的读写作准备搜索rom0f0h用于确定挂接在同一总线上的ds18b20个数和识别64位rom地址,为操作各器件作准备跳过rom0cch忽略64位rom地址,直接向ds18b20发送温度变换指令告警搜索命令0ech执行后,只有温度跳过设定值上限或下限的片子才能做出反应表3 ram指令集指令约定代码功能温度转换44h启动ds18b20进行温度转换读暂存器0
12、beh读暂存器9个字节内容写暂存器4eh将数据写入暂存器的th、tl字节复制暂存器48h把暂存器的th、tl字节写到e2ram中重调e2ram0b8h把e2ram中的th、tl字节写到暂存器th、tl字节读供电方式0b4h启动ds18b20发送电源供电方式的信号给主cpuds18b20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,ds18b20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数
13、门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 图 12 测温电路图2. lcd
14、1602:工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义cgram,显示效果也不好)。1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。1602芯片的接口信号说明如下表:1602芯片的接口信号说明5 系统软件设计整个系统是由硬件配合软件来实现
15、的,在硬件确定后,编写的软件的功能也就基本定型了。所以软件的功能大致可分为两个部分:一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。5.1主程序主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图13所示。y发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验9字节完?crc校验正?确?移入温度暂存器结束nny 开始 液晶初始化 调用按键函数, 液晶显示函
16、数判断温度值与设定报警值大小 大于th或 n 者小于tl y 报警 结束 图 13 主程序流程图 图 14 读温度流程图5.2读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图15示:发ds18b20复位命令发跳过rom命令发温度转换开始命令 结束 图 15 温度转换流程图5.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图13所示5.4 计算温度子程序计算温度子程
17、序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图16所示。 开始 温度零下?温度值取补码置“”标志 计算小数位温度 计算整数位温度 结束置“+”标志ny 图 16 计算温度温度流程图 5.5 1602的液晶显示 图 17 1602液晶显示流程图6.总结与体会6.1 总结1.根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。2.容易出现故障为接触不良。a)集成块引脚方向预先弯好对准面包板的金属孔,再小心插入。b)导线的剥线长度与面包板的厚度相适应(比板的厚度稍短)。c) 导线的裸线部分不要露在板的上面,以防短路。d)导线要插入金属孔中央。3.注意
18、芯片的控制引脚必须正确接好4.检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。5.要注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。6.接校时电路时可接模拟信号输入(如1hz和2hz)测试输出信号的切换正确后,再将秒进位和分进位信号接到校时电路,再接校时电路输出到分计数器和时计数器。从较时电路接入信号时,必须将原进位信号拔掉。6.2 体会经过将近两周的单片机课程设计,终于完成了我们的数字温度计课程设计,虽然课程设计做的不是特别好,但从心底里说,还是高兴的,因为我们收获了很多很多,这些在平常的学习当中是收获不到的,但高兴之余不得不静下来深思! 在本
19、次课程设计的过程中,我们发现很多的问题,虽然以前还做过类似的课程设计,但这次设计真的让我学到了很多、长进了很多,单片机课程设计的重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过一些程序,但觉的要写好一个程序并不是一件简单的事,所以我们只能不断的调试不断的修改才能把程写的更好。所以得出结论是:有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握,实践才是硬道理,实践是检验真理的唯一标准。通过这次的课程设计,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,这样我们才能更好的理解、掌握这些知识,学习单机片机更
20、是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。通过这次对数字温度计的设计与制作,让我们了解了设计电路的程序,也让我们了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制约着。并且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。 通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。 当然在这个过
21、程中我们还会遇到很多其它的问题,这些问题我们也不是那么轻易的就能够解决的,此时我们就会去翻阅相关资料,或者是问同学、问老师,我们的同学和老师那一个个真的事知无不答的,这样我们就能很快的把问题给决绝掉了,那种感觉真的让人很舒畅,这也让我们明白了一件事,在学习中我们缺少不了同学、老师的帮助,他们能够很快的解决一些问题。 从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识应用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。7参考文献 1 单片机原理及应用杨恢先、黄辉光主编m湘潭大学出版社2 电子技术基
22、础(第五版)华中科技大学电子技术课程组编m康华光主编,陈大钦、张林副主编,高等教育出版社3单片机课程指导楼然苗 、李光飞编著,北京航空航天大学大学出版社 4 51单片机c语言教程 郭天祥 编著8.附录:#include#include #define uchar unsigned char#define uint unsigned intuchar temp,num,k1num;uchar code table=18b20 ok tl;char shangxiaxian2=-10,10;char a;sbit k1=p10;sbit k2=p11;sbit k3=p12;sbit k4=p13
23、;sbit lcd_rw=p25;sbit lcdrs=p26;sbit lcden=p27;sbit beep=p30;sbit led=p31;sbit dq=p37; /*液晶显示屏的延时程序*/void delay(uint z) uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*温度传感器的延时程序*/ void delay1(uint y) uint x;for( ; y0; y-)for(x=110; x0; x-); /*蜂鸣器,18b20写数据函数的延时程序*/ void delay2(uint a) while(-a); /*温度传感器初始
24、化函数*/void init_18b20() dq=1; delay2(8); dq=0; delay2(90); dq=1; _nop_(); _nop_(); delay2(100); dq=1; /*温度传感器写字节命令函数*/void ds18b20xiezijie(uchar date) uchar i; for(i=0;i=1; /右移一位,写入第二位数据 /*温度传感器读字节命令函数*/uchar ds18b20duzijie()uchar i,dat=0; dq=1; _nop_(); for(i=0;i=1; dq=1; /然后释放总线 _nop_(); /延时一下等待数据稳
25、定 _nop_(); if(dq) dat|=0x80; /读取数据,从最低位开始读取 delay2(30); /读取完之后等待一下,再接着读取下一个数 dq=1; return dat; /返回所读到的温度 /*写温度转换命令函数*/void ds18b20changtemp() init_18b20();delay1(1);ds18b20xiezijie(0xcc);/跳过rom操作命令 ds18b20xiezijie(0x44); /温度转换命令 /*读温度命令函数*/void ds18b20readtempcom() init_18b20();delay1(1);ds18b20xiez
26、ijie(0xcc); /跳过rom操作命令ds18b20xiezijie(0xbe); /发送读取温度命令 /*读温度函数*/int ds18b20readtemp() int temp = 0;uchar tmh, tml;ds18b20changtemp(); /先写入转换命令ds18b20readtempcom();/然后等待转换完后发送读取温度命令tml = ds18b20duzijie();/读取温度值共16位,先读低字节tmh = ds18b20duzijie();/再读高字节temp = tmh;temp = 8;temp |= tml;return temp; /*液晶屏写指
27、令函数*/void write_com(uchar com) lcdrs=0;lcden=0;lcd_rw=0;p0=com;delay(5);lcden=1;delay(5);lcden=0; /*液晶屏写指令函数*/void write_com2(int com) lcdrs=0;lcd_rw=0;lcden=0;delay(5);p0=com;delay(5);lcden=1;delay(5);lcden=0;p0=(com&0x0f)4;delay(5);lcden=1;delay(5);lcden=0;/*液晶屏写数据命令函数*/void write_data(char date)l
28、cdrs=1;lcd_rw=0;lcden=0;p0=date;delay(5);lcden=1;delay(5);lcden=0;lcdrs=1;lcd_rw=0;lcden=0;p0=(date&0x0f)4;/一次写入4位delay(5);lcden=1;delay(5);lcden=0;/*液晶屏初始化函数*/void init() lcden=0; write_com(0x28); write_com2(0x28);write_com2(0x0c);write_com2(0x06);write_com2(0x01);write_com2(0x80); /*报警上下线处理函数*/ vo
29、id write_hl(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+0x40+add); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); /*报警上下线处理函数*/void write_hl1(uchar add,char date) uchar bai,shi,ge; if(date0)date=-date; b
30、ai=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 lcdxianshi(int temp) uchar sz4=0,0,0,0; unsigned char datas = 0, 0, 0, 0, 0; /定义数组float tp; if(temp 0)/当温度值为负数 write_com2(0x80+0x40);/写地址 80表示初始地
31、址 write_data(-); /显示负temp=temp-1;/因为读取的温度是实际温度的补码,所以减1,再取反求出原码temp=temp;tp=temp;temp=tp*0.0625*100+0.5; else write_com2(0x80+0x40);/写地址80表示初始地址 write_data(+); /显示正tp=temp; /因为数据处理有小数点所以将温度赋给一个浮点型变量 如果温度是正的那么,那么正数的原码就是补码它本身temp=tp*0.0625*100+0.5;datas0 = temp / 10000; /百位datas1 = temp % 10000 / 1000;
32、/十位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+datas2); 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) /温度报警下限加 shangxiaxian0+; if(shangxiaxian0=127) shangxiaxian0=126; write_hl1(13, shangxiaxian0); if(k2=0) /温度报警下限减 delay(5); if(k2=0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油料计量员安全宣贯评优考核试卷含答案
- 丁二烯装置操作工道德强化考核试卷含答案
- 渔船普通船员安全培训竞赛考核试卷含答案
- 顺丁橡胶装置操作工操作能力水平考核试卷含答案
- 养蜂员岗前设备巡检考核试卷含答案
- 砖瓦原料工安全文化强化考核试卷含答案
- 制粉工发展趋势评优考核试卷含答案
- 织袜工操作规范知识考核试卷含答案
- 烷基化装置操作工安全宣传水平考核试卷含答案
- 危险货物运输作业员岗前技术应用考核试卷含答案
- 2026年春统编版(新教材)小学道德与法治一年级下册教学计划及进度表
- 人工智能新名词百科
- (正式版)DB34∕T 5309-2025 《城镇燃气管道直流杂散电流干扰检测规程》
- 工贸企业重大事故隐患判定标准解读
- 阀门井模板施工方案
- 2026年苏州信息职业技术学院高职单招职业适应性考试参考题库及答案详解
- 刷单协议书合同范本
- 机械加工学徒合同范本
- 代持车牌协议书
- 《危险化学品安全法》全文学习课件
- DB11∕T 2420-2025 公路工程平安工地评价规范
评论
0/150
提交评论