两个8*8点阵流水屏

双8x8点阵屏显示项目

项目介绍

这是一个基于51单片机的双8x8点阵屏显示项目,实现了在两个8x8点阵屏上滚动显示"HELLO WORLD!"的功能。

硬件需求

  • 51系列单片机(如AT89C51/AT89C52等)
  • 两个8x8点阵屏
  • 电阻若干(用于限流)
  • 面包板及连接线

硬件连接

单片机端口 功能 连接说明
P0 行控制 连接两个点阵屏的行引脚(ROW)
P2 列控制 连接两个点阵屏的列引脚(COM)
  • 第一个点阵屏的列控制使用P2.0-P2.2(低3位)
  • 第二个点阵屏的列控制使用P2.3-P2.5(中间3位)

软件实现

核心功能

  1. 字符点阵定义 :在zimo数组中定义了"HELLO WORLD!"每个字符的16x8点阵数据
  2. 动态扫描显示:使用逐行扫描的方式,通过快速切换行和列的状态来实现稳定显示
  3. 滚动效果:通过改变显示的起始位置,实现文字从右向左滚动的效果

代码结构

c 复制代码
#include <reg52.h>
#define ROW_PORT P0
#define COM_PORT P2
unsigned char code zimo[]=
{ 
0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04,/*"H",0*/
0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00,/*"E",1*/
0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,/*"L",2*/
0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,/*"L",3*/
0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00,/*"O",4*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00,/*"W",6*/
0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00,/*"O",7*/
0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04,/*"R",8*/
0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,/*"L",9*/
0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00,/*"D",10*/
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",11*/
};
void Delay_Us(unsigned int us)
{while(us--);}

void Delay_Ms(unsigned int ms)
{
 unsigned char i;
 while(ms--)for(i=0;i<120;i++);
}

void main()
{
 unsigned char i,j,page;
 while(1)
 {
	for(page=0;page<178;page=page+2)
	{
	 i=page;j=0;
	 do{
		ROW_PORT=0x0;
		COM_PORT=j|0x08;
		ROW_PORT=zimo[i];
		Delay_Us(300);

		ROW_PORT=0x0;
		COM_PORT=j|0x10;
		ROW_PORT=zimo[i+1];
		Delay_Us(300);
		j++;i=i+2;
		}while(j<8);
		Delay_Ms(200);
	   }
	}
 }

关键技术点

  1. 扫描显示原理:通过快速扫描每一行,利用人眼的视觉暂留效应,使点阵屏显示出完整的图像
  2. 双屏控制:通过P2端口的不同位控制两个点阵屏,实现同时显示
  3. 滚动效果 :通过page变量控制显示的起始位置,实现文字的滚动

运行效果

烧录完成后,给单片机上电,两个8x8点阵屏将从右向左滚动显示"HELLO WORLD!"字样。

相关推荐
小糯米6014 分钟前
C语言指针3
c语言·数据结构·算法
mount_myj1 小时前
Swap Digits
c语言
枕星而眠2 小时前
C 语言结构体硬核总结:内存对齐、#pragma pack、位段、柔性数组(面试+工程双指南)
c语言·后端·面试·柔性数组
三品吉他手会点灯2 小时前
C语言学习笔记 - 5.C概述 - C的应用领域
c语言·笔记·学习
mount_myj2 小时前
填数【C语言】
c语言
三品吉他手会点灯3 小时前
C语言学习笔记 - 4.C概述 - C的特点
c语言·笔记·学习
她说彩礼65万3 小时前
C语言 函数指针
c语言·开发语言·算法
算法鑫探3 小时前
贪心算法(C 语言实现)及经典应用
c语言·数据结构·算法·贪心算法
C语言小火车3 小时前
嵌入式实习面试问题:那个动态内存是怎么样分配的?
c语言·开发语言·c++·嵌入式硬件·面试
拾光Ծ3 小时前
【Linux系统编程】深入理解命名管道(Named Pipe):从原理到实战的完整指南
linux·c语言·linux系统编程·进程间通信·ipc·命名管道