基于压力传感器的水位报警器
水位监测报警系统原理

水位监测报警系统原理水位监测报警系统是一种用于监测水位并在水位异常时发出报警信号的设备。
它主要由传感器、信号处理模块和报警装置组成。
其原理是通过传感器检测水位变化,将检测到的水位信息传输给信号处理模块,再由信号处理模块进行处理和判断,当水位超过预设的阈值时触发报警装置发出报警信号。
一、传感器部分:1.浮子式传感器:这种传感器是通过浮子浮沉来检测水位变化的。
当水位升高时,浮子上升,使得传感器输出的电信号发生变化,从而检测到水位变化。
2.压力式传感器:使用微压传感器或压力传感器来检测水位变化。
水位升高时,水压增加,传感器感知到的压力变化,从而检测到水位变化。
3.音频传感器:利用水位变化所产生的声音信号进行检测。
当水位升高时,声音的频率和振幅会发生变化,传感器通过接收和分析这些声音信号来检测水位变化。
以上是几种常见的水位传感器,每种传感器都有其优势和适应范围。
二、信号处理模块部分:传感器检测到的水位信息经过模数转换后,通过信号处理模块进行信号放大、滤波和数字化处理,使得水位信息能够被电子设备进行处理和判断。
信号处理模块通常由模拟电路和数字电路组成。
模拟电路部分主要负责对传感器输出的信号进行放大和滤波。
放大是为了使得传感器输出的微弱信号能够被数字电路处理。
滤波是为了去除传感器输出信号中的噪声,以提高准确性和稳定性。
数字电路部分主要用于对放大和滤波后的信号进行A/D转换,将模拟信号转化为数字信号,以便后续数据的存储、处理和传输。
同时,数字电路还可以对水位信息进行处理和判断,比如设置阈值进行触发条件的判断。
三、报警装置部分:当信号处理模块判断出水位超过预设的阈值时,会触发报警装置发出报警信号,以提醒操作人员水位异常。
报警装置通常采用声音报警和灯光报警的方式。
声音报警通常是通过蜂鸣器或喇叭发出持续或间歇的声音信号。
声音报警对于操作人员具有明显的提醒作用,能够快速引起注意。
灯光报警是通过灯光装置,如LED灯等,发出警示信号。
水位报警器

水位报警器水位报警器是一种能够监测水位变化并及时发出警报的设备。
它通常被广泛应用于水利、水电、工业、民用等领域,可以有效地保护人们和设备免受水灾的侵害。
本文将介绍水位报警器的工作原理、分类以及应用场景等方面的内容。
工作原理水位报警器的工作原理主要是通过测量液体的压力变化来判断水位高低。
其主要组成部分包括传感器、信号放大器、报警器等,其中传感器是关键部件,其常见的测量原理有以下几种:浮球式浮球式水位传感器通过浮球的浮力以及水的密度变化来实现水位测量。
当水位变化时,浮球会随之上升或下降,浮球上安装的磁性杆会改变磁场,传感器测量这种磁场变化来判断水位是否达到设定值。
压阻式压阻式水位传感器则是利用压阻变化原理进行水位测量。
其内部包含一块薄膜,当水位变化时,液压会作用于薄膜上产生形变,从而导致电阻值发生变化,传感器通过测量电阻值变化来确定水位高低。
静压式静压式水位传感器主要利用水压力变化原理来测量水位。
传感器的测压装置部分被浸在测量液体中,产生液体静力,将液体静力转换为电信号,通过测量电信号的变化来判断水位变化。
应用场景水位报警器适用于以下场合:闸坝、水库在水利工程中使用水位报警器,可以及时发现水位变化,保证水利工程设施的正常运行。
工业制造在工业制造中,一些化学反应或机器运行需要特定的水位条件。
水位报警器的应用可以及时发现、报警并控制水位变化,维护生产质量和设备完整性。
景观水池景观水池中的水位亦需要自动控制。
水位报警器的应用可以避免水位溢出和空干,维护水池生态环境。
分类水位报警器根据不同的应用场景及测量原理,可以分为以下几类:液位开关液位开关主要通过浮球式、电容式等原理进行测量,当水位达到设定值时,传感器会输出电信号,从而实现报警功能。
液位计液位计一般采用数字化显示、超声波测量等原理进行水位测量,并通过显示屏等方式直观地呈现出水位状态。
集成水位测量仪集成水位测量仪包含了水位测量、报警、控制等多种功能于一体,能够实现远程监测及控制,常应用于水利工程、水力发电、供水系统等领域。
压力传感输液报警器的设计

