1、单片机家用水流量设计毕业教学环节成果 (2011届)题 目 基于51单片机的 家用水流量设计 学 院 信息工程学院 专 业 应用电子技术 班 级 应电082 学 号 * 姓 名 * 指导教师 * 2011年 5 月 10 日金华职业技术学院毕业教学成果 摘要 1引言 21 任务设计 32 系统硬件电路的设计 42.1 主芯片STC89C52 42.2 时钟电路 62.3 复位电路 72.4 电源电路 82.5 液晶显示电路 83.3 水流量程序模块 373.4 显示程序 393.5 小结 294 调试结果记录 304.1 温度测量 304.2 流量测量 305 总结 30附件3 仿真图 36附
2、件4 元件清单 37附件5 程序清单 38 基于51单片机的家用水流量设计信息工程学院应用电子技术 刘海清摘要:文以智能家居系统中的水流量模块为课题,以水流量计传感器和数字温度传感器DS18B20实时采集水流量状态和水温的数据,并根据主控器STC89C52的程序指令处理后计算出水费价格,用液晶屏LCD1602分当前温度、水价和水流总量三种状态动态显示。另外,本课题设计了上下限报警,使查看更为直观,使用更加方便。关键词: 单片机 DS18B20温度传感器 水流量传感器 Household Water-Flow Detection Circuit Design Based on 51 MCU(Ma
3、jor of Applied Electronic Technology,Information and Engineering college, JinHua College of Vocation And Technology, LIU Hai-qing)Abstract: Taking the smart home system in the water flow module is subject to water flow sensor and digital temperature sensor DS18B20 real-time acquisition state water f
4、low and water temperature data and program instructions according to master STC89C52 calculated after the price of water, with LCD TX-1602 points the current temperature, water flow volume and dynamic display of three states. In addition, the project design of the upper and lower alarm, so view is m
5、ore intuitive, easier to use.Keyword: microprocessor DS18B20temperature sensor water flow sensor 引言随着现代社会的进步,经济的发展,人们对精神领域的追求更高,对生活水平的要求更高。现代的家居生活是一种高品位、高质量、个性化、智能化的方式。本系统就是基于STC89C52单片机控制的智能家居系统,可以实际监控室内各种不同的家电设备,并能通过液晶屏动态显示当前工作状态。该系统与传统的智能家居系统相比,具有功能多样化、成本造价低等优点,且符合当今社会智能、节能、环保的发展观念,并在人们享受高品位、高质量、
6、个性化、智能化生活的同时提高人们的节约意识。由于智能家居系统有众多模块,本课题只采取其中的水流量模块进行单独设计。1 任务设计当打开水龙头时,根据单片机STC89C52的指令、水流量计传感器和数字温度传感器DS18B20实时采集水流量状态和水温的数据。当单片机STC89C52扫描到水流量计传感器的脉冲数,经过单片机STC89C52处理,计算出所采集的水流量后,通过液晶屏LCD1602能动态显示当前水流量、水费及水温。根据设计过程,可以将的本课题划分为8个电路模块如图1所所示:图1-1 电路总框图2 系统硬件电路的设计2.1 主芯片STC89C522.1.1 主要性能1 与MCS-52单片机产品
7、兼容 、8K字节在系统可编程Flash存储器2 1000次擦写周期3 全静态操作:0Hz33Hz 4 三级加密程序存储器 5 32个可编程I/O口线6 三个16位定时器/计数器八个中断源7 全双工UART串行通道8 低功耗空闲和掉电模式 9 掉电后中断可唤醒 10 看门狗定时器11 双数据指针12 掉电标识符 2.1.2 芯片功能特性简述:STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵
8、巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控
9、制器 8K字节在系统可编程 Flash。图2-1 单片机引脚2.1.3 引脚功能表2-1 STC89C52引脚介绍说明引脚功能介绍VCC+5V电源电压VSS电路接地端P0.0P0.78位漏极开路的双向I/O通道P2.0P2.78位拟双向I/O通道P3.0RXD,串行输入口P3.1TXD,串行输出口P3.2INT0,外部中断输入口P3.3INT1,外部中断输入口P3.4定时器/计数器外部事件脉冲输入端P3.5定时器/计数器外部事件脉冲输入端P3.6外部数据存贮器写脉冲P3.7外部数据存贮器读脉冲RST/VpD复位输入信号ALE/PROG地址锁存有效信号PSEN程序选通有效信号EA/VPP当保持T
10、TL高电平,执行内部EPROM的指令,当使TTL为低电平, 从外部程序存贮器取出所有指令,在内的EPROM编程时,此端为21编程电源输入端XTAL1内部振荡器外接晶振的一个输入端XTAL2内部振荡器外接晶振的一个输入端2.2 时钟电路单片机的最小系统有三部分组成,即电源,时钟电路和复位电路。其中单片机的电源引脚与5V电源连通即可,而时钟电路和复位电路还需接口扩展,这也是单片机的基本电路操作。时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在STC
11、89C52单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。在STC89C52芯片内部有一个高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。在单片机的XTAL1脚和XTAL2脚之间并接一个晶体振荡器就构成了内部振荡方式。STC89C52单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。在实际应用中通常还需要
12、在晶振的两端和地之间各并上一个小电容。图2-2 时钟电路用晶振和电容构成谐振电路。电容大小与晶振频率和工作电压有关。但电容的大小影响振荡器的稳定性和起振的快速性,为了提高精度,本实验板采用20pF的电容作为微调电容。在设计电路板时,晶振、电容等均应尽可能靠近芯片,减小分布电容,以保证振荡器振荡的稳定性。2.3 复位电路复位是单片机的初始化操作,其目的是使CPU和系统中各部分处于一个确定的状态,并从这一状态开始工作。系统上电路或死机后都要进行复位操作。单片机的RST引脚为复位引脚,振荡电路正常工作后,RST端加上持续两个机器周期的高电平后,单片机就被复位。复位电路有3种基本方式:上电复位,开关复
13、位和看门狗复位。图2-3 复位电路本课题采用按键开关复位是指通过接通按钮开关,使单片机进入复位状态。开关复位电路一般不单独使用。在应用系统设计中,若需使用开关复位电路,一般的做法是将开关复位与上电复位组合在一起形成组合复位电路,上电复位电路完成上电复位功能,开关复位电路完成人工复位。图2-3中C7与R1构成了上电复位电路。上电复位后,电源经R1对C7充满电源,C7等效于开路,RST端为低电平;单片机正常工作。按开关K1后,C7两端电荷经R1迅速放电,K1断开后,由C7、R1及电源完成对单片机的复位操作。在上述电路中C7、R1按上电复位电路的设计而取值。 复位电路的作用非常重要,能否成功复位关系
14、但单片机系统能否正常运行的问题。如果振荡电路正常而单片机系统不能正常运行,其主要原因是单片机没有完成正常复位,程序计数器的值没有回0,特殊功能寄存器没有回到初始状态。这时可以适当地调整上电复位电路的阻容值,增加其充电时间常数来解决问题。2.4 直流电源滤波电路单片机对于直流电源电压非常敏感,但是一般直流电源都存在一些杂波,通常是直流电压中的高频交流成分,消除电源中的高频交流成分对增强电路的性能具有较大作用。因而,我们设计了滤波电路,起到滤波的作用,从而更好的避免不必要的故障发生。滤波电路的基本原理是利用电容或电感的滤波特性,图2-4电源电路采用电容滤波。图中LED是用来指示电源接通的情况。图2
15、-4 电源电路2.5液晶显示电路课题任务要求以LCD1602芯片显示单片机处理后的温度、水费和水流量,在此有必要详尽的介绍LCD1602的特性和用法。2.5.1显示特性 1 只需5V 电源电压,低功耗、长寿命、高可靠性 2 内置 192 种字符(160个 57 点阵字符和 32 个510 点阵字符) 3 具有 64 个字节的自定义字符 RAM 4 显示方式:STN、半透、正显 5 驱动方式:1/16DUTY,1/5BIAS 6 视角方向:6点 7 背光方式:底部 LED 8 通讯方式:4位或 8 位并口可选 9 标准的接口特性:适配 MC51 和M6800 系列 MPU的操作时序。2.5.2引
16、脚说明表2-2 液晶1602引脚说明管脚号 符号功 能1Vss电源地(GND)2Vdd电源电压(+5V)3V0LCD驱动电压(可调) 寄存器选择输入端,输入MPU 选择模块内部寄存器类型信号:RS=0,当MPU 进行写模块操作,指向指令寄存器;4RS当MPU 进行读模块操作,指向地址计数器;RS=1,无论MPU 读操作还是写操作,均指向数据寄存器5R/WR/W=0 读操作;R/W=1 写操作6E使能信号输入端,输入MPU 读/写模块操作使能信号:4位方式通讯时,不使用DB0-DB37DB0数据输入/输出口,MPU 与模块之间的数据传送通道8DB1数据输入/输出口,MPU 与模块之间的数据传送通
17、道9DB2数据输入/输出口,MPU 与模块之间的数据传送通道10DB3数据输入/输出口,MPU 与模块之间的数据传送通道11DB4数据输入/输出口,MPU 与模块之间的数据传送通道12DB5数据输入/输出口,MPU 与模块之间的数据传送通道13DB6数据输入/输出口,MPU 与模块之间的数据传送通道14DB7数据输入/输出口,MPU 与模块之间的数据传送通道15A背光的正端+5V16K 背光的负端0V2.5.3 接口时序图2-5 时序图表2-3 液晶1602时序图标号说明时序参数符号极限值单位测试条件最小值典型值最大值E信号周期tc400ns引脚EE脉冲宽度Tpm150nsE上升沿/下降沿时间
18、Tr,tf25ns地址建立时间Tsp130ns引脚E、RS、RW地址保持时间Thd110ns数据建立时间(读操作)Td100ns引脚DB0DB7数据保持时间(读操作)Thd220ns数据建立时间(写操作)Tsp240ns数据保持时间(写操作)Thd210ns程序实现如下:/*写指令程序*/void wr_com(unsigned char com) /写指令 delay(1); /延时1ms RS=0; /写命令设置 RW=0; /并行数据的读写 EN=0; /使能为0 P2=com; /输入命令 delay(1); /延时1ms EN=1; /使能为1 delay(1); /延时1ms EN
19、=0; /使能为0 /*写数据程序*/void wr_dat(unsigned char dat)/ 写数据 delay(1); /延时1ms RS=1; /写数据设置 RW=0; /并行数据的读写 EN=0; /使能为0 P2=dat; /输入数据 delay(1); /延时1ms EN=1; /使能为1 delay(1); /延时1ms EN=0; /使能为02.5.4初始化指令:表2-4 清屏指令指令功能指令编码执行时间/msRSR/WDB7DB6DB5DB4DB3DB2DB1DB0清屏00000000011.64功能:1. 清除液晶显示器,即将DDRAM的内容全部填入空白的ASCII码
20、20H; 2. 光标归位,即将光标撤回液晶显示屏的左上方;3. 将地址计数器(AC)的值设为0。表2-5 光标归位指令指令功能指令编码执行时间/msRSR/WDB7DB6DB5DB4DB3DB2DB1DB0光标归位000000001X1.64功能:1. 把光标撤回到显示器的左上方; 2. 把地址计数器(AC)的值设置为0; 3. 保持DDRAM的内容不变表2-6 进入模式设置指令指令功能指令编码执行时间/msRSR/WDB7DB6DB5DB4DB3DB2DB1DB0进入模式设置00000001I/DS1.64功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。表2-
21、7 显示开关控制指令指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0显示开关控制0000001DCB功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。表2-8 设定显示屏或光标移动方向指令指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0设定显示屏或光标移动方向00000/功能:使光标移位或使整个显示屏幕移位。表2-9 功能设定指令指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0功能设定0000/功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:表2-10 设定CG
22、RAM地址指令指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0设定CGRAM地址000CGRAM的地址(位)功能:设定下一个要存入数据的CGRAM的地址。表2-11 设定DDRAM地址指令指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0设定RAM地址00CGRAM的地址(位)40功能:设定下一个要存入数据的CGRAM的地址。 (注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因) 表2-12 读取忙信号或AC地址指令指令功能指令编码执行时间/sRSR/WDB7DB
23、6DB5DB4DB3DB2DB1DB0读取忙碌信号或AC地址0FBAC内容(位)40功能:1. 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;2. 读取地址计数器(AC)的内容。表2-13 数据写入DDRAM或CGRAM指令一览指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0写数据到DDRAM或CGRAM10要写的数据D7D040功能:1. 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;2. 将使用者自己设计的图形存入CGRAM。表2-14 从CGR
24、AM或DDRAM读出数据的指令一览指令功能指令编码执行时间/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0从CGRAM或DDRAM中读数据11要读的数据D7D040功能:读取DDRAM或CGRAM中的内容。单片机和LCD液晶显示器的连接图2-6 液晶显示电路2.6 状态显示电路电路设计若水流量开始技术则绿灯亮,水流量计数停止则绿灯灭。温度超过40度或小于0度红灯报警。由于发光二极管的需求电流为3mA10mA,电压为3V所以计算 R=3V/(310)mA=(3301000)欧故我们在这采用R=330,以使经过发光二极管电流较大,发光更亮。图2-7 状态显示电路2.7 温度测量电路课
25、题任务中需要测量水温,故先用温度传感器DS18B02的数据采集,再通过单片机数据处理,最后在液晶屏显示出来。2.7.1 DS18B20简介DS18B20是DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,他它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。DS18B20具有以下优点:适应电压范围宽,电压范围在3.0V5.5V,在寄生电源方式下可由数据线供电。独特的单线接口方式,与微处理器连接时只需要一条口线即可实现微处理器与DS18B20的双向通信。1 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组
26、网多点测温。2 在使用中不需要任何外围元件,全部传感元件以及转换电路集成在形如一直三极管的集成电路内。3 测温范围-55+125,在-10+85时进度为0.5,可编程分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。4 负压特性。电源极性接反时,芯片不会因为过热而烧毁,但不能正常工作。2.7.2 DS18B20结构及其工作原理图2-8 DS18B20的引脚和封装图2-9 DS18B的内部结构DS18B20组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列: DQ为数字信号输入输出端GND为电
27、源地VDD为外接供电电源输入端,在寄生电源接线方式时接地。DS18B20内部带有共9个字节的高速暂存器RAM和电可擦除EEPROM,起结构如表2-15所示。表2-15 DS18B20高速暂存器结构寄存器内容字节地址温度值低位(LSB)0温度值高位(MSB)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8表2-16 DS18B20操作指令ROM操作指令指令约定代码功能读ROM33H读DS18B20温度传感器ROM中的编码(即64位地址)匹配ROM55H发出命令后接着发出64位ROM编码,访问总线上与该编码对应的芯片搜索ROMF0H用于确定挂接在同一总线上DS18B20的个数跳过ROMCCH忽略64位ROM地址,直接向DS18B20发温度变换命令告警搜索ECH执行后只有问多超过上限
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1