51单片机 点阵显示器显示设计 点阵控制器 16*16点阵 广告牌 proteus 仿真

介绍了一个基于74HC595移位寄存器控制的16*16点阵显示器设计,实现滚动显示功能,包括控制方向、速度及暂停等,并通过四个按键选择不同的显示内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

课程设计题二十二:点阵显示器显示设计
(1)上电后滚动显示学校名称。
(2)按键1按下,滚动显示班级。
(3)按键2按下,滚动显示姓名及学号。
(4)一键开关。

首先找一个差不多的设计

这个设计网上找的,是一个16*16点阵(4个拼凑的)显示一个设计。
这个设计可以向左显示广告语、向右显示广告语、加速、减速、开始、暂停。
在这里插入图片描述
修改程序到自己可以使用:
(1)需要自己修改程序里变量zi = 15,有多少个字就写多少。
(2)汉字取模应该是下图这样的设置。
(3)根据取模修改程序里unsigned char code tab[]数组。最开始的32个字节不要动,最后面的32个字节也不要动。
在这里插入图片描述

#include <reg51.h>                                                                                      /* 头文件 */

sbit	shcp	= P1 ^ 2;                              /* 数据输入时钟线 595的11脚 */
sbit	stcp	= P1 ^ 1;                              /* 输出存储器锁存时钟线 595的12脚 */
sbit	ds	= P1 ^ 0;                               /* 数据线  595的14脚 */

sbit	s1	= P3 ^ 1;                                /*按下暂停再暂按继续 */
sbit	s2	= P3 ^ 2;                                /*按下方向取反 */
sbit			s3	= P3 ^ 3;                            /*按下加速 */
sbit			s4	= P3 ^ 4;                            /*按下减速 */


unsigned char		fx;                  /* 方向切换 */

unsigned char		alt;               /* 数据移动定时时间 */
unsigned int		net;              /* 控制显示的字符 */
unsigned int		net_2;              /* 控制显示的字符 */
unsigned char		speed	= 5;        /* 数据移动时间变量 */
unsigned char		zi	= 2;  //----------------------这里是需要自己根据字数个数修改的----------------------
unsigned int		zong;     /*    (所有的字数+1)*32   字数指的是汉字,字母、数字两个算一个数字 */

unsigned char code	tab[] = {
	
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //前后32个0x00不要动
	
0x00,0x04,0x04,0x06,0x04,0x04,0x04,0x08,0x04,0x08,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFC,0x02,0x02,0x04,0x02,0x08,0x02,0x10,0x02,0x00,0x1E,0x00,0x00,/*"北",0*/

0x20,0x00,0x20,0x02,0x20,0x04,0x27,0xD8,0x24,0x40,0x24,0x42,0xA4,0x41,0x64,0x7E,
0x24,0x40,0x24,0x40,0x24,0x40,0x27,0xD0,0x20,0x08,0x20,0x06,0x20,0x00,0x00,0x00,/*"京",1*/


	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//前后32个0x00不要动
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

动图效果:
在这里插入图片描述

然后制作点阵显示器显示设计

需要四个按键
按键1按下后滚动显示数组1的内容
按键2按下后滚动显示数组2的内容
按键3按下后滚动显示数组3的内容
按键4就相当于这个设计里的开始暂停按钮。开启滚动和关闭滚动。

对比之前那个设计。删除其余3个按键的处理,写点我们的处理即可。

在这里插入图片描述
代码和仿真:

	http://dt1.8tupian.net/2/28880a67b8888.pg3

这个程序是为了使用移位寄存器(例如74HC595)控制LED显示的滚动LED显示设计的。以下是主要组件和功能的详细说明:

硬件配置:

  • 引脚:
    • shcp(移位寄存器时钟引脚):连接到P1^2(端口1的第2脚)。
    • stcp(存储寄存器时钟引脚):连接到P1^1(端口1的第1脚)。
    • ds(数据引脚):连接到P1^0(端口1的第0脚)。
    • s1s2s3s4:用于控制的按钮,分别连接到P31、P32、P33、P34。

全局变量:

  • fx:滚动方向标志。
  • alt:用于控制滚动速度的计时变量。
  • netnet_2:用于控制显示的字符。
  • speed:滚动速度变量。
  • zong:要显示的字符总数。

字符数组:

  • 三个字符数组(tab1tab2tab3)存储不同字符的十六进制代码。
  • xianshinayigeshuzu:用于选择要显示的字符数组。
  • zi:用于选择起始字符。

函数:

  • delay:延时函数。
  • writedata:将数据写入用于显示的移位寄存器。
  • mgetmap:映射用于显示字符的索引。

主循环:

  • 程序不断检查按钮按下(s1s2s3s4)并根据按下的按钮执行操作。
  • 使用timer0中断控制字符的滚动。根据按钮按下调整滚动方向和速度。

按钮功能:

  • 按下s1暂停/恢复滚动。
  • 按下s2更改要显示的字符集。
  • 按下s3增加滚动速度。
  • 按下s4减小滚动速度。

注意:

  • 该程序使用定时器0(timer0中断)进行时间控制。
  • 主循环不断检查按钮并根据按钮更新显示。

这段代码允许通过不同字符集进行滚动,更改方向,调整滚动速度,并暂停/恢复显示。可以根据具体需求进行调整和增强。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值