基于STM32楼梯层控制系统

这篇具有很好参考价值的文章主要介绍了基于STM32楼梯层控制系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、项目需求分析

项目目标意义:
随着社会的发展、 科技的进步以及人们生活水平的逐步提高, 各种方便于生活的遥控系统开始进入了人们的生活。 电梯的发展是由于需要从山坡上运输包括煤和材在内的原材料而引发的,而到了今日,电梯的已经遍布于各种写字楼,住宅,工厂,医院等。其操作简单。使用者坐好后按下按钮即可运作,到达自己想到的楼层后松开按钮即可停止; 舒适安全。楼道电梯可以让使用者在坐着的状态下到达高楼层。楼道电梯上有安全带,使用者可以系上安全带确保安全。如果楼道电梯在运行时遇上障碍物的话,便会自动停止运行。除此之外,楼道电梯在停电时仍可运行10个往返,使用者无需担心突然停电的风险。占地面积小。楼道电梯有可折叠的设计,根据款式楼道电梯折叠后离墙距离为28-44cm不等,展开后离墙距离53-66cm不等。

功能需求分析:
本项目主要应用了STM32F103R6单片机作为核心,综合应用了STM32中断系统、定时器、计数器等知识,用按键控制楼梯的上下走向,用四位的共阴极的数码管来显示楼梯层层数和变化。
系统开发环境需求分析:
本项目主要应用kell5来编写代码,proteus设计仿真图,来模拟功能的实现。

非功能性需求分析(成本、社会意义、使用便利性能):
用软件仿真实现简单的楼梯层控制系统,.使用4位显示屏来显示要进行的操作(上,下,停止),电梯楼层使用人在某个楼层按下电梯号,电梯进行上下移动每一层可以选择上或者下。实现简单的电梯控制。

2、项目硬件系统设计

2.1、 系统方案原理图

Proteus仿真图:
基于stm32f10x的电梯控制系统仿真,stm32,单片机,嵌入式硬件

如图所示,使用的芯片为STM32F103R6,PA0-PA7引脚接7SEG-MPX4-CA七段数码管的ABCDEFG和DP,2SC1162通用型高频中功率三极管连接了PB0到PB3引脚、直流发电机和七段数码管的1234,PA8到PA14连接图中左边的电梯运行状态显示LED。当开始运行时,电梯停在1层,状态为停止。当点击右侧2楼上按钮时,电梯先把停止状态改为上升状态,同时左侧的D2(2上)的LED状态灯点亮,之后再改变楼层数,到达二层后先点亮开门的LED灯,开门LED指示灯熄灭后再把电梯状态由上升改为停止。

基于stm32f10x的电梯控制系统仿真,stm32,单片机,嵌入式硬件

当开始运行时,电梯停在1层,状态为停止。当点击右侧3楼下按钮时,电梯先把停止状态改为上升状态,同时左侧的D4(下)的LED状态灯点亮,之后再改变楼层数,到达三层后先点亮开门的LED灯,开门LED指示灯熄灭后再把电梯状态由上升改为停止。

2.2、STM32F10X原理介绍
1)内核架构–CM3内核架构:
基于stm32f10x的电梯控制系统仿真,stm32,单片机,嵌入式硬件

