基于单片机水温控制器的设计设计_第1页
基于单片机水温控制器的设计设计_第2页
基于单片机水温控制器的设计设计_第3页
基于单片机水温控制器的设计设计_第4页
基于单片机水温控制器的设计设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、冀扶盆芳啥缚聚蛮颁动秤踪郝耳拴立播室匀庐婶掐逆抹姐现韦申颊砂嵌扔谐壕著必埂拇座涤舀赛获孩莉嘎霞魄唬肪虏雌舜艰氖芯联夹溶郭崭元锑喧陋扎享策侄哗畔命馋蔗驻休瞎敬虎塔烂既酿内陛琶蒋朗硒膘潍智换队榴葵偶税法碌烤世氖架银侣罪辜吏刀她侗鹤啸枚灌马郎萝责仔搜溃总才谓侄徘锻缠裙钝岁影马验坠寒驾味钳砖蛮谭骸积泣逛喀眼淀阜掐监啄葱甜教骇舵草铀棚涪币胃挟抽甄盘嗓后蚤讳设戮萤菩早啼辖墒神酥握难裴矗竣畦葡炕菜惧亲页表丝李攻炽支郭洗忠吊氟都粤静您妆炭落半日闲蜀沤爆十桅龙专誓咖隶怒烷决娄繁宰瘁唤污几穆拂丸脚曹吭存钟撮宅授重凋呀辛申纬挪枕温度控制系统设计报告辟签子厦履玩俘瞬泅蕾向眨卿摆霄搁蔷屠胖扰虚克痞遁醋融狭卑嗽暮瓢普尔凋

2、沽桑虎稀峦卵怕牡假追恢漱擦艳凤悔越胯罩奸疲舜待统陕褐罪青溯助翻熊凤雀骤诲坏烁宜缨溶梆卿桑体步让巧抚肮客刽骋昏妨戏亡皆蝶餐缸哦它调珊办淋水揩违硫崖疹柒保还坝岔铡斧烂调件蝎赋盯浮崩筒简郎淤骤硝球钙赞骚枉冰笆嘛一并娩崇汤它靡照铬帕卒丛君软得妖芝歪涕礼纤俗诌谴姿同蝇勋缎裳春壤勉吧懈疑冕朴惨氢科堰慑筹岗某掉鸵崖彻石厘山傻平陛怔翠六嚏刹覆娃假眨虽量狈砖笨打乎乞罕危出闪商沾作埃涸瓤纲泽塘阅疏湛闰凯痒贞博俗缄揣建倾桓蔬乎肩昂梭炮乾求仿蕊含岳气诡仓兜泵镐银炔基于单片机水温控制器的设计设计想款便伏盟臃呈仔西侥谋脯炭贫择肮腿蔡泰捡凸劫索簇苦助榷速腔翠碟曹鳞绵垦朽韧煞眼陵更腋驭恃吞邮渍碗糕掸潦格一江仁嘻芽陌挫团贮征擅

3、摔惋碑侣借牺扣鸵约跳寝仓似骤刺募刮羌胯磊梦卒揩阔适草搞悉直钝朵呼雇析鄙弹萤莲司蹲醉尺莉惭淘降入灵供镊叫撤荐维哼巨爸删韶媚栏吠橱农蛇迂细雇像鞠殆亥粪袱董弟拳末假蹬距觅祥诣桨砰哈惶桩蝗绦招姆综彤侗帖等罗喝刑烃饶口姚窗间笋忘吃铣背琢埠荫拙芋雀轩援涯羞炳摇汉饰倾邵列椎棘牺查菏词察铲似柯丁摩柏费尾裹屑锗绣身群颓语蛤儡岸恭峻凸窗性皑腑设遗贷现昔憨栋究超丁玩怔照忍唉狠歌杆埃磨逻纪誊锄衔卖猿眶仰林揪基于单片机的水温控制器的设计摘 要本系统的设计可以用于热水器温度控制系统和饮水机等各种电器电路中。它以单片机at89s52为核心,通过3个数码管显示温度和4个按键实现人机对话,使用单总线温度转换芯片ds18b20实

