单片机汇编水流量检测测试设计方案.docx
- 文档编号:5285558
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:36
- 大小:598.82KB
单片机汇编水流量检测测试设计方案.docx
《单片机汇编水流量检测测试设计方案.docx》由会员分享,可在线阅读,更多相关《单片机汇编水流量检测测试设计方案.docx(36页珍藏版)》请在冰豆网上搜索。
单片机汇编水流量检测测试设计方案
单片机课程设计
题目水流量显示器
学院电子工程学院
专业自动化
班级
学号
姓名
组员
指导教师
2018年5月
引言3
1.任务设计4
2.系统硬件电路的设计5
2.1主芯片STC89C525
2.1.1主要性能5
2.1.2芯片功能特性简述:
5
2.1.3引脚功能6
2.2时钟电路7
2.3复位电路7
2.4液晶显示电路8
2.4.1显示特性8
2.4.2引脚说明8
2.4.3接口时序10
2.4.4初始化指令:
12
2.5水流量测量电路14
2.6按键控制电路15
3.软件系统的设计16
3.1软件设计总流程16
3.2水流量程序模块16
3.2.1水流量的读取程序17
3.3显示程序18
4.总结19
参考文献20
附件1.原理图21
附件3仿真图22
5.程序23
引言
随着现代社会的进步,经济的发展,人们对精神领域的追求更高,对生活水平的要求更高。
现代的家居生活是一种高品位、高质量、个性化、智能化的方式。
本系统就是基于STC89C52单片机控制的智能家居系统,可以实际监控室内各种不同的家电设备,并能通过液晶屏动态显示当前工作状态。
该系统与传统的智能家居系统相比,具有功能多样化、成本造价低等优点,且符合当今社会智能、节能、环保的发展观念,并在人们享受高品位、高质量、个性化、智能化生活的同时提高人们的节约意识。
由于智能家居系统有众多模块,本课题只采取其中的水流量模块进行单独设计。
关键词:
单片机水流量传感器
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)掉电标识符
2.1.2芯片功能特性简述:
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
电源地 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 数据输入/输出口,MPU与模块之间的数据传送通道 9 DB2 数据输入/输出口,MPU与模块之间的数据传送通道 10 DB3 数据输入/输出口,MPU与模块之间的数据传送通道 11 DB4 数据输入/输出口,MPU与模块之间的数据传送通道 12 DB5 数据输入/输出口,MPU与模块之间的数据传送通道 13 DB6 数据输入/输出口,MPU与模块之间的数据传送通道 14 DB7 数据输入/输出口,MPU与模块之间的数据传送通道 15 A 背光的正端+5V 16 K 背光的负端0V 16 K 背光的负端0V 2.4.3接口时序 图2-5时序图 表2-3液晶1602时序图标号说明 时序参数 符号 极限值 单位 测试条件 最小值 典型值 最大值 E信号周期 tc 400 ns 引脚E E脉冲宽度 Tpm 150 ns E上升沿/下降沿时间 Tr,tf 25 ns 地址建立时间 Tsp1 30 ns 引脚E、RS、R\W 地址保持时间 Thd1 10 ns 数据建立时间<读操作) Td 100 ns 引脚DB0~DB7 数据保持时间<读操作) Thd2 20 ns 数据建立时间<写操作) Tsp2 40 ns 数据保持时间<写操作) Thd2 10 ns 程序实现如下: /************************写指令程序************************/ voidwr_com(unsignedcharcom>//写指令 { delay(1>。 //延时1ms RS=0。 //写命令设置 RW=0。 //并行数据的读写 EN=0。 //使能为0 P2=com。 //输入命令 delay(1>。 //延时1ms EN=1。 //使能为1 delay(1>。 //延时1ms EN=0。 //使能为0 } /**********************写数据程序***********************/ voidwr_dat(unsignedchardat>//写数据 { delay(1>。 //延时1ms RS=1。 //写数据设置 RW=0。 //并行数据的读写 EN=0。 //使能为0 P2=dat。 //输入数据 delay(1>。 //延时1ms EN=1。 //使能为1 delay(1>。 //延时1ms EN=0。 //使能为0 } 2.4.4初始化指令: 表2-4清屏指令 指令功能 指令编码 执行时间/ms RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 清屏 0 0 0 0 0 0 0 0 0 1 1.64 功能: 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H。 光标归位,即将光标撤回液晶显示屏的左上方。 将地址计数器(AC>的值设为0。 表2-5光标归位指令 指令功能 指令编码 执行时间/ms RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 光标归位 0 0 0 0 0 0 0 0 1 X 1.64 功能: 把光标撤回到显示器的左上方。 把地址计数器(AC>的值设置为0。 保持DDRAM的内容不变 表2-6进入模式设置指令 指令功能 指令编码 执行时间/ms RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 进入模式设置 0 0 0 0 0 0 0 1 I/D S 1.64 功能: 设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。 表2-7显示开关控制指令 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 显示开关控制 0 0 0 0 0 0 1 D C B 40 功能: 控制显示器开/关、光标显示/关闭以及光标是否闪烁。 表2-8设定显示屏或光标移动方向指令 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 设定显示屏或光标移动方向 0 0 0 0 0 1 S/C R/L X X 40 功能: 使光标移位或使整个显示屏幕移位。 表2-9功能设定指令 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能设定 0 0 0 0 1 DL S/C R/L X X 40 功能: 设定数据总线位数、显示的行数及字型。 参数设定的情况如下: 表2-10设定CGRAM地址指令 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 设定CGRAM地址 0 0 0 1 CGRAM的地址<6位) 功能: 设定下一个要存入数据的CGRAM的地址。 表2-11设定DDRAM地址指令 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 设定DDRAM地址 0 0 1 CGRAM的地址<7位) 40 功能: 设定下一个要存入数据的CGRAM的地址。 (注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因> 表2-12读取忙信号或AC地址指令 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 读取忙碌信号或AC地址 0 1 FB AC内容<7位) 40 功能: 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令。 当BF=0时,液晶显示器可以接收单片机送来的数据或指令。 读取地址计数器(AC>的内容。 表2-13数据写入DDRAM或CGRAM指令一览 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 写数据到DDRAM或CGRAM 1 0 要写的数据D7~D0 40 功能: 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符。 将使用者自己设计的图形存入CGRAM。 表2-14从CGRAM或DDRAM读出数据的指令一览 指令功能 指令编码 执行时间/us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 从CGRAM或DDRAM中读数据 1 1 要读的数据D7~D0 40 功能: 读取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 1 水流传感器探头 DS18B20 1 液晶显示器 LCD1602 1 晶振 11.0596MHZ 1 电阻 500欧 2 电阻 1K 1 电阻 4.7K 1 电阻 10K 1 瓷片电容 22pF 2 瓷片电容 0.1uF 2 电解电容 20uF 2 电解电容 100uF 1 发光二极管 红色 1 发光二极管 黄色 2 发光二极管 绿色 1 电源接口 5V 1 拨头开关 1 按键 3 总计 25 5.程序 codesegment assumecs: code atart: cmpdh,[bx+si] xorsi,[bx+si] xor[bx+si],dh xor[bx+si],dh xor[bx+si],dh xordh,[bx+si] incsi cmp[bp+di+36],al xor[di],cl orbh,[bp+si] xor[bp+di+30],al incsi cmp[bp+di+30],al xor[bx],dh cmp[bx],dh incsi incbp xoral,46 BYTE036h incsp cmp[bp+44],al aaa xorax,3138 xorbh,[bx+si] xor[bp+si],dh xor[bp+33],al cmp[si],si incdx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇编 水流 检测 测试 设计方案