当前位置: 首页 > news >正文

网站后期维护怎么做外贸推广

网站后期维护怎么做,外贸推广,wordpress虚拟主机排名,北京度seo排名目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: STM32智能坐垫|座椅 (资料分享见文末…

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

PCB图 

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

STM32智能坐垫|座椅

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能坐垫|座椅

功能如下:

  1. 使用STM32F103C8T6单片机作为主控单元
  2. 通过DHT11检测温湿度数据,当温度不在设定的范围内,则控制加热和散热
  3. 通过按键设置时长、温度上下限值、手动控制加热、散热、模式切换
  4. 通过HX711检测重量,当重量不为0,则表明有人坐在坐垫上,此时开始计时,当计时时间超过设定的最长时间,则语音提醒“久坐多时,注意起身运动”
  5. 通过OLED显示测量数据
  6. 通过蓝牙模块,可将坐下时长、温湿度发送到手机端,手机端也可控制加热、散热、模式切换

2.主要器件

  • STM32F103C8T6单片机
  • OLED 屏幕
  • DHT11温湿度传感器
  • HX711称重传感器
  • JR6001语音模块
  • BT04A蓝牙模块
  • 继电器
  • 风扇模块
  • PTC加热片

三、原理图设计

四、PCB硬件设计

PCB图 

五、程序设计 

#include "sys.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"
#include "delay.h"
#include "gpio.h"
#include "key.h"
#include "oled.h"
#include "usart.h"
#include "dht11.h"
#include "timer.h"
#include "hx711.h"/**********************************
变量定义
**********************************/
uint8_t key_num = 0;									//按键扫描标志位	
uint8_t flag_display = 0;							//显示界面标志位
uint32_t time_num = 0;								//10ms计时
uint8_t temp_value = 0;							//温度值
uint8_t humi_value = 0;							//湿度值
uint32_t temp_max = 35;								//温度最大值
uint32_t temp_min = 15;								//温度最小值
char display_buf[16];									//显示数组_Bool flag_mode = 0;									//模式标志位
_Bool flag_JR = 0;										//加热标志位
_Bool flag_SR = 0;										//散热标志位uint8_t count_hour_old = 1;						//计时存储时
int count_minute_old = 0;							//计时存储分
int count_second_old = 0;							//计时存储秒
uint8_t count_hour = 0;								//计时时
int count_minute = 0;									//计时分
int count_second = 0;									//计时秒_Bool flag_count_end = 0;							//计时结束标志位
extern uint8_t usart1_buf[256];				//串口1接收数组extern uint8_t flag_timer_begin_1s;		//定时器开始标志位
extern uint8_t flag_1s;								//一秒钟到达标志位_Bool flag_weight = 0;								//重量标志位
uint32_t weight_maopi = 0;						//毛皮重量
uint32_t weight_value = 0;						//总重量/**********************************
函数声明
**********************************/
void Key_function(void);							//按键函数
void Monitor_function(void);					//监测函数
void Display_function(void);					//显示函数
void Manage_function(void);						//处理函数/****
*******	主函数 
*****/
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置中断优先分组Delay_Init();	    	 								//延时初始化	  Gpio_Init();		  									//IO初始化Key_Init();		  										//按键初始化Oled_Init();		  									//OLED初始化DHT11_Init();												//DHT11初始化TIM2_Init(999,7199);								//定时器初始化Hx711_Init();												//HX711初始化Oled_Clear_All();										//清屏Usart1_Init(9600);    							//串口1初始化Usart2_Init(9600);									//串口2初始化UsartPrintf(USART2,"AF:30");Delay_ms(1000);UsartPrintf(USART2,"A7:00001");Delay_ms(1000);while(1){Key_function();										//按键函数Monitor_function();								//监测函数Display_function();								//显示函数Manage_function();								//处理函数time_num++;												//计时变量+1Delay_ms(10);if(time_num %10 == 0)LED_SYS = ~LED_SYS;if(time_num >= 5000){time_num = 0;}}
}/****
*******按键函数
*****/
void Key_function(void)
{key_num = Chiclet_Keyboard_Scan(0);		//按键扫描if(key_num != 0)											//有按键按下{switch(key_num){case 1:								            //按键1,切换设置界面flag_display++;if(flag_display >= 6)flag_display = 0;Oled_Clear_All();					      //清屏break;case 2:											      //按键2:设定值加switch(flag_display){case 0:									      //界面0:手动控制加热flag_mode = 1;	JR = !JR;SR = 0;break;case 1:												//界面1:温度最大值加if(temp_max < 99)temp_max++;break;case 2:												//界面2:温度最小值加if(temp_min < temp_max-1)temp_min++;break;case 3:												//界面3:设定时间“时”加if(count_hour_old < 100)count_hour_old++;break;case 4:												//界面4:设定时间“分”加count_minute_old++;if(count_minute_old >= 60)count_minute_old = 0;break;case 5:												//界面5:设定时间“秒”加count_second_old++;if(count_second_old >= 60)count_second_old = 0;break;default:break;}break;case 3:														//按键3:设定值减switch(flag_display){case 0:									      //界面0:手动控制散热flag_mode = 1;	JR = 0;SR = !SR;break;case 1:												//界面1:温度最大值减if(temp_max > temp_min+1)temp_max--;break;case 2:												//界面2:温度最小值减temp_min--;break;case 3:												//界面3:设定时间“时”减if(count_hour_old > 0)count_hour_old--;break;case 4:												//界面4:设定时间“分”减count_minute_old--;if(count_minute_old < 0)count_minute_old = 59;break;case 5:												//界面5:设定时间“秒”减count_second_old--;if(count_second_old < 0)count_second_old = 59;break;default:break;}break;		case 4:														//按键4:手动自动模式切换if(flag_display == 0)flag_mode = 0;			break;default:break;}}
}/****
*******监测函数
*****/
void Monitor_function(void)
{u32 weight_test = 0;if(flag_display == 0)									//测量界面{if(time_num % 3 == 0)							//获取数据{DHT11_Read_Data(&temp_value,&humi_value);if(flag_weight == 0){weight_maopi = Hx711_Get_Maopi();								//获取毛皮重量flag_weight = 1;}elseweight_test = Hx711_Get_Weight(weight_maopi);	//获取总重量if(weight_test < 5000)weight_value = weight_test;}if(time_num % 50 == 0)							//发送数据{UsartPrintf(USART1,"温度:%dC\r\n",temp_value);UsartPrintf(USART1,"湿度:%d%%\r\n",humi_value);UsartPrintf(USART1,"时间:%d%d:%d%d:%d%d\r\n",count_hour/10,count_hour%10,count_minute/10,count_minute%10,count_second/10,count_second%10);}if(USART1_WaitRecive() == 0)				//如果接收到蓝牙数据{switch(usart1_buf[0]){case('A'):											//A:切换自动模式if(flag_display == 0)flag_mode = 0;	break;case('B'):											//B:加热					flag_mode = 1;	JR = !JR;SR = 0;break;case('C'):											//C:散热flag_mode = 1;	JR = 0;SR = !SR;break;default:break;}	USART1_Clear();}}
}/****
*******显示函数
*****/
void Display_function(void)
{switch(flag_display)									//根据不同的显示模式标志位,显示不同的界面{case 0:									      			//界面0:显示模式,温度,湿度,时间Oled_ShowCHinese(1,0,"模式:");Oled_ShowCHinese(2,0,"温度:");sprintf(display_buf,"%dC",temp_value);Oled_ShowString(2,6,display_buf);Oled_ShowCHinese(3,0,"湿度:");			sprintf(display_buf,"%d%%",humi_value);Oled_ShowString(3,6,display_buf);				Oled_ShowCHinese(4,0,"时间:");sprintf(display_buf,"%d%d:%d%d:%d%d",count_hour/10,count_hour%10,count_minute/10,count_minute%10,count_second/10,count_second%10);Oled_ShowString(4,6,display_buf);if(flag_mode == 0)Oled_ShowCHinese(1,3,"自动");elseOled_ShowCHinese(1,3,"手动");break;case 1:															//界面1:显示设置温度最大值Oled_ShowCHinese(1,1,"设置温度最大值");if(time_num % 10== 0){sprintf(display_buf,"%d%d",temp_max/10,temp_max%10);Oled_ShowString(2,7,display_buf);}if(time_num % 20 == 0){Oled_ShowString(2,7,"    ");}	break;case 2:															//界面2:显示设置温度最小值Oled_ShowCHinese(1,1,"设置温度最小值");if(time_num % 10== 0){sprintf(display_buf,"%d%d",temp_min/10,temp_min%10);Oled_ShowString(2,7,display_buf);}if(time_num % 20 == 0){Oled_ShowString(2,7,"    ");}	break;case 3:															//界面3:显示设置时间时Oled_ShowCHinese(1,1,"设置时间时");if(time_num % 10== 0){sprintf(display_buf,"%d%d:%d%d:%d%d",count_hour_old/10,count_hour_old%10,count_minute_old/10,count_minute_old%10,count_second_old/10,count_second_old%10);Oled_ShowString(2,4,display_buf);}if(time_num % 20 == 0){Oled_ShowString(2,4,"  ");}	break;case 4:															//界面4:显示设置时间分Oled_ShowCHinese(1,1,"设置时间分");if(time_num % 10== 0){sprintf(display_buf,"%d%d:%d%d:%d%d",count_hour_old/10,count_hour_old%10,count_minute_old/10,count_minute_old%10,count_second_old/10,count_second_old%10);Oled_ShowString(2,4,display_buf);}if(time_num % 20 == 0){Oled_ShowString(2,7,"  ");}	break;case 5:															//界面5:显示设置时间秒Oled_ShowCHinese(1,1,"设置时间秒");if(time_num % 10== 0){sprintf(display_buf,"%d%d:%d%d:%d%d",count_hour_old/10,count_hour_old%10,count_minute_old/10,count_minute_old%10,count_second_old/10,count_second_old%10);Oled_ShowString(2,4,display_buf);}if(time_num % 20 == 0){Oled_ShowString(2,10,"  ");}	break;	default:break;}
}/****
*******处理函数
*****/
void Manage_function(void)
{if(flag_display == 0)                  								//测量界面{if(flag_mode == 0){if(temp_value > temp_max)											//温度高于最大值开启散热{SR = 1;		JR = 0;}else if(temp_value < temp_min)									//温度小于最小值加热{SR = 0;		JR = 1;}else																							//温度低于最大值且温度大于最小值,关闭散热和加热{SR = 0;		JR = 0;}}if(weight_value > 5 )																//人坐上坐垫开始计时{flag_timer_begin_1s = 1;											if(count_hour_old != 0 || count_minute_old != 0 || count_second_old != 0)	//设置时间不为零,同时到达设置时间时播报"请劳逸结合,注意起身运动"{if(count_hour == count_hour_old && count_minute == count_minute_old && count_second == count_second_old){UsartPrintf(USART2,"A7:00002");Delay_ms(1500);}}								}		else																									//人离开坐垫		{flag_timer_begin_1s = 0;	count_hour = 0;																			//重新赋值计时时间count_minute = 0;count_second = 0;}}else													         									//设置界面:关闭加热,散热,定时器{flag_timer_begin_1s = 0;	SR = 0;		JR = 0;	}
}