压力传感输液报警器的设计在现代社会中,人们面临着越来越大的压力。
有时候,这种压力过大可能会产生一些不好的影响,甚至会导致身体健康问题。
为了帮助人们及时解决压力问题,设计了一种压力传感输液报警器。
压力传感输液报警器主要由压力传感器、微处理器、液晶显示屏和报警装置组成。
当人们感到压力过大,并需要进行放松时,他们可以佩戴这个报警器。
压力传感器可以感知人体的压力水平。
当压力达到一定阈值时,压力传感器会将这一信息传输给微处理器。
微处理器是整个系统的核心,它会分析压力传感器提供的数据,并根据设定的压力水平阈值判断人们是否需要进行放松。
如果人们压力过大,微处理器会通过液晶显示屏显示相应的提示信息,比如“您需要进行放松了”。
报警装置会发出声音和振动,提醒人们要放松身心。
为了方便人们使用,压力传感输液报警器还设计了一些附加功能。
它可以通过蓝牙或WIFI与智能手机或其他设备连接,人们可以随时查看自己的压力水平,并记录在记录本或应用程序中。
它还具有计时功能,人们可以设定一个放松时间,当时间到达时,报警器会自动停止。
压力传感输液报警器不仅适用于办公人群,也适用于学生、家庭主妇等其他人群。
想象一下,当学生们面临着考试压力时,他们可以佩戴这个报警器,及时调整自己的状态,减轻压力。
家庭主妇在繁忙的家务中也可以使用这个报警器,提醒自己适时放松。
压力传感输液报警器还具有良好的市场前景。
随着现代人的压力越来越大,对健康和个人关心的重视程度也越来越高,这样的报警器可以满足人们对健康管理的需求。
未来,它还可以结合其他健康监测设备,如心率监测仪、体温计等,形成一个完整的健康管理系统。
压力传感输液报警器是一种能够帮助人们及时解决压力问题的设备。
通过传感器感知压力水平,并通过微处理器分析数据,报警器可以通过液晶显示屏和报警装置提醒人们进行放松。
附加功能还能增加用户的便利性,并具有良好的市场前景。
相信这样的报警器能够在未来为人们的身心健康保驾护航。
基于压力传感器的水位报警器

