智能化数据采集和电压监控系统C语言程序
- 格式:doc
- 大小:59.50 KB
- 文档页数:9
C语言中的智能安防与智能监控系统
智能安防与智能监控系统在C语言中的实现方式非常重要,可以帮助我们实现对安全的有效监控和管理。
在C语言中,我们可以利用各种传感器和摄像头来获取各种数据,然后通过编程实现智能识别和处理。
首先,我们可以通过C语言编程来实现基本的智能安防功能,如门禁系统、烟雾报警器、温度监测等。
通过各种传感器和模块,我们可以获取环境数据,然后利用C语言编程实现相应的逻辑判断和控制。
比如,当检测到有人靠近门口时,我们可以通过C语言控制门禁系统开启或关闭,保障安全。
其次,通过C语言编程我们可以实现智能监控系统,利用摄像头和图像处理算法来实现对目标的实时监控和识别。
我们可以通过C语言编写图像处理算法,对摄像头所捕捉到的图像进行分析和识别,如人脸识别、车牌识别等。
这样可以实现对特定目标的有效监控,保障安全。
另外,在C语言中还可以通过网络通信模块实现远程监控和管理。
利用C语言编程,我们可以实现设备与设备之间的数据交换和通信,实现远程监控和管理功能。
比如,可以通过手机App远程查看监控画面,实时掌握安全状态。
总的来说,在C语言中实现智能安防与智能监控系统需要具备一定的编程能力和对硬件的了解。
通过合理的设计和编程,我们可以实现各种智能功能,提高安全性和便利性。
希望以上内容能对您有所帮助。
基于C的智能家居监控系统设计与实现智能家居监控系统是一种结合了物联网技术和智能化管理的系统,通过传感器、控制器和网络通信技术,实现对家庭环境的监测和控制。
本文将介绍基于C语言的智能家居监控系统的设计与实现过程。
1. 系统概述智能家居监控系统主要包括传感器模块、控制模块、通信模块和用户界面。
传感器模块负责采集环境数据,如温度、湿度、光照等;控制模块根据采集到的数据进行决策并控制家居设备;通信模块实现系统与用户之间的信息交互;用户界面提供给用户操作界面。
2. 系统设计2.1 传感器模块设计传感器模块是智能家居监控系统的基础,通过传感器获取环境数据。
在C语言中,可以通过调用相应的库函数来实现传感器数据的采集。
常用的传感器包括温湿度传感器、光敏传感器等。
2.2 控制模块设计控制模块根据传感器采集到的数据进行逻辑判断,并控制家居设备的开关状态。
在C语言中,可以通过编写相应的逻辑代码来实现控制功能。
例如,当温度超过设定阈值时,控制空调开启。
2.3 通信模块设计通信模块负责系统与用户之间的信息交互,可以通过串口通信或网络通信实现。
在C语言中,可以使用串口通信库或网络编程库来实现通信功能。
2.4 用户界面设计用户界面是用户与系统交互的窗口,可以通过GUI或CLI方式实现。
在C语言中,可以使用相应的图形库或命令行库来实现用户界面。
3. 系统实现3.1 硬件平台选择在实际搭建智能家居监控系统时,需要选择合适的硬件平台。
常用的硬件平台包括Arduino、Raspberry Pi等。
选择合适的硬件平台可以更好地支持C语言程序的运行。
3.2 软件开发在软件开发过程中,需要编写传感器数据采集、逻辑判断、设备控制和通信功能等代码。
通过C语言编程实现系统功能,并确保代码的稳定性和可靠性。
3.3 系统调试与优化完成软件开发后,需要对系统进行调试和优化。
通过测试各个模块功能是否正常,优化代码结构和性能,确保系统运行稳定。
4. 总结基于C语言的智能家居监控系统设计与实现涉及到传感器数据采集、逻辑判断、设备控制、通信功能等多个方面。
C语言在电力系统中的应用随着信息化和智能化的快速发展,C语言在各个领域中的应用也越来越广泛。
在电力系统中,C语言作为一种高级编程语言,具有灵活性和高效性,被广泛应用于电力系统的各个环节,从实时监控到数据处理和控制系统。
一、电力系统中的实时监控与数据采集在电力系统中,实时监控和数据采集是非常重要的环节。
通过实时监测电力系统的运行状态以及各种参数的变化,可以及时发现问题并采取相应的措施,确保电力系统的稳定运行。
C语言在实时监控与数据采集中的应用主要体现在以下几个方面:1. 数据采集:通过采集电力系统中各种设备的运行状态和参数,将数据传输至中央监控系统,实现对电力系统的实时监测。
C语言可以编写相应的程序,用于读取各种传感器和监测设备的数据,并将其存储到数据库中。
2. 远程通信:C语言可以通过网络通信协议,实现电力系统的远程监控与控制。
通过编写网络通信程序,可以实现与各种设备的远程通信,并实时获取其状态和参数。
3. 报警与故障诊断:C语言在电力系统的实时监控中,可以通过编写相应的算法和程序,实现对设备运行状态的实时分析和故障诊断。
当系统发生异常时,可以及时发出报警并采取相应的措施。
二、电力系统中的数据处理与分析电力系统中产生大量的数据,这些数据需要进行处理和分析,以提取其中有价值的信息,并为决策提供科学依据。
C语言在电力系统中的数据处理与分析方面起到了重要的作用。
1. 数据预处理:通过对电力系统中的原始数据进行预处理,如滤波、去噪、插值等,以减少传感器噪声和提高数据质量。
C语言可以实现这些数据处理算法,并进行自动化处理。
2. 数据统计与分析:C语言可以编写相应的程序,对电力系统中的数据进行统计和分析。
比如,可以通过编写程序对电力系统运行数据进行分析,计算各种统计指标,如负荷率、电压波动等。
3. 数据挖掘与建模:C语言可以通过各种数据挖掘和建模算法,对电力系统中的数据进行挖掘和建模。
比如,可以通过编写聚类、分类或回归算法,对电力系统中的设备进行故障诊断或预测。
基于C的智能交通监控系统开发智能交通监控系统是利用先进的技术手段对道路交通进行实时监控和管理的系统,旨在提高交通效率、减少交通事故、改善交通环境。
本文将介绍基于C语言开发智能交通监控系统的相关内容。
1. 智能交通监控系统概述智能交通监控系统是一种集成了计算机视觉、图像处理、数据分析等技术的智能化系统,通过摄像头、传感器等设备采集道路信息,实现对车辆、行人等交通参与者的监测和识别,从而实现对交通流量、拥堵情况等的实时监控和分析。
2. C语言在智能交通监控系统中的应用C语言作为一种高效、灵活的编程语言,在智能交通监控系统的开发中具有重要作用。
通过C语言编程,可以实现对硬件设备的底层控制和数据处理,保证系统的稳定性和高效性。
同时,C语言具有良好的跨平台性,适用于不同操作系统下的开发。
3. 智能交通监控系统的功能需求实时视频监控:通过摄像头采集道路信息,实现对车辆、行人等的实时监测。
车辆识别:利用图像处理技术对车辆进行识别和分类。
交通流量统计:统计车辆通过道路的数量和速度,分析道路拥堵情况。
事件检测:检测交通事故、违章行为等异常事件,并及时报警。
数据存储与分析:将采集到的数据进行存储和分析,生成报表和统计图表。
4. 智能交通监控系统的技术实现4.1 硬件设备智能交通监控系统需要配备摄像头、传感器、服务器等硬件设备,用于数据采集、处理和存储。
4.2 软件模块4.2.1 数据采集模块利用C语言编程实现数据采集模块,包括对摄像头、传感器等设备的控制和数据获取。
4.2.2 图像处理模块通过C语言编程实现图像处理算法,包括车辆识别、行人检测等功能。
4.2.3 数据分析模块利用C语言编程实现数据分析算法,对采集到的数据进行统计分析,并生成报表和统计图表。
5. 智能交通监控系统的优势实时性强:可以及时监测道路情况,减少交通拥堵。
自动化程度高:通过算法自动识别车辆、行人等信息。
数据准确性高:通过数据分析模块对采集到的数据进行准确分析。
C语言智能安防系统设计
智能安防系统是当今社会智能化发展的必然趋势,通过结合C语言的编程技术,可以设计出高效、稳定的智能安防系统。
在本文中,将介绍如何基于C语言开发
智能安防系统的设计方法和实现步骤。
首先,设计智能安防系统需要明确系统的功能需求。
一般来说,智能安防系统
包括视频监控、入侵检测、报警系统、门禁控制等功能。
针对不同的需求,可以逐步设计和实现每个功能模块。
在C语言中,可以通过使用各种传感器和模块,如
摄像头、红外传感器、声音传感器等,来实现这些功能。
其次,设计智能安防系统还需要考虑系统的数据处理和分析能力。
通过C语言的编程技术,可以编写数据处理算法和机器学习模型,实现对监控画面的实时分析和识别。
例如,可以利用图像处理技术对监控画面进行人脸识别、车牌识别等操作,从而实现智能报警功能。
另外,智能安防系统的实现还需要考虑系统的稳定性和可靠性。
在C语言编程中,需要充分考虑系统的内存管理、异常处理和错误处理机制,以确保系统在长时间运行中的稳定性和可靠性。
同时,对系统进行充分的测试和调试,保证系统运行正常。
最后,在设计智能安防系统时,要考虑系统的可扩展性和可维护性。
通过模块
化的设计,可以方便对系统进行功能扩展和升级。
同时,编写良好的代码注释和文档,有助于他人理解和维护系统。
总而言之,通过C语言编程技术,可以设计实现高效、稳定的智能安防系统。
在系统设计过程中,需要充分考虑功能需求、数据处理能力、稳定性和可维护性等方面,以实现一个功能完善、性能优越的智能安防系统。
希望本文对您在设计智能安防系统时有所帮助。
基于嵌入式系统的智能电网远程监控系统设计与实现随着人们对能源的依赖日益增长,智能电网已经成为一种迫切需要的新型基础设施,实现了分布式、智能化、高效能、可靠性等特点。
而智能电网的远程监控则成为现代工业发展和全球环境保护的必不可少的一部分。
基于此,本文提出了一种基于嵌入式系统的智能电网远程监控系统设计方案,并针对其进行了详细分析与实现。
一、系统设计方案首先,本文对智能电网远程监控系统的硬件和软件架构进行了设计。
硬件方面,本系统的核心是嵌入式系统,包括单片机、传感器和通信模块等。
传感器负责采集电力信息,通信模块则负责实现数据的远程传输,单片机则负责系统的控制和处理。
软件方面,本系统采用嵌入式实时操作系统(RTOS)以及相关的嵌入式开发环境,如Keil,IAR等,在编程语言方面使用C语言和汇编语言来实现。
本系统的工作流程如下:(1)采集数据:传感器负责采集电力信息,包括电压、电流、功率等信息,并将数据传给单片机;(2)数据处理:单片机根据采集的数据进行处理,包括电能计算、峰谷平电量比较等处理,并将处理后的数据存储在嵌入式系统的内存中;(3)数据传输:通信模块负责将处理后的数据通过以太网或GPRS等网络传输至远程服务器;(4)远程处理:远程服务器负责对传输到服务器上的数据进行处理,并对网格系统进行监控和控制,包括故障诊断、负荷预测、能耗分配等。
二、系统实现过程本系统的实现过程根据设计方案,分为硬件实现和软件实现两部分:硬件实现:本系统采用LPC2148作为主控芯片,并结合12位ADC芯片MAX1231使用。
此外,为了保证系统的稳定性和可靠性,我们确保系统的供电电源电压在3.3V±0.3V之间,采用100uF/10V固体电解电容来实现滤波。
软件实现:系统的软件实现工作主要分为两个方面,即单片机程序设计和服务器端程序设计。
单片机程序设计我们主要采用C语言来实现,包括了(1)采样程序;(2)数据存储程序;(3)数据处理程序;(4)以太网模块驱动程序等。
基于C的物联网智能监控系统设计与开发物联网(Internet of Things,IoT)作为当今信息技术领域的热门话题之一,已经在各个领域得到了广泛的应用。
物联网技术的发展为智能监控系统的设计与开发提供了更加便捷和高效的解决方案。
本文将围绕基于C语言的物联网智能监控系统设计与开发展开讨论,从系统架构设计、传感器数据采集、数据处理与分析、远程监控等方面展开详细介绍。
1. 系统架构设计在设计物联网智能监控系统时,系统架构是至关重要的一环。
基于C语言的物联网智能监控系统通常包括传感器模块、数据采集模块、数据处理模块、通信模块和用户界面模块。
传感器模块用于采集环境参数数据,数据采集模块负责将传感器采集到的数据进行处理和存储,数据处理模块对采集到的数据进行分析和处理,通信模块实现设备之间的通信,用户界面模块则提供友好的操作界面供用户使用。
2. 传感器数据采集传感器是物联网智能监控系统中至关重要的组成部分,通过传感器可以实时采集环境参数数据。
在基于C语言的物联网智能监控系统中,需要编写相应的驱动程序来实现对传感器数据的采集。
通过C语言编程,可以直接操作硬件接口,实现对传感器数据的准确采集,并将采集到的数据传输给数据采集模块进行处理。
3. 数据处理与分析在物联网智能监控系统中,大量的数据需要进行处理和分析,以便为用户提供准确、及时的信息。
基于C语言的系统可以通过编写高效的算法来实现对数据的处理和分析。
例如,可以使用C语言编写数据滤波算法、数据压缩算法等,对采集到的原始数据进行处理,提取出有用信息,并为用户提供可视化展示。
4. 远程监控远程监控是物联网智能监控系统中非常重要的功能之一。
通过远程监控,用户可以随时随地通过互联网对监控系统进行实时监测和管理。
基于C语言的物联网智能监控系统可以通过网络编程实现远程监控功能,用户可以通过PC端或移动端设备访问监控系统,并实时查看环境参数数据、接收报警信息等。
5. 总结基于C语言的物联网智能监控系统设计与开发涉及到多个方面,包括系统架构设计、传感器数据采集、数据处理与分析、远程监控等。
C语言智能家居传感器数据采集和设备控制的方法智能家居技术的兴起改变了人们对家庭生活的理念和方式。
传感器数据的采集和设备的控制是构建智能家居系统的关键。
在本文中,我们将探讨使用C语言实现智能家居传感器数据采集和设备控制的方法。
一、传感器数据采集传感器是智能家居系统中重要的组成部分,它们可以感知环境中的各种参数和状态,并将这些信息转化为电信号传输给控制器。
常见的传感器包括温度传感器、湿度传感器、光照度传感器等。
以下是使用C语言进行传感器数据采集的步骤:1. 引入相应的传感器库:C语言提供了许多传感器库,开发者可以根据实际需要选择合适的库来实现数据采集功能。
2. 初始化传感器:在程序运行时,需要通过调用相关函数对传感器进行初始化设置。
这包括选择传感器的工作模式、设置传感器的采样频率等。
3. 采集传感器数据:通过调用传感器库中的函数,可以获取传感器当前的数值。
根据实际需要,可以选择一次性采集多个传感器的数据,或者只采集特定传感器的数据。
4. 数据处理和存储:获取到传感器数据后,可以对其进行相应的处理,如单位转换、滤波算法等。
处理完成后,将数据存储在适当的数据结构中,以便后续的设备控制。
二、设备控制通过采集传感器数据,我们可以了解到环境的各种参数和状态,接下来需要根据这些信息对设备进行控制。
以下是使用C语言进行设备控制的方法:1. 引入设备控制库:C语言提供了各种设备控制的库,如GPIO库、串口库等。
根据具体的设备类型,选择合适的库来进行设备控制。
2. 初始化设备:在程序运行时,需要进行设备的初始化设置,包括设备的连接、波特率设置等。
这样才能建立与设备的通信。
3. 发送控制指令:使用设备控制库中提供的函数,向设备发送特定的控制指令。
控制指令可以是开关指令、调节指令等,根据实际需求确定。
4. 设备反馈和状态监测:通过设备的反馈信息,可以监测设备是否成功执行了相应的控制指令。
根据反馈信息,可以对设备状态进行监测和判断。
智能监控系统设计与实现(基于C语言)智能监控系统是一种集成了传感器、控制器和通信模块的系统,能够实时监测环境参数并做出相应的控制决策。
本文将介绍如何使用C 语言设计和实现一个简单的智能监控系统。
1. 系统架构设计智能监控系统通常包括传感器模块、控制器模块和通信模块三部分。
传感器模块负责采集环境参数,比如温度、湿度、光照等;控制器模块根据传感器数据做出相应的控制决策,比如开启风扇降温;通信模块负责与外部设备进行数据交互,比如将监测数据发送到云端。
2. C语言程序设计在设计智能监控系统时,我们首先需要编写C语言程序来实现系统的功能。
以下是一个简单的示例代码:示例代码star:编程语言:c#include <stdio.h>// 定义传感器数据结构typedef struct {float temperature;float humidity;float light;} SensorData;// 控制函数void controlSystem(SensorData data) {if (data.temperature > 30) {printf("Temperature is too high, turning on the fan.\n");}if (data.humidity > 80) {printf("Humidity is too high, turning on the dehumidifier.\n");}}int main() {SensorData data = {28.5, 85.0, 500.0}; // 模拟传感器数据controlSystem(data); // 控制系统return 0;}示例代码end在上面的示例代码中,我们定义了一个SensorData结构体来存储传感器数据,然后编写了一个controlSystem函数来根据传感器数据做出相应的控制决策。
基于C的智能农业监控系统设计与实现智能农业监控系统是一种利用先进的信息技术手段,对农业生产过程进行实时监测、数据采集和分析的系统。
通过智能农业监控系统,农民可以更加科学地管理农田、提高作物产量、减少资源浪费,从而实现农业生产的智能化、精准化和高效化。
本文将介绍基于C语言的智能农业监控系统的设计与实现过程。
1. 系统需求分析在设计智能农业监控系统之前,首先需要进行系统需求分析。
智能农业监控系统主要包括以下功能模块:环境监测模块:负责监测农田的温度、湿度、光照等环境参数。
作物生长状态监测模块:负责监测作物的生长状态,如生长高度、叶片颜色等。
灌溉控制模块:根据环境参数和作物生长状态,自动控制灌溉系统进行灌溉。
施肥控制模块:根据土壤养分含量和作物需求,自动控制施肥系统进行施肥。
数据采集与存储模块:负责采集各种传感器数据,并将数据存储到数据库中。
2. 系统设计基于C语言的智能农业监控系统可以分为传感器端和控制端两部分。
传感器端负责采集环境参数和作物生长状态数据,而控制端负责根据数据进行智能控制。
2.1 传感器端设计传感器端主要包括各种传感器模块和单片机模块。
传感器模块用于采集环境参数和作物生长状态数据,单片机模块用于将采集到的数据发送给控制端。
示例代码star:编程语言:c// 传感器端代码示例#include <stdio.h>// 定义传感器结构体typedef struct {float temperature; // 温度float humidity; // 湿度float light; // 光照强度float height; // 生长高度} SensorData;// 读取传感器数据SensorData readSensorData() {SensorData data;// 读取传感器数据的具体实现return data;}int main() {SensorData data = readSensorData();printf("Temperature: %.2f\n", data.temperature);printf("Humidity: %.2f\n", data.humidity);printf("Light: %.2f\n", data.light);printf("Height: %.2f\n", data.height);return 0;}示例代码end2.2 控制端设计控制端主要包括数据处理模块和执行模块。
附录:总程序#include <reg52.h>#include <intrins.h>#include<stdio.h>#define N 9sbit SDA=P2^0; //定义i2c连接端口sbit SCL=P2^1;sbit LS139A = P2^2; //定义139译码器的输入A脚由P2.2控制sbit LS139B = P2^3; //定义139译码器的输入脚B由P2.3控制sbit ON= P3^3;sbit L_led= P2^6; // 定义超下限led灯由P2.6控制sbit H_led= P2^7; // 定义超上限led灯由P2.7控制sbit IMP= P2^5; // 定义脉冲输出由P2.5控制unsigned char flag_led1,flag_led2,led_num,imp_num;unsigned char flag_uart,flag_time,t0_num;unsigned char a,b;int V_data,V_mid,value,Ling,Ref;float ad_v;unsigned char BUF[2]; //存放读取到的结果8bit x 2unsigned int code His_data[50]={0}; //采样值存放数组unsigned int code temp[9]={0};unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制/*****************毫秒延时程序*************************/void delay_ms(unsigned int t) //5.8Mhz,1T{unsigned char a,b;for(a=t;a>0;a--)for(b=220;b>0;b--);}/**************初始化程序****************/void init(){TMOD=0x01;TH0=(65536-4000)/256; //定时器T0装初值,定时时间4msTL0=(65536-4000)%256;TR0=1; //启动T1ET0=1; //开T0中断SM0=0; //设定串口工作方式1SMI=1;REN=1; //允许串口接收EA=1; //开总中断ES=1;TI=0;RI=0; //开串口中断}/*------------------------------------------------启动IIC总线------------------------------------------------*/ void Start(void){SDA=1;_nop_();SCL=1;_nop_();SDA=0;_nop_();SCL=0;}/*------------------------------------------------停止IIC总线------------------------------------------------*/ void Stop(void){SDA=0;_nop_();SCL=1;_nop_();SDA=1;_nop_();SCL=0;}/*------------------------------------------------应答IIC总线------------------------------------------------*/ void Ack(void){SDA=0;_nop_();SCL=1;_nop_();SCL=0;_nop_();}/*------------------------------------------------非应答IIC总线void NoAck(void){SDA=1;_nop_();SCL=1;_nop_();SCL=0;_nop_();}/*------------------------------------------------发送一个字节------------------------------------------------*/ void Send(unsigned char Data){unsigned char BitCounter=8;unsigned char temp;do{temp=Data;SCL=0;_nop_();if((temp&0x80)==0x80)SDA=1;elseSDA=0;SCL=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);SCL=0;}*------------------------------------------------读入一个字节并返回------------------------------------------------*/ unsigned char Read(void){unsigned char temp=0;unsigned char temp1=0;unsigned char BitCounter=8;SDA=1;do{SCL=1;_nop_();if(SDA)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;SCL=0;}while(BitCounter);return(temp);}/*------------------------------------------------串口发送函数------------------------------------------------*/void SendOneByte(unsigned char c){SBUF = c;while(!TI);TI = 0;}/*------------------------------------------------读取ADS1115------------------------------------------------*/void read_ad(unsigned char channel){ delay_ms(2);Start();Send(0x90); //写入芯片地址Ack();Send(0x01); //写入配置寄存器Ack();Send(0xc1+channel*16); //写配置数据16位:单端输入,Fs=6.144v。
Ack();Send(0x83); //采集速度860Ack();Stop();//--------------------------------------//delay_ms(100);Start();Send(0x90); //设置读取指针准备读取Ack();Send(0x00);Stop();//--------------------------------------//delay_ms(2);Start(); //写入芯片地址Send(0x91);Ack();BUF[0]=Read(); //读数据Ack();BUF[1]=Read(); //读数据NoAck();Stop();value=(BUF[0] << 8) | BUF[1]; //合成16位结果}/************LED数码显示**********************/void display(unsigned int V_dat){int tt=6114*V_dat/65536; //转化为电压显示unsigned int LedOut[4];LedOut[0]=Disp_Tab[t/1000]||0x80; //千位带小数点LedOut[1]=Disp_Tab[t%1000/100]; //百位LedOut[2]=Disp_Tab[t%1000%100/10]; //十位LedOut[3]=Disp_Tab[t%10]; //个位for( i=0; i<4; i++){P0 = LedOut[i];switch(i) //使用switch 语句控制位选{case 0:LS139A=0; LS139B=0; break;case 1:LS139A=1; LS139B=0; break;case 2:LS139A=0; LS139B=1; break;case 3:LS139A=1; LS139B=1; break;delay_ms(5); //扫描间隔时间太长会数码管会有闪烁感}}}/************************************************** 冒泡排序:将9位数的数组从小到大排序,进行中值滤波* **************************************************/unsigned int reorder(unsigned int group[N]){int i,j,k;int m=1;for(i=0;i<N-1;i++){for(j=i+1;j<N;j++){if(group[j-1]<group[j]) contiue;k=group[j];group[j]=group[j-1];group[j-1]=k;m=0;}if(m=1) break;}Between=group[4]; //取中间值return Between;}/****************主程序*********************/void main(){init();int i;for(i=0;i<N;i++) //从通道0读基准电压0V{read_ad(0);temp[i]=value;delay_ms(1);}reorder(temp[N]); //中值滤波Ling= temp[4];for(i=0;i<N;i++) //从通道2读基准电压 3.3V{read_ad(1);temp[i]=value;delay_ms(1);}reorder(temp[N]); //中值滤波Ref=temp[4];while(1){if(flag_uart==1);//向PC机传输50个采样值{flag_uart=0;ES=0;unsigned int vol,h;unsigned char qian,bai,shi,ge;int i;for(i=0;i<50;i++){vol=His_data[i];h=6144*vol/65536;qian=h/1000+0x30;bai=h%1000/100+0x30;shi=h%1000%100/10+0x30;ge=h%10+0x30;SendOneByte(qian);SendOneByte('.');SendOneByte(bai);SendOneByte(shi);SendOneByte(ge);}ES=1;}if(flag_time==1) //1s采样一次{flag_time=0;int i;for(i=0;i<N;i++) //从通道1读取采样值{read_ad(1);temp[i]=valuedelay_ms(1);}reorder(temp[N]); //中值滤波V_mid=temp[4];V_data=17600*(V_mid-Ling)/(Ref-Ling); //增益校正和零点校正if(b==49){int j;for(j=0;j<49;j++){His_data[j]=His_data[j+1];His_data[49]=V_data;}}elseHis_data[b]=V_data;b++;}if(His_data[b]<10667) // 采样值低于2V,置位超下限标志位{flag_led1=1;}if(His_data[b]>21333) //采样值高于4V,置位超上限标志位{flag_led2=1;}V_dat=His_data[b]; //显示最新采样值display(V_dat);}}/*********************************************************** 定时器0中断程序:判断脉冲状态是否改变,led是否闪烁,** 1s周期是否到************************************************************/void timer0() interrupt1{IMP=0;TH0=(65536-4000)/256; //重装初值4msTL0=(65536-4000)%256;led_num++;imp_num++;t0_num++;if(imp_num==4) //16ms定时到后输出高脉冲{IMP=1;imp_num=0;}if(t0_num==250) // 1s定时到后置位对应标志位{t0_num=0;flag_time=1;}if(led_num==2) //8ms定时到{led_num=0;if(flag_led1==1) // 若超下限标志位为1则使led1灯闪烁{L_led=~L_led;flag_led1=0;}if(flag_led2==1) // 若超上限标志位为1则使led2灯闪烁{H_led=~H_led;flag_led2=0;}}}/*************************************************** 串口中断程序:接收完数据RT置位或发送完数据后TI置位** 程序进入中断子程序* ***************************************************/void ser() interrupt4{if(RI==1){RI=0;a=SBUF;}if(a==1){flag_uart=1;}}。