单片机水流量检测测试设计Word下载.docx
- 文档编号:21737454
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:33
- 大小:533.08KB
单片机水流量检测测试设计Word下载.docx
《单片机水流量检测测试设计Word下载.docx》由会员分享,可在线阅读,更多相关《单片机水流量检测测试设计Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
1.任务设计
当打开水龙头时,根据单片机STC89C52的指令、水流量计传感器采集水流量状态。
当单片机STC89C52扫描到水流量计传感器的脉冲数,经过单片机STC89C52处理,计算出所采集的水流量后,通过液晶屏LCD1602能动态显示当前水流量。
2.系统硬件电路的设计
2.1主芯片STC89C52
2.1.1主要性能
1)与MCS-52单片机产品兼容、8K字节在系统可编程Flash存储器
2)1000次擦写周期
3)全静态操作:
0Hz~33Hz
4)三级加密程序存储器
5)32个可编程I/O口线
6)三个16位定时器/计数器八个中断源
7)全双工UART串行通道
8)低功耗空闲和掉电模式
9)掉电后中断可唤醒
10)看门狗定时器
11)双数据指针
12)掉电标识符
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程Flash。
图2-1单片机引脚
2.1.3引脚功能
表2-1STC89C52引脚介绍说明
引脚
功能介绍
VCC
+5V电源电压
VSS
电路接地端
P0.0~P0.7
8位漏极开路的双向I/O通道
P2.0~P2.7
8位拟双向I/O通道
P3.0
RXD,串行输入口
P3.1
TXD,串行输出口
P3.2
INT0,外部中断0输入口
P3.3
INT1,外部中断1输入口
P3.4
定时器/计数器0外部事件脉冲输入端
P3.5
定时器/计数器1外部事件脉冲输入端
P3.6
外部数据存贮器写脉冲
P3.7
外部数据存贮器读脉冲
RST/VpD
复位输入信号
ALE/PROG
地址锁存有效信号
PSEN
程序选通有效信号
EA/VPP
当保持TTL高电平,执行内部EPROM的指令,当使TTL为低电平,从外部程序存贮器取出所有指令,在内的EPROM编程时,此端为21V编程电源输入端
XTAL1
内部振荡器外接晶振的一个输入端
XTAL2
2.2时钟电路
单片机的最小系统有三部分组成,即电源,时钟电路和复位电路。
其中单片机的电源引脚与5V电源连通即可,而时钟电路和复位电路还需接口扩展,这也是单片机的基本电路操作。
时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。
单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
在STC89C52单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。
在STC89C52芯片内部有一个高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。
在单片机的XTAL1脚和XTAL2脚之间并接一个晶体振荡器就构成了内部振荡方式。
STC89C52单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。
在实际应用中通常还需要在晶振的两端和地之间各并上一个小电容。
图2-2时钟电路
用晶振和电容构成谐振电路。
电容大小与晶振频率和工作电压有关。
但电容的大小影响振荡器的稳定性和起振的快速性,为了提高精度,本实验板采用20pF的电容作为微调电容。
在设计电路板时,晶振、电容等均应尽可能靠近芯片,减小分布电容,以保证振荡器振荡的稳定性。
2.3复位电路
复位是单片机的初始化操作,其目的是使CPU和系统中各部分处于一个确定的状态,并从这一状态开始工作。
系统上电路或死机后都要进行复位操作。
单片机的RST引脚为复位引脚,振荡电路正常工作后,RST端加上持续两个机器周期的高电平后,单片机就被复位。
复位电路有3种基本方式:
上电复位,开关复位和看门狗复位。
图2-3复位电路
本课题采用按键开关复位是指通过接通按钮开关,使单片机进入复位状态。
开关复位电路一般不单独使用。
在应用系统设计中,若需使用开关复位电路,一般的做法是将开关复位与上电复位组合在一起形成组合复位电路,上电复位电路完成上电复位功能,开关复位电路完成人工复位。
图2-3中C7与R1构成了上电复位电路。
上电复位后,电源经R1对C7充满电源,C7等效于开路,RST端为低电平;
单片机正常工作。
按开关K1后,C7两端电荷经R1迅速放电,K1断开后,由C7、R1及电源完成对单片机的复位操作。
在上述电路中C7、R1按上电复位电路的设计而取值。
复位电路的作用非常重要,能否成功复位关系但单片机系统能否正常运行的问题。
如果振荡电路正常而单片机系统不能正常运行,其主要原因是单片机没有完成正常复位,程序计数器的值没有回0,特殊功能寄存器没有回到初始状态。
这时可以适当地调整上电复位电路的阻容值,增加其充电时间常数来解决问题。
2.4液晶显示电路
课题任务要求以LCD1602芯片显示单片机处理后的温度、水费和水流量,在此有必要详尽的介绍LCD1602的特性和用法。
2.4.1显示特性
只需5V电源电压,低功耗、长寿命、高可靠性
内置192种字符(160个5×
7点阵字符和32个5×
10点阵字符)
具有64个字节的自定义字符RAM
显示方式:
STN、半透、正显
驱动方式:
1/16DUTY,1/5BIAS
视角方向:
6点
背光方式:
底部LED
通讯方式:
4位或8位并口可选
标准的接口特性:
适配MC51和M6800系列MPU的操作时序。
2.4.2引脚说明
表2-2液晶1602引脚说明
管脚号
符号
功能
1
Vss
电源地(GND)
2
Vdd
电源电压(+5V)
3
V0
LCD驱动电压(可调)寄存器选择输入端,输入MPU选择模块内部寄存器类型信号:
RS=0,当MPU进行写模块操作,指向指令寄存器;
4
RS
当MPU进行读模块操作,指向地址计数器;
RS=1,无论MPU读操作还是写操作,均指向数据寄存器
5
R/W
R/W=0读操作;
R/W=1写操作
6
E
使能信号输入端,输入MPU读/写模块操作使能信号:
4位方式通讯时,不使用DB0-DB3
7
DB0
数据输入/输出口,MPU与模块之间的数据传送通道
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
A
背光的正端+5V
16
K
背光的负端0V
2.4.3接口时序
图2-5时序图
表2-3液晶1602时序图标号说明
时序参数
极限值
单位
测试条件
最小值
典型值
最大值
E信号周期
tc
400
ns
引脚E
E脉冲宽度
Tpm
150
E上升沿/下降沿时间
Tr,tf
25
地址建立时间
Tsp1
30
引脚E、RS、R\W
地址保持时间
Thd1
数据建立时间(读操作)
Td
100
引脚DB0~DB7
数据保持时间(读操作)
Thd2
20
数据建立时间(写操作)
Tsp2
40
数据保持时间(写操作)
程序实现如下:
/************************写指令程序************************/
voidwr_com(unsignedcharcom)//写指令
{
delay
(1);
//延时1ms
RS=0;
//写命令设置
RW=0;
//并行数据的读写
EN=0;
//使能为0
P2=com;
//输入命令
EN=1;
//使能为1
}
/**********************写数据程序***********************/
voidwr_dat(unsignedchardat)//写数据
{
RS=1;
//写数据设置
P2=dat;
//输入数据
}
表2-4清屏指令
指令功能
指令编码
执行时间/ms
清屏
1.64
功能:
清除液晶显示器,即将DDRAM的内容全部填入"
空白"
的ASCII码20H;
光标归位,即将光标撤回液晶显示屏的左上方;
将地址计数器(AC)的值设为0。
表2-5光标归位指令
光标归位
X
把光标撤回到显示器的左上方;
把地址计数器(AC)的值设置为0;
保持DDRAM的内容不变
表2-6进入模式设置指令
进入模式设置
I/D
S
设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
表2-7显示开关控制指令
执行时间/us
显示开关控制
D
C
B
40
控制显示器开/关、光标显示/关闭以及光标是否闪烁。
表2-8设定显示屏或光标移动方向指令
设定显示屏或光标移动方向
1
S/C
R/L
X
使光标移位或使整个显示屏幕移位。
表2-9功能设定指令
功能设定
DL
设定数据总线位数、显示的行数及字型。
参数设定的情况如下:
表2-10设定CGRAM地址指令
设定CGRAM地址
CGRAM的地址(6位)
设定下一个要存入数据的CGRAM的地址。
表2-11设定DDRAM地址指令
设定DDRAM地址
CGRAM的地址(7位)
(注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因)
表2-12读取忙信号或AC地址指令
读取忙碌信号或AC地址
FB
AC内容(7位)
读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;
当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
读取地址计数器(AC)的内容。
表2-13数据写入DDRAM或CGRAM指令一览
写数据到DDRAM或CGRAM
要写的数据D7~D0
将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
将使用者自己设计的图形存入CGRAM。
表2-14从CGRAM或DDRAM读出数据的指令一览
从CGRAM或DDRAM中读数据
要读的数据D7~D0
读取DDRAM或CGRAM中的内容。
单片机和LCD液晶显示器的连接
图2-6液晶显示电路
2.5水流量测量电路
课题任务中最重要的是水流量的测量。
通过水流量传感器的数据采集,根据商家的水流量传感器的参数可以得出单片机在运算时的数据。
水流量传感器参数:
环境温度:
-10~55℃
流量计算在流量为:
0.2~0.4L/Min时,1L=2100次;
0.5~0.8L/Min时,1L=2280次;
0.9~1.2L/Min时,1L=2350次;
1.2~2.5L/Min时,1L=2460次;
(脉冲次数在流量变化时有一定程度的变动)
接线方法白线:
信号输出;
黑线:
电源负(也可按客户要求定做)
测量精度:
±
5%(在流量稳定的系统,精度可达±
2%)
工作电压:
DC0~~24V
工作压力:
≤100PSI(7kg/cm)
耐湿性能:
在环境湿度为90%以下时性能保持稳定
寿命测试:
本产品用进口干簧管作感应元件,在负荷小于24V1mA前提下,
开关寿命大于3亿次。
图2-15水流量测量电路
2.6按键控制电路
课题设计之初,要求基本实现的功能有水流量的控制、水价的改变。
由于液晶显示屏不能够完全实现其显示,故又增加了换页功能,共三个控制键。
图2-16按键电路
3.软件系统的设计
3.1软件设计总流程
程序要求液晶显示有当前水流量,总流量。
水流量的测量由开关控制。
由于LCD1602的显示屏幕有限,所以又把程序设计成可以翻页的形式。
翻页也用开关控制。
由于在两个界面里面都显示水温,故在显示程序里加入测量水温程序也未尝不可。
整个程序中结构较为简单,但其中也有几个重要而且比较费脑筋的子程序,包括水测量程序、水流量数据的计算转换程序。
在程序中可以分为2个主要模块:
水流量模块,显示模块如图3-1所示:
图3-1总流程图
3.2水流量程序模块
水流量的测量主要依靠对得到的频率处理,由流量计在一段时间下产生高电平的个数决定,即Q(流量)=F(频率)/R(商家设定值)所以只要在单片机中设定一定的时间,并在该时间之下计算出得到的高电平即可。
在本程序中STC89C52的两个定时器T0为计数状态,T1为计时状态,这样方可测量流量。
3.2.1水流量的读取程序
中断程序运行的时间到,就可以读取计数器中的数值,将下数值读出后把计数器赋值为0,等待下一次的取出,然后进入对读出数据的处理程序。
如图3-4所示:
图3-2 水流量数据的处理程序
在预定时间到,即已经取出了定时器的数值。
我们计算的水流量最大是以每吨来计算并显示的,故一个整形或长整型的数不够,故先把它放在了一个int变量的存储空间内,做水流量的前三位,在定义一个长整型的数,把它作为水流量的后六位,这样计算起来也比较容易,数据也不会起冲突,也是为将要计算水价做准备。
设定该水流量的最大计数为250吨,超过了定值,则会从0开始。
如图3-5所示:
图3-3水流量数据处理流程图
3.3显示程序
在程序中只是计算出流量值,温度值以及和资源分配的情况,一些字母的显示,都要另加,这样才能尽善尽美的表达出显示出来的意思。
所以在主程序中不必再测量温度。
在第一页主要显示的是总水流量的后三位,最后以t结尾。
第二页主要当前水流量的前三位,最后以kg结尾。
4.总结
在为期两周的实训中,我学到了很多,在整个过程中,包括最开始的课题设计、焊接、程序编写,到最后的调试我都参与其中。
可以这么说,在这两个星期中学到的东西比我两个月学到的还要多。
在最开始设计课题时,查了很多资料,经过组员的讨论,最终确定了现在这个方案。
在焊接的过程中,基本上没出什么问题,一切都很顺利的进行着。
在编写程序以及调试的过程中出现了一些问题,比如:
当有水流过时,传感器多计数的脉冲达不到我们设计时的要求,所以经过了多次修改,最终实现了功能。
在整个过程中要特别感谢丁文斌老师的指导,没有他耐心的指导,我们是不会做的这么好的。
参考文献
[1]张菁,基于单片机水流量控制系统方案的研究。
2007(9)。
[2]楼然苗,51系列单片机设计实例.北京航空航天大学出版社,2003。
[3]苏铁力、关振海等.传感器及其接口技术[M].中国石化出版社,1998.
[4]肖晴,液晶显示流量的控制,2005
(2)。
[5]谭浩强,C程序设计(第二版).清华大学出版社.1999年12月第2版
附件1.原理图
附件2实物图
附件3仿真图
附件4元器件清单
元器件名称
型号
数量(个)
单片机
STC89C51
水流传感器探头
DS18B20
液晶显示器
LCD1602
晶振
11.0596MHZ
电阻
500欧
1K
4.7K
10K
瓷片电容
22pF
0.1uF
电解电容
20uF
100uF
发光二极管
红色
黄色
绿色
电源接口
5V
拨头开关
按键
总计
5.程序
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P1^0;
//ds18b20与单片机连接口
sbitRS=P1^1;
sbitRW=P1^2;
sbitEN=P1^3;
sbitp37=P3^6;
//流量正常运行接口
sbitp36=P3^7;
//温度报警接口
sbitp14=P1^4;
//功能按键接口
sbitp15=P1^5;
sbitp16=P1^6;
ucharcodetable[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20};
//0-9数字和显示无
unsignedlonginta;
floatf,zong
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 水流 检测 测试 设计