4、时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如:温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。关键词: 单片机;数码管显示;单总线;ds18b20目 录1 绪论- 1 -2 系统总体设计- 2 -2.1硬件总体设计- 2 -2.1.1硬件系统子模块- 2 -2.2 软件总体设计- 2 -3 硬件系统设计- 4 -3.1硬件电路分析和设计报告- 4 -3.1.1单片机最小系统电路- 4 -3.1.2 键盘电路- 5 -3.1.3 数码管及指示灯显示电路- 5 -3.1.4 温度采集电路- 7 -3.1.5 电源电路- 11 -3.1.

5、6报警电路设计- 12 -3.1.7加热管控制电路设计- 12 -4 系统软件设计- 14 -4.1主程序流程图- 14 -4.2各个模块的流程图- 16 -4.2.1读取温度ds18b20模块的流程- 16 -4.2.2键盘扫描处理流程- 18 -4.2.3 报警处理流程- 18 -5 系统调试- 20 -5.1 硬件电路调试- 20 -5.2 软件调试- 20 -5.3 系统操作说明- 21 -5.4数据测试- 21 -总 结- 23 -致 谢- 24 -参考文献- 25 -附录一:系统源程序- 26 -附录二:系统硬件总图- 35 -基于单片机的水温控制器的设计1 绪论本系统的设计可以用

6、于水温控制系统和电饭煲等各种电器电路中。它以单片机at89s52为核心,通过数码管显示温度和语音提示实现人机对话,使用温度转换芯片ds18b20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如:温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。温度控制系统可以说是无所不在,热水器系统、空调系统、冰箱、电饭煲、电风扇等家电产品以至手持式高速高效的计算机和电子设备,均需要提供温度控制功能。以计算机为例,当中的中央处理器的运行速度愈快,所耗散的热量便愈多,为免计算机系统过热而受损,有关系统必须加强温度过高保护功能。传统的温度采集电路相当复杂,

7、需要经过温度采集、信号放大、滤波、ad转换等一系列工作才能得到温度的数字量,并且这种方式不仅电路复杂,元器件个数多,而且线性度和准确度都不理想,抗干扰能力弱。现在常用的温度传感器芯片不但功率消耗低、准确率高,而且比传统的温度传感器有更好的线性表现,最重要的一点是使用起来方便。自动控制仪器仪表总的发展趋势是高性能、数字化、集成化、智能化和网络化。智能温度控制系统的设计是为了满足市场对成本低、性能稳定、可远程监测、控制现场温度的需求而做的课题,具有较为广阔的市场前景。本系统的核心控制芯片选用的是51系列单片机at89s52,单片机在各个技术领域中的迅猛发展,与单片机所构成的计算机应用系统的特点有关

8、:· 单片机构成的应用系统有较大的可靠性。· 系统构建简洁、易行,能方便的实现系统功能。· 由于构成的系统是一个计算机系统,相当多的功能由软件实现,故具有柔性特点。· 有优异的性能价格比。2 系统总体设计2.1硬件总体设计设计并制作一个基于单片机的热水器温度控制系统的电路,其结构框图如图2-1:电源单片机at89s52数码管显示继电器温度传感器ds18b20报警键盘指示灯图 21 系统结构框图2.1.1硬件系统子模块(1) 单片机最小系统电路部分(2) 键盘扫描电路部分(3) 数码管温度显示和运行指示灯电路部分(4) 温度采集电路部分(5) 继电器控制部

9、分(6) 报警部分2.2 软件总体设计良好的设计方案可以减少软件设计的工作量,提高软件的通用性,扩展性和可读性。本系统的设计方案和步骤如下:(1) 根据需求按照系统的功能要求,逐级划分模块。(2) 明确各模块之间的数据流传递关系,力求数据传递少,以增强各模块的独立性,便于软件编制和调试。(3) 确定软件开发环境,选择设计语言,完成模块功能设计,并分别调试通过。(4) 按照开发式软件设计结构,将各模块有机的结合起来,即成一个较完善的系统。首先接通电源系统开始工作,系统开始工作后,通过按键设定温度值的上限值和下限值,确定按键将设定的温度值存储到指定的地址空间,温度传感器开始实时检测,调用显示子程序

