使用 Processing 控制 51 单片机点阵屏显示电梯楼层

本项目使用 Processing 发送数据控制 51 单片机点阵屏显示电梯楼层。用户在 Processing 中点击按钮模拟电梯选择楼层,单片机接收数据后,点阵屏上会滚动显示对应的楼层数字。

一、 Processing 发送程序

import processing.serial.*;

Serial port; // 串口对象

void setup() {
  size(400, 400);
  // 初始化串口
  port = new Serial(this, 'COM3', 9600);
}

void draw() {
  // 绘制电梯按钮图
  // ...

  // 判断是否点击了按钮
  if (mousePressed) {
    // 获取点击的楼层
    int floor = getFloor(mouseX, mouseY);
    // 发送数据
    port.write(floor);
  }
}

// 根据鼠标点击位置获取楼层
int getFloor(int x, int y) {
  // ...
}

二、 单片机接收程序(以 8051 为例)

#include <reg52.h>

sbit LED = P1^0; // 点阵屏控制引脚
unsigned char floor = 1; // 初始楼层为 1

void main() {
  // 初始化串口
  TMOD = 0x20;
  SCON = 0x50;
  TH1 = 0xFD;
  TL1 = 0xFD;
  TR1 = 1;

  while (1) {
    if (RI) {
      // 接收到数据
      floor = SBUF;
      RI = 0;
    }

    // 在点阵屏上显示数字
    showNumber(floor);
  }
}

// 在点阵屏上显示数字
void showNumber(unsigned char number) {
  // ...
}

三、 程序说明

  1. Processing 发送程序:

    • 使用 Serial 类连接串口。
    • draw() 函数中判断鼠标点击事件,获取点击的楼层号。
    • 使用 port.write() 函数将楼层号发送至单片机。
  2. 单片机接收程序:

    • 初始化串口,设置波特率等参数。
    • 使用 RI 标志位判断是否接收到数据。
    • SBUF 寄存器读取接收到的数据,并将其存储在 floor 变量中。
    • 使用 showNumber() 函数在点阵屏上显示 floor 变量的值。

四、 扩展

  • 可以根据实际需求,在 Processing 中绘制不同样式的电梯按钮图。
  • 在单片机中实现点阵屏的滚动显示功能,使数字更直观。
  • 可以增加其他功能,例如模拟电梯运行状态,显示电梯当前运行方向等。

五、 代码示例

  • Processing 代码:

    // ...
    // 绘制电梯按钮图
    for (int i = 1; i <= 9; i++) {
      rect(50, 50 * i, 50, 50);
      text(i, 75, 50 * i + 25);
    }
    // ...
    
  • 单片机代码:

    // ...
    // 在点阵屏上显示数字
    void showNumber(unsigned char number) {
      // 根据数字值,设置点阵屏的点亮状态
      // ...
    }
    

六、 总结

本文介绍了使用 Processing 和 51 单片机实现电梯楼层显示的简单方法。通过串行通讯,Processing 可以控制单片机上的点阵屏显示相应的数字,实现了简单的电梯模拟功能。用户可以通过修改代码,实现更多功能和效果,例如电梯运行状态,楼层选择动画等。


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

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