课程设计题二十二:点阵显示器显示设计
(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个按键的处理,写点我们的处理即可。
代码和仿真:
bashhttp://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 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!