功能介绍:
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相关推荐

  1. 基于51单片机的多路多点温度检测两种供电方式proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示多点温度值 2.当温度超过设定温度阈值范围时,蜂鸣器报警 3.按键可设定温度阈值范围/可控制报警开关 原理图: ...

  2. 基于51单片机智能停车场管理车位引导系统蓝牙手机通信proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统采用LCD1602液晶实时显示当前车位状态 2.蓝牙串口间隔5秒发送一次当前车位状态 3.车位检测传感器采用的是红外光电模块,该模块的检测距离 ...

  3. 基于51单片机智能家居家电继电器开关插座定时WiFi无线proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.手机通过wifi控制4路继电器的开和关以及定时: 手机发送OA,继电器全部打开, 手机发送CA,继电器全部关闭, 手机发送O14,继电器14打开, ...

  4. 基于51单片机的倒车雷达声光报警系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.本系统采用LCD1602液晶实时显示测试距离 2.两个功能按键可以设置距离阈值的大小 3.系统报警电路由蜂鸣器和LED组成的声光报警器 3.低于预 ...

  5. 基于51单片机的智能水表水流量计流量报警器proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示水流量/累计流量/累计流量阈值 2.按'清零'键清除累计流量,按'加''减'设置累计流量报警阈值,按'启停'启动停止水泵 3 ...

  6. 基于51单片机的汽车超声波防撞声光报警系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时距离阈值/测试距离 2.低于距离阈值将声光报警 3.按键可更改距离阈值 原理图: PCB: 主程序: #include ...

  7. 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真

    51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 文章目录 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 实验内容 一.实验一 矩阵键盘中断实验 数码管显示 1.仿 ...

  8. 基于51单片机轮胎胎压监测系统-压力传感器proteus仿真

    基于51单片机轮胎胎压监测系统-压力传感器仿真+程序+报告 Proteus仿真版本:proteus7.8 程序编译器:keil 4 编程语言:C语言 编号C0018 百度云网盘下载链接 基于单片机的轮 ...

  9. 基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资料)

    资料编号:086 采用stm32单片机,可以通过蓝牙app控制点阵显示不同效果, 具体功能请看演示视频,全套资料齐全: 86-基于51单片机的蓝牙控制双色LED点阵显示屏(实物图+原理图+源码+全套资 ...

最新文章

  1. vue-cli脚手架(框架)
  2. 杨振宁眼中的物理学之美
  3. java wait 线程安全吗_Java多线程中的wait与notify
  4. Raspberry 4B 串口通信
  5. 银河麒麟4安装MySQL8_2020-03-24 linux 安装mysql8.0
  6. Yoshua Bengio首次中国演讲:深度学习通往人类水平AI的挑战
  7. Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表
  8. mysql alter table if_MySQL中的alter table命令的基本使用方法及提速优化
  9. iOS 使用 Core Plot 绘制统计图表入门
  10. 关于assert和de-assert的解释
  11. matlab绘制小人奔跑动图,如何做奔跑的小人运动规律-动画初学者入门教程
  12. 开源中文分词FudanNLP
  13. 前端工程师的基本工作流程
  14. imagine php,Yii2第三方类库插件Imagine的安装和使用
  15. 微信小程序实现vtt视频字幕
  16. Kubernetes容器平台架构之道
  17. Day06_动态组件_插槽_自定义指令_tabbar案例
  18. 如何用虚拟光驱给服务器装系统,怎样用虚拟光驱安装系统
  19. neo4j 社区版主从集群
  20. 美式期权二叉树matlab代码,美式期权二叉树定价,美式看涨期权二叉树可以提前执行吗...

热门文章

  1. 强大的TMUX分屏工具 详解快捷键 各种用法
  2. 前端基础——CSS 选择器、网页美化
  3. Win10自启动管理设置
  4. SSM整合案例(超详细)
  5. 单正态总体的样本均值和样本方差的分布
  6. 把WPS/Excel里的单元格为图片url链接转换为图片显示
  7. ORA-27101异常处理
  8. 湖北武汉标准员考试标准员在工程施工中的作用建筑七大员考试
  9. QT编程 批量打印二维码
  10. php解析pdf文本