基于PIC32单片机的温度计设计_第1页
基于PIC32单片机的温度计设计_第2页
基于PIC32单片机的温度计设计_第3页
基于PIC32单片机的温度计设计_第4页
基于PIC32单片机的温度计设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1北京邮电大学基于DS18B20和PT100的温度计的研究与设计实验报告姓名班级学号学院信息与通信工程学院指导老师葛顺明2摘要本设计为一个基于PIC32MX795F512L单片机的温度计,利用键盘按键来选择温度传感器的线路。能够实时将数据传至液晶屏和电脑显示。根据单片机的工作原理,通过硬件电路制作和软件编译,设计出一个能够双路实时显示的温度计。该系统主要由液晶显示模块、键盘模块、温度传感器模块以及串口模块组成。设计利用MPLAB软件对温度计源程序进行编译和调试。可以进行数字和模拟两种方式得到相应的温度值并进行两种方式的优缺点比较。关键词PIC32MX795F512L单片机,模块,模拟,数字。SUMMARYTHEDESIGNFORATHERMOMETERBASEDONPIC32MX795F512LMICROCONTROLLER,USINGTHEKEYSONTHEKEYBOARDTOSELECTTHETEMPERATURESENSORCIRCUITREALTIMEDATATOTHELCDSCREENANDACOMPUTERDISPLAYACCORDINGTOTHEWORKINGPRINCIPLEOFTHESINGLECHIPHARDWARECIRCUITPRODUCTIONANDSOFTWARECOMPILERDESIGNATWOWAYREALTIMEDISPLAYOFTHETHERMOMETERTHESYSTEMMAINLYCONSISTSOFTHELCDMODULE,KEYBOARDMODULE,TEMPERATURESENSORMODULE,ANDSERIALMODULESDESIGNTHERMOMETERSOURCECODETOCOMPILEANDDEBUGUSINGMPLABSOFTWARECANBEBOTHDIGITALANDANALOGMANNERTOGIVETHECORRESPONDINGTEMPERATUREVALUE,ANDTHEADVANTAGESANDDISADVANTAGESOFTHETWOMETHODSOFCOMPARISONKEYWORDSPIC32MX795F512LMICROCONTROLLERMODULE,ANALOGANDDIGITAL3目录一,引言4二,背景介绍521PIC32系列单片机简介522DS18B20温度传感器623PT100温度传感器824LCD160282544键盘926串口与MAX2321027MPLAB简介11三,设计总体方案和研究意义1131系统模块图1132研究意义11四,每部分具体实施121DS18B20温度传感器部分122ADC模数转换部分183LCD1602部分184键盘部分195串口部分20五,实验遇到的问题及心得体会20六,实验源代码21七,参考文献334一,引言现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有1低功耗CMOS化CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径2微型单片化现在的许多单片机都具有多种封装形式,其中SMD表面封装越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。3主流与多品种共存目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴1在智能仪器仪表上的应用2在工业控制中的应用53在家用电器中的应用4在计算机网络和通信领域中的应用5单片机在医用设备领域中的应用随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现单片机与微机系统之间的距离越来越小,甚至难以辨认。随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。二,背景介绍21PIC32系列单片机简介单片机这里所用的单片机型号为PIC32MX795F512L型号单片机,此单片机所拥有的主要资源有1、80MHZ的主频,156DMIPS/MHZ,总线32位;2、USB20接口;3、2个带1024缓存的CAN20接口;4、8通道DMA通道;5、5级流水线,哈佛架构;6、1个以太网接口;7、512K的FLASH,外加12K的启动FLASH;8、128K的RAM;9、可编程中断向量控制器;10、16个10位AD转换器;11、UART/SPI/IIC等串行通信方式;12、带JTAG调试口,具有休眠功能,节省能耗。2、PIC32MX795F512L单片机的时钟系统有如下特征1)内外共四个时钟源;2)用户可以通过PLL对输入频率进行分频、倍频和通过对内外频率的选择分频输出初始操作频率;3)软件控制各时钟源4)通过FSCM(AFAILSAFECLOCKMONITOR)监控时钟失败或安全与否;5)通过片上PLL决定USB主频。PIC32MX795F512L单片机是具有USB、CAN与以太网的32位高性能闪存式单片机,共有引脚100个,引脚分布如下(其中,黄色标记的为已占用的引脚,功能已经固定,不能为开发者提供其他功能)622DS18B20温度传感器DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达00625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。DS18B20内部结构主要由4部分组成64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2所示,DQ为数字信号输入输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以00625/LSB形式表达,其中S为符号位。例如125的数字输出为07D0H,250625的数字输出为0191H,250625的数字输出为FF6FH,55的数字输出为FC90H。7DS18B20的工作时序1、D18B20复位2、DS18B20读写逻辑1与0823PT100温度传感器铂电阻的特点是精度高,稳定性好,性能可靠。铂在氧化性气氛中,甚至在高温下的物理、化学性质都非常稳定,因此铂被公认为目前制造热电阻的最好材料、铂电阻主要作为标准电阻温度计使用,也常被用在工业测量中。铂电阻的阻值温度之间的关系,在0850范围内可用下式表示在2000范围内则用下式表示式中,RT为温度为T摄氏度时的铂电阻的阻值;R0是温度为0摄氏度时的铂电阻的阻值PT100是铂热电阻,它的阻值跟温度的变化成正比。PT100的阻值跟温度变化关系为当PT100温度为0时它的阻值为100欧姆,在100时它的阻值约为1385欧姆。它的工业原理当PT100在0的时候它的阻值为100欧姆,它的阻值会随温度的上升而成匀速增长的。设计中我们就是利用PT100的这一特性来实现温度与输出值之间的转化。24LCD1602VO为显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。为了简化电路以及获得最好的显示效果,将VO端口直接接地。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。由于整个项目中只存在对LCD进行写入的操作,因此直接将R/W端口接地。GND接电源,VDD接正电源。脚号符号引脚功能以及接法脚号符号引脚功能以及接法1GND电源地9D2RD72VDD电源正10D3RF03V0显示偏压信号11D4RF14RS数据/命令控制RD1212D5RG15R/W读/写控制RE213D6RG06E使能信号RD414D7RE17D0数据I/ORA715BL1背光源正8D1RE016BL2背光源负9RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。源代码中WRITE_CMD函数为向LCD写入指令的函数,因此会有RS0;WRITE_DATE函数为向LCD写入数据的函数,因此会有RS1。E端为使能端,当E端由高电平跳变成低电平,也就是下降沿时,LCD模块进行命令执行。BL1和BL2为设置LCD背光,实验中没有使用这两个端口。DOD7八个为数据I/O口,按照表格内的接法相连。2544键盘4X4矩阵键盘的工作原理是每一条行线与列线的交叉处是否连通,是由交叉处的按键决定的,采取这种行列式矩阵结构只需要4条行线和4条列线,即可组成具有4X4个按键的矩阵键盘。矩阵键盘中的16个按键并没有完全采用,按键的使用情况如下图按键键名功能1键选择键选择显示DS18B203键选择键选择显示PT100F键复位键系统退出复位键盘引脚接线情况第一行RE2第二行RE310第三行RE4第四行RG13第一列RF4第二列RF5第三列RB12第四列RB1326串口与MAX232MAX232芯片是美信(MAXIM)公司专为RS232标准串口设计的单电源电平转换芯片,使用5V单电源供电。MAX232芯片第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生12V和12V两个电源,提供给RS232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(5V)。11串口与单片机连线通过RF12、RF13的UART5进行通信。27MPLAB简介MPLAB集成开发环境(IDE)是综合的编辑器、项目管理器和设计平台,适用于使用MICROCHIP的PIC系列单片机进行嵌入式设计的应用开发。MPLABIDE是适用于PIC系列单片机和DSPICTM数字信号控制器,基于WINDOWS操作系统的集成开发环境。三,设计总体方案和研究意义31系统模块图信号模拟PT100数字DS18B20键盘按3键盘按1单片机PIC32MX795F512L液晶(显示)串口(连接到PC)32研究意义随着科学技术的不断进步与发展,温度控制在工业控制、电子测温计、医疗仪器、家用电器等各种温度控制系统中广泛应用。目前温度传感器有模拟和数字两类传感器。模拟传感器与单片机接口时需要信号调理和AD转换电路的问题,通过比较两路输出来比较两类温度传感器的性能,有助于更好的选择温度传感器。在传统的温度测量系统设计中,往往采用模拟技术进行设计,这样就不可避免地遇到诸如引线误差补偿、多点测量中的切换误差和信号调理的误差等问题。随着现代科学技术的飞速发展,特别是大规模集成电路设计技术的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向。采用DS18B20和PT100进行双路温度采集,可以完成精度的比较和判断。12四,每部分具体实施1DS18B20温度传感器部分单片机如何访问DS18B20DS18B20一般都是充当从机的角色,而单片机就是主机。单片机通过一线总线访问DS18B20的话,需要经过以下几个步骤1DS18B20复位。2执行ROM指令。3执行DS18B20功能指令(RAM指令)根据以上背景知识,如下为具体访问DS18B20的代码/温度传感器/延时函数,40MHZ时钟,1US为单位VOIDDELAY_USINTXUINTDX10WHILED解析该函数为延时函数,由于时序电路反应有一定的时间,该函数能帮助系统更好反应和控制。用一个WHILE循环即可实现,较为简单。/初始化函数/VOIDINIT/产生复位脉冲,初始化DS18B20UNSIGNEDCHARERROR1PORTSETPINSDIGITALINIOPORT_D,BIT_3/设置为高电平DELAY_US4WHILEERRORPORTSETPINSDIGITALOUTIOPORT_D,BIT_3/设置输出,拉低PORTCLEARBITSIOPORT_D,BIT_3DELAY_US850/拉低大于480US的时间750USPORTSETPINSDIGITALINIOPORT_D,BIT_3/设置输入DELAY_US80/延时等待70US13IFPORTDBITSRD31ERROR1ELSEERROR0DELAY_US575/延时500US解析DS18B20复位(图为DS18B20的时序复位图)DS18B20的复位时序如下1单片机拉低总线480US950US,然后释放总线(拉高电平)。2这时DS18B20会拉低信号,大约60240US表示应答。3DS18B20拉低电平的60240US之间,单片机读取总线的电平,如果是低电平,那么表示复位成功。4DS18B20拉低电平60240US之后,会释放总线。因此该代码PORTSETPINSDIGITALINIOPORT_D,BIT_3不妨设开始为高电平进入,对应图中的最左边的单总线最初状态,由于为时序电路有一定的反应时间,故DELAY一段时间,维持高电平状态,那么初始化成功的标志就是产生了一个复位脉冲。那么如何产生这个复位脉冲呢首先,先拉低总线/PORTSETPINSDIGITALOUTIOPORT_D,BIT_3,由于输出拉低总线,所以系统内存需要先清除一下缓存,因此即为代码PORTCLEARBITSIOPORT_D,BIT_3,根据DS18B20的数据手册,拉低总线需要480US950US,因此我们选择DELAY_US850,是芯片符合要求,然后;其次,DS18B20这时会拉低信号,大约60240US表示应答,DS18B20拉低电平的60240US之间,单片机读取总线的电平,如果是低电平,那么表示复位成功。DS18B20拉低电平60240US之后,会释放总线。/读一个字节14UNSIGNEDCHARREADBYTEUNSIGNEDCHARI0UNSIGNEDCHARDAT0FORI8I0IDAT1PORTSETPINSDIGITALINIOPORT_D,BIT_3DELAY_US4PORTSETPINSDIGITALOUTIOPORT_D,BIT_3PORTCLEARBITSIOPORT_D,BIT_3DELAY_US7/延时6USPORTSETPINSDIGITALINIOPORT_D,BIT_3DELAY_US4IFPORTDBITSRD3DAT|0X80DELAY_US35RETURNDAT解析DS18B20读逻辑0与1DS18B20读逻辑0的步骤如下1在读取的时候单片机拉低电平大约1US2单片机释放总线,然后读取总线电平。3这时候DS18B20会拉低电平。4读取电平过后,延迟大约4045微妙DS18B20读逻辑1的步骤如下1在读取的时候单片机拉低电平大约1US2单片机释放总线,然后读取总线电平。3这时候DS18B20会拉高电平。154读取电平过后,延迟大约4045微妙因此单片机首先设置输入为高电平,并且持续一段时间,对应的代码为PORTSETPINSDIGITALINIOPORT_D,BIT_3DELAY_US4然后拉低电平,清除缓存,对应的代码为PORTSETPINSDIGITALOUTIOPORT_D,BIT_3PORTCLEARBITSIOPORT_D,BIT_3在读取的时候单片机拉低电平大约1US,故系统需要有一个延迟的时间。然后单片机释放总线,然后读取总线电平,如果是0,这时候DS18B20会拉低电平,读取电平过后,延迟大约4045微妙;如果是1,这时候DS18B20会拉高电平,然后读取电平过后,延迟大约4045微妙。IFPORTDBITSRD3DAT|0X80,实现的功能是0,跳过IF从句,即拉低电平;1的话,与11111110或了之后,即为拉高电平,之后由于芯片本身的性质需要延迟大约4045微妙。这样实现了读的功能。/写一个字节/VOIDWRITEBYTEUNSIGNEDCHARDATUNSIGNEDCHARI0PORTSETPINSDIGITALINIOPORT_D,BIT_3DELAY_US4FORI8I0IPORTSETPINSDIGITALOUTIOPORT_D,BIT_3PORTCLEARBITSIOPORT_D,BIT_3/拉低总线,产生写信号DELAY_US18/15US左右PORTDBITSRD3DATDELAY_US52/延时45USPORTSETPINSDIGITALINIOPORT_D,BIT_3DELAY_US4DAT1解析DS18B20写逻辑0与116DS18B20写逻辑0的步骤如下1单片机拉低电平大约1015US,。2单片机持续拉低电平大约2045US的时间。3释放总线DS18B20写逻辑1的步骤如下1单片机拉低电平大约1015US,。2单片机拉高电平大约2045US的时间。3释放总线因此单片机在进行写逻辑的时候,首先设置输入的为高电平,然后保持一段时间及对应的代码为PORTSETPINSDIGITALINIOPORT_D,BIT_3DELAY_US4然后进入循环,由于芯片本身的性质,写的功能是从左往右依次实现写程序,所以进行循环右移位,PORTSETPINSDIGITALOUTIOPORT_D,BIT_3PORTCLEARBITSIOPORT_D,BIT_3这两句代码是实现单片机拉低功能,并把缓存清理,由于单片机不论是写0或者是1逻辑,单片机拉低电平时间大约为1015US,所以,代码即为DELAY_US18。为了写入低位,与00000001与,结果为取出最低位,若写入的是0,单片机持续拉低电平大约2045US的时间;若写入的是1,单片机拉高电平大约2045US的时间。然后右移重复进行下一位的写功能。/温度转换函数VOIDCONVERTINIT/初始化DS18B20WRITEBYTE0XCC/跳过序列号命令WRITEBYTE0X44/写入温度转换命令解析WRITEBYTE0XCC/跳过序列号命令WRITEBYTE0X44/写入温度转换命令为手册上的代码,写入即可。/显示温度函数VOIDTEMPDISPUNSIGNEDCHARTEMPSWITCHTEMPCASE0WRITE_DATE0BREAKCASE1WRITE_DATE1BREAKCASE2WRITE_DATE2BREAKCASE3WRITE_DATE3BREAKCASE4WRITE_DATE4BREAK17CASE5WRITE_DATE5BREAKCASE6WRITE_DATE6BREAKCASE7WRITE_DATE7BREAKCASE8WRITE_DATE8BREAKCASE9WRITE_DATE9BREAKDEFAULTBREAK/读取温度函数VOIDRETEMPCONVERTUINTI,NUMWRITE_COM0X80FORI0I0NUMWRITE_COM0XC0TEMPDISPA1TEMPDISPA2WRITE_DATETEMPDISPA3TEMPDISPA4WRITE_DATE0XDFWRITE_DATE0X43DELAY_US1000WRITE_COM0XC0INITWRITEBYTE0XCCWRITEBYTE0XBE/温度读取指令TEMPLREADBYTE/温度低位字节(第四位为小数部分)TEMPHREADBYTE/温度高位字节(高五位为符号)TEMPTEMPH256TEMPL625/进制转换,变为10进制A1TEMP/1000A2TEMP1000/100A3TEMP100/10A4TEMP10解析这部分的代码即为进行进制转换成我们能直接读取的温度的十进制表示方法。182ADC模数转换部分AD1CON10X00E0/由内部计数器结束采样并自动转换触发源AD1CSSL0AD1CON20/使用MUXA作为输入多路开关设置/使用AVDD/TSAMP31TADAD1CON1BITSON1/开始ADCAD1CHSBITSCH0SACH/MUXA多路开关设置,通道0的同相输入为ANCHAD1CON1BITSSAMP1/ADCSHA正在采样WHILEAD1CON1BITSDONE/当转换未结束RETURNADC1BUF0/返回03LCD1602部分WRITE_COM0X38DELAY_LCD15WRITE_COM0X01DELAY_LCD15WRITE_COM0X06DELAY_LCD15WRITE_COM0X0FDELAY_LCD15WRITE_COM0X80LCD写时序RS0/RS1DB0COM2DB1COM/22DB2COM/2/22DB3COM/2/2/22DB4COM/2/2/2/22DB5COM/2/2/2/2/22DB6COM/2/2/2/2/2/22DB7COM/2/2/2/2/2/2/22DELAY_LCD15E1DELAY_LCD15E0194键盘部分PORTSETPINSDIGITALOUTIOPORT_F,BIT_4|BIT_5PORTSETPINSDIGITALOUTIOPORT_B,BIT_12|BIT_13PORTSETBITSIOPORT_F,BIT_4|BIT_5PORTSETBITSIOPORT_B,BIT_12|BIT_13PORTSETPINSDIGITALOUTIOPORT_E,BIT_2|BIT_3|BIT_4PORTSETPINSDIGITALOUTIOPORT_G,BIT_13PORTSETBITSIOPORT_E,BIT_2|BIT_3|BIT_4PORTSETBITSIOPORT_G,BIT_13PORTSETPINSDIGITALINIOPORT_E,BIT_2|BIT_3|BIT_4PORTSETPINSDIGITALINIOPORT_G,BIT_13DELAY_MS100LINE10DELAY_MS10LINE21DELAY_MS10LINE31DELAY_MS10LINE41DELAY_MS200IFROW10DELAY_MS300IFROW10WHILEROW1RETURN1/表示按下了1键IFROW20DELAY_MS300IFROW20WHILEROW2WRITE_DATE5RETURN5IFROW30DELAY_MS300IFROW30WHILEROW3WRITE_DATE9RETURN9IFROW40DELAY_MS300IFROW40WHILEROW4WRITE_DATECRETURN13205串口部分VOIDUART_INITVOID/配置单片机是性能最高,改变FLASH和RAM的等待状态但不改变FPBDIVSYSTEMCONFIGGETSYSTEMCLOCK,SYS_CFG_WAIT_STATES|SYS_CFG_PCACHEUARTENABLEUART5,UART_ENABLE_FLAGSUART_PERIPHERAL|UART_RX|UART_TX/设置数据发送格式,8位数据,无校验位,一位停止位UARTSETFIFOMODEUART5,UART_INTERRUPT_ON_RX_NOT_EMPTY/设置中断方式UARTSETLINECONTROLUART5,UART_DATA_SIZE_8_BITS|UART_PARITY_NONE|UART_STOP_BITS_1UARTCONFIGUREUART5,UART_ENABLE_HIGH_SPEED/|UART_ENABLE_LOOPBACK/UARTSETDATARATEUART5,GETPERIPHERALCLOCK,DESIRED_BAUDRATE/设置波特率为9600INTENABLESYSTEMMULTIVECTOREDINT/接收中断使能,优先级为7INTENABLEINT_SOURCE_UART_RXUART5,INT_ENABLEDINTENABLEINT_SOURCE_UART_TXUART5,INT_DISABLEDINTSETVECTORPRIORITYINT_VECTOR_UARTUART5,INT_PRIORITY_LEVEL_7INTCLEARFLAGINT_SOURCE_UART_RXUART5VOIDPUTSU1CONSTCHARS,UNSIGNEDINTSIZEUNSIGNEDINTI0WHILESIZEIFUARTTRANSMITTERISREADYUART5UARTSENDDATABYTEUART5,SIIDELAY10SIZEWHILEUARTTRANSMISSIONHASCOMPLETEDUART5五,实验遇到的问题及心得体会由于我主要负责的是DS18B20部分和焊接电路板这一块。21(1)DS18B20由于DS18B20是数字电路部分,比较关键的部分在于其时序电路图,开始的时候,自己在网上搜了一些关于这部分的代码,但是大部分的芯片是PIC16而本次老师布置的是PIC32,但是我对比了一下芯片手册,发现还是大同小异,然后对代码进行了修改,在经过几次的编译之后,代码没多久就出来了,因此对于代码的细节部分就没有很仔细的揣度和思考,一切都以为是理所应当这样写,所以第一次验收的时候,验收的过程很不顺利,原因在于没有了解DS18B20的核心部分,之后用了晚餐的时间,看了一下数据手册,大题了解了一下写这些代码的根本原因,后来在晚上进行第二次验收的时候,再经老师的详细阐述,让我对DS18B20又产生了一个新的认识。比如说我们这次的实验室分为数字显示和模拟显示两个模块,虽然最后的温度都有显示,但是相差有一点距离,我们并没有仔细思考这个问题,最后经老师指导,才明白,DS18B20这部分,精确与否的关键在于其数据手册上的时序电路图,例如在进行读写逻辑的时候,前面都一个最短延迟时间,大约为15US,如果这段时间太短,会造成取数据在发生之后,也就意味着我们的数据取样不够准确,所以这个的核心即在时序电路延迟时间的控制上。而这部分又往往是最容易忽视的,那么我相信再掌握了DS18B20之后,对于其他芯片,只要看到其芯片手册和时序电路图,所有的处理起来都是大同小异,也能够举一反三了。(2)焊接电路板由于我们这组只有我一个女生,本来焊接电路板一般都是男生完成,但由于我的组员在焊接电路板的时候,锡的量没有掌握好,极其容易造成焊多了的现象,使得电路板容易发生短路的现象,因此我在焊接电路板之前在实验室的桌上进行了反复的练习和观察,我发现对于单个点来说,最重要的速度,不能停留过长时间,否则导致熔化的锡较多,容易影响到其他路线;而对于要焊成一条直线的点来说,一次要足够的锡,然后就可以用焊器在一条直线上反复的涂抹均匀即可,虽然说吸焊器可以把锡焊的过多的地方吸出来,但是有一个很大的弊端就是容易把点周围的少量用来连接的锡给一并吸掉,所以还是得少用,多多在实验板上练习就好了。(3)本实验原本的课题是非接触式体温计的研究与设计,我们开始查阅资料,用的TPS434红外热释电传感器,可由于其DATASHEET上的资料实在太少,对具体每个管脚实现什么功能我们都无从得知。再者由于放大电路的搭建原理虽然不复杂,但是由于放大的倍数太大,超过了1000倍,而原信号实在太小,虽然能放大,但是周围干扰会覆盖本来就比较微弱的信号,在加上电路本身会产生自激现象,所以导致需要其他工具,如我们在其他参考资料上发现,凸透镜有很好的聚温效果,但是由于时间有限,还是不得已放弃了这条路,采取了DS18B20。六,实验源代码INCLUDEPRAGMACONFIGFNOSCPRIPLL/OSCILLATORSELECTIONPRAGMACONFIGFPLLIDIVDIV_2/PLLINPUTDIVIDERPIC32STARTERKITUSEDIVIDEBY2ONLYPRAGMACONFIGFPLLMULMUL_20/PLLMULTIPLIERPRAGMACONFIGFPLLODIVDIV_1/PLLOUTPUTDIVIDERPRAGMACONFIGFPBDIVDIV_1/PERIPHERALCLOCKDIVISORPRAGMACONFIGFWDTENOFF/WATCHDOGTIMERPRAGMACONFIGWDTPSPS1/WATCHDOGTIMERPOSTSCALE22PRAGMACONFIGFCKSMCSDCMD/CLOCKSWITCHING/UCHARGET_ADVOIDGET_TEMPVOIDINITUNSIGNEDCHARREADBYTEVOIDWRITEBYTEUNSIGNEDCHARDATVOIDCONVERTVOIDTEMPDISPUNSIGNEDCHARTEMPVOIDRETEMPVOIDINITADCINTAMASKINTREADADCINTCHVOIDDELAY_USINTXCONSTUCHARTABLE0X30,0X31,0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39UCHARTABLE1“TEMPATURE“UCHARTABLE2“PLEASESTART“UCHARTABLE3“ERROR“UNSIGNEDCHARTEMPL0/设全局变量UNSIGNEDCHARTEMPH0UNSIGNEDINTTEMP0UNSIGNEDCHARA1,A2,A3,A4/等待函数VOIDDELAY_LCDUINTZUINTX,YFORXZX0XFORY110Y0Y/LCD写命令VOIDWRITE_COMUCHARCOMRS0DB0COM2DB1COM/22DB2COM/2/22DB3COM/2/2/2224DB4COM/2/2/2/22DB5COM/2/2/2/2/22DB6COM/2/2/2/2/2/22DB7COM/2/2/2/2/2/2/22DELAY_LCD15E1DELAY_LCD15E0/LCD写数据VOIDWRITE_DATEUCHARDATERS1DB0DATE2DB1DATE/22DB2DATE/2/22DB3DATE/2/2/22DB4DATE/2/2/2/22DB5DATE/2/2/2/2/22DB6DATE/2/2/2/2/2/22DB7DATE/2/2/2/2/2/2/22DELAY_LCD15E1DELAY_LCD15E0DELAY_LCD15VOIDINIT_LCDUCHARIE0WRITE_COM0X38/初始化设置,设置162显示,57点阵,8位数据接口DELAY_LCD15WRITE_COM0X01/显示清屏数据指针清零;所有显示清零DELAY_LCD15WRITE_COM0X06/当写一个字符后地址指针加一,且光标加一;当写一个字符,整屏显示不移动DELAY_LCD15WRITE_COM0X0F/开显示;显示光标;光标不显示DELAY_LCD15WRITE_COM0X80/数据指针初始化25/FORI0I0AFORB110B0BINTKEYBOARD/第一列PORTSETPINSDIGITALOUTIOPORT_F,BIT_4|BIT_5/纵坐标1,2PORTSETPINSDIGITALOUTIOPORT_B,BIT_12|BIT_13/纵坐标3,4PORTSETBITSIOPORT_F,BIT_4|BIT_5PORTSETBITSIOPORT_B,BIT_12|BIT_13PORTSETPINSDIGITALOUTIOPORT_E,BIT_2|BIT_3|BIT_4PORTSETPINSDIGITALOUTIOPORT_G,BIT_13PORTSETBITSIOPORT_E,BIT_2|BIT_3|BIT_4/1PORTSETBITSIOPORT_G,BIT_13/1PORTSETPINSDIGITALINIOPORT_E,BIT_2|BIT_3|BIT_4/横坐标1,2,3,4PORTSETPINSDIGITALINIOPORT_G,BIT_13DELAY_MS100LINE10DELAY_MS10LINE21DELAY_MS10LINE31DELAY_MS10LINE41/这里定义这四个端口为输出DELAY_MS200IFROW10DELAY_MS300IFROW10WHILEROW1WRITE_DATE1RETURN1/表示按下了1键IFROW20DELAY_MS300IFROW20WHILEROW2WRITE_DATE5RETURN526IFROW30DELAY_MS300IFROW30WHILEROW3WRITE_DATE9RETURN9IFROW40DELAY_MS300IFROW40WHILEROW4WRITE_DATECRETURN13/第二列LINE11DELAY_MS10LINE20DELAY_MS10LINE31DELAY_MS10LINE41DELAY_MS10DELAY_MS100IFROW10DELAY_MS300IFROW10WHILEROW1WRITE_DATE2RETURN2IFROW20DELAY_MS300IFROW20WHILEROW2WRITE_DATE6RETURN6IFROW30DELAY_MS300IFROW30WHILEROW3WRITE_DATE0RETURN0IFROW40DELAY_MS300IFROW40WHILEROW4WRITE_DATEDRETURN13/第三列LINE11DELAY_MS10LINE21DELAY_MS10LINE30DELAY_MS10LINE41DELAY_MS10DELAY_MS100IFROW1027DELAY_MS300IFROW10WHILEROW1WRITE_DATE3RETURN3IFROW20DELAY_MS300IFROW20WHILEROW2WRITE_DATE7RETURN7IFROW30DELAY_MS300IFROW30WHILEROW3WRITE_COM0X01/TEMPRETURN10IFROW40DELAY_MS300IFROW40WHILEROW4WRITE_DATEERETURN14/第四列LINE11DELAY_MS10LINE21DELAY_MS10LINE31DELAY_MS10LINE40DELAY_MS10DELAY_MS100IFROW10DELAY_MS300IFROW10WHILEROW1WRITE_DATE4RETURN4IFROW20DELAY_MS300IFROW20WHILEROW2WRITE_DATE8RETURN8IFROW30DELAY_MS30028IFROW30WHILEROW3WRITE_DATEBRETURN11IFROW40DELAY_MS300IFROW40WHILEROW4INIT_LCDRETURN15RETURN0VOIDDISPLAYUCHARNUM0,UCHARNUM1,UCHARNUM2,UCHARNUM3,UCHARNUM4WRITE_DATETABLENUM0DELAY_MS100WRITE_DATETABLENUM1DELAY_MS100WRITE_DATETABLENUM2DELAY_MS100WRITE_DATE0XA5DELAY_MS100WRITE_DATETABLENUM3DELAY_MS100WRITE_DATETABLENUM4DELAY_MS100WRITE_DATE0XDFDELAY_MS100WRITE_DATE0X43DELAY_MS100VOIDINITADCINTAMASKAD1PCFGAMASK/选择输入引脚AD1CON10X00E0/由内部计数器结束采样并自动转换触发源AD1CSSL0AD1CON20/使用MUXA作为输入多路开关设置/使用AVDD/TSAMP31TAD按照手册为31,个人觉得应该是32AD1CON1BITSON1/开始ADC29INTREADADCINTCHAD1CHSBITSCH0SACH/MUXA多路开关设置,通道0的同相输入为ANCHAD1CON1BITSSAMP1/ADCSHA正在采样WHILEAD1CON1BITSDONE/当转换未结束RETURNADC1BUF0/返回0INTMAIN/RW0SYSTEMCONFIGSYS_FREQ,SYS_CFG_WAIT_STATES|SYS_CFG_PCACHEPORTSETPINSDIG

温馨提示

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

评论

0/150

提交评论