首页 > 其他分享 >【Proteus仿真】基于51单片机的简易电压表制作(可串口远程调控)

【Proteus仿真】基于51单片机的简易电压表制作(可串口远程调控)

时间:2024-09-20 11:54:56浏览次数:3  
标签:Dat void 51 rxd beep 单片机 串口 sbit

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机,设计一个简易电压表:

采用3位LED数码管显示被测电压值:基本测量范围是 0-5V;测量误差为士0.02V。开机或复位后,在 LED 最右端显示“P”,以提示系统正常:正常运行时,不断采集电压值并送显示。当测量电压超过2.5V时,通过蜂鸣器发出报警。

串口控制:

a. 通过按键选择蜂鸣器报警等级(共三级,等级一对应2V,等级二对应2.5V,等级三对应3V),第四位 LED 数码管显示报警级别;

b. 利用串口调试助手,通过上位机设定报警等级对应的电压阈值。

仿真图:

编辑

3000字WORD对应文档:

编辑

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

1、51单片机

2、DAC0832电路

3、按键模块

4、蜂鸣器模块

5、四位数码管

6、串口模块

三、程序编程

/*部分代码,全部代码取页尾资源*/
#include <REGX52.H>
#define uchar unsigned char
#define uchar unsigned char

	//管脚定义
	sbit jia=P1^6;
	sbit jian=P1^7;
	sbit key1 = P1^1;
	sbit key2 = P1^2;
	sbit key3 = P1^3;
	sbit LED1=P3^4;
	sbit LED2=P3^5;
	sbit LED3=P3^6;
	sbit LED4=P3^7;
	sbit beep = P3^3;
							
	 
	//函数声明 
	void delay(void);	//延时	  
	void key(void);	   	//按键
	void add01(void);  	//步进加0.1
	void dec01(void);	//步进减0.1
	void shuchu(void);	//显示输出和电压调节
	void DA(void);		//模数转换
	void beepwarning(int n);
   

	uchar a\[11\]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8c};       
	uchar bw=0,sw=0,gw=5,dw=0;
	static unsigned char fvol=50;
	static unsigned char st=0;
	static int flag = 0,v1=20,v2=25,v3=30;
	static char Dat_rxd;

void Com0_Init(void)
{
    EA=1;        //开总中断
    ES=1;        //允许串口中断
    TMOD=0x20;   //定时器T1,在方式3中断产生波特率
    SCON=0x50;
    TH1=0xfd;    //波特率设置为9600(晶振12M)
    TL1=0xfd;
    TR1=1;       //开定时器T1运行控制位
}

void Com0(void) interrupt 4 using 1
{
    if(RI)
    {
        Dat_rxd=SBUF;                 //串口接收
        Dat\_rxd=Dat\_rxd-0x30;
        RI=0;
    }
}

void send_string(uchar *p)
{
    while(*p!= '\\0')
    {
        SBUF=*p;
        p++;
        while(TI==0);
        TI=0;
    }
}


void main(void)		  //主程序
{ 
	TMOD = 0x01;
	TH0  = (65535-2000)/256;
	TL0  = (65535-2000)%256; 
	EA=1;
	ET0=1;
	TR0=1;
	Com0_Init();//串口初始化 
	beep = 0;
	while(1)
	{	
		key();  
		DA();	
		if(Dat_rxd==0x01)
				{ 
					v1=30;
				}
		else if(Dat_rxd==0x02)
				{
				  v1=40;	
				}
				
		if(flag == 1)
		{
			if(fvol>v1)
			{
			beep =1;
			bw=1;
			}
			else
			{
				beep = 0;
			}
		}
		if(flag == 2)
		{
			if(fvol>v2)
			{
			beep =1;
			bw=2;
			}
			else
			{
				beep = 0;
			}
			
		}
		if(flag == 3)
		{
		if(fvol>v3)
		{
			beep =1;
			bw=3;
		}
			else
			{
				beep = 0;
			}
		}
	}
}

四、实现现象

具体动态效果看B站演示视频:

基于51单片机的电压表设计Proteus仿真(可串口远程调控)_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、安装包、串口工具、WORD文档、演示视频):

链接:https://pan.baidu.com/s/1Xq576JK89ruRpT66LDXwNA 
提取码:xz2q 
–来自百度网盘超级会员V4的分享