2016年测控专业创新实践第二届自动化与电气工程学院仪器仪表设计竞赛设计报告设计题目:基于压力传感器的水位控制报警器队伍编号:323队员姓名:陈昊、吴天剑、张赟、董嘉仪年月日控制器单片机,液位控制高度,报警、高度显示等功能,主要元器件时应变片,使其附着在容器外壁,使其具有与液面不接触的特点,可用于有毒、腐蚀性液体液位的控制,具有较高的研究价值。
该控制器不仅可用于学校进行教学研究,还可用于生产实际,是目前比较缺少的一种产品。
由物理学原理可知,液体的压力是与液体的高度有关系的,当液体的高度越高,底部所受的压力也就越大,即P=ρhg,所以我们可以通过底部所受的压力来获取液面的高度,因此我们可以添加一个压力传感器,也就是常用的应变片,获取与液体地面所受的压力,由于应变片输出的电压量非常小,所以我们必须加放大器来将电压量变大,来提高他的灵敏度,由于单片机只能读取数字信号,而我们应变片输出的是模拟信号,所以得添加一个模数转换芯片来实现单片机对数据的读取,而后通过单片机实现对蜂鸣器和led报警灯的控制,实现液位报警,后期还可以在单片机的其他引脚添加点击可以实现自动的控制水位的高度,因为能力和时间有限,这里只做到报警,所以该作品还能继续改进,功能还能拓展。
关键词:传感器;AD转换;控制器;外围硬件电路1.系统方案设计 (1)1.1 课题分析 (1)1.1.1 设计目的 (1)1.1.2 液位的获取 (1)1.2总体方案设计 (1)1.2.1系统框图 (1)1.2.1总体设计实现 (1)2.硬件设计 (2)2.1主要元器件原理 (2)2.1.1AT89C51 (2)2.1.2应变片 (3)2.1.3模数转换芯片HX711 (5)2.1.4显示屏LCD1602 (7)3.软件设计 (8)3.1主程序流程图 (8)3.2子程序流程图 (9)3.3仿真电路图 (11)4.实验结果 (12)5.设计心得 (14)参考文献 (15)附录A (16)附录B (17)附录C (18)1.系统方案设计1.1 课题分析1.1.1 设计目的运用目前所学的知识,设计一款可以实现无人监督的,液位报警器,利用51单片机,模数转换芯片,仪用放大器等元器件,运用自己所学的单片机技术,与模电技术等知识来实现目的,利用这次活动来是自己的所学的知识得到运用,加深所学的知识在脑海里的印象,并且可以通过实现来检验自己在课上所学的知识,对自己也是很大的锻炼。
基于传感器的压力液位检测系统设计

基于传感器的压力液位检测系统设计简介本文档旨在介绍一种基于传感器的压力液位检测系统的设计。
设计目标该系统的设计目标包括但不限于以下几点:- 实时监测液体的压力和液位;- 提供可靠的数据,以便用户能够准确了解液体的状态;- 高度精度和稳定性;- 易于安装和使用。
系统组成该压力液位检测系统主要由以下几个组件组成:1. 压力传感器:用于测量液体的压力,并将其转化为电信号;2. 液位传感器:用于测量液体的液位,并将其转化为电信号;3. 控制器:接收传感器转化的电信号,并进行处理和分析,以得出液体的压力和液位数据;4. 显示屏:用于显示液体的压力和液位数据,使用户能够直观地了解液体的状态;5. 电源供应:提供系统所需的电力。
工作原理该系统的工作原理如下:1. 压力传感器通过测量液体对其施加的压力,将其转化为相应的电信号;2. 液位传感器通过测量液体的液位高度,将其转化为相应的电信号;3. 控制器接收传感器传来的电信号,并根据预设的算法对其进行处理和分析,从而得出液体的压力和液位数据;4. 显示屏将处理后的数据展示给用户,使其能够直观地了解液体的状态。
实施步骤下面是设计该系统的一般实施步骤:1. 进行需求分析,明确系统的设计目标;2. 选择合适的压力传感器和液位传感器,确保其满足系统要求;3. 设计并实现传感器与控制器之间的连接和数据传输;4. 开发控制器的算法和逻辑,确保准确地计算出液体的压力和液位数据;5. 连接显示屏和控制器,并确保其正常工作;6. 进行系统测试和调试,确保其稳定性和精确性;7. 完成系统的安装和部署,并提供使用说明。
总结基于传感器的压力液位检测系统设计是一个复杂而具有挑战性的任务,但通过合理的规划和实施,我们可以实现高精度和可靠的液体状态监测。
该系统的设计目标、组成和工作原理在本文档中得到了详细阐述,并提供了一般的实施步骤。
希望本文档能为设计和开发基于传感器的压力液位检测系统提供一定的指导和帮助。
水位报警器工作原理

