基于at89s52单片机水温控制器的设计内容摘要:
5输出端要并联上一个电解电容,滤除交流电干扰 ,防止损坏单片机系统。 本设计采用 两种供电方式, 一种为 DC7~18V直流稳压电源变换成 5V的直流电;另一种为 四节干电池 共 6V经二极管加压后得到将近5V的直流电源 , 电源 配以开关和指示灯,以方便使用。 黄色发光二极管表示保温,红色的表示加热状态。 9 9 V C CD2I N 4 00 71122J22PGND2+ V C C 12 V1GND3J1电源座+ V C C 12 VD1I N 4 00 7IN1GND2OUT3U1L 78 0 5( 大 )12+ C122 0 U FV C CR11K1 2D3LED 图 311 系统电源设计图 报警电路设计 同时可以在系统里设定温度上限值, 由于加热停止后,加热管还有余热 当采集到的外界温度高于当前所设定温度上限值时, 程序就会进入报警子程序,触发蜂鸣器进行报警。 报警电路原理图如图所示。 VC CR 19 KE1C3B2Q4855 0FM 1B E L LP 图 312 报警电路 图 图中的三极管 8550的作用是增加驱动能力,比 9012的驱动电流还大些,因此选用8550。 当程序进入报警子程序时,把 0,就会触发蜂鸣器, 为了使报警声音效果更好,对 , 发出报警 嘟噜 声音。 4 系统 软件设计 本系统采用的是循环查询方式,来显示和控制温度的。 主要包括 四 段程序的设计: DS18B20读温度程序,数码管的驱动程序,键盘扫描程序,以及 抱经处理 程序。 主程序 流程图 10 10 实 测 温 度 = 预 设 温 度 保 温 指 示 灯 亮 , 停 止 加 热 加 热 指 示 灯 亮 , 开 始 加 热设 置 温 度。 温 度 ‘ + ’预 设 温 度 加 5 温 度 ‘ ’预 设 温 度 减 5设 置 完 成。 加 热控 制实 测 温 度 预 设 温 度加 热控 制读 1 8 B 2 0温 度 转 换显 示 温 度实 测 温 度 = 预 设 温 度 加 热 指 示 灯 亮 , 开 始 加 热实 测 温 度 预 设 温 度保 温 指 示 灯 亮 , 停 止 加 热YYYNNYYNNNNNYY图 41 主程序流程 11 11 各个模块的流程图 读取温度 DS18B20 模块的流程 由于 DS18B20采用的是一根数据线实现数据的双向传输,而对 AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对 DS18B20芯片的访问。 DS18B20单线通信功能是分时完成的,它有严格的时隙概念。 因此系统对 DS18B20的各种操作必须按协议进行。 操作协议为:初始化 DS18B20(发复位脉 冲) → 发 ROM功能命令 → 发存储器操作命令 → 处理数据 DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点, DS18B20必须首先调用启动温度转换函数,根据数据手册上对应转换时间来超作,如为 12位转换,则应该是最大 750mS,另外在对 DS18B20超作时,时序要求非常严格,因此最好禁止系统中断。 由于 DS18B20是在一根 I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。 DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。 该协议定义了几种信号的时序:初始化时序、 读时序、写时序。 所有时序都是将主机作为主设备,而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。 数据和命令的传输都是低位在先。 DS18B20的读时序: ( 1)对于 DS18B20的读时序分为读 0时序和读 1时序两个过程。 ( 2)对于 DS18B20的读时隙是从主机把单总线拉低之后,在 15秒之内就得释放单总线 ,以让 DS18B20把数据传输到单总线上。 DS18B20在完成一个读时序过程,至少需要60us才能完成。 DS18B20的写时序 : ( 1)对于 DS18B20的写时序仍然分为写 0时序和写 1时序两个过程。 ( 2)对于 DS18B20写 0时序和写 1时序的要求不同,当要写 0时序时,单总线要被拉低至少 60us,保证 DS18B20能够在 15us到 45us之间能够正确地采样 IO总线上的 “ 0” 电平,当要写 1时序时,单总线被拉低之后,在 15us之内就得释放单总线。 系统程序设计主要包括三部分:读出温度子程序 、 温度转换命令子程序 、显示温度子程序。 12 12 开 始初 始 化D S 1 8 B 2 0 存 在 吗。 R O M 操 作 命 令存 储 操 作 命 令读 取 温 度 值返 回YN 图 42 读取温度 DS18B20 模块的流程 图 程序代码为: GET_TEMPER: SETB DQ。 读出转换后的温度值 LCALL INIT_1820。 先复位 DS18B20 JB FLAG1,TSS2 RET。 判断 DS1820 是否存在 ?若 DS18B20 不存在则返回 TSS2: MOV A,0CCH。 DS18B20 已经被检测到 !!!!!!!!!!!!!!!跳过 ROM 匹配 LCALL WRITE_1820 MOV A,44H。 发出温度转换命令 LCALL WRITE_1820 LCALL DISPLAY。 这里通过调用显示子程序实现延时一段时间 ,等待 AD 转换结束 ,12 位的话 750 微秒 LCALL INIT_1820。 准备读温度前先复位 MOV A,0CCH。 跳过 ROM 匹配 LCALL WRITE_1820 MOV A,0BEH。 发出读温度命令 LCALL WRITE_1820 LCALL READ_18200。 将读出的温度数据保存到 35H/36H RET 13 13 键盘扫描处理流程 此流程为键盘扫描处理, CPU通过检测各数据线的状态 (0或 1)就能知道是否有按键闭合以 及哪个按键闭合。 键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,消除抖动,根据键号转到相应的键处理程序,按键流程图如图 43所示。 开 始温 度 设 置 键 是 否 按 下 ?调 设 置 功 能 子 程 序温 度 + 5 键 是 否 按 下 ?温 度 5 键 是 否 按 下 ?返 回 键 是 否 按 下 ?调 温 度 + 5 功 能 子 程 序调 温 度 5 功 能 子 程 序调 显 示 子 程 序返 回 主 程 序YNNYYYN温 度 设 置 键 是 否 按 下 ?YNNYN 图 43 键盘扫描子程序流程图 报警处理流程 运行程序后,温度传感器 DS18B20即可对环境进行温度采集,并送 LED数码管显示。 我们可以在程序里设定温度上限值,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。 其程序流程图如图 44所示。 14 14 开 始P 2 . 7 取 反 , 启 动 蜂 鸣 器不 启 动 蜂 鸣 器 ,正 常 显 示 温 度进 行 温 度 比 较 , 超 过 上 限 值。 NY 图 44 报警子程序流程图 15 15 5 系统调试 硬件电路调试 仔细检查所接电路,按照硬件原理图接线,理论上是能实现的,如果数码管不显示,则应该检查线路是否正确,或是因为单片机没有工作,还有 集电极和发射极 是否接对。 如果只显示两 个八,则可能是 DS18B20没有接正确,检查上拉电路是否接好。 另外要注意的是,由单片机输出的控制信号比较小,需要进行放大才能驱动继电器工作,否则就不能实现升温过程,通常选用 8550三极管来进行放大。 还有 220V交流。基于at89s52单片机水温控制器的设计
相关推荐
P2 端口写“ 1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。 作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 在访问外部程序存储器或用 16 位地址读取外部数据存储器时, P2 口送出高八位地址。 在这种应用中, P2 口使用很强的内部上拉发送 1。 在使用 8 位地址访问外部数据存储器时, P2 口输出 P2 锁存器的内容。 在 flash 编程和校验时,
为了粗略地得到被测量的电压范围我们采用多组比较器的方式,通过阶梯式比较的方法确定输入电压的范围。 其具体电路如下图( )所示。 图 电压范围粗测电路 继电器 8开关状态常态时为正,当输入电压 Ui为负时继电器 8在单片机的控制下工作,进行反向放大成正电压后通过比较器检测,输出数据送给单片机 P1口。 则根据其设计原理:输入电压的范围与 P1口对应的数据如下表所示。 电压范围
而保证通信数据的正确性。 当 DS18B20 接收到温度转换命令后,开始启动转换。 转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 2 字节。 单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以 ℃/ LSB 形式表示。 当符号位 S= 0 时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位 S= 1 时
T89S52单片机的遥控器设计 11 时钟电路 单片机的时钟电路由振荡电路和分频电路组成, 其振荡电路由反相器以及幵联外接的石英晶体和电容组成,用亍产生振荡脉冲。 分频电路用亍把振荡脉冲分频,以的到所需要的时钟信号。 振荡电路如图 33 所示 : 图 33 振荡电路 寄存器 名称 复 位 状 态 寄存器 名称 复 位 状 态 PC 0000H TCON 00H A 00H T2CON 00H B
+℃,完全能够满足精度要求。 这里我们采用 ADC0809 作为 A/D 转换器。 电路设计好后,调整变送器的输出,使 0℃~500℃ 的温度变化对应于 0~ V 的输出,则 A/D 转换对应的数字量为 00H~ FAH,即 0~ 250,则转换结果乘以 2 正好是温度值。 用这种方法一方面可以减少标度转换的工作量,另一方面还可以避免标度转换带来的计算误差。 ADC0809
24MHz。 (6) 三级程序存储器锁定。 (7) 128 8 位内部 RAM。 (8) 32 可编程 I/O 线。 (9) 两个 16 位定时器 /计数器。 (10) 5 个中断源。 (11) 可编程串行通道。 (12) 低功耗的闲置和掉电模式。 (13) 片内振荡器和时钟电路。 3. 管脚说明 VCC:供电电压。 GND:接地。 P0 口 : P0 口为一个 8 位漏极开路双向 I/O 口