Proteus仿真实例_基于STM32的定时智能插座开关设计(仿真文件+程序)24-32f-61

一.系统概述

系统通过STM32单片机进行主控,系统内具有温度检测和超限报警的功能,还具有按键控制插座开关功能和蓝牙端控制开关的功能。另外插座的开关还可以定时设置,到达定时时间插座电源关闭,防止意外发生。通过按键可以设定定时时间和温度阈值以及直接控制插座的开关。

二.仿真概述

1.进入仿真后可以看到OLED显示屏端显示的数据,此时没有开始定时,温度没有超限。

2.  通过虚拟串口助手模拟蓝牙APP的数据收发,当启动仿真后就会在蓝牙端接收到连接成功指令,虚拟串口助手的链接如下所示:波特律动 串口助手 (keysking.com)icon-default.png?t=N7T8https://serial.keysking.com/

3. 按下设置按键,每次按下设置按键就会移动到下一个可调节位置,可调节的参数包括温度阈值,定时时间的时分秒以及插座的开关,此时调节下插座开关并按下确认按键就会打开插座。在蓝牙端发送字符A和B也可以直接控制插座的开关。

4. 调节DS18B20的红色按钮就能调节实时温度,当检测到温度超过设定阈值就会报警提醒。

5. 按下设置按键并将设置参数移动到定时时间处,设置合适的时间后按下确认按键开始定时,定时时间内插座工作,定时时间结束自动关闭并响应一声进行提醒。

三.程序设计

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "DS18B20.h"
#include "Timer.h"
#include "Serial.h"
#include "EXTERN-Key.h"
#include "Key.h"
uint16_t TimeNum;
int16_t limittemp;
uint8_t bian;
uint16_t shi;
uint16_t fen;
uint16_t miao;
uint16_t time;
uint8_t RxData;	
char  switchkey;
int main(void)
{
	OLED_Init();
	DS18B20_Init();
	Serial_Init();
	Externkey_Init();
	Key_Init();
	
	uint16_t Temp ;
	OLED_ShowString(1, 1, "Temp=");
	OLED_ShowString(3, 1, "time:00.00.00");
	OLED_ShowString(2, 1, "limittemp=");
	OLED_ShowString(4, 1, "switchkey=");
	Serial_SendString("ready!");
	
	while (1)
	{
		//Serial_SendString("ready!");
		if(Temp/10%100>=limittemp)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_5);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
		}
		if(Temp/10%100<limittemp)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_4);
		}
		if (Serial_GetRxFlag() == 1)			//检查串口接收数据的标志位
		{
			RxData = Serial_GetRxData();		//获取串口接收的数据
			Serial_SendByte(RxData);			//串口将收到的数据回传回去,用于测试
					if (RxData =='A')			
				{
					GPIO_SetBits(GPIOA, GPIO_Pin_5);
				}
			
			if (RxData == 'B')			
				{
					 GPIO_ResetBits(GPIOA, GPIO_Pin_5);
				}
		}	
		if(TimeNum == 1)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_5);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
			Delay_ms(100);
			GPIO_SetBits(GPIOA, GPIO_Pin_4);
		}
		if(bian == 0)
		{
				OLED_ShowNum(3, 12, (TimeNum % 3600) % 60, 2);
				OLED_ShowNum(3, 9,  (TimeNum  % 3600) / 60, 2);
				OLED_ShowNum(3, 6, TimeNum / 3600, 2);
				OLED_ShowNum(2, 11, limittemp, 2);
				OLED_ShowChar(4,11,switchkey);

				if(DS18B20_Reset()==0)
				{
						Temp = DS18B20_ReadTemp();
						if(flag==1)
						{
							OLED_ShowString(1, 1, "Temp=-");
							OLED_ShowString(1, 10, ".");
							OLED_ShowNum(1,7,Temp/10%100,3);
							OLED_ShowNum(1,11,Temp%10,1);
						}
						else
						{
							OLED_ShowString(1, 1, "Temp=+");
							OLED_ShowString(1, 10, ".");
							OLED_ShowNum(1,7,Temp/10%100,3);
							OLED_ShowNum(1,11,Temp%10,1);
						}
					}
				else
					{
						OLED_ShowString(1,1,"No   sensor  ");
					Delay_ms(5);
					}
				
		}
		if(bian == 1)
		{
		OLED_ShowString(2, 11, "  ");	
		Delay_ms(500);
		OLED_ShowNum(2, 11, limittemp, 2);
		Delay_ms(500);
		}
			
		if(bian == 2)
		{
			OLED_ShowString(3, 12, "  ");	
			Delay_ms(500);
			OLED_ShowNum(3, 12, miao, 2);
			Delay_ms(500);
		}
		if(bian == 3)
		{
			OLED_ShowString(3, 9, "  ");
			Delay_ms(500);			
			OLED_ShowNum(3, 9,fen, 2);
			Delay_ms(500);
		}
		if(bian == 4)
		{
			OLED_ShowString(3, 6, "  ");
			Delay_ms(500);
			OLED_ShowNum(3, 6, shi, 2);
			Delay_ms(500);
		}
		if(bian == 5)
		{
			OLED_ShowChar(4,11,switchkey);
			Delay_ms(500);
			OLED_ShowString(4, 11, " ");
			Delay_ms(500);
		}
		if(bian == 6)
		{
		if(switchkey =='k')
		GPIO_SetBits(GPIOA, GPIO_Pin_5);
		if(switchkey =='g')
		GPIO_ResetBits(GPIOA, GPIO_Pin_5);
			TimeNum =time ;
			shi = 0;
			fen = 0;
			miao = 0;
			bian = 0;
		}
	}
}

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Proteus仿真是一款功能强大的电子电路仿真软件,可用于帮助开发人员设计和验证电路设计的正确性和性能。在stm32时钟设计和实现方面,Proteus仿真可以提供以下几个方面的帮助: 1. 时钟电路设计Proteus仿真软件提供了各种元件和器件模型,可以用于设计stm32的时钟电路。开发人员可以在软件中添加和连接时钟源、晶振、电容、电感等元件,并设置其参数和特性。 2. 时钟频率设定:Proteus仿真软件允许开发人员设定时钟的频率。可以通过调节晶振的参数、加入PLL锁相环电路和设置分频器等方式,实现对stm32时钟频率的控制和调整。通过仿真,可以验证时钟频率的稳定性和精度。 3. 时钟分频设计:在stm32的时钟设计中,时钟分频是很常见的需求。Proteus仿真软件允许开发人员设计和验证时钟分频电路的正确性。通过添加和设置分频器,可以将时钟分频为需要的频率,满足不同外设和模块对时钟频率的要求。 4. 时钟精度和稳定性验证:Proteus仿真软件可以模拟外部环境对时钟信号的影响,如电源噪声、温度变化等,帮助开发人员验证时钟的精度和稳定性。可以通过仿真来检测和调整时钟电路,使其满足系统要求。 总之,Proteus仿真软件在stm32时钟设计和实现方面是一个强大的辅助工具。通过仿真,可以帮助开发人员验证电路设计的正确性、稳定性和精度,加快产品开发的进度,以及减少出错的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小常硬件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值