单片机项目分享:基于STM32医疗点滴控制系统智能输液系统

目录

一、项目成品展示

二、项目介绍

1、功能介绍

2、硬件组成

三、原理图、PCB设计

四、程序设计

五、上电演示

六、资料内容

项目分享


一、项目成品展示

项目成品图片展示:

哔哩哔哩视频链接:

基于STM32医疗点滴控制系统智能输液系统

基于STM32医疗点滴控制系统智能输液系统

(项目分享在哔哩哔哩主页)

二、项目介绍

1、功能介绍

2、硬件组成

三、原理图、PCB设计

原理图 PCB展示:

四、程序设计

int main(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;  // 将变量声明移到函数开始处
    
    NVIC_Configuration();	   //中断优先级配置
    delay_ms(200); 
    I2C_Configuration();     //IIC初始化
    OLED_Init();             //OLED液晶初始化
    OLED_CLS(1);              //清屏
    OLED_ShowStr(0, 2, "   loading...   ", 2,1);
    delay_ms(1000);
    
    // 配置PB1为上拉输入模式(替代PA1)
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  // 使能GPIOB时钟
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;              // 选择PB1引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;          // 设置为上拉输入模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      // 设置IO口速度
    GPIO_Init(GPIOB, &GPIO_InitStructure);                 // 初始化PB1
    
    // 删除PB0初始化代码
    
    ESP8266_Init();
    OLED_CLS(0);  
    InitDisplay();
    KEY_GPIO_Init();        //按键引脚初始化
    MOTOR_GPIO_Init();     //步进电机初始化

	  if(water==0)NoWater=1;
	  TIM3_Init(99,719);   //定时器初始化,定时1ms
		//Tout = ((arr+1)*(psc+1))/Tclk ; 
		//Tclk:定时器输入频率(单位MHZ)
		//Tout:定时器溢出时间(单位us)

		while(1)
		{ 
			   keyscan();  //按键扫描
			   if(setFlag == 0)   //不在设置状态下
				 {
					   if((Speed!=0)&&((Speed<speed_min)||(Speed>speed_max))&&shanshuo)   //滴速不在范围,闪烁显示
						 {
								 OLED_ShowStr(32, 2,":         ", 2,0);     //显示空白
						 }
					   else
						 {
								 sprintf(display,": %003d/min ",(int)Speed);
								 OLED_ShowStr(32, 2, (u8*)display, 2,0);//显示滴速
						 }
					   if(Speed!=0)
						 {
								 if(Speed<speed_min) direction=1;         //滴速过慢,电机正转,模拟放开调节阀
								 else if(Speed>speed_max) direction=2;    //滴速过快,电机反转,模拟收紧调节阀
							   else direction=0;  //在正常滴速范围,电机停止
						 }
						 else
						 {
								 direction=0;  //停止
						 }
					 
						 if(shuaxin == 1)
						 {
								 shuaxin = 0;
								
						 }
            

						 if(water == 1)   //无药水
						 {
									if(NoWater==0)
									OLED_ShowCN(56,6,7,0);//显示中文:无
									NoWater  = 1;    //缺水标志
						 }
						 else
						 {
								 if(NoWater==1)
								 OLED_ShowCN(56,6,6,0);//显示中文:有
								 NoWater  = 0;
						 }
				 }
				 UsartSendReceiveData();
			   delay_ms(10);
		}
}

unsigned long times=0;        //取样时间
unsigned long total_time=0;   //取样总时间
unsigned long timeout=0;      //取样超时时间 
bool start_flag=0;            //开始计时标志

五、上电演示

六、资料内容

项目分享

项目分享在哔哩哔哩主页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值