Processing串口通信控制8*8点阵屏显示数字
Processing控制点阵屏显示数字:串口通信及单片机实现
本文介绍如何使用Processing作为上位机,通过串口通信向AT89C51单片机发送指令,控制8*8点阵屏滚动显示数字0-9。
项目概述:
本项目使用Processing软件发送十六进制指令(0x01-0x09)至AT89C51单片机,单片机接收到指令后控制8*8点阵屏显示相应的数字图案。例如,接收到0x01时显示数字'1',接收到0x02时滚动显示数字'2',以此类推。
硬件:
- AT89C51单片机* 88点阵屏 USB转TTL模块
软件:
- Processing* Arduino IDE (用于上传单片机代码)* 串口调试助手 (可选)
代码实现:
**1. Processing上位机发送代码:**processingimport processing.serial.*;
Serial port; // 创建串口对象
void setup() { // 初始化串口,波特率设置为9600 port = new Serial(this, 'COM3', 9600); }
void draw() { // 发送指令示例: if (keyPressed) { if (key == '1') { port.write((byte)0x01); } else if (key == '2') { port.write((byte)0x02); } // ... 其他数字指令 }}
**2. 单片机接收及显示代码:**c#include <reg51.h>#include <intrins.h>
#define uchar unsigned char#define uint unsigned int
uchar code Table[]={ 0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,//0 0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,//1 0x00,0x7E,0x02,0x02,0x7E,0x40,0x40,0x7E,//2 0x00,0x7E,0x02,0x02,0x7E,0x02,0x02,0x7E,//3 0x00,0x48,0x48,0x48,0x7E,0x08,0x08,0x08,//4 0x00,0x7E,0x40,0x40,0x7E,0x02,0x02,0x7E,//5 0x00,0x7C,0x40,0x40,0x7C,0x44,0x44,0x7C,//6 0x00,0x7C,0x04,0x04,0x04,0x04,0x04,0x04,//7 0x00,0x7C,0x44,0x44,0x7C,0x44,0x44,0x7C,//8 0x00,0x7E,0x42,0x42,0x7E,0x02,0x02,0x7E,//9};
void delay(uint z) //延时函数{ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}
void main(){ SCON = 0x50; //串口模式1,允许接收 TMOD = 0x20; //定时器1,模式2 TH1 = 0xFD; //波特率9600 TL1 = 0xFD; TR1 = 1; //启动定时器1 while(1) { while(!RI); //等待接收数据 RI = 0; //清除接收中断标志 switch(SBUF) { case 0x01: for (int i=0; i<8; i++) { P0 = ~Table[i]; delay(100); } break; case 0x02: for (int i=0; i<8; i++) { P0 = ~Table[8+i]; delay(100); } break; // ... 其他数字指令 default: break; } }}
步骤:
- 连接硬件: 将AT89C51单片机、8*8点阵屏和USB转TTL模块连接。2. 上传代码: 将单片机代码上传至AT89C51单片机。3. 运行Processing: 修改Processing代码中的串口号,运行程序。4. 发送指令: 按下键盘上的数字键(1-9),Processing会发送对应的指令至单片机,点阵屏将显示相应的数字。
注意:
- 将代码中出现的 'COM3' 替换为你电脑上实际的串口号。* 可以根据需要修改延时时间以调整显示效果。
本项目展示了如何使用Processing与单片机进行串口通信,并控制外部设备。你可以根据这个基础框架,开发更复杂的功能,例如控制LED灯、读取传感器数据等
原文地址: https://www.cveoy.top/t/topic/gdpm 著作权归作者所有。请勿转载和采集!