水位报警器工作原理
水位报警器的工作原理如下:
1. 水位探测器:水位报警器使用水位探测器来检测液体的水位变化。
水位探测器通常是一种传感器,可以通过不同的方式来探测液体的水位,例如测量电流、电阻或者压力的变化。
2. 控制电路:水位探测器将检测到的水位变化信号传送到控制电路中。
控制电路通常由微处理器或者逻辑门电路组成,可以根据传感器的信号进行相应的处理。
3. 报警器:控制电路会判断水位是否超过设定的安全阈值。
如果水位超过安全阈值,控制电路会触发报警器发出警报信号。
报警器可以采用声音报警、闪光报警或者发送报警信号给报警设备,以提醒用户注意水位超标。
4. 电源:水位报警器通常需要外部电源供电,以确保其长时间稳定运行。
电源可以是直流电源或者交流电源,具体取决于报警器的要求和安装环境。
总之,水位报警器通过水位探测器检测水位变化,控制电路判断水位是否超过设定的安全阈值,并触发报警器发出警报信号,以提醒用户注意水位超标。
压力传感输液报警器的设计

压力传感输液报警器的设计引言在医疗领域,输液是常见的治疗方式之一。
输液过程中出现的问题也是时有发生的。
为了及时发现输液过程中的异常情况,保障患者的安全,压力传感输液报警器应运而生。
本文将介绍压力传感输液报警器的设计原理、工作流程以及应用场景。
一、设计原理压力传感输液报警器的设计原理主要基于压力传感技术和报警器技术。
首先是压力传感技术,利用压力传感器将输液管道内的压力信号转换成电信号,并通过信号处理电路进行处理。
其次是报警器技术,通过设定一定的报警逻辑和报警参数,当输液管道内的压力超出设定范围时,报警器将发出报警信号,提醒医护人员及时处理。
二、工作流程1. 压力传感器采集输液管道内的压力信号。
2. 信号处理电路对压力信号进行放大、滤波等处理。
3. 处理后的信号传输至报警器控制单元。
4. 报警器控制单元与报警参数进行比对,判断压力信号是否超出设定范围。
5. 若压力信号超出设定范围,则报警器发出报警信号;反之,则正常工作。
三、应用场景1. 输液过程中液体泄漏。
输液管道内发生泄漏时,管道内的压力会降低,超出设定范围时报警器将发出报警信号。
2. 输液管道堵塞。
输液管道发生堵塞时,管道内的压力会升高,超出设定范围时报警器将发出报警信号。
3. 输液液体过快或过缓。
输液液体流速异常时,管道内的压力会变化,超出设定范围时报警器将发出报警信号。
四、设计注意事项1. 选择合适的压力传感器。
应根据输液管道的工作压力范围和精度要求选择合适的压力传感器,保证传感器的稳定性和准确性。
2. 针对不同的异常情况设置不同的报警参数。
根据实际情况设置液体泄漏、管道堵塞等不同异常情况的报警参数,以提高报警器的准确性和实用性。
3. 设计可靠的报警信号传输方式。
报警信号应能够及时、准确地传输至监护系统或医护人员,以便及时处理异常情况。
总结压力传感输液报警器是一种能够及时发现输液异常情况、保障患者安全的重要设备。
其设计原理基于压力传感技术和报警器技术,工作流程简单清晰,应用场景广泛。
水位自动报警器原理

