版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Proteus仿真软件1认识MDK-ARM2调试STM323基础实例4目录Contents创新设计实例6综合设计实例5创新设计实例PART066.1智能温室控制系统应用实例6.2GPS定位系统设计实例6.3简易示波器设计实例6.4基于UCOSII的BLDC电机控制器设计实例6.5“推箱子”游戏设计实例6.1智能温室控制系统应用实例1.实例要求利用STM32F103R6、环境温湿度传感器SHT11设计并制作一个温室自动控制系统。要求具有如下功能:(1)LCD显示温湿度和设定的信息;(2)具有手动和自动功能;(3)加热、降温、加湿和开燥过程中具有LED指示。2.硬件电路本实例的硬件仿真电路如图6-1(a)和图6-1(b)所示图6-1(a)智能温室控制系统应用实例的控制驱动电路仿真原理图图6-1(b)智能温室控制系统应用实例的MCU控制电路仿真原理图U1(STM32F103R6)的PC3~PC12引脚连接到LCD1(LM016L)的D0~D7、RS、RW和E引脚,PA10~PA14引脚驱动5个LED发光二极管,SHT11的SCK和DATA引脚分别连接到U1(STM32F103R6)的PA1和PA0引脚,按键K1~K3连接到U1的PB2~PB4引脚,从U1(STM32F103R6)的PA6~PA9分别控制着加热器、降温电机、加湿电机和干燥电机。3.程序设计。根据实例要求,设计的程序如下:6.1智能温室控制系统应用实例4.实例总结本实例展示了STM32F103R6微控制器和SHT11温湿度传感器结合实现温度、湿度的实时采集并显示,并根据设定的要求具有自动控制相应的电机动作完成相应的功能。主要涉及的程序如下:(1)SHT11的IIC接口协议模拟和SHT11的温湿度数据的读取;(2)Get_TH和TH_Set函数用于获取温湿度和设定温湿度功能;(3)ModeNot5_handler函数用于手动模式;(4)Mode5handler函数用于自动模式,在自动模式下,系统会根据当前的环境温湿度情况进行自动开启不同的电机工作;(5)Main主程序的按键识别和处理。6.1智能温室控制系统应用实例6.2GPS定位系统设计实例1.实例要求利用STM32F103R6的串口连接到虚拟GPS软件的串口上实现GPS定位信息的显示。2.硬件电路硬件仿真电路如图6-2所示。图6-2GPS定位系统设计实例电路仿真原理图U1(STM32F103R6)的PA3/RXD2、PA2/TXD2引脚连接到P1(COMPIM)虚拟串口端的RXD和TXD引脚,用于虚拟串口数据的发送和接收;U1(STM32F103R6)的PC0~9引脚连接到LCD1的D0~D7、RS、R/W、E引脚上。3.程序设计。根据实例要求,设计的程序如下:6.2GPS定位系统设计实例4.实例总结本实例展示了如何利用STM32F103R6的串口接收GPS的信息,并正确解码在LCD上显示。程序中涉及的主要内容有:(1)STM32F103R6的USART2串口配置和串口中断函数的编写;(2)1602液晶显示模块的初始化和字符串显示,其中LCD_Init()函数实现LCD初始化,LCD_Write_String()函数实现字符串的显示;(3)GPS协议的确码,这部分内容由uartBufferDeal()函数实现。本实例要用到VSPD虚拟串口驱动和GPS模拟软件。6.2GPS定位系统设计实例6.3简易示波器设计实例1.实例要求利用STM32F103R6内置的A/D转换器、定时器等资源实现一个可以测量信号的波形,并通过128X64图形点阵LCD模块显示,功能如下:(1)128X64图形点阵LCD显示信号的波形;(2)具有背景网格显示;(3)横坐标的时间轴可在10us~10ms之间调节;(4)纵坐标的波形幅度可放大和缩小;2.硬件电路硬件仿真电路如图6-3所示。图6-3简易示波器设计实例电路仿真原理图U1(STM32F103R6)的GPIOC端口引脚PC0~PC7连接到128X64图形点阵LCD模块的数据引脚DB0~DB7,PB8~PB11分别驱动LCD的E、RS、CS1和CS2引脚。外部输入的信号经过C1耦合电容到U2(LM358)的正端输入引脚,R1和R2构成2.5V的参考电平也加到U3的正输入端,经过U2的跟随输出到U1的PA0/AIN0引脚上,实现模拟量的输入。按键K1~K4分别连接到U1的PA9~PA12引脚上。3.程序设计。根据实例要求,设计的程序如下:6.3简易示波器设计实例6.3简易示波器设计实例4.实例总结本实例充分利用STM32F103R6的内置12位A/D的快速采样率实现波形的显示。程序设计涉及主要内容如下:(1)时间轴的扫描周期通过16位定时器TIM2实现,其中XTimepos变量用于设定16位定时周期值。(2)通过TrigLevel变量来调节波形显示的触发点,该值在0~4095之间变化。(3)在TIM2_IRQHandler中断函数中采集指定的波形数据存储到ADCBuffer缓冲区中,当缓冲区存储满置UpdateFlag。(4)Main主程序根据UpdateFlag标志来处理被显示波形的幅度值数据在LCD显示屏上显示。(5)背景网格通过建立Grid二维数组实现,在背景网格上显示波形时,通过逻辑或的方式显示对应的像素点。6.3简易示波器设计实例6.4基于UCOSII的BLDC电机控制器设计实例1.实例要求利用STM32F103R6T6和电机驱动器件
L293D和IRF540MOS管设计驱动电路来驱动BLDC电机实现如下功能:(1)可调转速。(2)可控转换方向。(3)显示转速和目标转速。2.硬件电路硬件仿真电路如图6-4(a)、6-4(b)和6-4(c)所示。BLDC的电机控制器的显示和按键输入、速度调节等控制电路如图6-4(a)所示:图6-4(a)基于UCOSII的BLDC电机控制器设计实例的MCU控制电路仿真原理图在图6-4(a)中,U1(STM32F103R6)的GPIOC端口引脚PC0~PC7分别连接到LCD1(LM016L)的D0~D7引脚,U1(STM32F103R6)的GPIOA端口引脚PA11~PA13分别连接到LCD1(LM016L)的RS、RW和E引脚,可调电阻RV1(1K)的可调端连接到U1(STM32F103R6)的PA3引脚。按键Start、Reserve和Forward分别连接到U1(STM32F103R6)的GPIOB端口PB5、PB6和PB7引脚。BLDC的电机控制器的电机驱动电路如图6-4(b)所示:U1(STM32F103R6)的PA8/TIM1_CH1和PA7/TIM1_CH1N连接到U2(L293D)的IN1和IN2引脚,PA9/TIM1_CH2和PB0/TIM1_CH2N连接到U2(L293D)的IN3和IN4引脚,PA10/TIM1_CH3和PB1/TIM1_CH3N连接到U3(L293D)的IN1和IN2引脚。电阻R7~R10分别为下拉电阻,R12和R13为U3的IN1和IN2引脚的下拉电阻。图6-4(b)基于UCOSII的BLDC电机控制器设计实例的电机驱动电路仿真原理图6.4基于UCOSII的BLDC电机控制器设计实例3.程序设计根据实例要求,设计的程序如下:LCD.H头文件和LCD.C源文件(1)LCD.H头文件LCD.H头文件中实现驱动1602液晶引脚的宏定义和相关函数声明。6.4基于UCOSII的BLDC电机控制器设计实例(2)LCD.C源文件LCD.c源文件中,lcd_command_write()函数实现向LCD写命令功能的驱动函数,lcd_char_write()函数实现向LCD指令的位置显示字符功能的驱动函数,lcd_system_reset()函数实现LCD的上电初始化功能。具体的操作函数源程序如下:6.4基于UCOSII的BLDC电机控制器设计实例gpio.c源文件实现对电路中应用到的指定GPIO引脚进行配置。配置程序如下:6.4基于UCOSII的BLDC电机控制器设计实例tim.H头文件和tim.C源文件(1)tim.H头文件tim.H头文件中实现了与TIM1和TIM2相关的宏定义和相关函数声明。6.4基于UCOSII的BLDC电机控制器设计实例(2)tim.C源文件tim.C源文件实现TIM1和TIM2的初始化以及与输入捕获及PWM输出的相关引脚配置。MX_TIM1_Init()函数实现了TIM1的3通道的PWM输出功能的配置,MX_TIM2_Init()函数实现了TIM2的3通道的输入捕获功能的配置。HAL_TIM_Base_MspInit()函数实现TIM2的外设时钟使能,PB10/TIM2_CH3,PA15/TIM2_CH1和PB3/TIM2_CH2的引脚复用功能的配置以及TIM2的中断使能。HAL_TIM_MspPostInit()函数实现TIM1的外设时钟使能,PA7/TIM1_CH1N,PB0/TIM1_CH2N,PB1/TIM1_CH3N,PA8/TIM1_CH1,PA9/TIM1_CH2,PA10/TIM1_CH3的引脚复用功能的配置。BLDC_PHASE_CHANGE()函数是BLDC电机的驱动换相函数。BLDC_Start()函数和BLDC_Stop()函数通过直接操作TIM1和TIM2寄存器方式实现BLDC的启动和停止操作。6.4基于UCOSII的BLDC电机控制器设计实例adc.h头文件和adc.c源文件(1)adc.h头文件adc.h头文件包含了外部变量的声明和函数的声明。(2)adc.c源文件adc.c源文件中,MX_ADC1_Init()函数实现ADC1外设的配置,主要包括工作模式、数据对齐方式、ADC的启动转换模式、通道数等参数的配置。HAL_ADC_MspInit()函数实现ADC1外设时钟使能、PA3/ADC_IN3引脚的模拟输入通道ADC_IN3的复用功能配置和GPIOA外设时钟使能。6.4基于UCOSII的BLDC电机控制器设计实例pid.h头文件和pid.c源文件(1)pid.h头文件pid.h头文件的定义如下:(2)pid.c源文件pid.c源文件包含了常量的宏定义,PID结构体的声明,定义。Speed_PIDInit()函数为实现初始BLDC电机速度的PID初始值,Speed_PIDAdjust()函数实现BLDC电机速度的PID自动调节,函数中只采用了P算法。6.4基于UCOSII的BLDC电机控制器设计实例(1)main.h头文件main.h头文件包含了宏定义和函数声明。(2)main.c源文件6.4基于UCOSII的BLDC电机控制器设计实例本实例展示了在STM32F103R6微控制器上运行UCOSII操作系统下的BLDC电机控制。在main.c程序中,设置好向量控制器的优先级后,通过调用OSInit()函数完成UCOSII操作系统的初始化工作,通过OSTaskCreate()函数创建UCOSII操作系统下的任务。首先,创建一个start_task()任务,接着STM32F103R6的底层硬件驱动的初始化工作,主要包括:硬件初始化由HAL_Init()函数完成,系统时钟初始化由SystemClock_Config()函数完成,GPIO外设初始化由MX_GPIO_Init()函数完成,TIM1外设初始化由MX_TIM1_Init()函数完成,ADC1外设初始化由MX_ADC1_Init()函数完成,TIM2外设初始化由MX_TIM2_Init()函数完成,最后调用OSStart()函数启动UCOSII操作系统工作。在start_task()函数的任务中完成对TIM1的三通道的PWM占空比的设定,并使能TIM2的三个通道的输入捕获功能的中断,启动六个通道的PWM信号互补输出。接着初始化BLDC的相位、并通过调用Speed_PIDInit()函数完成PID的初始化值设定。同时开启led0_task()的LED发光二极管指示任务和speed_adc_task()的实时检测ADC输入的控制BLDC速度设定的UCOSII操作系统下的任务。本实例的可调转速通过可调电阻和STM32的ADC功能,实现500-4596范围的速度调节。使用的是简单的比例控制,并未使用复杂的PID控制。通过定时器1的PWM互补输出六路PWM控制电机的转动,驱动器使用L293D和IRF540MOS管。换向使用的是外部中断,测速使用的是定时器2的三鹿输入捕获。正反转使用的是外部中断。使用ucosii进入分功能多任务处理。基于UCOSII的BLDC电机控制器设计实例的波形及仿真效果图如图6-4(c)所示:图6-4(c)基于UCOSII的BLDC电机控制器设计实例的波形及仿真效果图6.4基于UCOSII的BLDC电机控制器设计实例6.5“推箱子”游戏设计实例1.实例要求利用STM32F103R6微控制器、160X128图形点阵LCD显示屏和5个按键实现“推箱子”游戏。游戏具有9关。2.硬件电路硬件仿真电路如图6-5所示。160X128图形LCD显示屏的数据引脚D0~D7、控制引脚C/D、CE、WR和RD分别连接到STM32F103R6的PC0~PC11引脚上,控制操作的上/下/左/右和OK键分别连接到PA9~PA13引脚上。图6-5“推箱子”游戏设计实例的波形及仿真效果图3.程序设计在程序设计前,需要完成以下两件事情:(1)制作可以显示16X16的人物、砖块、箱子、目的、成功等图标,将这些图标数据放置在Lattice[]
数组中,以便在程序运行前装载到LCD显示缓存中。(2)需要将不同关卡下的人物、砖块、箱子、目的、成功等图标所在点的位置信息存储到一个LEVEL[][8][8]的三维数组中,以便程序根据进入不同关卡时可以根据LEVEL数组中的信息绘制人物、砖块、箱子、目的、成功所在点图标。在该数组中采用8X8点阵方式来表达不同图标的信息点,其中定义显示人物图标用数字“1”表示,砖块用数字“2”表示,箱子用数字“3”表示,目标用数字“4”表示,成功用数字“5”表示。程序设计主要包括的内容如下:(1)160X128图形LCD显示屏的驱动程序设计,这部分内容体现在LCD160X128.H头文件和LCD160X128.C源文件中。在LCD160X128.H头文件中主要有引脚配置的宏定义、T6963C控制器的指令集的宏定义以及相关函数的外部声明,在LCD160X128.C源文件中实现了驱动T6963C控制器的读写操作时序的模拟的函数、指令集操作的函数和LCD初始化函数功能。(2)初始化显示界面,等待按下OK键进入第1关。(3)方向按键识别并执行相关的操作,这部分内容在Keyoard()函数中实现
。6.5“推箱子”游戏设计实例LCD160X128图形LCD模块驱动程序设计(1)LCD160X128.H头文件LCD160X128.H头文件包含主要内容有:驱动PG160128A的引脚功能宏定义;T6963指令集宏定义;操作函数的声明。6.5“推箱子”游戏设计实例(2)LCD160X128.C源文件在LCD160X128.C源文件中,涉及以下方面的内容:与硬件相关的操作时序函数LCD_WriteCommand函数实现向PG160128A写命令时序模拟函数;LCD_ReadStatus函数实现从PG160128A读取操作状态信息时序模拟函数;LCD_WriteData函数实现向PG160128A写数据时序模拟函数;LCD_ReadData函数实现从PG160128A读数据时序模拟函数。与指令相关的功能操作函数lcd_enable函数实现STA0和STA1读写状态信息判断;atrd_enable函数实现STA2数据自动读状态判断;atwr_enable函数实现STA3数据自动写状态判断;write_cmd0函数实现向PG160128A写入不带参数的命令操作;write_cmd1函数实现向PG160128A写入带1个参数的命令操作;write_cmd2函数实现向PG160128A写入带2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脊髓疾病护理的未来发展趋势
- 心理慰藉志愿者服务协议书2026
- 垂直整合行业标准合作协议
- 会议设备租赁合同2026年度
- 2026年精益生产视角下的厂内物流改善
- 2026年如何处理团队中的“刺头”员工
- 2026社会及治理投资合作协议2026年
- 2026年初中生物后进生转化工作心得体会
- 线上医疗健康波特五力评估合同
- 咖啡机销售及售后服务合同
- 从“智人”到“数字人”
- DB11T 3032-2022 水利工程建设质量检测管理规范
- 媒体创意经济:玩转互联网时代学习通超星期末考试答案章节答案2024年
- 工程造价咨询服务投标方案(技术方案)
- GB/T 44299-2024探测器探测范围的测量方法和声明用于大和小运动探测的被动式红外探测器
- 《交通监控系统》课件
- 27.2.2相似三角形的性质教学设计人教版九年级数学下册
- GSTGM9000图形显示装置软件用户手册
- 明管结构计算书(Excel)
- 2023年同等学力申硕经济学综合历年真题及答案
- 《社会工作实务》初级社会工作师
评论
0/150
提交评论