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

本项目使用 Processing 发送指令控制 51 单片机,通过 8x8 点阵屏显示电梯楼层。点击 Processing 中的楼层按钮,点阵屏数字会从当前楼层滚动到目标楼层。

一、项目概述

本项目包含两个部分:

  1. Processing 发送程序: 在 Processing 中绘制九层楼的电梯按钮图,用户点击按钮后,发送对应楼层信息给单片机。
  2. 单片机接收程序: 单片机接收来自 Processing 的楼层信息,并控制 8x8 点阵屏显示该楼层数字,实现从当前楼层到目标楼层的数字滚动效果。

二、程序实现

1. Processing 发送程序

import processing.serial.*;

Serial serialPort;

void setup() {
  size(400, 400);
  serialPort = new Serial(this, 'COM3', 9600); // 这里的串口号和波特率需要根据实际情况修改
}

void draw() {
  background(255);
  fill(0);
  textSize(20);
  text('请选择楼层:', 50, 50);
  // 绘制九层楼的电梯按钮图
  for (int i = 1; i <= 9; i++) {
    rect(50 + (i - 1) * 40, 100, 30, 30);
    textSize(15);
    text(i, 63 + (i - 1) * 40, 120);
  }
}

void mousePressed() {
  // 根据鼠标点击的位置计算出对应的楼层
  int floor = (mouseX - 50) / 40 + 1;
  // 发送楼层信息给单片机
  serialPort.write(floor);
}

2. 单片机接收程序

#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit LATCH = P1^0;
sbit SCLK = P1^1;
sbit DIN = P1^2;

void delay(uint ms) {
    uint i, j;
    for (i = ms; i > 0; i--)
        for (j = 110; j > 0; j--);
}

void hc595_send_byte(uchar dat) {
    uchar i;
    for (i = 0; i < 8; i++) {
        SCLK = 0;
        DIN = dat & 0x80;
        dat <<= 1;
        SCLK = 1;
    }
}

void hc595_send_data(uchar dat[], uchar len) {
    uchar i;
    for (i = 0; i < len; i++) {
        LATCH = 0;
        hc595_send_byte(dat[i]);
        LATCH = 1;
        delay(1);
    }
}

void main() {
    uchar floor = 1;
    uchar dat[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
    while (1) {
        if (RI) {
            floor = SBUF;
            RI = 0;
            // 将数字滚动到指定的楼层
            uchar i, j;
            for (i = 0; i < 8; i++) {
                for (j = 0; j < 8; j++) {
                    dat[j] <<= 1;
                    if (i == 7 && j == 7) {
                        dat[j] |= floor;
                    }
                }
                hc595_send_data(dat, 8);
                delay(50);
            }
        }
    }
}

三、注意事项

  • 确保 Processing 发送程序中的串口号和波特率与单片机接收程序一致。
  • 单片机接收程序使用 74HC595 芯片控制 8x8 点阵屏,需要根据实际情况修改芯片引脚和接线。
  • 当前的数字滚动效果只是简单地向左移动,实际应用中可以根据需要进行修改。

四、总结

本项目演示了如何使用 Processing 控制 51 单片机,通过点阵屏显示电梯楼层。通过简单的串口通讯,可以实现 Processing 与单片机之间的数据交互,并完成相应的功能。

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

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

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