课程设计题二十二:点阵显示器显示设计
(1)上电后滚动显示学校名称。
(2)按键1按下,滚动显示班级。
(3)按键2按下,滚动显示姓名及学号。
(4)一键开关。
这个设计网上找的,是一个16*16点阵(4个拼凑的)显示一个设计。
这个设计可以向左显示广告语、向右显示广告语、加速、减速、开始、暂停。

修改程序到自己可以使用:
(1)需要自己修改程序里变量zi = 15,有多少个字就写多少。
(2)汉字取模应该是下图这样的设置。
(3)根据取模修改程序里unsigned char code tab[]数组。最开始的32个字节不要动,最后面的32个字节也不要动。

c展开代码#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个按键的处理,写点我们的处理即可。

代码和仿真:
bash展开代码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脚)。
s1、s2、s3、s4:用于控制的按钮,分别连接到P3^1、P3^2、P3^3、P3^4。
fx:滚动方向标志。
alt:用于控制滚动速度的计时变量。
net、net_2:用于控制显示的字符。
speed:滚动速度变量。
zong:要显示的字符总数。
三个字符数组(tab1、tab2、tab3)存储不同字符的十六进制代码。
xianshinayigeshuzu:用于选择要显示的字符数组。
zi:用于选择起始字符。
delay:延时函数。
writedata:将数据写入用于显示的移位寄存器。
mgetmap:映射用于显示字符的索引。
程序不断检查按钮按下(s1、s2、s3、s4)并根据按下的按钮执行操作。
使用timer0中断控制字符的滚动。根据按钮按下调整滚动方向和速度。
按下s1暂停/恢复滚动。
按下s2更改要显示的字符集。
按下s3增加滚动速度。
按下s4减小滚动速度。
该程序使用定时器0(timer0中断)进行时间控制。
主循环不断检查按钮并根据按钮更新显示。
这段代码允许通过不同字符集进行滚动,更改方向,调整滚动速度,并暂停/恢复显示。可以根据具体需求进行调整和增强。


本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!