写在前面的话
希望所有发贴求助的新人朋友们, 请先在论坛搜索, 论坛有很多老师们发的贴子, 虽然有很多描述得不清不楚, 但总是有能用的
8X8点阵我也参考了好多, 发代码的确实不少, 但在硬件方面配套的原理图, 连接图都不太清楚, 于是就瞎子摸象, 总算是搞清楚了
特发此贴跟大家分享
照样, 先上原理图, 接线图
程序有附仿真程序, 方便调试
由于是测试, 所以用排针+杜邦线
单片机源程序如下:
/*********************************************************************************
接线方式请看main.h说明
二片74HC595 + 一个8*8点阵(1088AS共阴)
实现文字静态显示+移动显示(左移/右移/上移/下移)
代码精简,方便理解
**********************************************************************************/
#include "main.h"
//定义变量
uchar temp = 0xfe;
/*取模说明:
菜单选项:
"点阵格式" : 根据你的点阵是共阴还是共阳, 我的是共阴, 所以选择的是阴码
"取模走向" : 根据你的需求, 选择逆向或顺向, 我这里选择的是逆向
"取模方式" : 请看下面示例说明, 根据移动方向选择
"每行显示数据" : 点阵=8, 索引=8
"液晶面板仿真" : 像素大小=8
"输出数制" : 选择"十六进制数"
"输出选项" : 选择"输出精简格式"和"输出紧凑格式"
"自定义格式" : 选择"C51格式", 其它默认
主界面选项:
字体: 幼圆
字宽: 8 字高: 8
点阵宽: 8 点阵高: 8
*/
//动态显示数组
uchar Display_word1[48] = { //数组个数(这里的40代表有40个十六进制,因为是8*8点阵,所以每个字有8个十六进制)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白(前面放一个空白屏,实现移动出字效果)
//0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10, //箭头
//逆向+逐列式或列行式 (左移/右移)
0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08, //"一",0
0x80,0x80,0x80,0xFE,0x90,0x90,0x80,0x80, //"上",1
0x00,0x40,0x44,0x44,0x44,0x44,0x40,0x00, //"二",2
0x00,0x02,0x02,0xFE,0x0A,0x12,0x02,0x00, //"下",3
//逆向+行列式或逐行式 (上移/下移)
/*0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00, //"一",0
0x00,0x08,0x08,0x08,0x38,0x08,0x08,0xFF, //"上",1
0x00,0x00,0x3C,0x00,0x00,0x00,0x7E,0x00, //"二",2
0x00,0x7E,0x08,0x18,0x28,0x08,0x08,0x08, //"下",3
*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空白(最后放一个空白屏,以免出现乱码)
};
//静态显示数组(第1个参数为几个字,第2个参数为每字多少字节)
uchar Display_word2[3][8] = {
0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C, //心
0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10, //箭头
0x0C,0x1E,0x3E,0x7C,0x7C,0x3E,0x1E,0x0C, //心
};
//****************************************************
//主函数
//****************************************************
void main()
{
uint i;
uchar j,k;
while(1)
{
///////////////////////////////////////////////////////////////////////////
//静态显示
for(j = 0 ; j < 3 ; j++) { //共需显示3个字
for(i = 0 ; i < 1000 ; i++) { //静态显示时间
temp = 0x7f;
for(k = 0 ; k < 8 ; k++) { //显示1-8列(8为显示8列)如果改成4则有4列显示,另4列黑屏
Send_Data(Display_word2[j][k]);
}
}
}
///////////////////////////////////////////////////////////////////////////
//移动方式(想要不同的移动方式,就按以下说明修改)
//for(j = 0 ; j < 40 ; j++) //左移(逐列式)/上移(逐行式)
//for(j = 39 ; j-1 > 0 ; j--) //右移(逐列式)/下移(逐行式)
for(j = 0 ; j < 40 ; j++) { //要显示的字数(每个字8位,这里是显示一屏空白+4个字,所以是8+4*8=40)
for(i = 0 ; i < 50 ; i++) { //控制移动的速度(数字越小移动速度越快,越大越慢)
temp = 0x7f;
//移动方式(想要不同的移动方式,就按以下说明修改)
//for(k = 0 ; k < 8 ; k++) //左移(逐列式)/右移(逐列式)
//for(k = 8 ; k-1 > 0 ; k--) //上移(逐行式)/下移(逐行式)
for(k = 0 ; k < 8 ; k++) { //(每个字取8次数组, 不要修改)
Send_Data(Display_word1[j+k]);
}
}
}
}
}
上一篇:分享一个按键消抖和数码管显示都不用延时函数的倒计时器
下一篇:基于DHT11的温湿计设计 OLED12864显示
推荐阅读最新更新时间:2024-11-13 11:12
设计资源 培训 开发板 精华推荐
- 使用 NXP Semiconductors 的 TDF8553J 的参考设计
- 使用 NXP Semiconductors 的 uA723 的参考设计
- LT8315EFE 20 至 450Vin 隔离式 12Vout 隔离反激式转换器的典型应用电路
- EVAL-AD1556,AD1556 评估板,24 位 ADC
- NOIP-84PIN-HEAD-BD-A-GEVK:PYTHON 84 评估板
- CAT4016 16 通道恒流 LED 驱动器的演示/评估工具
- NUCLEO-F030R8,STM32 Nucleo 开发板,带有 STM32F030R8T6 MCU,支持 Arduino 和 ST morpho 连接
- #第六届立创电赛#PAM8407DR双声道音频功放
- LTC1727EMS8-2.5、3.3V 和 5V 双电源监视器的典型应用
- 用于最后喘息电路的 LT3007ITS8 低压差线性稳压器的典型应用电路