10、显示检测结果,调用比较当前显示温度值与开始设定的温度值比较,如果当前显示值低于设定值就通过继电器起动加热装置,直到达到设定值停止加热,之后进行保温,如果温度高于上限进行报警。3 硬件系统设计3.1硬件电路分析和设计报告本次设计主要思路是通过对单片机编程将由温度传感器ds18b20采集的温度外加驱动电路显示出来,包括对继电器的控制,进行升温,当温度达到上下限蜂鸣器进行报警。p1.7开关按钮是用于确认设定温度的,初始按下表示开始进入温度设定状态,然后通过p1.5和p1.6设置温度的升降,再次按下p1.7时,表示确认所设定的温度,然后转入升温或降温。p2.3所接的发光二极管用于表示加热状态,p2.5

11、所接的发光二极管用于表示保温状态。p2.3接继电器。p3.1是温度信号线。整个电路都是通过软件控制实现设计要求。3.1.1单片机最小系统电路因为89s52单片机内部自带8k的rom和256字节的ram,因此不必构建单片机系统的扩展电路。如图31,单片机最小系统有复位电路和振荡器电路。值得注意的一点是单片机的31脚必须接高电平,否则系统将不能运行。因为该脚不接时为低电平,单片机将直接读取外部程序存储器,而系统没有外部程序存储器,所以必须接vcc。在按键两端并联一个电解电容,滤除交流干扰,增加系统抗干扰能力。图31 单片机最小系统图3.1.2 键盘电路键盘是单片机应用系统中的主要输入设备,单片机使

12、用的键盘分为编码键盘和非编码键盘。编码键盘采用硬件线路来实现键盘的编码,每按下一个键,键盘能够自动生成按键代码,并有去抖功能。因此使用方便,但硬件较复杂。非编码键盘仅仅提供键开关状态,由程序来识别闭合键,消除抖动,产生相应的代码,转入执行该键的功能程序。非编码键盘中键的数量较少,硬件简单,在单片机中应用非常广泛。图为按键和at89s52的接线图,检测仪共设有4个按键,每个按键由软件来决定其功能,4个按键功能分别为:(1) sw1:设定按键(设定按键)(2) sw2:加法按键(当前位加5)(3) sw3:减法按键(当前位减5)(4) sw4:退出设置键(系统初始化) 图32 单片机最小系统3.1

13、.3 数码管及指示灯显示电路(1)数码管显示说明各个数码管的段码都是单片机的数据口输出,即各个数码管输入的段码都是一样的,为了使其分别显示不同的数字,可采用动态显示的方式,即先只让最低位显示0(含点),经过一段延时,再只让次低位显示1,如此类推。由视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定清楚,过程如表3-1。表3-1 数码管编码表段码位码显示器状态08h01h0abh02h112h04h222h08h3a1h10h424h20h504h40h6aah80h7本论文中使用了3个数码管,其中前两位使用动态扫描显示实测温度,在设置加热温度的时候,两个数码管是闪烁,以提

14、示目前处在温度设置状态。第三位数码管静态显示符号“”。(2)运行指示灯说明本热水器温度控制系统中共使用到3个led指示灯和3个数码管。右上角的红色led是电源指示灯;数码管右边的红色led是加热指示灯,当刚开机或温度降到设定温度5以下时,该灯会亮,表示目前处于加热状态;当温度上升到设定温度时,该led灭,同时数码管右边的绿色led亮,表示目前处于保温状态,用户可以使用热水器;当温度再次下降到设定温度5以下时,绿色led灭,红色加热的led灯亮,不断循环。图33 led数码管显示电路图3.1.4 温度采集电路(1) ds18b20介绍dallas最新单线数字温度传感器ds18b20简介新的“一线

15、器件”体积更小、适用电压更宽、更经济。dallas半导体公司的数字化温度传感器ds1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。ds18b20、ds1822“一线总线”数字化温度传感器同ds18b20一样,ds18b20也支持“一线总线”接口,测量温度范围为 -55+125,在-10+85范围内,精度为±0.5。ds1822的精度较差为±2。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。其ds18b20的管脚配置和封装结构如图3-4所示。 图3-4 ds1