STM32F103是一个ARM单片机,内嵌有一个Cortex-M3(简称CM3)处理器作为核心。
CM3的三条总线通过总线矩阵与STM32F103主要部件及外设相连。
STM32F103的架构包括CM3的内核架构和除内核以外的其他架构。
2)DMA(Direct Memory Access,直接存储器访问):早期用来提供高速外设和存储器之间或者存储器和存储器之间的高速数据传输的一种技术。(不需执行指令,硬件控制传输)
因此DMA可以在高速数据采集,数据移动和周期性数据处理等方面有效地降低CPU负荷,使系统运行更加高效。STM32 系列MCP的外设(不管高速、中低速都提供了DMA数据传输方式)
3)GPIO:(General Purpose Input Output,通用输入输出接口)是MCU与外部电路和设备连接的基本外设。也就是常说的端口或管脚。
GPIO8种工作方式,可由软件配置:
1、浮空输入:上下拉电阻断开,用于不确定高低电平的输入。(复位后处于此状态
2、上拉输入:上拉电阻接通,默认高电平输入。
3、下拉输入:下拉电阻接通,默认低电平输入。
4、模拟输入:施密特触发器截止,模拟量输入常用于AD转换
5、开漏输出:上部MOS管不工作,只能输出低电平,不能输出高电平。如果要输出高电平则需要外接上拉。用于实现电平转换和线与功能的输出。
6、推挽式输出:上下MOS管交替导通,用于较大功率驱动的输出。
7、推挽式复用输出功能:复用功能情况下的推挽输出。
8、开漏复用输出功能:复用功能情况下的开漏输出。
4)重映射:STM32F103有80个GPIO端口,其中的一些还可以把复用功能重新映射到其他引脚,以实现优化管脚数目和配置目的。(重映射是系统做好的,不能随便映射)
5)NVIC中断控制器:(Nested Vectored Interrupt Controller,NVIC)位于CM3内核,是中断系统硬件设施,用来管理和配置中断。
NVIV的功能:(硬件+控制寄存器组成)
1、管理中断源2、保存中断申请信号3、优先级判断,中断嵌套4、屏蔽中断5、中断优先级设置
6)EXTI控制器:主要用来管理片外引脚中断 和事件控制。
EXTI控制器是片上外设,可以管理 16路外部引脚中断 和 4路事件 的控制, 共20 路输入。
EXTI --外部中断/事件线路映像:
80个通用I/O端口:均可做外部中断或事件输入线,连接到16个外部中断/事件线上。使用时,须设置AFIO功能,并使能其时钟。(可以是中断也可以是事件)
四个专用的线: 1、EXTI线16连接到PVD输出(中断)。 2、EXTI线17连接到RTC闹钟事件。 3、EXTI线18连接到USB唤醒事件。 4、EXTI线19连接到以太网唤醒事件
注释:PVD(可编程电压监控器),可管理上电复位和掉电中断

2.3、 LED灯模块原理
由于该设计时一个模拟电梯控制系统的开门关门状态难以直接描述,故用LED灯的亮和灭两张状态来表示门的开于关。同时每一个按键分别用一个小灯来指示按键是否按下,使得电梯运行过程中乘客更清楚了解电梯运行状态。本系统共有7个LED灯,正极接电源,负极接stm32的GPIO引脚。其中一个LED用用来表示开门关门的状态,灯亮时为开门。其余六个灯用来表示电梯要进行的操作,如2楼上等。当系统查询到由按键被按下时
系统立刻使stm32相应GPIO口为低电平,点亮相应小灯。系统保持LED灯的状态直到电梯完成相应的操作。
基于stm32f10x的电梯控制系统仿真,stm32,单片机,嵌入式硬件

2.4、按键模块原理
按键由一组独立按键构成,由于弹性按键结构简单,价格低廉,故选用弹性按键。同时,每个按键单独连接芯片的对应引脚,简化了电路的设计。本设计共有12个独立的弹性小键来控制电梯升降,其均与相对应的GPIO口直接相连。所有GPIO口设置为上拉输入电平触发方式。一旦小键按下,相应的引脚与地接通成低电平,当程序进入按键查询时为低电平,表示键被按下,按键弹起后为高电平。系统根据小灯的状态立即或等待执行相应的操作。
基于stm32f10x的电梯控制系统仿真,stm32,单片机,嵌入式硬件

2.5、数码管模块原理
数码管功耗虽然比液晶显示器大而且显示09及AF,但其驱动电路简单,使用方法简单且价格便宜。本设计电梯只有四层,因此只需要显示电梯层数再1到4。综合考虑数码管比较合适。无论几位的数码管,其原理均为点亮内部的二极管来发亮。故当需要显示数字0到9时,首先对其进行编码,当要显示的某个数字式像数码管送入相应的编码即可显示该数字。

