Proteus仿真实例_基于STM32单片机的视力保护仪设计(仿真文件+程序)24-32f-60

一.系统概述

系统使用STM32单片机进行主控,系统内使用HC-SR04超声波测距模块进行坐姿检测,使用滑动变阻器模拟光敏检测模块,当检测到坐姿不对(距离桌子太近)就会报警提醒,当检测到光强过低就会开灯,通过按键可以设置光强和距离的阈值。

二.仿真概述

1. 进入仿真显示屏上就会显示检测的距离和光强以及对应设置的阈值,此时检测到参数在阈值范围内,并不会报警和开灯。

2. 按下定时按键就会开始计时。

3. 当检测到距离低于设定阈值就会进行声光报警提醒。

4. 当检测到光强低于设定阈值就会开灯,使用按键可以对阈值进行设定。

三.程序设计

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Motor.h"
#include "Key.h"
#include "HCSR04.h"
#include "timer.h"
#include "LED.h"
#include "EXTERN-Key.h"
#include "AD.h"
uint16_t Num;	
uint16_t T;	
extern uint16_t distance ;	
extern uint16_t light;	
float Angle;
int main(void)
{
	distance=50;
	light=40;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	OLED_Init();	//OLED初始化
	HCSR04_Init();
	Externkey_Init();
	Timer_Init();
	LED_Init();
	AD_Init();
	
	OLED_ShowString(2, 1, "distance:");
	OLED_ShowString(2, 13, "cm");
	/*显示静态字符串*/
	OLED_ShowString(3, 1, "light:");
	OLED_ShowString(3, 10, "%");
	OLED_ShowString(1, 1, "time:00.00.00");
	OLED_ShowString(4, 1, "limit:");
	OLED_ShowString(4, 9, "cm");
	OLED_ShowString(4, 14, "%");
	while (1)
	{
		Angle= ((float)AD_GetValue()/ 4095 *100);	
		OLED_ShowNum(3, 7, Angle, 3);	
		T = HCSR04_GetValue();
		OLED_ShowNum(2, 10, T, 3);
		OLED_ShowNum(1, 12, (Num % 3600) % 60, 2);
		OLED_ShowNum(1, 9,  (Num  % 3600) / 60, 2);
		OLED_ShowNum(1, 6, Num / 3600, 2);
		OLED_ShowNum(4, 7, distance, 2);
		OLED_ShowNum(4, 12, light, 2);
		if(Angle<=light)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_1);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
		}
		else
		{
				GPIO_ResetBits(GPIOA, GPIO_Pin_1);
		}
		if(T<=distance)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_2);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
		}
		else
		{
				GPIO_ResetBits(GPIOA, GPIO_Pin_2);
		}
		if(Num /3600==1)
		{
			GPIO_SetBits(GPIOA, GPIO_Pin_3);
			GPIO_ResetBits(GPIOA, GPIO_Pin_4);
		}
		else
		{
				GPIO_ResetBits(GPIOA, GPIO_Pin_3);
		}
		if(Angle>light && T>distance&& Num /3600!=1)
			GPIO_SetBits(GPIOA, GPIO_Pin_4);
	}
}
  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小常硬件

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

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

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

打赏作者

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

抵扣说明:

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

余额充值