返回

STM32 开发:自制触摸屏计算器,运算、二进制转化一手搞定

后端

前言

计算器是日常生活中不可或缺的工具,也是电子爱好者们常常尝试的 DIY 项目之一。本项目将使用 STM32 微控制器和触摸屏来制作一个计算器,该计算器具有加、减、乘、除、以及二进制转换等功能,非常适合学习嵌入式系统和电子设计。

所需材料

  • STM32F103ZET6 微控制器
  • 3.5 英寸触摸屏
  • 面包板
  • 杜邦线
  • 电阻器
  • 电容器
  • 电源适配器

原理图

本项目的原理图如下:

[Image of the circuit diagram]

程序

本项目的程序使用 C 语言编写,并使用 Keil MDK 开发环境编译。程序代码如下:

...
// 按键扫描
void key_scan(void)
{
    // 读取触摸屏坐标
    uint16_t x = TP_Read_X();
    uint16_t y = TP_Read_Y();

    // 根据坐标判断按键
    if (x < KEY1_X_MAX && y < KEY1_Y_MAX) {
        // 按键1按下
        key_state = KEY1;
    } else if (x < KEY2_X_MAX && y < KEY2_Y_MAX) {
        // 按键2按下
        key_state = KEY2;
    } else if (x < KEY3_X_MAX && y < KEY3_Y_MAX) {
        // 按键3按下
        key_state = KEY3;
    } else if (x < KEY4_X_MAX && y < KEY4_Y_MAX) {
        // 按键4按下
        key_state = KEY4;
    } else {
        // 无按键按下
        key_state = KEY_NONE;
    }
}

// 按键处理
void key_process(void)
{
    switch (key_state) {
        case KEY1:
            // 按键1处理
            break;
        case KEY2:
            // 按键2处理
            break;
        case KEY3:
            // 按键3处理
            break;
        case KEY4:
            // 按键4处理
            break;
        default:
            break;
    }
}

// 主函数
int main(void)
{
    // 初始化硬件
    SystemInit();

    // 初始化触摸屏
    TP_Init();

    // 初始化按键
    key_init();

    // 主循环
    while (1) {
        // 扫描按键
        key_scan();

        // 处理按键
        key_process();

        // 显示计算结果
        LCD_Display();
    }
}

结语

本项目是一个非常适合学习嵌入式系统和电子设计的新手项目,它不仅涉及到硬件电路的设计,还涉及到软件程序的编写,非常具有挑战性。希望大家能够通过本项目学习到更多关于嵌入式系统的知识,并能够制作出更多有趣实用的项目。