基于 STM32 单片机,采用正点原子库,使用 Proteus 仿真综合设计

本项目使用 STM32 单片机,基于正点原子库,在 Proteus 仿真环境中进行综合设计。项目包括以下功能:

  1. LED 闪烁: 在程序执行过程中,控制单片机 A 的 LED1 灯以 500ms 的周期进行闪烁,提示系统正在运行。(20 分)

  2. 按键控制 LED 状态: 单片机 A 通过按键向单片机 B 发送字符'1',单片机 B 收到数据后控制 LED2 灯点亮;单片机 A 通过按键向单片机 B 发送字符'2',单片机 B 收到数据后控制 LED2 灯熄灭。(20 分)

  3. 串口发送学号并显示: 单片机 A 连接一个按键,按下按键,单片机 A 通过串口向单片机 B 发送数据:'学号',单片机 B 收到正确'学号'时,LCD 显示学号。(30 分)

代码实现

单片机 A:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"

int main(void)
{
    u8 key = 0;

    delay_init(); // 延时初始化
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    uart_init(115200); // 串口初始化
    LED_Init(); // LED初始化
    KEY_Init(); // 按键初始化

    while (1)
    {
        LED1 = !LED1; // LED1翻转
        delay_ms(500); // 延时500ms

        key = KEY_Scan(0); // 读取按键状态
        if (key == WKUP_PRES) // 按下WKUP按键,向单片机B发送数据
        {
            USART_SendData(USART1, '1'); // 发送字符'1'
            while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); // 等待发送完毕
        }
    }
}

单片机 B:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"

int main(void)
{
    u8 data = 0;

    delay_init(); // 延时初始化
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    uart_init(115200); // 串口初始化
    LED_Init(); // LED初始化
    LCD_Init(); // LCD初始化

    while (1)
    {
        if (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET) // 接收到数据
        {
            data = USART_ReceiveData(USART1); // 读取数据

            if (data == '1') // 收到字符'1',点亮LED2灯
            {
                LED2 = 1;
            }
            else if (data == '2') // 收到字符'2',熄灭LED2灯
            {
                LED2 = 0;
            }
            else if (data == '3') // 收到字符'3',显示学号
            {
                LCD_ShowString(30, 50, 200, 16, 16, 'Student ID: 1234567890');
            }
        }
    }
}

其中,LED_Init()KEY_Init()LCD_Init()LED1LED2KEY_Scan()LCD_ShowString() 等函数均为正点原子库提供的函数。

项目总结

本项目通过 STM32 单片机,实现了 LED 控制、串口通信和 LCD 显示等功能,体现了单片机在嵌入式系统中的应用。代码结构清晰,易于理解和扩展。

参考资料

  • 正点原子 STM32 标准库教程
  • Proteus 仿真软件使用教程

原文地址: https://www.cveoy.top/t/topic/n3pT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录