基于stm32f10x的电梯控制系统仿真,stm32,单片机,嵌入式硬件

3、系统软件体系设计

3.1 项目软件系统总架构图

***见文档 ***
电梯在运行中,先判断是否需要电梯,需要时判断电梯运行方向,接着判断当前是否为目标楼层,目标楼层时停下开门,不是时看上方时候需要电梯,需要时上移,不需要时反向、
程序先进行按键的定义和初始化,按键也就是某层楼梯控制信号发出的定义,信号接收定义在PC0到PC11引脚,信号输出定义在PC0到PC14引脚,设置中断函数,判断程序是否需要改变楼梯层状态和开门关门状态。
然后进行进行GPIO的初始化,即7SEG-MPX4-CA接芯片的PA0PA7和PB0PB3,PA8~PA14接指示灯,初始化状态:指示灯不亮,继电器不闭合。

3.2 重要子模块流程图

如果开始时电梯在第二层,那么电梯由两种运行状态,即上行和下行,系统会通过if语句先行判断是否由下行要求,即if是否查询到LED_2(2上)==0||LED_3(2下)0;如是系统会下行。否则,系统会通过if语句再次判断是否由下行要求,即if查询到的LED_4(3上).0||LED_5(3下)==0,若是系统则上行。

3.3 重要的数据结构、参数和函数分析
3.3.1 KEY_Init
设置STM32的GPIO口为输入模式时,通过读取IO口状态,判断是否有按键按下。为避免干扰产生一些误操作,在检测到电平变化后延时一段时间,再重新读取IO口状态。
代码如下:


void KEY_Init(void)
	// 在使用I/O前,首先 开时钟->设置I/O工作模式
	RCC->APB2ENR |= (1 << 4); //开时钟
	// 上拉输入:区别在于没有输入信号的时候默认输入高电平(因为有弱上拉)
	// 下拉输入:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)
	//  对于上下拉输入,在设置I/O模式位 1000 
	//                  还应设置上拉下拉类型 GPIOx->ODR相应位
	// 浮空输入:输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号
	
	//开GPIOC时钟
	RCC->APB2ENR |= (1 << 4);
	GPIOC->CRL &=0x00000000; // 
	GPIOC->CRL |=0x11111111; // 设置C组I/O 0-9 为0011 最大速度通用推挽输出
	GPIOC->CRH &=0x00000000; 
	GPIOC->CRH |=0x00001111; //上拉
	GPIOC->ODR |=0xFFFFFFFF ;
	/*
	// PC9
	GPIOC->CRH&=0XFFFFFF0F;      
  GPIOC->CRH|=0X00000080;  
	GPIOC->ODR|=1<<9;           // 上
	// PC8
	GPIOC->CRH&=0XFFFFFFF0;      
  GPIOC->CRH|=0X00000008;  
	GPIOC->ODR|=1<<8;           // 上
	// PC7
	GPIOC->CRL &=0x0FFFFFFF;//清空
	GPIOC->CRL |= 0X80000000;//上/下拉输入
	GPIOC->ODR|=1<<7; 
	// PC6
	GPIOC->CRL &=0xF0FFFFFF;//清空
	GPIOC->CRL |= 0X08000000;//上/下拉输入
	GPIOC->ODR|=1<<6;           // 上
	// PC5
	GPIOC->CRL &=0xFF0FFFFF;//清空
	GPIOC->CRL |= 0X00800000;;//上/下拉输入
	GPIOC->ODR|=1<<5;            // 上
	// PC4
	GPIOC->CRL &=0xFFF0FFFF;//清空
	GPIOC->CRL |= (0x8 << 4 * 4);//上/下拉输入
	GPIOC->ODR|=1<<4; 
	// PC3
	GPIOC->CRL &=0xFFFF0FFF;//清空
	GPIOC->CRL |= (0x8 << 4 * 3);//上/下拉输入
  GPIOC->ODR|=1<<3;  
	// PC2
	GPIOC->CRL &=0xFFFFF0FF;//清空
	GPIOC->CRL |= (0x8 << 4 * 2);//上/下拉输入
  GPIOC->ODR|=1<<2;  
	// PC1
	GPIOC->CRL &=0xFFFFFF0F;//清空
	GPIOC->CRL |= (0x8 << 4 * 1);//上/下拉输入
  GPIOC->ODR|=1<<1;  
	// PC0
	GPIOC->CRL &=0xFFFFFFF0;//清空
	GPIOC->CRL |= (0x8 << 4 * 0);//上/下拉输入
  GPIOC->ODR|=1<<0;  
	*/
} 