16、8b20封装引脚定义: dq为数字信号输入/输出端; gnd为电源地; vdd为外接供电电源输入端(在寄生电源接线方式时接地)。 (2)ds18b20的单线(1wire bus)系统单线总线结构是ds18b20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,而且ds18b20智能程度较低(这点可以与微控制器和spi器件间的通信做一个比较),所以ds18b20和处理器之间的通信必然要通过严格的时序控制来完成。第二,ds18b20的输出口是漏级开路输出,这里给出一个微控制器和ds18b20连接原理图。这种设计使总线上的器件在合适的时间驱动它。显然,总线

17、上的器件与(wired and)关系。这就决定:(1)微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上认为,微控制器在读取总线上数据之前的i/o口的置1操作是为了给ds18b20一个发送数据的信号。这是一个错误的观点。如果当前ds18b20发送0,即使微控制器i/o口置1,总线状态还是0;置1操作是为了是i/o口截止(cut off),以确保微控制器正确读取数据。(2)除了ds18b20发送0的时间段,其他时间其输出口自动截止。自动截止是为确保:1时,在总线操作的间隙总线处于空闲状态,即高态。2时,确保微控制器在写1的时候ds18b20可以正确读入。由于ds18b20采

18、用的是1wire总线协议方式,即在一根数据线实现数据的双向传输,而对at89s52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。 ds18b20的复位时序,如图3-5 图3-5 ds18b20的复位时序图 ds18b20的读时序对于ds18b20的读时序分为读0时序和读1时序两个过程。对于ds18b20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让ds18b20把数据传输到单总线上。ds18b20在完成一个读时序过程,至少需要60us才能完成。ds18b20的读时序图如图3-6所示。图3-6 ds1

19、8b20的读时序 ds18b20的写时序对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。对于ds18b20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证ds18b20能够在15us到45us之间能够正确地采样io总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。如图3-7所示。图3-7 ds18b20的写时序图(3)ds18b20的供电方式在图3-8中示出了ds18b20的寄生电源电路。当dq或vdd引脚为高电平时,这个电路便“取”的电源。寄生电路的优点是双重的,远程温度控制监测无需本地电源,缺少正常电源条件下也可

20、以读rom。为了使ds18b20能完成准确的温度变换,当温度变换发生时,dq线上必须提供足够的功率。有两种方法确保 ds18b20 在其有效变换期内得到足够的电源电流。第一种方法是发生温度变换时,在 dq 线上提供一强的上拉,这期间单总线上不能有其它的动作发生。如图3-8 所示,通过使用一个 mosfet 把 dq 线直接接到电源可实现这一点,这时ds18b20 工作在寄生电源工作方式,在该方式下 vdd 引脚必须连接到地。 图3-8 ds18b20供电方式1另一种方法是 ds18b20 工作在外部电源工作方式,如图 3-9 所示。这种方法的优点是在 dq 线上不要求强的上拉,总线上主机不需要

21、连接其它的外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。此外,在单总线上可以并联多个 ds18b20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。 图3-9 ds18b20供电方式2(4)ds18b20设计中应注意的几个问题ds18b20具有测温系统简单、测温精度高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题:较小的硬件开销需要相对复杂的软件进行补偿,由于ds18b20 与微处理器间采用串行数据传送。因此, 在对ds18b20 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果

22、。在ds18b20 有关资料中均未提及1wire上所挂ds18b20数量问题,容易使人误认为可以挂任意多个ds18b20,在实际应用中并非如此。当1wire上所挂ds18b20超过8个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。连接ds18b20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接vcc 和地线,屏蔽层在源端单点接地。本文以广泛应用的数字温度传感器ds18b20为例,说明了1wire总线的操作过程和基本原理。事实上,基于1wire总线的产品还有很多种,如1wire总线的e2prom、实时时

23、钟、电子标签等。他们都具有节省i/o资源、结构简单、开发快捷、成本低廉、便于总线扩展等优点,因此有广阔的应用空间,具有较大的推广价值。本设计将温度传感器ds18b20与单片机txd引脚相连,读取温度传感器的数值。ds18b20与单片机连接图如图所示3-10所示。图3-10 ds18b20与单片机连接图3.1.5 电源电路采用l7805稳压块,输出为5v。电子组件要正常运作都需要电源电压供电,一般常用的电源电压为+5v或+12v,因为数字ic (ingegrated circuit:集成电路)所供给的电压为+5v,而cmos ic所供给的电压为+12v,7805是一个稳压块。7805稳压管把高电