水位自动报警器原理
水位自动报警器是一种用于监测水位并在水位超过预设值时发出警报的设备。
其工作原理基于液位传感器和报警器的组合使用。
液位传感器通常通过浸入水中来监测水位。
传感器可以采用不同的工作原理,如浮子式、电容式、超声波式等。
当水位上升到传感器的设定水位时,传感器将发出一个信号。
报警器是与液位传感器相连的一种设备,用于发出警报。
报警器的工作方式也可以多样化,其中一种常见的方式是通过发出声音来警示。
当传感器检测到水位超过设定水位时,会触发报警器发出声音警报。
整个水位自动报警器系统通常还包括电源和控制电路。
电源提供能量给液位传感器和报警器,使其正常工作。
控制电路用于接收传感器的信号,并对报警器进行控制,以便在需要时触发警报。
总结起来,水位自动报警器的工作原理是通过液位传感器监测水位,并将信号发送给报警器,从而触发警报。
这种设备可以用于各种需要监测水位的场合,如水塔、池塘、洪水防控等,可及时提醒人们做出相应的措施。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016年测控专业创新实践第二届自动化与电气工程学院仪器仪表设计竞赛设计报告设计题目:基于压力传感器的水位控制报警器队伍编号:323队员姓名:陈昊、吴天剑、张赟、董嘉仪年月日摘要控制器单片机,液位控制高度,报警、高度显示等功能,主要元器件时应变片,使其附着在容器外壁,使其具有与液面不接触的特点,可用于有毒、腐蚀性液体液位的控制,具有较高的研究价值。
该控制器不仅可用于学校进行教学研究,还可用于生产实际,是目前比较缺少的一种产品。
由物理学原理可知,液体的压力是与液体的高度有关系的,当液体的高度越高,底部所受的压力也就越大,即P=ρhg,所以我们可以通过底部所受的压力来获取液面的高度,因此我们可以添加一个压力传感器,也就是常用的应变片,获取与液体地面所受的压力,由于应变片输出的电压量非常小,所以我们必须加放大器来将电压量变大,来提高他的灵敏度,由于单片机只能读取数字信号,而我们应变片输出的是模拟信号,所以得添加一个模数转换芯片来实现单片机对数据的读取,而后通过单片机实现对蜂鸣器和led报警灯的控制,实现液位报警,后期还可以在单片机的其他引脚添加点击可以实现自动的控制水位的高度,因为能力和时间有限,这里只做到报警,所以该作品还能继续改进,功能还能拓展。
关键词:传感器;AD转换;控制器;外围硬件电路目录1.系统方案设计 (1)1.1 课题分析 (1)1.1.1 设计目的 (1)1.1.2 液位的获取 (1)1.2总体方案设计 (1)1.2.1系统框图 (1)1.2.1总体设计实现 (1)2.硬件设计 (2)2.1主要元器件原理 (2)2.1.1AT89C51 (2)2.1.2应变片 (3)2.1.3模数转换芯片HX711 (5)2.1.4显示屏LCD1602 (7)3.软件设计 (8)3.1主程序流程图 (8)3.2子程序流程图 (9)3.3仿真电路图 (11)4.实验结果 (12)5.设计心得 (14)参考文献 (15)附录A (16)附录B (17)附录C (18)1.系统方案设计1.1 课题分析1.1.1 设计目的运用目前所学的知识,设计一款可以实现无人监督的,液位报警器,利用51单片机,模数转换芯片,仪用放大器等元器件,运用自己所学的单片机技术,与模电技术等知识来实现目的,利用这次活动来是自己的所学的知识得到运用,加深所学的知识在脑海里的印象,并且可以通过实现来检验自己在课上所学的知识,对自己也是很大的锻炼。
1.1.2液位的获取方案一:采用浮子获取液位,通过杠杆和浮子的链接可以实现对变阻器的控制,来获取不同的电压值,后传输到单片机。
方案二:通过对液体的压力会随高度的改变而改变,故可以在底部添加应变片来获取压力来获取液面的高度。
由于方案一会对场地要求比较大所以不方便选择,于是选择方案二同时液位的显示也可以采用1602或者数码管,两者都可以做到,但都有利弊,可酌情选择。
1.2总体方案设计1.2.1系统框图图1 系统框图1.2.2总体设计实现将水箱放到应变片上,随着水位上升,总体重量也随之上升。
通过其按压应变片产生的微小变化,来测定重量。
通过模数转换器将模拟量转换成数字量并送到单片机中处理,然后根据其体积与高度的关系,进而来测定水位高度,显示在显示屏上,到一定高度通过蜂鸣器实现报警。
2.硬件设计2.1主要元器件原理2.1.1 AT89C51AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器俗称单片机。
AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
如图2所示。
图2 AT89C51内部结构图3 AT89C51实物图2.1.2应变片一般的应变片是在称为基底的塑料薄膜(15-16μm )上贴上由薄金属箔材料制成的敏感栅(3-6μm ),然后再覆盖上一层薄膜做成迭层构造。
图4 应变片模型将应变片贴在被测物上,使其随着被测定物的应变一起伸缩,这样里面的金属箔材就随着应变一起伸长或缩短。
很多金属在机械性的伸长或缩短时其电阻会随之变化。
应变片就是应用这个原理,通过测量电阻的变化而对应变进行测定。
一般应变片的敏感栅使用的是铜铬合金,其电阻变化率为常数,与应变成正比例关系。
即:ε*K RR= 其中,R :应变片原电阻值 K :比例常数(应变片常数) Ε:应变不同的金属材料有不同的比例常数K 。
铜铬合金的K 值约为2,这样应变的测量就通过应变片转换为对电阻变化的测量。
表1 应变片的参数2.1.3 模数转换芯片hx711hx711采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片。
与同类型其他芯片相比,改芯片与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。
降低了电子秤的整机成本,提高了整机的性能和可靠性。
特点:•两路可选择差分输入•片内低噪声可编程放大器,可选增益为64和128•片内稳压电路可直接向外部传感器和芯片内A/D转换器提供电源•片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟•上电自动复位电路•简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程•可选择10Hz或80Hz的输出数据速率•同步抑制50Hz和60Hz的电源干扰•耗电量(含稳压电源电路):典型工作电流:< 1.7mA, 断电电流:< 1µA •工作电压范围:2.6 ~ 5.5V•工作温度范围:-20 ~ +85℃• 16管脚的SOP-16封装图5 SOP-61L封装表2 管脚描述注意事项1.所有数字输入管脚,包括RATE,XI和PD_SCK管脚,芯片内均无内置拉高或拉低电阻。
这些管脚在使用时不应悬空。
2.建议使用通道A与传感器相连,作为小信号输入通道;通道B用于系统参数检测,如电池电压检测。
3.建议使用PNP管S8550与片内稳压电源电路配合。
也可根据需要使用其他MOS 或双极晶体管,但应注意稳压电源的稳定性。
4.无论是采用片内稳压电源或系统上其他电源,建议传感器和A/D转换器使用同一模拟供电电源。
5.PD_SCK的输入时钟脉冲数不应少于25或多于27,否则会造成串口通讯错误。
2.1.4显示屏LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。
本次设计采用16脚。
图6 1602字符型液晶显示器实物3.软件设计3.1主程序流程图开始,AD转换器及显示器初始化,将数据送到AD转换器,之后判断AD转换是否完成,若完成则进行十进制转换调整,并输出。
如图7所示。
图7 主程序流程图3.2子程序流程图十进制数据转换调整子程序流程图如图8所示图8十进制数据转换调整子程序流程图A/D转换流程图:启动转换,若转换结束则读取数据。
如图9所示图9 A/D 转换流程图3.3仿真电路图protel仿真电路如图10,图11所示图10仿真电路图(1)图11仿真电路图(2)4.实验结果当水位高度为5时,显示屏上显示501;水位达到12之后,由于应变片出现非线性的变化,所以显示的示数有一定误差;水位到达15之后,蜂鸣器开始报警。
图12水位高度为5图13水位过限报警5.设计心得通过本次设计,主要掌握了以下几个方面的知识:首先是各个芯片的功能和结构,其次是更加熟练的掌握了单片机方面的编程与调试。
作为一个学生,发现我们掌握的知识是多么的疏浅,很多东西都是要重新拾起课本学习。
另外自己钻研精神还不够,只想在一天之内得到满意的实验结果,不能沉下心一点点调试。
现在想起来很惭愧,在设计的过程中发现了自己的不足之处,比如编程问题,仿真图形的连接和怎样去调试。
经过这次设计实验,我收获了很多,除了一些新的知识外,还有就是一些新的领悟。
例如做事情时不能太急功近利,要注重过程,要能够静下心来做一件事情。
这次设计实验还验证了一个真理:实践出真知。
通过自己亲手搜集资料、编程、仿真、调试、查错,整个过程下来虽然遇到过很多困难,但经过思考后的豁然开朗,以及对原有知识的更深层次的理解,是仅仅靠死读课本所学不来的。
参考文献[1]刘军. 单片机原理与接口技术. 华东理工大学出版社[2]柳春. Protel 99se实用教程. 高等教育出版社[3]陈杰. 传感器与检测技术. 高等教育出版社附录A 元器件清单附录B基于压力传感器的水位控制报警器的实物图如下图所示:图1 实物图附录C #include "main.h"#include "HX711.h"#include "uart.h"#include "LCD1602.h"#define uchar unsigned char#define uint unsigned intunsigned long HX711_Buffer = 0; unsigned long Weight_Maopi = 0;long Weight_Shiwu = 0;unsigned char flag = 0;bit Flag_ERROR = 0;#if 1sbit BEEP=P2^0;#endifuint GapValue=716;uchar flag2;sbit sda_24c16=P3^1;sbit scl_24c16=P3^0;void display_weight();void delay_3us();void up_Key();void down_Key();void nack_24c16();void stop_24c16();void star_24c16();void cack_24c16();void mack_24c16();void w1byte_24c16(uchar byte1);uchar rd1byte_24c16(void);void read_24c16();void write_24c16();void main(){Uart_Init();Send_Word("Welcome to use!\n");Send_Word("Made by !\n");Init_LCD1602();LCD1602_write_com(0x80);// LCD1602_write_word("Welcome to use!");LCD1602_write_word("ye wei xian shi");Delay_ms(2000);read_24c16();Get_Maopi();while(1){EA = 0;Get_Weight();EA = 1;Scan_Key();up_Key();down_Key();if( Flag_ERROR == 1){Send_Word("ERROR\n");LCD1602_write_com(0x80+0x40);LCD1602_write_word("waring ");}else{display_weight();}}}//扫描按键void up_Key(){if(up_key == 0){Delay_ms(5);while(up_key == 0){GapValue++;Get_Weight();display_weight();}write_24c16();}}//减小键void down_Key(){if(down_key == 0){Delay_ms(5);while(down_key == 0){GapValue--;Get_Weight();display_weight();}write_24c16();}}void display_weight(){Send_ASCII(Weight_Shiwu/1000 + 0X30);Send_ASCII(Weight_Shiwu%1000/100 + 0X30);Send_ASCII(Weight_Shiwu%100/10 + 0X30);Send_ASCII(Weight_Shiwu%10 + 0X30);Send_Word(" 10um\n");LCD1602_write_com(0x80+0x40);LCD1602_write_data(Weight_Shiwu*3/1000 + 0X30);LCD1602_write_data(Weight_Shiwu*3%1000/100 + 0X30);LCD1602_write_data(Weight_Shiwu*3%100/10 + 0X30);LCD1602_write_data(Weight_Shiwu*3%10 + 0X30);LCD1602_write_word(" 10u");//下面5行显示的是校准参数,如果不显示直接删除下面5行LCD1602_write_com(0x80+0x40+8);LCD1602_write_data(GapValue/1000 + 0X30);LCD1602_write_data(GapValue%1000/100 + 0X30);LCD1602_write_data(GapValue%100/10 + 0X30);LCD1602_write_data(GapValue%10 + 0X30);}//扫描按键void Scan_Key(){if(KEY1 == 0){Delay_ms(5);if(KEY1 == 0){while(KEY1 == 0);Get_Maopi();}}}void Get_Weight(){Weight_Shiwu = HX711_Read();Weight_Shiwu = Weight_Shiwu - Weight_Maopi;if(Weight_Shiwu > 0){Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue);if(Weight_Shiwu*3 > 1500){Flag_ERROR = 1;BEEP=0;}else{Flag_ERROR = 0;BEEP=1;}}else{Weight_Shiwu = 0;}}void Get_Maopi(){Weight_Maopi = HX711_Read(); }void Delay_ms(unsigned int n) {unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<123;j++);}void delay_3us(){;;}void nack_24c16(){sda_24c16=1;delay_3us();delay_3us();scl_24c16=1;delay_3us();delay_3us();scl_24c16=0;sda_24c16=0;}void stop_24c16(){sda_24c16=0;scl_24c16=1;delay_3us();delay_3us();sda_24c16=1;delay_3us();delay_3us();scl_24c16=0;}void star_24c16(){sda_24c16=1;scl_24c16=1;delay_3us();delay_3us();sda_24c16=0;delay_3us();delay_3us();scl_24c16=0;}//**************************************************** //功能:判断应答或非应答//说明:通讯出错时标志为1,否则为0void cack_24c16(){scl_24c16=0;sda_24c16=1;delay_3us();scl_24c16=1;flag2=0;//清除错误标志if(sda_24c16)flag2=1;scl_24c16=0;}//**************************************************** //功能:发送应答信号void mack_24c16(){sda_24c16=0;scl_24c16=1;delay_3us();delay_3us();scl_24c16=0;sda_24c16=1;}//*************************************************//功能:向24C16写入一字节的数据void w1byte_24c16(uchar byte1){uchar i=8;while(i--){delay_3us();delay_3us();delay_3us();if(byte1 & 0x80){sda_24c16=1;}else{sda_24c16=0;}delay_3us();delay_3us();delay_3us();scl_24c16=1;delay_3us();delay_3us();delay_3us();scl_24c16=0;byte1<<=1;}}//****************************************************//功能:从24C16中读出一字节的数据uchar rd1byte_24c16(void)//;读1字节子程序(通用)读出的数据存放在30H中{uchar i;uchar ddata=0;sda_24c16=1;//置IO口为1,准备读入数据for(i=0;i<8;i++){ddata<<=1;delay_3us();delay_3us();delay_3us();scl_24c16=1;if(sda_24c16) ddata++;delay_3us();delay_3us();delay_3us();scl_24c16=0;}return ddata;}//***************************************************//读数据操作void read_24c16(){uchar x1,x2;read1:nack_24c16();star_24c16();//发送启动脉冲w1byte_24c16(0xa0);//24C16的芯片地址,高四位固定为1010,选择第一区,写操作cack_24c16();if(flag2)goto read1;w1byte_24c16(0x10);//写入24C16的内部地址,选择第二页cack_24c16();if(flag2)goto read1;nack_24c16();stop_24c16();//重新开始star_24c16();//w1byte_24c16(0xa1);// 24C16的芯片地址,高四位固定为1010,选择第一区,读操作cack_24c16();if(flag2)goto read1;x1=rd1byte_24c16();mack_24c16();x2=rd1byte_24c16();mack_24c16();nack_24c16();stop_24c16();GapValue=x1*100+x2;if(GapValue>=1500)GapValue=00;if(GapValue==00)GapValue=70;}//****************************************************//写入数据操作void write_24c16(){uchar x1,x2;write1:x1=GapValue/100;x2=GapValue%100;star_24c16();//发送启动脉冲w1byte_24c16(0xa0);//写24C16的芯片地址,高四位固定为1010,选择第一区,写操作cack_24c16();// 读取应答或非应答信号if(flag2)goto write1;//判断w1byte_24c16(0x10);//写入24C16的内部地址,选择第二页cack_24c16();if(flag2)goto write1;w1byte_24c16(x1);cack_24c16();if(flag2)goto write1;w1byte_24c16(x2);cack_24c16();if(flag2)goto write1;stop_24c16();//写数据完毕,发送停止脉冲}。