课程设计(论文)-智能温度测量仪表方案设计.doc_第1页
课程设计(论文)-智能温度测量仪表方案设计.doc_第2页
课程设计(论文)-智能温度测量仪表方案设计.doc_第3页
课程设计(论文)-智能温度测量仪表方案设计.doc_第4页
课程设计(论文)-智能温度测量仪表方案设计.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

目录前言0第一章 智能温度测量仪表方案设计与论证11.1 功能与要求11.2 方案2第二章 智能温度测量仪表的硬件设计22.1 系统硬件框图22.2系统的输入通道设计22.2.1 ds18b20特征与外部引脚32.2.2 ds18b20的外形和内容结构42.2.3 ds18b20引脚定义42.2.4 ds18b20工作原理42.2.5 ds18b20使用中注意事项42.3系统的输出通道设计52.3.1 pnp三极管855052.3.2 hk400-5vdc继电器52.4人机接口电路62.4.1 四位一体共阴数码显示模块72.4.2 4*4矩阵键盘72.5数码管驱动及键盘控制芯片ch45182.6单片机最小系统122.7stc89c51单片机最小系统元件清单13第三章 系统调试与软件设计143.1 软件设计143.2 调试143.3上位机软件设计14第四章 设计体会与小结16参考文献17附录18前言随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于at89c51单片机的测温系统,描述了利用温度传感器ds18b20测温系统的过程,对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了分析,对各部分的电路也一一进行了介绍,进行相应外围接口设计,其中包括:数据输入通道、输出通道、人机接口电路以及通信接口电路等,最终完成一个简单智能仪器的设计过程。该系统可以方便的实现温度采集和显示,灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。本次设计主要以温度为测量对象,利用实验室可以提供的设备平台、仪器仪表、常见芯片,基于实验室已有的stc89c51单片机最小系统,进行相应外围接口设计,其中包括:数据输入通道、输出通道、人机接口电路以及通信接口电路等,最终完成一个简单智能仪器的设计过程。通过本次设计学习,可以理解并掌握仪器整机系统的概念,将智能仪器软硬件相结合的基本工作原理、主要技术和设计方法运用到具体的系统设计中去,提高综合运用所学知识与技术进行仪器设计的实践创新能力,使学生通过实践锻炼,具有扎实的系统电路设计基础和在实践中发现并解决问题的能力。第一章 智能温度测量仪表方案设计与论证1.1 功能与要求功能基于单片机的温度测控系统分为上位机和下位机两部分。其中上位机应可通过虚拟仪器的前置面板界面显示温度数据,若温度超过设定温度,在显示屏上进行报警提示。而下位机则是可以利用单片机对温度传感器采集到的温度数据及时采样,并在数码管上显示,用矩阵键盘来控制和设定温度值,并将采集到的温度数据通过串口传到上位pc机。要求:.学生自行设计硬件电路并焊接电路板.编写上位机虚拟仪器和下位机程序.实现温度测控并进行系统功能测试1.2 方案 通过温度传感器ds18b20来实现。 ds18b20单片机 图1.1 方案2的系统方框图本方案的优点是可直接将采集值进行处理得到数字量送入单片机数码管显示并通过串口送至上位机。第二章 智能温度测量仪表的硬件设计2.1 系统硬件框图本设计是通过温度传感器ds18b20直接将采集值进行处理得到数字量送入单片机。单片机输出信号作用在继电器上,来控制被测对象温度值的升高或降低。最后将转换后的数字信号经单片机进行数字滤波,得到温度值。同时可以通过矩阵键盘进行控制,通过led进行显示。系统硬件方框图如图2.1所示。ds18b20hk400-5vdc继电器单片机 89c51max232上位机ch451(4*4)键盘4位led被测对象图2.1系统硬件框图2.2系统的输入通道设计本系统输入通道作用是将温度转换为数字信号传给单片机。其组成包括:温度传感器ds18b20和一个10k电阻。具体电路如图2.2所示。图2.2 输入通道的设计电路2.2.1 ds18b20特征与外部引脚数字温度传感器ds18b20介绍 图2.3ds18b20图片 图2.4 ds18b20引脚图ds18b20的主要特性 1.1、适应电压范围更宽,电压范围:3.05.5v,在寄生电源方式下可由数 据线供电 1.2、独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯 1.3、 ds18b20支持多点组网功能,多个ds18b20可以并联在唯一的三线上,实现组网多点测温 1.4、ds18b20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 1.5、温范围55125,在-10+85时精度为0.5 1.6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 1.7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 1.8、测量结果直接输出数字温度信号,以一 线总线串行传送给cpu,同时可传送crc校验码,具有极强的抗干扰纠错能力 1.9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。2、ds18b20引脚定义:(1)dq为数字信号输入/输出端; (2)gnd为电源地; (3)vdd为外接供电电源输入端(在寄生电源接线方式时接地)。 2.2.2 ds18b20的外形和内部结构ds18b20内部结构主要由四部分组成:64位光刻rom 、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。 2.2.3ds18b20引脚定义: (1)dq为数字信号输入/输出端; (2)gnd为电源地; (3)vdd为外接供电电源输入端(在寄生电源接线方式时接地)。 图2.5 ds18b20内部结构图2.2.4 ds18b20工作原理 ds18b20的读写时序和测温原理与ds1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。 2.2.5 ds1820使用中注意事项 ds1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: 6.1、较小的硬件开销需要相对复杂的软件进行补偿,由于ds1820与微处理器间采用串行数据传送,因此 ,在对ds1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用pl/m、c等高级语言进行系统程序设计时,对 ds1820操作部分最好采用汇编语言实现。2.3系统的输出通道设计本系统输出通道作用是来控制被测对象温度值的升高或降低。控制信号从单片机的p2.0口输出,接至pnp型三极管的基极。继电器的绕圈分别接地和pnp三极管集电极,同时绕圈两端还并联有发光二极管,用以直观显示控制信号的变化。为了保护电路,在继电器绕圈两端并联有一个390 电阻。具体电路如图2.4所示。图2.6 输出通道的电路设计2.3.1 pnp三极管85508550是一种常用的普通三极管。它是一种低电压,大电流,小信号的pnp型硅三极管。如图2.5为三极管的引脚图。图2.7 8550引脚图8550参数: 集电极-基极电压vcbo:-40v 工作温度:-55 to +1502.3.2 hk400-5vdc继电器电气参数如下:触点形式:1c(spdt)触点负载: 3 a 250 vac/30 vdc阻 抗: 100m额定电流: 3a电气寿命:10万回机械寿命:1000万回线圈参数:阻值(士10%): 120线圈功耗:0.2w额定电压:dc 5v吸合电压:dc 3.75v释放电压:dc 0.5v工作温度:-25+70绝缘电阻:100m线圈与触点间耐压:1000vac/1分钟触点与触点间耐压:500vac/1分钟2.4人机接口电路本电路的作用是实现温度显示,温度设定。组成模块有4位集成数码显示,4*4键盘等。在该人机接口电路的设计中,ch451为该模块电路的核心器件,功能相对完善。ch451不仅能有效的将采集到的温度值通过数码管进行实时显示;并且还能控制矩阵键盘,读取通过按键获得的温度设定值,一方面可将设定值直接显示,另一方面还能传输给单片机;同时通过ch451芯片控制键盘输入和数码显示,还可有效的节省单片机p口的使用,方便单片机的扩展设计。具体电路如图2.6所示。图2.8 人机接口电路的设计2.4.2 四位一体共阴数码显示模块本实验人机接口电路采用lg3641ah型四位一体共阴极数码管进行显示。引脚图如图2.7所示:图2.9 lg3641ah引脚图上图中,从左至右,依次为数码管1、2、3、4。这四个数码管被集成为一个模块,各数码管的的段码数据线连在一起,都由上图中外部引脚a-h决定。图中gnd1-gnd4为各数码管的位选择引脚,当其中一个信号为低电平时,则相应位的数码管被选通点亮。由于lg3641ah 为共阴极数码管, a-h管脚上若输出高电平,则相应段码被点亮。为了避免单片机输出的高电平电压过高使数码管烧坏,应分别在a-h管脚上接200电阻分压。lg3641ah七段led码如下表所示:表2.12.4.3 4*4矩阵键盘为了简化设计电路,本实验使用已集成好的4*4矩阵键盘模块。它是用4条i/o线作为行线,4条i/o线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是44个。这种行列式键盘结构能够有效地提高单片机系统中i/o口的利用率。该矩阵键盘模块接口共有9根数据线,从左至右,依次为:公共数据端、1-4列数据选择端、4-1行数据选择端。按键排序图如图2.10,其原理图如图2.11所示:, 图2.11 按键排序图图2.11 矩阵键盘原理图实际设计中,按不同的键运用万用表测量导通的信号线,可推出各引脚的作用。2.5 数码管驱动及键盘控制芯片 ch451ch451 是一个整合了数码管显示驱动和键盘扫描控制的多功能外围芯片。ch451内置 rc 振荡电路,可以动态驱动8位数码管或者64位 led ,具有 bcd 译码、闪烁、移位等功能;同时还可以进行64键的键盘扫描;ch451 通过 1线或者可以级联的4线串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。其引脚图如图2.12所示:图2.12 ch451引脚图各引脚说明如下表所示:表2.2引脚号引脚名称类型引脚说明2vcc电源正电源,持续电流不小于200ma15gnd电源接地,持续电流不小于200ma4load输入4 线串行接口的数据加载,带上拉5din输入4 线串行接口的数据输入,带上拉6dclk输入串行接口的数据时钟,带上拉 同时用于看门狗的清除输入3dout输出串行接口的数据输出和键盘中断1、 2418seg7 seg0三态输出及输入数码管的段驱动,高电平有效, 键盘扫描输入,高电平有效,带下拉714dig7 dig0输出数码管的字驱动,低电平有效,键盘扫描输出,高电平有效16rst输出上电复位和看门狗复位,高电平有效17n.c.不连接,禁止使用 显示驱动ch451对数码管和发光管采用动态扫描驱动,顺序为dig0至dig7,当其中一个引脚吸入电流时,其它引脚则不吸入电流。ch451内部具有大电流驱动级,可以直接驱动0.5英寸至 2 英寸的共阴数码管,段驱动引脚 seg6seg0 分别对应数码管的段 g段 a,段驱动引脚 seg7 对应数码管的小数点,字驱动引脚 dig7dig0 分别连接 8 个数码管的阴极。ch451支持扫描极限控制,并且只为有效数码管分配扫描时间。当扫描极限设定为1时,唯一的数码管dig0将得到所有的动态驱动时间,从而等同于静态驱动;当扫描极限设定为 8 时,8 个数码管 dig7dig0 各得到 1/8 的动态驱动时间;当扫描极限设定为 4时,4个数码管 dig3dig0各得到1/4的动态驱动时间,此时各数码管的平均驱动电流将比扫描极限为8时增加一倍,所以降低扫描极限可以提高数码管的显示亮度。ch451 内部具有 8 个 8 位的数据寄存器,用于保存 8 个字数据,分别对应于 ch451 所驱动的8 个数码管。 ch451支持数据寄存器中的字数据左移、右移、左循环、右循环,并且支持各数码管的独立闪烁控制,在字数据左右移动或者左右循环移动的过程中,闪烁控制的属性不受影响。通过设定,ch451可以工作于bcd译码方式,该方式主要应用于数码管驱动,单片机只要给出二进制数 bcd 码,由 ch451 将其译码后直接驱动数码管显示对应的字符,简化了单片机译码的工作。bcd译码方式是指对数据寄存器中字数据的位4位0进行兼容bcd的译码,控制段驱动引脚seg6seg0的输出,对应于数码管的段 g段 a,同时用字数据的位 7 控制段驱动引脚 seg7 的输出,对应于数码管的小数点,字数据的位 6 和位 5 不影响 bcd 译码的输出,可以是任意值。下表为数据寄存器中字数据的位4位0进行bcd译码后,所对应的段g段a以及数码管显示的字符。表2.3 键盘扫描ch451 的键盘扫描功能支持 88 矩阵的 64 键键盘。在键盘扫描期间,dig7dig0引脚用于列扫描输出,seg7seg0 引脚都带有内部下拉,用于行扫描输入;当启用键盘扫描功能后,dout引脚的功能由串行接口的数据输出变为键盘中断以及数据输出。 ch451 定期在显示驱动扫描过程中插入键盘扫描。在键盘扫描期间,dig7dig0 引脚按照dig0 至dig7的顺序依次输出高电平,其余7个引脚输出低电平;seg7seg0引脚的输出被禁止,当没有键被按下时,seg7seg0都被下拉为低电平;当有键被按下时,例如连接 dig3 与 seg4 的键被按下,则当 dig3 输出高电平时 seg4 检测到高电平;为了防止因为按键抖动或者外界干扰而产生误码,ch451实行两次扫描,只有当两次键盘扫描的结果相同时,按键才会被确认有效。如果 ch451 检测到有效的按键,则记录下该按键代码,并通过dout引脚产生低电平有效的键盘中断,此时单片机可以通过串行接口读取按键代码;在没有检测到新的有效按键之前,ch451不再产生任何键盘中断。ch451不支持组合键,也就是说,同一时刻,不能有两个或者更多的键被按下。ch451所提供的按键代码为7位,位2位0是列扫描码,位5位3是行扫描码,位 6 是状态码(键按下为 1,键释放为 0)。例如,连接 dig3 与 seg4 的键被按下,则按键代码是1100011b 或者63h,键被释放后,按键代码是0100011b或者23h,其中,对应dig3的列扫描码为011b,对应seg4的行扫描码为100b。单片机可以在任何时候读取按键代码,但一般在 ch451 检测到有效按键而产生键盘中断时读取按键代码,此时按键代码的位6总是1,另外,如果需要了解按键何时释放,单片机可以通过查询方式定期读取按键代码,直到按键代码的位6为0。下表是连接在dig7dig0与seg7seg0之间的键被按下时,ch451所提供的按键代码。这些按键代码具有一定的规律,如果需要键被释放时的按键代码,则将表中的按键代码的位6置0,或者将表中的按键代码减去40h。表2.4 串行接口ch451具有硬件实现的高速4线串行接口,包括4根信号线:串行数据输入线din、串行数据时钟线dclk、串行数据加载线load、串行数据输出线dout。其中,din、dclk、load是带上拉的输入信号线,默认是高电平;dout在未启用键盘扫描功能时作为串行数据输出线,在启用键盘扫描功能后作为键盘中断和数据输出线,默认是高电平。 din 用于提供串行数据,高电平表示位数据1,低电平表示位数据0,串行数据输入的顺序是低位在前,高位在后。单片机可以在dclk高电平期间变化din的电平,如果必要也可以在 dclk 低电平期间变化 din 的电平。另外,在上电复位后,ch451 默认选择 1 线串行接口,所以单片机必须在dclk输出串行时钟之前,先在din上输出一个低电平脉冲(由高电平变为低电平再恢复为高电平) ,通知ch451选择4线串行接口。 dclk 用于提供串行时钟,ch451 在其上升沿从 din 输入数据,在其下降沿从 dout输出数据。ch451内部具有12位移位寄存器,在dclk的上升沿,din上的位数据被移入移位寄存器的最高位寄存器,以此类推,原次低位数据移入最低位寄存器,在该上升沿后的第一个下降沿,原次低位数据从dout输出。ch451允许dclk引脚的串行时钟频率大于10mhz,从而可以实现高速串行输入输出。load 用于加载串行数据,ch451在其上升沿加载移位寄存器中的12位数据,作为操作命令分析并处理。也就是说,load 的上升沿是串行数据帧的帧完成标志,此时无论移位寄存器中的 12位数据是否有效,ch451都会将其当作操作命令。 单片机向ch451输出串行数据的过程是(不是唯一的过程,可以有很多变化): 输出一位数据,即向 din 输出最低位数据b0,并向 dclk 输出低电平脉冲(从高电平变为低电平再恢复为高电平),其中包括一个上升沿使 ch451 输入位数据; 以同样的方式,输出位数据b1b11; 向load输出低电平脉冲,其中包括一个上升沿使ch451加载串行数据。可以将以b0b1b2b3b4b5b6b7b8b9b10b11作为上述过程的简化描述,其中,代表dclk的上升沿,代表load的上升沿,b0b11分别代表1 位数据,如果是字符0或1则对应din输入的位数据,如果是字符l或h则对应dout输出的位数据0 或1。在未启用键盘扫描功能时,dout 用于输出串行数据,移位寄存器中的最低位数据总是在dclk的下降沿出现在dout引脚。当启用键盘扫描功能后,dout 用于键盘中断和数据输出,默认是高电平。当 ch451检测到有效按键时,dout 输出低电平有效的键盘中断;单片机被中断后,发出读取按键代码命令,ch451在load的上升沿后从dout输出7位按键代码的最高位;单片机继续输出串行时钟,在dclk的每个下降沿,ch451依次从dout输出7位按键代码的剩余6位,顺序是高位在前,低位在后;7 位按键代码输出完毕后,无论 dclk 如何变化,ch451 都将dout恢复为默认的高电平。单片机从ch451获得按键代码的过程是: 输出一位数据,即向din输出读取按键代码命令的最低位数据b0,并向dclk输出低电平脉冲; 以同样的方式,输出读取按键代码命令的位数据b1b11; 向 load 输出低电平脉冲,其中包括一个上升沿使 ch451 加载串行数据,ch45分析出是读取按键代码命令,立即在dout输出按键代码的最高位数据k7; 读取一位数据,即从 dout 输入按键代码的最高位数据 k7,并向 dclk 输出低电平脉冲; 以同样的方式,输入按键代码的位数据k6k0。实际上,ch451 的读取按键代码命令只有位数据 b8b11 是有效的,所以为了节约时间,单片机发出的读取按键代码命令只需要 4 位数据,而不必发送 b0b7。例如,按键代码是 63h,则上述过程的简化描述是 1110hhlllhh,即先向 ch451 发出读取按键代码命令0111xxxxxxxxb,然后从dout接收按键代码1100011b。 操作命令ch451 的操作命令均为 12 位,下表列出了 ch451 的各个操作命令所对应的 12 位串行数据。其中,标注为 x 的位表示该位可以是任意值;标有名称的位表示该位在 ch451芯片内部具有相应的寄存器,其数据根据操作命令的不同而变化。2.5单片机最小系统本部分的作用是处理数据,控制各器件。组成包括89c52单片机,时钟电路,复位电路。其具体电路如图2.9所示。图2.13 单片机最小系统电路3. stc89c51单片机最小系统元件清单表2.4分类元件编号元件内容数量电容电阻c510uf(电解)1c1-c31uf(电解)41040.1(陶瓷)330p30pf2r1(系统板)4701r1-r4(扩展板)1004r5-r8(扩展板)3.3k4r2-r6(系统板)1k5rj1-rj21k排阻(9口)2芯片u1stc89c511u374ls001u1-u41644u2max232cpe1按键k、s1-s1666小按键17k1-k488不带锁按键3ledl1-l8、power红黄绿各3个9seg1-seg4共阳数码管4二极管1n40071n40072接插件j2usb延长线1usb供电口1j1串口线1db9串口座1j2电源插线口111.0592mhz11.0592m晶振1芯片座u1dip-401u3(系统板)、u1-u4dip-145u2dip-161p0-p3/j1-j2单排针40针2其他10芯排线长15018芯排线长1501pcb板系统板1pcb板扩展板1第三章 系统调试与软件设计3.1 软件设计本系统软件编写部分,主要包括以下几个功能:实现温度值的采集与显示、按键定温度值的读取,以及继电器控制信号的正确输出,功能十分全面、系统。具体包括以下内容:温控系统开机后则自动采集实时温度并进行显示;矩阵键盘中的a键为设定温度的功能键,若按下a键则可来时设定温度;随后单片机会不断将实时温度值与设定温度值进行比较,若实时温度值小于设定温度值则控制继电器开关不动作继续加热,若实时温度值大于设定温度值则控制继电器开关动作停止加热。其主程序图如图3.1所示。图3.1 主程序流程图3.2 调试 将各个硬件电路搭建成一个完整的温控系统,并进行调试。根据所搭建的系统,编写相应的软件程序并将各模块调用的子程序进行整合,使其系统化、规范化。运用编译软件keil和烧写软件进行编译下载。3.3上位机软件设计通过max232实现串口通讯,下位机将数据发送到到上位机。上位机可以利用其相对强大的数据处理能力将数据进一步处理,让后输出显示,也可以实现远程控制。本出只是将数据上传,让后以波形,数字和温度计形式显示出来。此处运用labview软件实现,其程序图如图3.3。前置面板如图3.2。图3.2 上位机前置面板图3.3 上位机程序图第四章 设计体会与小结通过2周的智能仪器课程设计,我更好地掌握了智能仪器的组成及工作原理、硬件和软件系统的设计方法、基本智能化功能的实现方法、整机设计与调试的方法等。进一步加强自己独立分析、解决问题的能力,同时注意培养自己实事求是、严肃认真的科学作风和良好的实验习惯,为今后工作打下良好的基础。培养并提高自己综合运用所学知识与技术进行仪器设计的实践创新能力,使自己通过实践锻炼,具有较扎实的系统电路设计基础和在实践中发现并解决问题的能力。这次智能温度测量仪表的设计让我获得了课本中难以学到的经验。要做一块智能温度测量仪表的电路板,就那么几个元件,本以为很简单,确在第一步布局上花了不少时间,因为我想使整体布局合理美观,所需连接的导线尽可能的少些,所需焊接的距离短些。在焊接的过程中也有一些小困难,有的时候容易造成短路,有时候又会造成虚焊。并且想焊接得漂亮点也要花不少精力。在安装ds18b20等元件时必须注意各脚是否正确安装。焊接好电路板后,将单片机最小系统用杜邦线与做好的电路板相连,利用keil软件将程序写入89c51中并运行。温控系统开机后则自动采集实时温度并进行显示;矩阵键盘中的a键为设定温度的功能键,若按下a键则可来时设定温度;随后单片机会不断将实时温度值与设定温度值25度进行比较,若实时温度值小于设定温度值则控制继电器开关不动作继续加热,若实时温度值大于设定温度值则控制继电器开关动作停止加热。参考文献1) 智能仪器设计基础史建芳等编著,北京:电子工业出版社,2007,92) 智能仪器设计基础赵新民.哈尔滨工业大学出版社,20013) 智能仪器原理与设计技术凌志浩等.上海:华东理工大学出版社,20034) 微机原理试验指导书 武汉理工大学华夏学院 ,20065) 传感与检测技术 戴卓主编, 武汉理工大学出版社,20036) 测控系统电子技术严令主编,科学出版社,20077) labview8.20程序设计从入门到精通陈锡辉,张银鸿编著,清华大学出版社,20078) 单片微型计数机与接口技术(第2版)李群芳,张士军,黄 建 编著,电子工业出版社,2005附录该温度控制系统具体源程序如下所示: /*/* ch451功能宏定义 */*/#define ch451_reset 0x0201 /复位#define ch451_leftmov 0x0300 /设置移动方式-作移#define ch451_leftcyc 0x0301 /设置移动方式-左循#define ch451_rightmov 0x0302 /设置移动方式-右移#define ch451_rightcyc 0x0303 /设置移动方式-右循#define ch451_sysoff 0x0400 /关显示、键盘、看门狗#define ch451_syson1 0x0401 /开显示#define ch451_syson2 0x0403 /开显示、键盘#define ch451_syson3 0x0407 /开显示、键盘、看门狗功能#define ch451_dsp 0x0500 /设置默认显示方式#define ch451_bcd 0x0580 /设置bcd译码方式#define ch451_twinkle 0x0600 /设置闪烁控制#define ch451_dig0 0x0800 /数码管位0显示#define ch451_dig1 0x0900 /数码管位1显示 #define ch451_dig2 0x0a00 /数码管位2显示#define ch451_dig3 0x0b00 /数码管位3显示#define ch451_dig4 0x0c00 /数码管位4显示#define ch451_dig5 0x0d00 /数码管位5显示#define ch451_dig6 0x0e00 /数码管位6显示#define ch451_dig7 0x0f00 /数码管位7显示#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include#include#define uchar unsigned char#define uint unsigned int/*/* 定义端口 */*/sbit relay=p20;sbit ch451_dclk=p21; /串行数据时钟上升延激活sbit ch451_din=p22; / 串行数据输出,接ch451的数据输入sbit ch451_load=p23;sbit ch451_dout=p33; /int1,键盘中断和键值数据输入,接ch451的数据输出sbit dq=p24; /ds18b20 端口unsigned char showtemp3=0,3,6; /用于存储要显示的温度数据 高位在前unsigned char flag=0;unsigned char ch451_key=0;sfr dataled=0x80 ;/显示数据端口unsigned char setb=0; /*/* 全局变量 */*/uint temp;uchar flag_get,count,num,minute,second;uchar str6;/*/* 函数声明 */*/void delay1(uchar ms);unsigned int readtemperature(void);void init_ds18b20(void);unsigned char readonechar(void);void writeonechar(unsigned char dat);void delay(unsigned int i);/*/* 向ch451传输数据 */*/输出命令子程序 /定义一无符号整型变量存储12字节的命令字。void ch451_write(unsigned int command) unsigned char i;#ifdef use_key ex1=0; /禁止键盘中断 #endif ch451_load=0; /命令开始 for(i=0;i=1; ch451_dclk=1; /上升沿有效 ch451_load=1; /加载数据 #ifdef use_key ex1=1; #endif/*/ ch451初始化子程序/* void ch451_init() p1=0x60;ch451_din=0; ch451_dclk=1; /先低后高,选择4线输入 ch451_din=1; ch451_load=1; ch451_dout=1; #ifdef use_key it1=0; /设置下降沿触发 ie1=0; /清中断标志 px1=1; /设置低优先级 ex1=1; /开中断 #endif/*/ 温度设定子程序/*void set_temp(void) /设定保温点 unsigned char i; ch451_write(ch451_dig0|showtemp0);/显示原来设定温度 ch451_write(ch451_dig1|showtemp1); ch451_write(ch451_dig2|showtemp2); /设定温度 ch451_write(ch451_twinkle|1); /闪烁 ex1=1; /允许键盘中断 while(flag=0); ex1=0; /禁止键盘中断 flag=0; showtemp0=ch451_key; /保存数据 ch451_write(ch451_dig0|showtemp0); /显示键值 ch451_write(ch451_twinkle); /停止闪烁 ch451_write(ch451_twinkle|2); ex1=1; /允许键盘中断 while(flag=0); ex1=0; /禁止键盘中断 flag=0; showtemp1=ch451_key; ch451_write(ch451_dig1|showtemp1); ch451_write(ch451_twinkle); ch451_write(ch451_twinkle|4); ex1=1; /允许键盘中断 while(flag=0); ex1=0; /禁止键盘中断 flag=0; showtemp2=ch451_key; ch451_wr

温馨提示

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

评论

0/150

提交评论