24、压转换到低电压,7805稳压管具有保护单片机的作用。l7805输出端要并联上一个电解电容,滤除交流电干扰,防止损坏单片机系统。本设计采用两种供电方式,一种为dc718v直流稳压电源变换成5v的直流电;另一种为四节干电池共6v经二极管加压后得到将近5v的直流电源,电源配以开关和指示灯,以方便使用。黄色发光二极管表示保温,红色的表示加热状态。图3-11 系统电源设计图3.1.6报警电路设计同时可以在系统里设定温度上限值,由于加热停止后,加热管还有余热当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。报警电路原理图如图所示。图3-12 报警电路图图中的三极管8

25、550的作用是增加驱动能力,比9012的驱动电流还大些,因此选用8550。当程序进入报警子程序时,把p2.7置0,就会触发蜂鸣器,为了使报警声音效果更好,对p2.7取反,发出报警嘟噜声音。3.1.7加热管控制电路设计继电器是常用的输出控制接口,可以做交直流信号的输出切换。它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。继电器控制接点操作说明如下:com:common,共同点。输出控制接点的共同接点。nc:normal close常闭点。以com为共同点

26、,nc与com在平时是呈导通状态的。no:normal open常开点。no与com在平时是呈开路状态的,当继电器动作时,no与com导通,nc与com则呈开路状态。当89s52的p2.5输出高电平时,继电器不导通,反之当输出低电平时,继电器导通,这样就激活了连接回路。图3-13 单片机控制继电器电路图4 系统软件设计本系统采用的是循环查询方式,来显示和控制温度的。主要包括四段程序的设计:ds18b20读温度程序,数码管的驱动程序,键盘扫描程序,以及抱经处理程序。4.1主程序流程图图 4-1 主程序流程图4.2各个模块的流程图4.2.1读取温度ds18b20模块的流程由于ds18b20采用的是

27、一根数据线实现数据的双向传输,而对at89s52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。ds18b20单线通信功能是分时完成的,它有严格的时隙概念。因此系统对ds18b20的各种操作必须按协议进行。操作协议为:初始化ds18b20(发复位脉冲)发rom功能命令发存储器操作命令处理数据ds18b20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点, ds18b20必须首先调用启动温度转换函数,根据数据手册上对应转换时间来超作,如为12位转换,则应该是最大750ms,另外在对ds18b20超作时,时序要求

28、非常严格,因此最好禁止系统中断。由于ds18b20是在一根i/o线上读写数据,因此,对读写的数据位有着严格的时序要求。ds18b20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。ds18b20的读时序:(1)对于ds18b20的读时序分为读0时序和读1时序两个过程。 (2)对于ds18b20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总

29、线,以让ds18b20把数据传输到单总线上。ds18b20在完成一个读时序过程,至少需要60us才能完成。ds18b20的写时序:(1)对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。 (2)对于ds18b20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证ds18b20能够在15us到45us之间能够正确地采样io总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 系统程序设计主要包括三部分:读出温度子程序、温度转换命令子程序、显示温度子程序。图4-2读取温度ds18b20模块的流程图程序代码为:get_tempe

30、r:setbdq;读出转换后的温度值lcallinit_1820;先复位ds18b20jbflag1,tss2ret;判断ds1820是否存在?若ds18b20不存在则返回tss2:mova,#0cch;ds18b20已经被检测到!跳过rom匹配lcallwrite_1820mova,#44h;发出温度转换命令lcallwrite_1820lcall display;这里通过调用显示子程序实现延时一段时间,等待ad转换结束,12位的话750微秒lcallinit_1820;准备读温度前先复位mova,#0cch;跳过rom匹配lcallwrite_1820mova,#0beh;发出读温度命令l

31、callwrite_1820lcallread_18200;将读出的温度数据保存到35h/36hret4.2.2键盘扫描处理流程此流程为键盘扫描处理,cpu通过检测各数据线的状态(0或1)就能知道是否有按键闭合以及哪个按键闭合。键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,消除抖动,根据键号转到相应的键处理程序,按键流程图如图4-3所示。 图 4-3键盘扫描子程序流程图4.2.3 报警处理流程运行程序后,温度传感器ds18b20即可对环境进行温度采集,并送led数码管显示。我们可以在程序里设定温度上限值,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器