3.3.2 NVIC
向量中断控制器(NVIC)与Cortex-M3内核的逻辑紧密耦合、相互交融,共同完成对中断的控制。STM32有两个优先级概念—抢占式优先级和响应优先级,响应优先级又被称为亚优先级或副优先级,STM32的每个中断源都需要指定这两种优先级。


//Ex_NVIC_Config专用定义
#define GPIO_A 0
#define GPIO_B 1
#define GPIO_C 2
#define GPIO_D 3
#define GPIO_E 4
#define GPIO_F 5
#define GPIO_G 6 
#define FTIR   1  //下降沿触发
#define RTIR   2  //上升沿触发
								   
//JTAG模式设置定义
#define JTAG_SWD_DISABLE   0X02
#define SWD_ENABLE         0X01
#define JTAG_SWD_ENABLE    0X00	
/  
void Stm32_Clock_Init(u8 PLL);  //时钟初始化  
void Sys_Soft_Reset(void);      //系统软复位
void Sys_Standby(void);         //待机模式 	
void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset);//设置偏移地址
void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group);//设置NVIC分组
void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group);//设置中断
void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM);//外部中断配置函数(只对GPIOA~G)
void JTAG_Set(u8 mode);
//
//以下为汇编函数
void WFI_SET(void);		//执行WFI指令
void INTX_DISABLE(void);//关闭所有中断
void INTX_ENABLE(void);	//开启所有中断
void MSR_MSP(u32 addr);	//设置堆栈地址
#endif

4、项目运行效果展示
程序运行初态(没有按键按下):显示屏显示2 1,指示灯不亮。
按下2上按键,
显示屏:1 1(表示电梯当前再1层,状态为上升)
指示灯: 2上指示灯点亮

显示屏:1 2(表示电梯当前再2层,状态为上升)
指示灯:开门指示灯点亮,开门指示灯灭

显示屏:2 2(表示电梯当前再2层,状态为停止)
指示灯:2上指示灯灭

其余按键同理

5、总结与心得体会
总结:通过基于STM32芯片,七段数码管,三极管等原件,用proteus模拟仿真了电梯的升降,实现了用按键实现电梯的楼梯层控制的操作。
心得体会:在知识方面,学习到了楼梯层控制和7SEG-MPX4-CA七段数码管的一点浅显知识,加深了接口这门课程所学习到的芯片内核结构、GPIO、中断等知识,充分的练习了单片机c语言的编程规则,也对一些基本的数理逻辑问题和事理逻辑问题有了更深入的体会。但这次课程设计对于我来说最重要的是,让我明白了理论与实际动手的差距。我以为之前做了很多的练习,现在做起来应该很容易,在整个过程中还是遇到了许多问题,虽然整个过程很累,感受到了在遇到问题时的无助和绝望,但当自己通过各种方法把问题一件件的解决后,那种快乐是无以言表的。让我明白也学会了,知识要动手实践才能真正的转换为自己的。
局限性:当短时间内先后按下按键时,本系统以最后一次按下的楼梯层为准,无法实现多楼梯层同时需要电梯时的情景。

6、附录文章来源地址https://www.toymoban.com/news/detail-784831.html


#include "main.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include 

