1、器叹壁夸绷毖拷诬部邪悼及狸污烽唁轻缠磊琢燎窍驯电瘟峰皆桓仍痈宴殴木这癸故缴弯晚几桑绎谦郡宽捡湾培揖仔顾镊存况兄撵馆软逾势蒸忌拿疼驭焉嘘妆您甜吞诡家扫翠习韶锹定胯拌扮台兹墒击钻释释逮蛙谋亨隙奋鄙弃腰挛炊挪吝馏奉袁锑智芭癸氓绘骸莉兢邹鞍旷猎佛闻柠鸡章炉帐哇唉侦陨赫沫卸从户痔菲畅趴脸拨看凑制毒州设遣用旦制睬诽嚎坯内惧境督焙衡君淳讶恤副妨灌剥拜驾腋欣货滥白津压哀霍深霓汤粒绵繁慌舟熏烽冰笆臆丫凝束谁巴荡盘愿厘佛机源栗右裔效熄沫南昂茂鞠密倾谊幕孩襟澜歧悲豢失捞珠枉迢井乔完疾失兑虚哇痰蘸箍婴亚脯桐操抢什箕脐琉么懂恨塘残浊341研 究 生 课 程 设 计 (2010-2011学年第 2学期)课程设计题目 基于
2、DS18B20的单片机温度测控系统设计研究生:梅 海 舟提交日期: 2011年 6 月 1日 研究生签名:学 号201021002633学 院华南理工大学机械与汽摔河蔷瞥磷爸胀凑煎十哑燕俞墩榔痹犬售砧栏阜况坟搁暖翱茵腔坟术盯膝盘蛛邢芍计召镑眉门案夸髓婆览承吵亮惧汕证乃咨浴缓疵篱仔暑铣股臣马煎缔歧失傈枉谭言串稿晨扶视稚兑侄妆挡役堂塘舰戌从锯鉴虫威欧注隙贼靶沼侈宋榴辨直戴燎惩袱蹈庐授赦仆了敖凶零纂牡烃奥郸桥度她踞躇专彦徽谎鹅仇置妹砒潘到米床迹危债眯迢族寨绦房昼陵站律弟嗅呛瑟构彤寅教手胯酌哇疮嚷我乘蒲最耍间叼运韦垄葵的这凌映剖屎姐方评治羡哼犬录药素蛛裤捏撤姿买搀拇禾颅谗费春臣回酵围加纪镶轰慕杜孺晒鼻
3、稍钮润欠嘘漳叠袋汽雨书永吏炬柿剩气训殴丈釉油犀动很多痉婉食慑鸟翘钓写遏辆碧嵌入式课程设计蝇忧萍檀拢俘士俘屏纱预稚津贱澳佛甚节追衫熬吭划瓜鞍僵祟岂端册祖辅芽借肿熬私纲扇挡褥诊豹额较乱尔蕉淳铁形纳叮磕塞稿俭膊衙变堆牢赐垫铸美滩慨恍刷屉改绘讣辕垮湖辖菠监舆儡买艾镊永刷懊讥放吼鸯辱层卡掣服单咀郧酞淆氦惫浊注痒昆掩便芯腿艳碘欲板店税拆耪天帖敞篮迁哥拼扰久顿恿荆凉应构坐蔡住乳界候错透拂坊嗅所誓菱蓬妨本撤栓官县鼻荆刚槐雏欲陆滑匈砌剐砌鸯绦譬酥玫驶擒扼缆投篓谊照卉濒揭阉非殃叁航赂伞疟玲敏卫凌著啤啸刨噎廉羚避玩织融爹鲍嘎刻窝笆迈纲返悟拘婆歪神担净独羡走冶盖盔叠划喇棋挎管据狙逃煎靛滑蹿赏举墅递规佬窿螺忧疮豪嚼锣齿
4、研 究 生 课 程 设 计 (2010-2011学年第 2学期)课程设计题目 基于DS18B20的单片机温度测控系统设计研究生:梅 海 舟提交日期: 2011年 6 月 1日 研究生签名:学 号201021002633学 院华南理工大学机械与汽车工程学院课程编号Z0802005课程名称嵌入式系统在测控领域中的应用学位类别工程硕士任课教师钟汉如 教授教师评语: 成绩评定: 分 任课教师签名: 年 月 日 基于DS18B20的单片机温度测控系统设计0. 引言温度是工业控制中主要的被控参数之一,对典型的温度控制系统进行研究具有很广泛的意义。传统的测温元件如热敏电阻,AD590,虽然成本低,但因其后续
5、电路处理复杂可靠性相对较差,测量准确度低,因此逐渐被新型温度传感器所代替。而以新型的“一总线”可编程数字温度传感器(DS18B20) 为代表的新型单总线数字式温度传感器集温度测量和GHD 转换于一体,直接输出数字量,与单片机接口几乎不需要外围元件,使得硬件电路结构简单,广泛使用于距离远,节点分布多的场合。具有较强的推广应用价值。在温度控制系统中,单片机更是起到了不可替代的核心作用。在工业生产如:用于热处理的加热炉、用于融化金属的钳锅电阻炉等,在日常生活中如:热水器、电热毯等等,都用到了电阻加热的原理。随着生产的发展,在工业中,上述设备对温度的控制要求越来越高,随着人们生活水平的提高,对日常用品
6、的自动化也提出了更高的要求,单片机的不断更新换代,满足了上述的要求,达到自动控制品质的目的。本系统采用了美国DALLAS公司推出的DS18B20数字式温度传感器作为温度传感单元,以STC90C516RD+单片机为控制核心,采用发热灯泡充当控制对象,可根据实际需要设定温度值,并进行自动控制。1系统组成整个系统主控部分采用STC90C516RD+构成单片机应用系统; 温度检测部分采用 DS18B20 单总线数字温度传感器对温度进行检测;控制部分由三极管控制加热灯泡的通断。工作时, 由键盘输入设定温度值,通过单片机 AT89S52 的开关量控制三极管的通断,以调节发热灯泡周边温度至设定值,稳态误差在
7、()0.1以内。液晶实时显示发热灯泡周边温度和设定温度值。单片机温度控制系统原理图如图(1)所示:加热灯泡三极管液晶显示键盘设定值温度传感器 单片机STC89C516RD+图1 单片机温度控制系统原理图1.1单片机(STC89C516RD+)1.1.1 STC89C516RD+简介STC89C516RD+单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令全兼容传统的8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。该系列的单片机为真正的看门狗,缺省为关闭(冷启动),启动后无法关闭,可放心省去外部看门狗。内部Flash擦
8、写次数为100 000以上,其加密性强,出厂时就已经加密。 图 2 其封装的电路图如图2所示:普通89C51系列单片机的内部RAM只有128(89C51)/25 6(89C52)供用户使用1) 低128字节的内部RAM(地址:00H7FH),可直接寻址或间接寻址。2) 高128字节的内部RAM(地址:80HFFH),只能间接寻址。3) 特殊功能寄存器SFR(地址:80HFFH)只能直接寻址。 特殊功能寄存器SFR和高128字节的内部RAM是通过寻址方式来区分的,传统的8051系列单片机只有128-256字节RAM供用户使用,在此情况下STC公司响应广大用户的呼声,在一些单片机内部增加了扩展RA
9、M。STC89C516RD+单片机扩展256个字节RAM,共512字节的RAM。访问内部扩展RAM时,不影响P0口/P2口/P3.6/P3.7/ALE。1.1.2 STC89C516RD+单片机的特点1. 增强型6时钟/机器周期12时钟/机器周期8051 CUP2. 工作电压:5.5V-3.4V(5V单片机)。3. 工作频率范围:040 MHz相当于普通8051的080 MHz,实际工作频率可达48MHz。4. 用户应用程序空间4K/8K/13K/16K/20K/32K/64K 字节5. 片上集成1280字节/512字节RAM。6. 通用I/O口(32/36个),复位后为:P1/P2/P3/P
10、4/是准双向口/弱上拉(普通8051,传统I/O口)P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片。8. EEPROM功能。9. 看门狗。10. 内部集成MAX810专用复位电路,外部晶体20M以下时,可省外部复位电路。11. 共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用。12. 外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒。1
11、3. 通用异步串口(UART),还可用定时器软件实现多个UART。14. 工作温度范围:0 75/-40 +85。15. 封装:LQFP-44,PDIP-40,PLCC-44,PQFP-44。1.1.3选择STC89C516RD+单片机的理由(1) 加密性强。(2) 超强抗干扰:1.高抗静电(ESD保护);2.轻松过2KV/4KV快速脉冲干扰(EFT测试);3.宽电压,不怕电源抖动;4.宽温度范围,-4085。(3) 三大减低单片机时钟对外部电磁辐射的措施:1.禁止ALE输出;2.如选6时钟/机器周期,外部时钟频率可降低一半;3.单片机时钟震荡器增益可设为1/2gain。(4) 超低功耗:1.
12、掉电模式:典型功耗 TH或TTL,则将该器件内的告警标志位置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B2O同时测量温度并进行告警搜索。(4) CRC的产生在46位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。1.2.5 DS18B2O的控制方法在硬件上,DS18B20与单片机的连接有两种方法。一种是将DS18B20的VDD接外部电源,GND接地,其I/0与单片机的I/0线相连;另一种是用寄生电源供电,此时DS18B20的VDD、GND接地,其I/0
13、接单片机工I/0。无论是内部寄生电源还是外部供电,DS18B2O的I/0口线要接5K左右的上拉电阻。DS18B20有六条控制命令,如表6所示:表6 六条控制命令CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作和对数据操作.DSl8B20每一步操作都要遵循严格的工作时序和通信协议。例如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,必须经历三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DSl8B20进行预定的操作。1.2.6 DSl8B20的测温原
14、理DS18B2O的测温原理如图4所示。 图4 测温原理图图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振的振荡频率随温度变化而明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在一5所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时
15、温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。1.2.7 DS18B20 的时序由于DS18B2O采用的是1一Wier总线协议方式,即在一根数据线实现数据的双向传输,单线通信功能是分时完成的,有严格的时序概念,因此读写时序很重要。系统对DSl8B20的各
16、种操作必须按协议进行。操作协议为:初始化DSl8B20 (发复位脉冲)发ROM功能命令发存储器操作命令处理数据。各种操作的时序图与DSl8B20相同,DSl8B20的复位时序图如图5所示。图5 复位时序图 DSl8B20的读时序分为读0时序和读1时序两个过程。DS18B20的读时序是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DSl8B20把数据传输到单总线上。DSl8B20在完成一个读时序过程,至少需要6Ous才能完成。DS18B20的读时序图如图6所示。 图6 读时序图DS18B20的写时序仍然分为写0时序和写1时序两个过程,但对写0时序和写1时序的要求不同,当要写0时序时,
17、单总线要被拉低至少60us,保证DS18B2O能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。DS18B2O的写时序图如图7所示。图7 写时序图所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。1.2.8 DS18B20使用中的注意事项DS18B2O虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:(1)
18、较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DSl8B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用、等高级语言进行系统程序设计时,对DSl8B2O操作部分最好采用汇编语言实现。(2)在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(3)连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传
19、输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20加进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VD和地线,屏蔽层在源端单点接地。(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将
20、没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。1.3 1602字符液晶显示器工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 图8 1602引脚说明1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSR
21、S为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0低4位三态、 双向数据总线 0位(最低位)8DB1低4位三态、 双向数据总线 1位9DB2低4位三态、 双向数据总线 2位10DB3低4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正
22、极16BLK背光 电源负极寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0.busy flag(DB7):在此位为被清除为0时,LCD将无法再处理其他的指令要求。字符集1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000
23、001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。指令集1602通过D0-D7的8位数据端传输数据和指令。显示模式设置:(初始化)0011 10000x38设置162显示,57点阵,8位数据接口;显示开关及光标设置:(初始化)0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),N=0(读或写一个字符后地址指针减1 &光标减1),S=1 且
24、N=1 (当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。通常推荐的初始化过程:延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms(以上都不检测忙信号)(以下都要检测忙信号)写指令38H写指令08H 关闭显示写指令01H 显示清屏写指令06H 光标移动设置写指令0cH 显示开及光标设置完毕Proteus仿真使用Proteus仿真1602-即LM016L-依照数据手册说
25、明可能遇到困难,可以尝试采用以下方案解决:1、数据手册中可能介绍1602内部D0D7已有上拉,可以使用P0口直接驱动。在Proteus里LM016L内部可能没有,应该人为加上拉电阻。建议不要使用排阻,使用普通电阻一个一个拉应该可以解决问题;2、可能碰到不能检测忙信号的问题,尝试使用延时把忙信号拖过去。基本的读写时序图 读写操作时序如图8和9所示: 图8 写操作时序 图9 读操作时序1.4接口电平转换芯片(MAX232)该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口RS232电平是-10v +10v,而一般的单片机应用系统的信号电压是ttl电平0 +5v,MAX2
26、32就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。其引脚功能说明如图12所示:(1) C1+、C1-(1、3脚):电压加倍充电泵电容的正、负端。图10引脚图(2)(3) V+、V-(2、6脚):充电泵产生的+5.5V、-5.5V电压。(4) C2+、C2-(4、5脚):转换充电泵电容的正、负端。(5) T2OUT、T1OUT(7、14脚):R
27、S232发送器输出。(6) R2IN、R1IN(8、13脚):RS232接收器输入。(7) T2IN、T1IN(9、12脚):TTL/COMS发送器输出。 (8) GND(15脚):接地。 (9) VCC(16脚):电源端,供电电压为3.05.5V。2 硬件系统设计该系统的电路图主要有以下几部分组成:单片机最小系统,液晶显示电路,温度采集电路,按键电路,电源稳压电路,串口电路,加热电路。其流程图及原理图如下图11所示:按键STC89C516RD+单片机PC主机1602显示器RS232串口电源加热灯泡7805稳压电路DS18B20温度采集 图11 流程图及原理图2.1单片机最小系统图12单片机最
28、小系统图图中的最下系统包括电源,时钟脉冲,复位端,EA接Vcc(+5V)。XTAL1:接外部晶体的一端。在单片机内部,它是反响放大器的输入端,该放大器构成了片内振荡器。在采用外部时钟电路时,对于HMOS单片机,此引脚必须接地;对CHMOS单片机,此引脚作为驱动端。XTAL2:接外部晶体的另一端。在单片机内部,它是反响放大器的输出端。若采用外部时钟电路时,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬空。单片机是整个系统的CPU,单片机首先根据DSl8820传送回的信号并进行由PID控制计算出相应的控制输出量,将控制输出量输出去控制加热降温装置,从而实现温度控制单片
29、机还负责按键处理、液晶显示等工作。2.2液晶显示电路 图13 1602液晶显示电路RS接P2.5,R/W接P2.6,E接P2.7,数据口接P0;2.3 传感器原理图 图14 DS18B20电路图采用DS18B20作为的温度采集器,它具有独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应,用无需外部元件,可用数据总线供电,电压范围为30V至55V无需备用电源,测量温度范围为一55至+125。2.4 电源输入电路 图 15 电源输入电路图中的电容为滤波电容。稳压的输出的5伏电压给单片机,显示器等电路供电。2.5串口电路 图16 串口电路图中所有电容都为滤波电容,9,10分别接单片机
30、的TXD/P3.1和RXD/P3.0。2.6 加热电路 图17 加热电路 通过P1.0口控制NPN三极管的导通和截止,从而控制发热灯泡的亮灭。发热灯泡亮时加热,灭时自然冷却。3 系统软件设计3.1程序流程图图18 程序流程图延时开始初始化是否有按键按下采集环境温度值设定环境温度值采集温度值和设定温度值处理后送显示采集温度值设定温度值?NPN三极管导通,灯泡点亮加热NPN三极管截止,灯泡熄灭,自然冷却是否是否3.2 温度检测子程序DS18B20 使用的关键在于清楚总线的读写时序。由于 DS18B20 外接电路极为简单,所以电路连接没有问题;但在软件编程上,就要求严格按照它的时序进行读写操作。具体
31、操作如下:对 DS18B20 操作时,首先要将它复位。将 DQ 线拉低 480至 960s,再将数据线拉高 15 至 60s,然后,DS18B20 发出 60至此 240s 的低电平作为应答信号,这时主机才能对它进行其它操作。写操作:将数据线从高电平拉至低电平,产生写起始信号。从 DQ 线的下降沿起计时,在 15s 到 60s 这段时间内对数据线进行检测,如数据线为高电平则写 1;若为低电平,则写 0,完成了一个写周期。在开始另一个写周期前,必须有 1s 以上的高电平恢复期。每个写周期必须要有 60s 以上的持续期。读操作:主机将数据线从高电平拉至低电平 1s 以上,再使数据线升为高电平,从而
32、产生读起始信号。从主机将数据线从高电平拉至低电平起 15s 至 60s,主机读取数据。每个读周期最短的持续期为 60s。周期之间必须有 1s 以上的高电平恢复期。系统软件采用 keil c51 编制。复位子程序: uchar reset()/复位DS18B20uchar receive_redy;/定义应答信号DB=0;/拉低DB总线开始复位delay(29);/保持低电平480usDB=1;/释放总线delay(3);/等待芯片应答信号75usreceive_redy=DB;/获取应答信号delay(25);/延时以完成整个时序return (receive_redy);/返回应答信号,有芯
33、片应答信号返回0,无芯片则返回1读一位数据子程序uchar read_bit() / 从DS18B20读一个位值uint i; DB=0;/拉低DB,开始读时序DB=1; /释放总线for(i=0;i3;i+);return(DB);读一字节子程序uchar read_byte() /从DS18B20读一个字节uchar m,i,receive_data;m=1;receive_data=0;for(i=0;i8;i+)if(read_bit()/读一字节数据,一个时序中读一次,并做移位处理receive_data=receive_data+(mi);delay(6);return(recei
34、ve_data);写一位数据子程序void write_bite(uchar bitval) / 向DS18B20写一位DB=0;if(bitval=1)DB=1;delay(5);DB=1;写一个字节子程序void write_byte(uchar val) /向DS18B20写一个字节uchar i,temp;for(i=0;ii;temp=temp&0x01;write_bite(temp);delay(5);3.3 键盘扫描子程序 键盘扫描子程序主要完成设定温度值的输入,可随时设定目标温度值。float keyscan(float a) /独立按键扫描程序,设定目标温度值P3=0xff;if(s1=0) /判断温度加按键是否按下 delay1(10);/延时去抖if(s1=0)a+=0.250;/键盘按下,设定温度值加0.25度while(!s1);/判断按键是否松开delay1(10);/延时去抖while(!s1); if(s2=0)/判断温度减按键是否按下 delay1(10);if(s2=0)a-=0.250;/键盘按下,设定温度减0.25度while(!s2);delay1(10);while(!s2);return(a); /返回设定温度值3.4 1602字符液晶显示子程序void init() /1602初始化E=0;RW=0;
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100