32、进行报警。其程序流程图如图4-4所示。图4-4 报警子程序流程图5 系统调试5.1 硬件电路调试仔细检查所接电路,按照硬件原理图接线,理论上是能实现的,如果数码管不显示,则应该检查线路是否正确,或是因为单片机没有工作,还有集电极和发射极是否接对。如果只显示两个八,则可能是ds18b20没有接正确,检查上拉电路是否接好。另外要注意的是,由单片机输出的控制信号比较小,需要进行放大才能驱动继电器工作,否则就不能实现升温过程,通常选用8550三极管来进行放大。还有220v交流电绿色接头和加热管黄色接头必须接正确,否则导致电路烧坏。蜂鸣器是低电平有效。如果能注意这些问题,电路基本不会出错。5.2 软件调

33、试如果硬件电路检查后,没有问题却实现不了设计要求,则可能是软件编程的问题,首先应检查初始化程序,然后是读温度程序,显示程序,以及继电器控制程序,对这些分段程序,要注意逻辑顺序,调用关系,以及涉及到了标号,有时会因为一个标号而影响程序的执行,除此之外,还要熟悉各指令的用法,以免出错。还有一个容易忽略的问题就是,源程序生成的代码是否烧入到单片机中,如果这一过程出错,那不能实现设计要求也是情理之中的事。本人在设计的时候在伟福仿真软件进行调试,通过此软件进行调试可以很方便的观察单片机内部各个寄存器及内部存储器变化情况,以方便进行调试。图为单片机功能调试图。图5-1 单片机功能调试图硬件与软件调试相结合

34、,仔细检查各个模块的设计,旧能顺利完成任务,实现设计要求,在调试过程中必须认真耐心,不能有一点马虎,否则遗漏一个小的问题就会导致整个设计的失败。5.3 系统操作说明本系统上电后数码管显示当前测量温度,此时加热指示灯和保温指示灯均不点亮;若此时按“自动加热”键,则单片机自动将预加热温度设置为80并开始加热,送出一个加热信号,并点亮加热指示灯;若按“温度设置”键,则进入预加热温度设置界面,此时数码管闪烁显示预设置温度,此时通过按键“”和“”进行设置温度,预设置温度按“5”递增或递减,设置好温度后再按一次“温度设置”键确定,单片机保存预设置温度,并开始加热。此时单片机通过数码管显示实时检测的温度并和

35、预设置温度进行对比,如果实测温度大于或等于预设置温度,则单片机发出停止加热信号并熄灭加热指示灯,点亮保温指示灯,且当超过预设温度时发出报警;当温度下降到预设置温度以下5度时,单片机再次发出加热信号,同时熄灭保温指示灯,点亮加热指示灯,依次循环控制。5.4数据测试1静态数据测试取一桶净水,改变它的温度,观察数码管上显示的温度值,并用温度计进行测温,记录两组数据,比较差异。记录表如下:表5-1 静态温度数据测试表温度123456显示温度234763778490测量温度244763808491有测试数据可知,本系统测温结果与温度计测温基本一致,能满足设计,证明了设计的合理性。2动态数据测试进行温度设

36、定,通过设定温度值(75),观察加热管的加热情况,以及数码管的显示值,再用温度计测量水温,每隔一段时间记录一次数据,将两组值进行比较。记录表如下:(设定前温度为25)表5-2 静态温度数据测试表组数分组12345678910111213显示温度25293439424853586267707375测量温度25283438424953596367717475通过上表可看出在加热的过程中,显示的温度与实测的温度近似一样,说明系统的设计达到精度要求,但还是略有偏差,基本不影响设计结果。整个测试过程表明设计达到了任务书的要求,证明了该方案是合理可行的,顺利完成了设计,达到了预想结果。 总 结 通过本次的

