基于51单片机的电流电压过流过压监测声光报警器proteus仿真原理图PCB
功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶实时显示当前检测的电压电流值
2.当电压/电流超过设定阈值时,蜂鸣器报警
3.按键可切换界面,并设置电压/电流阈值
原理图:
PCB:
主程序:
#include "main.h"
#include "math.h"bit refreshFlag = 1;enum _MODE_DF_ dispMode;
xdata float f_volt = 0.0;
xdata float f_voltBuf = 0.0;
xdata int voltMin = 0;
xdata int voltMax = 10;
xdata float f_cur = 0.0;
xdata float f_curBuf = 0.0;
xdata float f_curMin = 0.0;
xdata float f_curMax = 4.0;unsigned char setIndex = 0;
unsigned char i = 0;
unsigned char cnt = 0;char dis0[16]; //定义显示区域临时存储数组void CheckKey(void);
void Timer0_Init(void); //定时器初始化void main(void)
{bit ack = 0;Timer0_Init();LCD_Init(); //初始化液晶DelayMs(200); //延时有助于稳定LCD_Clear(); //清屏LCD_DispStr(0, 0, " Welcome! ");DelayS(1);while (1) //主循环{if (refreshFlag == 1) //100ms获取数据{refreshFlag = 0;TR0 = 0;for (i = 0; i < 10; i++) //采集10次数据{f_voltBuf = f_voltBuf + (float)ReadADC(AIN1_GND) * 5 / 255; //转换电压f_curBuf = f_curBuf + (float)ReadADC(AIN0_GND) * 5 / 255; //转换电流}f_volt = 3.2 * f_voltBuf / 10; //根据实际情况调整系数f_cur = (f_curBuf / 10 - 2.515) / 0.066; //换算电流,根据实际情况调整系数f_voltBuf = 0;f_curBuf = 0;if (f_volt <= voltMax && f_volt >= voltMin \&& fabs(f_cur) <= f_curMax && fabs(f_cur) >= f_curMin) //在范围内{;}else //超出阈值范围,蜂鸣器报警{BUZZER = ON;}//液晶显示if (dispMode == NORMAL){DispNormal(&f_volt, &f_cur);}TR0 = 1;}KeyProcess();}
}void DispNormal(float *volt, float *cur)
{sprintf(dis0, "Voltage: %4.1f V", *volt); //打印LCD_DispStr(0, 0, dis0); //显示sprintf(dis0, "Current: %5.1f A", *cur); //打印LCD_DispStr(0, 1, dis0); //显示}void DispSetVoltage(unsigned char setIndex)
{LCD_DispStr(0, 0, " Set Voltage ");sprintf(dis0, " H:%3dV L:%3dV ", voltMax, voltMin);LCD_DispStr(0, 1, dis0);switch (setIndex){case 1: LCD_SetCursor(6, 1, 1); break;case 2: LCD_SetCursor(13, 1, 1); break;default:;}
}void DispSetCurrent(unsigned char setIndex)
{LCD_DispStr(0, 0, " Set Current ");sprintf(dis0, " H:%3.1fA L:%3.1fA ", f_curMax, f_curMin);LCD_DispStr(0, 1, dis0);switch (setIndex){case 1: LCD_SetCursor(6, 1, 1); break;case 2: LCD_SetCursor(14, 1, 1); break;default:;}
}/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Timer0_Init(void)
{TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0 = (65536 - 10000) / 256; //重新赋值 10msTL0 = (65536 - 10000) % 256;EA = 1; //总中断打开ET0 = 1; //定时器中断打开TR0 = 1; //定时器开关打开
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_Interrupt(void) interrupt 1
{static unsigned char time10ms = 0;TH0 = (65536 - 10000) / 256; //重新赋值 10msTL0 = (65536 - 10000) % 256;time10ms++;if (time10ms >= 10) // 0.1s{time10ms = 0;refreshFlag = 1;}}
仿真演示视频:
https://www.bilibili.com/video/BV1FU4y127KM/
实物演示视频:
https://www.bilibili.com/video/BV1RY411F793/
基于51单片机的电流电压过流过压监测声光报警器proteus仿真原理图PCB相关推荐
- 基于51单片机的多路多点温度检测两种供电方式proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示多点温度值 2.当温度超过设定温度阈值范围时,蜂鸣器报警 3.按键可设定温度阈值范围/可控制报警开关 原理图: ...
- 基于51单片机智能停车场管理车位引导系统蓝牙手机通信proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602液晶实时显示当前车位状态 2.蓝牙串口间隔5秒发送一次当前车位状态 3.车位检测传感器采用的是红外光电模块,该模块的检测距离 ...
- 基于51单片机智能家居家电继电器开关插座定时WiFi无线proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.手机通过wifi控制4路继电器的开和关以及定时: 手机发送OA,继电器全部打开, 手机发送CA,继电器全部关闭, 手机发送O14,继电器14打开, ...
- 基于51单片机的倒车雷达声光报警系统proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.本系统采用LCD1602液晶实时显示测试距离 2.两个功能按键可以设置距离阈值的大小 3.系统报警电路由蜂鸣器和LED组成的声光报警器 3.低于预 ...
- 基于51单片机的智能水表水流量计流量报警器proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示水流量/累计流量/累计流量阈值 2.按'清零'键清除累计流量,按'加''减'设置累计流量报警阈值,按'启停'启动停止水泵 3 ...
- 基于51单片机的汽车超声波防撞声光报警系统proteus仿真原理图PCB
功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时距离阈值/测试距离 2.低于距离阈值将声光报警 3.按键可更改距离阈值 原理图: PCB: 主程序: #include ...
- 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真
51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 文章目录 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 实验内容 一.实验一 矩阵键盘中断实验 数码管显示 1.仿 ...
- 基于51单片机轮胎胎压监测系统-压力传感器proteus仿真
基于51单片机轮胎胎压监测系统-压力传感器仿真+程序+报告 Proteus仿真版本:proteus7.8 程序编译器:keil 4 编程语言:C语言 编号C0018 百度云网盘下载链接 基于单片机的轮 ...
- 基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资料)
资料编号:086 采用stm32单片机,可以通过蓝牙app控制点阵显示不同效果, 具体功能请看演示视频,全套资料齐全: 86-基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资 ...
最新文章
- vue-cli脚手架(框架)
- 杨振宁眼中的物理学之美
- java wait 线程安全吗_Java多线程中的wait与notify
- Raspberry 4B 串口通信
- 银河麒麟4安装MySQL8_2020-03-24 linux 安装mysql8.0
- Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
- Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表
- mysql alter table if_MySQL中的alter table命令的基本使用方法及提速优化
- iOS 使用 Core Plot 绘制统计图表入门
- 关于assert和de-assert的解释
- matlab绘制小人奔跑动图,如何做奔跑的小人运动规律-动画初学者入门教程
- 开源中文分词FudanNLP
- 前端工程师的基本工作流程
- imagine php,Yii2第三方类库插件Imagine的安装和使用
- 微信小程序实现vtt视频字幕
- Kubernetes容器平台架构之道
- Day06_动态组件_插槽_自定义指令_tabbar案例
- 如何用虚拟光驱给服务器装系统,怎样用虚拟光驱安装系统
- neo4j 社区版主从集群
- 美式期权二叉树matlab代码,美式期权二叉树定价,美式看涨期权二叉树可以提前执行吗...