到了这里,关于基于STM32楼梯层控制系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 STM32 的温度测量与控制系统设计

    本文介绍了如何基于 STM32 微控制器设计一款温度测量与控制系统。首先,我们将简要介绍 STM32 微控制器的特点和能力。 接下来,我们将详细讨论温度传感器的选择与接口。然后,我们将介绍如何使用 STM32 提供的开发工具和相关库来进行温度测量和控制的代码设计和实现。最

    2024年02月02日
    浏览(34)
  • 基于STM32闭环步进电机控制系统设计

    ** 单片机设计介绍,1654基于STM32闭环步进电机控制系统设计(仿真,程序,说明)   基于STM32的闭环步进电机控制系统设计是一种利用STM32微控制器开发的系统,用于实现对步进电机的精确控制。以下是该系统的一般设计概述: STM32微控制器:作为主控芯片,STM32具备高性能

    2024年02月08日
    浏览(32)
  • 基于STM32智能家居控制系统软件设计及实现

    智能家居控制系统的软件设计主要使用Keil uVision5进行STM32主烧录程序的编写,主程序完成的功能主要为接收并判断语音识别模块传过来的信息,然后根据满足条件的不同进行对应的操作。例如,当语音模块传过来的信息为“打开电视”时,STM32单片将使给8550一个低电平,这样

    2024年02月02日
    浏览(36)
  • 基于STM32的自由度云台运动姿态控制系统

    目录 设计报告撰写内容 2 一、设计要求 2 1、掌握 MEMS 传感器 MPU6050 的应用方法; 2 3、二自由度云台运动姿态控制系统设计。 2 二、设计方案(要求给出详细的设计思路及其必要的论证) 2 1、硬件设计 3 1)电源系统 3 2)数字控制器 4 3)角度测量传感器 4 4)执行机构 5 5)系

    2024年02月15日
    浏览(34)
  • 基于STM32的智能交通信号灯控制系统设计

    通过分析交通规则和交通灯的工作原理,给出智能交通信号灯控制系统的设计方法。基于STM32F103芯片开发满足需求的外围电路,并绘制电路原理图。基于MDK keil软件编写交通信号灯控制程序,利用LabVIEW搭建交通信号灯场景,LabVIEW可以控制红绿灯时长。分别完成硬件、软件调试

    2024年02月03日
    浏览(40)
  • 基于STM32+华为云IOT设计的智能窗帘控制系统

    随着智能家居技术的不断发展,人们对于家居生活的需求也越来越高。智能窗帘作为智能家居领域的重要组成部分,为用户提供了更便捷、舒适的生活体验。本项目基于STM32主控芯片和华为云物联网平台,设计一款智能窗帘控制系统,以满足家庭和商业场所的需求。 在本项目

    2024年02月03日
    浏览(39)
  • stm32f10x系列芯片信息

    STM32F103微控制器采用Cortex-M3内核,CPU最高速度达72 MHz。该产品系列具有16KB ~ 1MB Flash、多种控制外设、USB全速接口和CAN。 Flash memory size / RAM size(byte):flash内存大小/RAM内存大小 具体外设资源 中/大容量产品 小容量产品 LQFP144 LQFP100 LQFP64 LQFP48 具体更多请查看官方datasheet stm32

    2023年04月08日
    浏览(26)
  • 基于STM32 ARM+FPGA伺服控制系统总体设计方案(一)

    设计需求 一套完整的伺服控制方案包括了上位机、驱控一体控制器和功率板三者。操作人员 通过上位机发送各种不同指令,然后控制器解析指令后执行相应的伺服功能,其次控 制器将驱动信号传输至功率板驱动电机,最后控制器采集反馈信息进行闭环控制并上 传数据。 结

    2024年02月04日
    浏览(28)
  • STM32毕业设计——基于STM32+JAVA+Android的六足机器人控制系统设计与实现(毕业论文+程序源码)——六足机器人控制系统

    大家好,今天给大家介绍基于STM32+JAVA+Android的六足机器人控制系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 本设计主

    2024年01月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包