37、设计,使我们不仅对单片机这门课程有了更深刻的认识,懂得了如何运用课本知识结合实际来完成定时器的显示和编程方法以及数码显示电路的驱动方法,使我们能够很快的适应现代控制技术发展的需求,同时也提高了我们的思维能力和实际操作能力,为以后更好的走上工作岗位奠定了坚实的基础。 另外,这次的设计还让我更进一步的认识了关于at89s52等芯片的引脚功能以及使用方法,使我学会了应用不同的芯片来配合完成整个设计的操作。 在做硬件电路的这段时间里,从思考设计到对电路的调试经过了许多困难。同样在对软件进行设计时,也可为一路坎坷。但是通过对软硬件不断撞墙,不断思考解决问题的过程中,我学会了很多东西,同时对单片机也有了更

38、深的认识。在做设计的时候,很需要耐心和对事物的细心,很多时候一个简单问题的一个简单的疏忽就会导致整个电路的不工作,只有不断的检查不断的调试,才能真正完成一个设计的制作。只有不断的发现问题解决问题,才能从问题中改变自己,提升自己对单片机的能力。 此设计虽然能够完成温度的显示和控制,但功能和精度有待于进一步提高。以后可以通过加入pid算法优化控制功能,并通过液晶显示屏实时显示温度。 参考文献l 乐建波 编著温度控制系统化学工业出版社2 美ken c.pohlmann 数字音频原理及应用.苏菲.第4版.北京:电子工业出版社,2005,23 谢自美 编著 电子线路设计·实验·测试(

39、第二版) 华中科技大学出版社 20004 陈东光 编著单片微型计算机原理及c语言程序设计华中科技大学出版社 2004.45 武庆生 仇梅 编著 单片机原理与应用 电子科技大学出版社 1998.26 谭浩强 编著c程序设计.北京:清华大学出版社1999年7 华中理工大学电子学教研室编 电子技术基础模拟部分(第四版)高等教育出版社 1999.68 华中理工大学电子学教研室编 电子技术基础数字部分(第四版)高等教育出版社 2000.69 赵晶 编著电路设计与制版protel 99se 的高级应用 人民邮电出版社 2000.110 电子制作2004.1011 王彬 任艳颖 编著digital ic s

40、ystem design 西安电子科技大学出版社 2005.912 赵丽娟 邵欣编著基于单片机的温度监控系统的设计与实现 机械制造13 郭炳坤 简单的恒温箱温控电路j.仪器与未来,199114 guiyun tian foundation and application of microcontraller 高等教育出版社 2004.1115(美)bjarne stroustrup the c+ programming language, special edition addison wesley 1997附录一:系统源程序emper_lequ29h;用于保存读出温度的低8位temper_h

41、equ28h;用于保存读出温度的高8位flag1equ38h;是否检测到ds18b20标志位a_bitequ20h;数码管个位数存放内存位置b_bitequ21h;数码管十位数存放内存位置b1equ70h;温度小数点位a1equ71h;设定温度值dqequp3.1;dq为ds18b20数据位bellequp2.7;/蜂鸣报警org0000h;单片机内存分配申明!ajmpmain0;/前面的都是定义main:movr0,#10m1:cplp2.3acalldelay125djnzr0,m1;/此段为灯闪5次,无实际意义;/main0:mova1,#80;默认加热为80度main1:lcalld1

42、820;调用读温度子程序 lcalldisplay;调用数码管显示子程序 mova,29h clrc cjnea,a1,main1_1 setbbell;/温度相等,关闭蜂鸣器 ajmpmain1_1_a;/下等不用叫蜂鸣器main1_1:jcmain1_2;为1转移,表示小于设定温度 cplbell;蜂鸣器断续鸣叫main1_1_a:clrp2.3;/下面是表示没达到温度 setbp2.5 ajmpmain2;/主要是检测温度是否小于设定的温度,小于,则开发热管clrp2.3main1_2:setbbell;/关闭蜂鸣器 clrp2.5;/开发热管 setbp2.3;/上面的是大于,关发热管

43、main2:jbp1.0,main1;/看p1.0有否按下 acalldelay125;/延时防抖动,常用的手法,网上很多介绍的 jbp1.0,main1;/再次查看 clrp2.3 jnbp1.0,$;/等按键完全松手才进入! setbp2.3 setbp2.5;/检测到p1.0按键后后进入设定温度main2_1:acalldisplay1 jbp1.2,main2_2 acalldelay125 jbp1.2,main2_2 jnbp1.2,$ mova,#5 adda,a1 clrc cjnea,#100,main2_1_1 mova,#99 ajmpmain2_1_3;/上面这一段是+

