




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硬件课程设计实验报告课题: 数字温度计TOC\o"1-5"\h\z.需求分析 1.概要设计 1.三件电路设计 3.系统软件设计 5.软件仿真 8.实际连接与调试 9.本次课设的收获与感受 11附录(程序源代码) 12需求分析功能要求:测量环境温度,采用接触式温度传感器测量,用数码管显示温度值。设计要求:(一)功能要求(1)由4位数码管显示当前温度。具备报警,报警门限通过键盘设置。精度为0.5C。(二)画由参考的电路原理图(三)画由主程序及子程序流程图、画由MCS51内部RAM分配图,并进行适当地解释。(四)写由实现的程序及实现过程。并进行适当地解释说明。二.概要设计(一)方案选择由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示由来,这种设计需要用到A/D转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器 DS18B20此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。(二)系统框图该系统可分为以下七个模块:控制器:采用单片机STC89C52寸采集的温度数据进行处理;温度采集:采用DS18B20直接向控制器传输12位二进制数据;温度显示:采用了4个LED共阴极七段数码管显示实际温度值;门限设置:主要实现模式切换及上下门限温度的调节;报警装置:采用发光二极管进行报警,低于低门限或高于高门限均使其发光;复位电路:对整个系统进行复位;时钟振荡模块:为整个系统提供统一的时钟周期。复位电路时钓振荡
电路控制器倬温度采集
电路门限设置报警电路(三)重要器件及其相关参数(1)单片机STC89C52Vcc:接复位电路时钓振荡
电路控制器倬温度采集
电路门限设置报警电路(三)重要器件及其相关参数(1)单片机STC89C52Vcc:接+5V电源;Vss:地端\t-H白口一140Fl.1—33期一ROJ1.£一33S-ro.iFL3—43T—ro,zF3.电■■536-K).3ns—5皓—ro.4ri5一r34一!0.5FIT—933-ro$时曰吁332—ET3—ID31—ka/vjt,TIIJ/F3.1—It30—ALE/TIM'S1mm2一1229—KU?RTF出.3-13却-P2.TTQg一14Z11—12.6T1/F3S一IS26一陞占T町F3$一W25WT3T一17叮-resSTTALl一IB23—122ETKLS—19£2一H1Vis—EO21-F2OP0.0〜P0.7:通用I/O引脚或数据低8位地址总线复用地址;P1.0〜P1.7:通用I/O弓|脚;P2.0〜P2.7:通用I/O引脚或高8位地址总线复用地址;P3.0〜P3.7:通用I/O引脚或第二功能引脚(RxDTxDINTO、INT1、T0、T1、WRRD;XTAL1、XTAL2外接晶振输入端;RST/Vpd:复位信号输入引脚/备用电源输入引脚;DS18B20
⑻通过单线总线端口访问DS1820的协议如下:?初始化?ROM操作命令?存储器操作命令?执行/数据DS1820需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、存在脉冲、写 0、写1、读。和读1。所有这些信号,除存在脉冲外,都是由总线控制器发生的。和DS1820间的任何通讯都需要以初始化序列开始, 初始化序列见图11。一个复位脉冲跟着一个存在脉冲表明DS1820已经准备好发送和接收数据(适当的ROM命令和存储器操作命令)初始化国程“复位和存在脉冲”1图11)单绫尊线.段利器复核脓冲"卜 单绫尊线.段利器复核脓冲"卜 430口号miranijm960U*maximijmiD51^O等待15“60Hs——控制器Rx 4B0口sminlnnum阴1820T*“存在脉冲”60-240pi线里含义:电阻上拄总骐邑料器低电平电阻上拄总缴控制器和DS1即口同为假电平(b)当总线上只有一个器件时, DS18B20卖温度的流程为:MB久0CCHSKlPROM^T令 第44H并诏转瑜令延时复位发0CCHSKIPROIW令发0BEH读存储器命令 连续读生两个字节数据(即温度) 结束。?ConvertT[44h]这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS1820保持等待状态。如果总线控制器在这条命令之后跟着发生读时间隙,而 DS1820又忙于做时间转换的话,DS1820将在总线上输由“0”,若温度转换完成,则输由“1”。如果使用寄生电源,总线控制器必须在发生这条命令后立即起动强上拉,并保持 SOOmSo?ReadScratchpad[BEh]这个命令读取暂存器的内容。 读取将从字节0开始,一直进行下去,直到第9(字节8,CRC字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。(c)DS18b20用12位存贮温值度最高位为符号位,下图为18b20的温度存储方式,负温度S=1正温度S=0LSB:D7 D6 D5 D4 D3D2D1DO232221202-12-22-32-4MSB
D7 D6 D5 D4 D3D2D1D0SSSSS272625三.硬件电路设计本次实验采用了老师提供的单片机系统,所以整体的硬件电路设计需要在已知的硬件条件下进行设计。(一)下图为已有的单片机系统部分电路图月。ri।下空j—n-
I n小打।口的”,a CJZ 3U 匚z- 、■;「月。ri।下空j—n-
I n小打।口的”,a CJZ 3U 匚z- 、■;「日[踪力,转板虫蛇』小电跳图/匕I,晶餐碗率为IZMlg*”可门能的安拙如下.ro-jhXffi\P3-&»PLO-PI』一或科什忡遇la3.^-INTOLpMl/M—TU针或事冲F3.OF3.ll-UAHTJTtjIIPL*H„T- 1ICEUPKfflNPl.JPJ.4Pl„5—SPI.'V.f/HIL.土交跷鲤)ll13_4I,Ilsfs2_l—SPCJb<lAI"段比iMiMON・MP更了为XI匕块k,飞士Mr友地QH可m曾由1j"I”廿七的交FM:1.胖网」^-TfWirCM--IK”加Fl国加M轴网3小鹏抑二一IL14附:G|J=箝除,*li褊F,「需FM|?卜H船科那沿平,(IF;构内容不量.分析:(1)由上图可知,时钟振荡电路,复位电路均以在原系统中正确连接。(2)数字温度计所需的显示电路电路中,原系统将段码输由连在P2接口中,但由图可知,该图中的六个数码管中的小数点均无法点亮, 原因在于图中并未对其进行连接,也无引脚供外界连接。 而六个数码管的位选端口连在P1接口上。本次课程设计中,我们选择使用 P1.0〜P1.3上所连接的四个数码管。(3)通过软件测试验证,原系统中的数码管为共阴极,且原系统中位选信号是通过一个反向器之后才输入数码管。(4)原系统中P0端口未使用,所以可以用排线引由,连接我们所需要补充的电路,包括 DS18B20总线输入电路、门限设置电路以及报警电路。(二)温度采集电路、门限设置电路及报警电路 (其余电路省略)
U119XTAL1P0.0/AD039U119XTAL1P0.0/AD03938P0.1/AD1P0.2/AD23718XTAL2P0.3/AD336P0.4/AD435~349RSTP0.5/AD5P0.6/AD6P0.7/AD7,33~~32P2.0/A821P2.1/A92930P2.2/A1023PSENP2.3/A11~242531-ALEP2.4/A12FEAP2.5/A13pr~28P2.6/A14P2.7/A1513丁P1.0/T2P1.1/T2EXP3.0/RXDP3.1/TXD101112P1.2P3.2/INT0P1.3P3.3/INT113145P1.4P3.4/T06P1.5P3.5/T115P1.6P1.7P3.6/WRP3.7/RD-16—AT89C52图中:(1)门限中的三个按键,分别为模式切换按键、加按键、减按键;(2)报警电路中,超过高门限或者低于低门限时发光二极管被点亮,其余时刻均熄灭;DS18B20M度采集电路中,需要注意的是 DQ上需要一个上拉电阻,一般为4.7KQ左右。四.系统软件设计(一)读取数据的流程图DS18820的主要数据元件有:64位激光LaseredROM,温度灵敏元件和非易失性温度告警触发器 TH和TL。DSB1820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。止匕外,还可外接5V电源,给DS18820供电。DS18820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。 下图读取数据流程图。(二)温度数据处理程序的流程图读生温度数据后,temp的低四位为温度的小数部分,可
以精确到0.0625C,temp的中间8位为温度的整数部分,temp
的高四位全部为1表示负数,全为0表示正数。所以先将数据
提取由来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行显示时要使用另外的查询表, 与整数显示查询表有所不同。因为本次课程设计只要求测试的温度范围为0〜70C,所以符号位S必为0,软件设计中则默认所测数据为正,从而不设符号位判定。f 、开始取小数部分,并暂存其显示值取整数部分,并计算百位、十位、个位,并暂存显示值判断百位是否为0百位赋值0x0a,即该数码管熄灭十位数码管熄灭RET(三)模式切换流程图使用模式值st来标记不同模式,st=1时,表示在正常温度模式,st=2,表示在高门限模式,st=3表示在低门限模式,每次按下一次模式切换键,st+1,待其加至4时,将该值返回至1。从而形成了模式键不断按下, 三种模式循环切换的情况。防抖在这里是十分关键的。因为此处的按键是按下然后又返回为按了一次。所以按下时,则进入程序,为了防止机械抖动等不确定情况,延时恰当的一段时间后再次检测是否确实按下。若确实按下,则对模式进行切换。切换后,延时等待按键返回高位,返回高位后,再次延时消除抖动,再次检验,确定按键返回高位后,退由程序。开始模式键是否按下延时消抖模式值st在1~3间切换延时等待按键返回延时消抖RET五.软件仿真电路图连接:严格按照硬件设计中已有的单片机系统的连接方式和自己补充的电路的连接方式进行仿真 ,要最贴近实际电路,才能更准确的得到仿真结果。C1曩铤年-?•I"一,/:.-sr闻『图用HMEPSC1曩铤年-?•I"一,/:.-sr闻『图用HMEPS系统电路图低门限下数码管显示高门限下数码管显示正常模式下数码管显六.实际连接与调试低门限下数码管显示高门限下数码管显示正常模式下数码管显六.实际连接与调试(一)仿真成功后,在实际操作中,电路图的连接应该严格按照仿真电路进行。问题:在最开始实验中,我将DS18B20的DQ连接在P1.4,且仿真成功。但是在实际连接中,我将DQ连接在了P0.4端口,但实际电路中无任何数据显示。再次仿真,将 DQ接至P0.4,仿真不成功。后查阅P0、P1、P2以及P3口的内部结构后发现,除P0外另外三口均接有上拉电阻,而 P0则无。所以P0在作为通用I/O接口使用时,必须外接上拉电阻,其余端口则不需要。所以,为方便起见,实际中,将 DQ按照最初仿真设计,接至P1.4(二)原系统所拥有资料太少,数码管类型未知。因只查阅到原系统的部分电路图,且无详细说明,所以为证明在网上搜索到的电路图的正确性以及确定数码管的类型。先编写一个简单的数字显示程序。最开始,我并没有意识到原系统中的片选信号接有反向器, 在测试程序中,无论使用共阴还是共阳数字查询表,数码管均显示 8888,后发现问题将所有片选数值取反,再次进行测试,确定数码管为共阴极。同时,在测试过程中,发现原系统的小数点是无法点亮的。(三)关于位选在最开始的测试数码管类型中,我只测试了一位数码管,使其显示数值1,但测试成功后,6位数码管均显示为1。在测试过程中,我并未注意这个问题。测试结束后,进行整体联调。但数码管始终无正确显示。当时,我首先着手于寻找软件程序中是否有错误。 所以人为将temp设定为一个固定值,先确定数据处理程序和数据显示程序无误。然而数码管无法正常显示我预先设定的值, 后经过反复改动,发现,在位选过程中,必须在选中一位数码管的过程中同时将其余所有的数码管关闭, 否则将产生混乱。若逐一设定S1=1;S2=0;S3=0;S4=0未免太过麻烦,所以设定一个数组,分别赋值0x08,0x04,0x02,0x01o片选时按照规则将上值赋给,则一举多得。(四)DQ数据采集上述问题均解决后,再次进行调试,数码管显示25592。这个值非常特殊,且第5个数码管,在程序中所有地方均是将其熄灭的,为何此处会亮呢??显然采集的数据是有很大问题的,因为很明显2559中,9为小数部分,将2559换为二进制则为111111111111o这就说明电路并没有采集到温度数据,原因一:DQ上接有上拉电阻,在输由正常温度数据外始终为高电平,所以此处很可能并没有采集到正常输由温度数据; 原因二:室温不可能为25592o但是当时,我并没有对器件是否损坏产生怀疑。原因在于,大部分时候数码管显示的是 12791,且两边的1很亮且基本无闪烁,279则在不断闪烁,频率很快,造成了27.9为数码管要显示的温度的错觉,且 27.9是与当时实验室的温度非常接近的。同时,在我不断的对程序中DS18B20的初始化时等部分的时序进行调整时,279的闪烁频率发生变化,两个1并无变化。在经历了无法显示正常温度的挫败后,我仔细查阅了DS18B20的数据手册,确定了在其初始化过程中,DQ电平应该如何变化且应当延时多少。同时也确定了DS8B20的在12位分辨率情况下数据A/D转换所需时间为500ms〜750ms所以在发由转换命令后需要给其充分的时间来进行A/D转换。在经历了上述种种之后,我基本确定了程序中时序的正确性。再次进行实验室,数码管始终显示的为850,第5位数码管无故亮起的情况消失了(到现在我都不清楚它当时为什么会亮)。上网搜索资料,总结原因有二。一是程序时序存在问题;二是DS18B20损坏了。为排除第二个状况,我与同学更换了器件,数码管上显示由了令人欣喜的289!但是,仍然存在的问题和解决过程是(1)为保证充分的延时,导致数码管中数字不断闪烁,看起来非常不舒服。后通过改进程序,使程序采集一次数据,却多次扫描显示温度数值。以此法使其不再闪烁。但是实际上,这种方法是不完美的, 完美的状况应当是多次采集数据, 扫描显示多次采集值的平均值。但限于时间紧迫和后者的复杂度,只能采用前者的方法了。程序如下:case1:{work_temp(read_temp());//采集处理温度数值for(i=0;i<500;i++){scan();//显示温度BEEP();}break;}(2)数码管大部分时间显示的是正常温度,但是仍然会在某些时候跳变为2559,,1279等数值。猜测可能是接触不良造成的,后将接线焊在板子上后,该问题得到了解决。但仍偶尔由现不稳定状况,则主要是排线, +5V电压线,地线等诸多因素的影响,稍作调整后即可消除。(五)最终结果七.本次课设的收获与感想附录:#include"reg51.h"#include"intrins.h"//_nop_();#include"intrins.h"//_nop_();延时函数用#include"math.h段码输由口扫描口段码输由口扫描口#definediscanP1 //#defineucharunsignedchar#defineuintunsignedintsbitduqu=P1A4;//温度采集输入口sbit dian=P2A7; //LED 小数点控制sbit key1=P0A0; //模式切换键sbitkey02=P0A1;//力口键sbit key03=P0A2;//减键sbit beep=P0A3;//LED报警uinth;uinttemp;ucharr;charhigh=40,low=15;ucharst=1;ucharpp;ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//温度小数部分用查表法ucharcode
dis_7[15]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x00,0x40,0x76,0x38,0x39};//共阴LED段码表"0""i">"叼,",节”"6""7""8""9""不亮""-""H""L""C"ucharcodescan_con[4]={0x08,0x04,0x02,0x01};// 列扫描控制字uchardatatemp_data[2]={0x00,0x00}; // 读由温度暂放uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据和一个运算暂用/*****************8us延时函数/*****************8us延时函数*************************voiddelay(uintt){for(;t>0;t--);{_nop_();}}/****************
显示扫描函数***************************voidscan(){chark;位LED位LED扫描控制位选数据显示小数点显示{discan=scan_con[k];//disdata=dis_7[display[k]];//if(k==1){dian=1;} //delay(200);}}/****************DS18B20 复位函数************************/ow_reset(void){duqu=0;delay(60);//拉低480〜960us//等待//等待15〜60usdelay(10);if(duqu==0)/****************DS18B20/****************DS18B20读i字节函数}}}}delay(30);duqu=1;/****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节voidwrite_byte(ucharval)uchari;for(i=0;i<8;i++)duqu=0;delay(1);//严禁超时超过15usduqu=val&0x01;delay(5);val>>=1;duqu=1;************************///从总线上取1个字节ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){duqu=0;value>>=1;duqu=1;delay(1);if(duqu==1)value|=0x80;delay(5);duqu=1;}returnvalue;/****************
读生温度函数************************/uintread_temp()ow_reset();//write_byte(0xcc);//write_byte(0x44);//总线复位发命令发转换命令发命令读温度值的第字节发命令读温度值的第字节读温度值的高字节delay(200);delay(200);ow_reset();write_byte(0xcc);//write_byte(0xbe);delay(200);delay(200);temp_data[O]=read_byte();〃temp_data[1]=read_byte();〃temp=temp_data[1];
temp<<=8;temp=temp|temp_data[0];// 两字节合成一个整型变量。returntemp; // 返回温度值}/****************温度数据处理函数/****************温度数据处理函数取小数部分的值存入小数部分显示取小数部分的值存入小数部分显示取中间八位,即整取百位数据暂存取后两位数据暂存取十位数据暂存************************work_temp(uinttem){ucharn=0;display[4]=tem&0x0f;//display[0]=ditab[display[4]];//值display[4]=tem>>4;//数部分的值display[3]=display[4]/100;//display[1]=display[4]%100;//display[2]=display[1]/10;//display[1]=display[1]%10;r=display[1]+display[2]*10+display[3]*100;
if(!display[3])〃符号位显示判断{display[3]=0x0a;//百位为0时数码管熄灭if(!display[2]){display[2]=0x0a;//十位为0时数码管熄灭}}}尸****************尸****************二极管报警函数*************************voidBEEP(){if(r>=high||r<=low){beep=1;}else{beep=0;}}******************单片机初始化函数if(st==if(st==)st=1;}while(!key1);// 延时等待按键回到高电平delay(300);while(!key1);// 延时消除抖动}}尸****************尸****************门限值加**************************voidkey2()while(key02==0)delay(400);if(key02==0)if(st==3)low=low+1;}{high=high+1;}if(low>high){pp=low;low=high;high=pp;}}while(!key02);delay(400);while(!key02);}}尸****************门限值减1**************************voidkey3(){while(key03==0){delay(400);if(key03==0){
if(st==3){low=low-1;}if(st==2){high=hig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工程师职称考试试卷及答案发布
- 2025年国际商法与贸易政策考试卷及答案
- 2025年互联网金融风险管理师考试题及答案
- 幼儿园安全卫生保健汇报
- 胸外伤呼吸道护理
- 设计岗位转正述职
- 皮革人才公园设计分析
- 大学小班风采展示活动
- 合肥市瑶海区2022年九年级《历史》上学期期末试题与参考答案
- 汽车变速器设计与优化研究
- 甘肃省2023年中考语文现代文阅读真题及答案
- 安徽省合肥市科大附中2025年第二次中考模拟初三数学试题试卷含解析
- 市政工程单位、分部、分项工程划分方案
- 2024至2030年中国磁性元器件市场前景及投资发展战略研究报告
- 人力资源服务派遣合同范本(2024版)
- NBT-10781-2021空气源热泵污泥干化机
- 河南省洛阳市2023-2024学年八年级下学期期末质量检测英语试题
- CJT244-2016 游泳池水质标准
- 淄博市临淄区2022-2023学年七年级下学期期中数学试题
- 心功能不全试题库及答案
- 河南省郑州市郑东新区2023-2024学年六年级下学期期末语文试题
评论
0/150
提交评论