标签:Dat,void,51,rxd,beep,单片机,串口,sbit
From: https://blog.csdn.net/szq0419/article/details/142360294

相关文章

  • 15【Proteus仿真】基于51单片机的智能车位锁系统(电流检测、电压检测、红外检测、灯光
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于STC89C51单片机,具有复位电路和晶振电路;1.按下升起的按键后,然后用GP2D12红外传感器判断车辆是否在位,若不在位,升降杆高度为0,L298N驱动电机顺时针运转,升降杆起升,高度慢慢提高;假设提高到10,电机停......
  • 单片机与PLC的区别:一场弱电与强电的对话
    单片机与PLC的区别:一场弱电与强电的对话引言单片机和PLC(可编程逻辑控制器)是工业自动化和电子设备控制中的两大“主角”。虽然它们的功能看起来相似,都是控制器,但它们的使用环境、设计理念和性能却大不相同。简单来说,单片机常用于小型电子设备,属于弱电项目,而PLC则用于工业生......
  • 从0开始的stm32单片机学习之旅 第三章
    查看原理图(以最小系统原理图为例)1通过看引脚名称来判断电路是属于哪个功能的1.1电源管脚:引脚图中的VDD、VSS、VREF+、VREF-、VSSA、VDDA等都属于电源引脚。VDD:VDD是单片机的正电源引脚,用于提供单片机的工作电压。它通常连接到电源供应器的正极。VSS:VSS是单片机的地(GN......
  • 基于单片机设计的激光测距仪(采用XKC-Kl200模块)
    一、前言随着科技的不断进步和应用需求的增加,测距仪成为了许多领域必备的工具之一。传统的测距仪价格昂贵、体积庞大,使用起来不够方便。本项目采用STC89C52单片机作为主控芯片,结合XKC-KL200激光测距模块和LCD1602显示器,实现了一个简易且高效的激光测距仪。这个测距仪可以帮助用户快......
  • 51c视觉~YOLO~合集1
    1、Yolo8(一)YOLOv8和OpenCV实现货架上的物体计数们将根据检测到的物体的坐标数据获得的见解确定货架的数量以及货架上的物体数量。    我们使用SKU110K数据集来构建我的目标检测模型。此数据集包含商店货架上对象的边界框注释,并且由一个名为“object”的类组成。    由于......
  • Day51.后端框架初认及补充
    1.后端框架初认及补充_flask框架初识启动框2.后端框架初认及补充_flask框架的路由格式,请求方式,返回格式3.后端框架初认及补充_form表单使用name标签可以获取用户输入的内容4.后端框架初认及补充_form表单get请求会将用户的输入拼接在url后,且密码的密文变成明文形式5.后端框架初......
  • 51c视觉~合集30
    #SaRA修改一行代码就能实现高效微调!上海交大&腾讯开源:兼顾原始生成和下游任务仅修改一行训练代码即可实现微调过程。文章链接:https://arxiv.org/pdf/2409.06633项目链接:https://sjtuplayer.github.io/projects/SaRA/1.引言SaRA是一种针对预训练扩散模型的高效微调方法。通过微调预......
  • P2051 [AHOI2009] 中国象棋 题解
    DP好题?首先确定,每一行/列只能放至多两个棋子,这么少,所以我们的状态肯定和棋子数有关。由于我们不关注具体的方案数,所以我们不妨只关心对应棋子数量的行/列的数量。同时,由于考虑行和列都是一样的,所以我们不妨用行递推。所以我们设$\dp_{i,j,k}\$表示当前放到第\(i\)行,有\(......
  • 01 [51单片机 PROTEUS仿真设计]基于温度传感器的恒温控制系统
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,具有晶振电路、复位电路、DS18B20温度传感器、LED灯和蜂鸣器灯光报警模块、LCD1602显示模块、L298N驱动电机散热模块和按键模块。主要功能:系统开始运行,显示屏显示最大温度阈值和最小......
  • 02 [proteus仿真]基于51单片机,74hs373,8255A扩展 流水灯设计
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,74hs373,8255A扩展流水灯设计二、硬件资源基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。三、程序编程#include<reg52.h>#include<intrins.h>#include......