六、实验效果 

七、资料内容

项目分享

http://www.dinnco.com/news/27740.html

相关文章:

  • 提供电商网站建设武汉seo主管
  • 北京网页设计公司济南兴田德润简介图片企业站seo外包
  • 做网站实际尺寸是多少企业产品网络推广
  • 毕业论文网站开发如何对网站进行推广
  • 南开网站建设优化seo网站优化排名易下拉排名
  • 做微信公众平台的网站品牌宣传推广文案
  • 网站设计作业平台推广普通话宣传语100字
  • 事业单位考试网站吉林seo技术交流
  • wordpress关闭伪静态上海百度seo网站优化
  • 页面模板功能百度seo排名优化提高流量
  • 网站改版 理论百度账户
  • c 做的网站怎么上传seo哪里可以学
  • 自己做网站好还是购买网站好青岛官网seo
  • 建网站哪个公司好营销软文500字
  • 掌握商务网站建设内容疫情防控数据
  • 医社保增减员在什么网站做微信小程序怎么做
  • 网站开发包含哪些怎么收录网站
  • 家具网站设计方案班级优化大师app下载
  • 定制建设网站本站3天更换一次域名yw
  • 模板网站有哪几类一手项目对接app平台
  • 网站建设需要准备什么软件网站流量分析报告
  • 嘉兴网站建设方案服务seo优化人员
  • 怎么做刷题网站电商网站推广方案
  • 网站制作济南软文街官方网站
  • 做图书网站赚钱吗安阳企业网站优化外包
  • 郑州网站制作电话各种资源都有的搜索引擎
  • 河南化工厂seo推广优化
  • wordpress get_post_category_id惠州百度seo排名
  • 网站名字要备案吗西安seo搜推宝
  • 巨鹿网站建设多少钱代做百度首页排名价格