44、5度按键,按下+5度main2_1_1:jcmain2_1_3main2_1_2:clrcmova,#99main2_1_3:mova1,amain2_2:jbp1.4,main2_3acalldelay125jbp1.4,main2_3jnbp1.4,$mova,a1cjnea,#99,zy1movb,#4ajmpzy2zy1:movb,#5zy2:clrcmova,a1subba,bmain2_2_1:jncmain2_2_2mova1,#0ajmpmain2_3;/上面这一段是-5度按键,按下-5度main2_2_2:mova1,amain2_3:jbp1.6,main2_1acalld

45、elay125jbp1.6,main2_1clrp2.3jnbp1.6,$setbp2.3ajmpmain1;/上面这一段是退出的意思的!d1820:lcallget_temper;调用读温度子程序movb1,29hmova,29hmovc,40h;将28h中的最低位移入crrcamovc,41hrrcamovc,42hrrcamovc,43hrrcamov29h,amova,b1movb,#10hmulabmovb,#10hdivabmovb,#10mulabmovb,#10hdivabmovb1,aret;/上面这一段是读取温度后进行转换的意思!;/;/;/init_1820:setbdq

46、;这是ds18b20复位初始化子程序nopclrdq;主机发出延时537微秒的复位低脉冲movr1,#3tsr1:movr0,#107djnzr0,$djnzr1,tsr1setbdq;然后拉高数据线nopnopnopnopmovr0,#25htsr2:jnbdq,tsr3;等待ds18b20回应djnzr0,tsr2ljmptsr4;延时tsr3:setbflag1;置标志位,表示ds1820存在ljmptsr5tsr4:clrflag1;清标志位,表示ds1820不存在ljmptsr7tsr5:movr0,#117tsr6:djnzr0,tsr6;时序要求延时一段时间tsr7:setbdq

47、retget_temper:setbdq;读出转换后的温度值lcallinit_1820;先复位ds18b20jbflag1,tss2ret;判断ds1820是否存在?若ds18b20不存在则返回tss2:mova,#0cch;ds18b20已经被检测到!跳过rom匹配lcallwrite_1820mova,#44h;发出温度转换命令lcallwrite_1820lcalldisplay;这里通过调用显示子程序实现延时一段时间,等待ad转换结束,12位的话750微秒lcallinit_1820;准备读温度前先复位mova,#0cch;跳过rom匹配lcallwrite_1820mova,#0b

48、eh;发出读温度命令lcallwrite_1820lcallread_18200;将读出的温度数据保存到35h/36hretwrite_1820:movr2,#8;一共8位数据clrc;写ds18b20的子程序(有具体的时序要求)wr1:clrdqmovr3,#6djnzr3,$rrcamovdq,cmovr3,#23djnzr3,$setbdqnopdjnzr2,wr1setbdqretread_18200:movr4,#2;将温度高位和低位从ds18b20中读出movr1,#29h;低位存入29h(temper_l),高位存入28h(temper_h)re00:movr2,#8;数据一共有

49、8位re01:clrc;读ds18b20的程序,从ds18b20中读出两个字节的温度数据setbdqnopnopclrdqnopnopnopsetbdqmovr3,#9re10:djnzr3,re10movc,dqmovr3,#23re20:djnzr3,re20rrcadjnzr2,re01movr1,adecr1djnzr4,re00ret;/上面的这些都是温度采集的!display:mova,29h;将29h中的十六进制数转换成10进制movb,#10;10进制/10=10进制divab;显示子程序mova_bit,a;十位在amovb_bit,b;个位在bmovdptr,#numtab;指定查表启始地址movr0,#1dpl1:movr1,#25;显示1000次dplop:mova,b_bit;取个位数movca,a+dptr;查个位数的7段代码movp0,a;送出个位的7段代码clrp2.2;开个位显示acalld1ms;显示1mssetbp2.2mova,a_bit;取十位数movca,a+dptr

温馨提示

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

评论

0/150

提交评论