stm32温湿度-超声波-LCD1602结合项目(Proteus仿真程序)

资料下载地址:stm32温湿度-超声波-LCD1602结合项目(Proteus仿真程序)

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 程序实现功能: 程序基于stm32芯片实现了控制LED灯亮灭、按键控制、串口通信、电机控制、温湿度数据采集、超声波测距、LCD显示屏显示内容这几个功能,并用proteus8进行仿真。 1.电路图 1、我设计的电路图如下所示: 仿真原理图如下 2. 程序功能介绍 程序总共包括控制LED灯亮灭、按键控制、串口通信、电机控制、温湿度数据采集、超声波测距、LCD显示屏显示内容这几个功能,以下是这些功能的介绍: 2.1. LED灯亮灭与按键控制 程序默认运行时,两个LED灯会被点亮。当按下按钮后,两个LED灯会闪烁。 2.2. 串口通信 程序运行时,虚拟终端接串口通信用到的接收端和发送端,通过配置波特率、传输的奇偶校验位、停止位、字长以及重定向,将printf函数打印的内容打印到虚拟终端上。 2.3. 电机的控制 通过L298芯片,改变功率,来控制电机的转动。 2.4. 温湿度数据采集 用DHT11温湿度传感器来采集温湿度信息。 通过了解DHT11的工作时序,设计好对应的延时函数,进行数据采集,同时通过循环将每次采集的数据打印在虚拟终端上。 2.5. 超声波测距 通过超声波测距模块来进行测距。 通过了解超声波测距模块的时序,利用定时器,采集测到的距离,并且通过循环打印在虚拟终端上。 2.6. LCD液晶显示器显示数据 客户端可以通过发送"database"字符串进入到数据库的相关服务,在选择相应功能执行。如下图所示: 通过了解LM16016l中各引脚功能,相关控制指令以及写时序和读时序,在程序运行时,在显示屏上打印"hello"。 3.具体代码如下: > * 文件名 : UltrasonicWave.c > * 描述 :超声波测距模块,UltrasonicWave_Configuration()函数 > 初始化超声模块,UltrasonicWave_StartMeasure()函数 > 启动测距,并将测得的数据通过串口1打印出来 > * 实验平台:野火STM32开发板 > * 硬件连接:------------------ > * | PC8 - TRIG | > * | PC9 - ECHO | > * ------------------ > * 库版本 :ST3.5.0 > UltrasonicWave.H > 1. > 2. #ifndef __UltrasonicWave_H > 3. #define __UltrasonicWave_H > 4. > 5. void UltrasonicWave_Configuration(void); //对超声波模块初始化 > 6. void UltrasonicWave_StartMeasure(void); //开始测距,发送一个>10us的脉冲,然后测量返回的高电平时间 > 7. > 8. #endif /* __UltrasonicWave_H */ > 复制代码 > UltrasonicWave.c > *********************************************************************************/ > #include "./Wave/UltrasonicWave.h" > #include "./usart/bsp_usart.h" > #include "./Tim2/TIM2.h" > #define TRIG_PORT GPIOC //TRIG > #define ECHO_PORT GPIOC //ECHO > #define TRIG_PIN GPIO_Pin_8 //TRIG > #define ECHO_PIN GPIO_Pin_9 //ECHO > unsigned short int UltrasonicWave_Distance; //计算出的距离 > /* > * 函数名:DelayTime_us > * 描述 :1us延时函数 > * 输入 :Time 延时的时间 US > * 输出 :无 > */ > void DelayTime_us(int Time) > { > unsigned char i; > for ( ; Time>0; Time--) > for ( i = 0; i < 72; i++ ); > } > /* > * 函数名:UltrasonicWave_Configuration > * 描述 :超声波模块的初始化 > * 输入 :无 > * 输出 :无 > */ > void UltrasonicWave_Configuration(void) > { > GPIO_InitTypeDef GPIO_InitStructure; > RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); > GPIO_InitStructure.GPIO_Pin = TRIG_PIN; //PC8接TRIG > GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设为推挽输出模式 > GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; > GPIO_Init(TRIG_PORT, &GPIO_InitStructure); //初始化外设GPIO > GPIO_InitStructure.GPIO_Pin = ECHO_PIN; //PC9接ECH0 > GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //设为输入 > GPIO_Init(ECHO_PORT,&GPIO_InitStructure); //初始化GPIOA > } > /* > * 函数名:UltrasonicWave_CalculateTime > * 描述 :计算距离 > * 输入 :无 > * 输出 :无 > */ > void UltrasonicWave_CalculateTime(void) > { > UltrasonicWave_Distance=TIM_GetCounter(TIM2)*5*34/2000; > } > /* > * 函数名:UltrasonicWave_StartMeasure > * 描述 :开始测距,发送一个>10us的脉冲,然后测量返回的高电平时间 > * 输入 :无 > * 输出 :无 > */ > void UltrasonicWave_StartMeasure(void) > { > GPIO_SetBits(TRIG_PORT,TRIG_PIN); //送>10US的高电平 > DelayTime_us(20); //延时20US > GPIO_ResetBits(TRIG_PORT,TRIG_PIN); > while(!GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待高电平 > TIM_Cmd(TIM2, ENABLE); //开启时钟 > while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN)); //等待低电平 > TIM_Cmd(TIM2, DISABLE); //定时器2失能 > UltrasonicWave_CalculateTime(); //计算距离 > TIM_SetCounter(TIM2,0); > printf("\r\ndistance:%d%d cm\r\n",UltrasonicWave_Distance/256,UltrasonicWave_Distance%256); > } 1. 2. |

相关推荐
tyl21101 小时前
凌科芯安国产安全MCU简介
单片机·嵌入式硬件·安全
郦7772 小时前
国产入门级32位单片机PY32F002A开发板
单片机·嵌入式硬件
电院工程师2 小时前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
飞凌嵌入式2 小时前
基于RK3588,飞凌教育品牌推出嵌入式人工智能实验箱EDU-AIoT ELF 2
linux·人工智能·嵌入式硬件·arm·nxp
13631676419侯11 小时前
ESP32-C3FH4X—低功耗、高集成度的 MCU 系统级芯片 (SoC)
嵌入式硬件·智能家居·芯片
Wendy_robot12 小时前
【零基础勇闯嵌入式岗】从单片机低功耗中获得的启发
c++·单片机·嵌入式硬件
学习噢学个屁13 小时前
基于STM32汽车温度空调控制系统
c语言·stm32·单片机·嵌入式硬件·汽车
郦77713 小时前
价格性价比高系列的高性能单片机MS32C001-C
单片机·嵌入式硬件
iCxhust14 小时前
汇编字符串比较函数
c语言·开发语言·汇编·单片机·嵌入式硬件
小智学长 | 嵌入式14 小时前
Arduino入门教程:1-1、先跑起来(点亮LED&打印Helloworld)
单片机·嵌入式硬件