标题:
16×16点阵汉字横移方法(附代码)
[打印本页]
作者:
dfyy8888
时间:
2015-1-14 23:55
标题:
16×16点阵汉字横移方法(附代码)
本帖最后由 dfyy8888 于 2015-1-18 17:35 编辑
<p>//matrix.h(字模数组文件)</p><p>//使用zimoV2.2.exe取模,因为是横向移动字幕,所以要纵向取模。</p><p>//在zimoV2.2.exe里面可以一次性取出所有字符的字模数据,不用做任何修改,粘贴到数组即可使用</p><p>//可以单独做一个头文件,字符数不限,只要你单片机rom够大^_^</p><p>
unsigned char code matrix[]={
/*-- 文字: [空字符] --*/
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,
////////////////////////////////////////////////////////////////////////////////
/*-- 文字: 《 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x09,0x12,0x24,0x48,0x90,0x20,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x90,0x48,0x24,0x12,0x08,0x04,0x00,0x00,
/*-- 文字: 三 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x00,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*-- 文字: 字 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x30,0x20,0x24,0x24,0x24,0xA4,0x64,0x25,0x26,0x24,0x20,0x20,0x28,0x30,0x00,
0x40,0x40,0x40,0x40,0x40,0x42,0x41,0xFE,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
/*-- 文字: 经 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x0C,0x35,0xC6,0x04,0x18,0x01,0x41,0x42,0x44,0x48,0x58,0x64,0x42,0x01,0x00,
0x44,0xE6,0x44,0x48,0x48,0x48,0x02,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x02,0x00,
/*-- 文字: 》 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x40,0x20,0x90,0x48,0x24,0x12,0x09,0x04,0x02,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x08,0x12,0x24,0x48,0x90,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,</p><p>
////////////////////////////////////////////////////////////////////////////////
/*-- 文字: [空字符] --*/
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
};
/********************************************************************/
//字幕横向移动程序,需要改内容时请修改matrix.h文件的字模数据即可。
#include<reg51.h>
#include<intrins.h>
#include"matrix.h" //字模存放头文件
sbit SDI = P3^4;
sbit SCK = P3^6;
sbit LCK = P3^5;
void HC595_Send(unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3);
main()
{
unsigned char dat0, dat1, dat2, dat3, j, k, n=0;
unsigned int neg, tmp, i;
neg = 0x7FFF;
while(1)
{
for(i=0; i<(sizeof(matrix)-31);i++)
{
for(k=4; k>0; k--)
{
for(j=0; j<16; j++)
{
tmp = _iror_(neg,j);
dat0 = (unsigned char)(tmp);
dat1 = (unsigned char)(tmp>>8);
if((i+n)/16%2!=0) n+=16;
dat3 = (unsigned char)(*(matrix+i+n));
dat2 = (unsigned char)(*(matrix+i+n+16));
HC595_Send(dat0,dat1,dat2,dat3);
n++;
}
n=0;
}
if(i/16%2!=0) i+=16;
}
}
}
//下面这个子函数如果把形参改成指针(即数组),速度会很慢,所以把四个for循环都写出来了
void HC595_Send(unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3)
{
unsigned char i;
SCK = 1;
LCK = 1;
for(i=0;i<8;i++)
{
SDI = dat0&0x01;
dat0 >>= 1;
SCK = 0;
SCK = 1;
}
for(i=0;i<8;i++)
{
SDI = dat1&0x01;
dat1 >>= 1;
SCK = 0;
SCK = 1;
}
for(i=0;i<8;i++)
{
SDI = dat2&0x01;
dat2 >>= 1;
SCK = 0;
SCK = 1;
}
for(i=0;i<8;i++)
{
SDI = dat3&0x01;
dat3 >>= 1;
SCK = 0;
SCK = 1;
}
LCK = 0;
LCK = 1;
}</p>
复制代码
附:电路图(采用4片74HC595,横列各两片,JP595短路帽短接)
未标题-3.jpg
(99.58 KB, 下载次数: 286)
下载附件
2015-1-14 23:55 上传
未标题-2.jpg
(250.98 KB, 下载次数: 312)
下载附件
2015-1-14 23:55 上传
作者:
dfyy8888
时间:
2015-1-14 23:57
第一次在这儿发帖,有点乱
作者:
xiaoliu
时间:
2015-1-15 12:08
楼主太谦虚了,我觉得很好,图文并茂的,而且程序的结构很清晰。是我们学习的理想资料。有时间的话我把你的电路做成硬件来测试一下
作者:
26573687
时间:
2015-1-18 00:18
嗯,好东西,学校一个比赛就是做这种类似的
作者:
ywrong
时间:
2015-2-18 22:52
学习
作者:
hlywhp
时间:
2015-4-28 17:09
这个很有用
作者:
hawklm
时间:
2015-5-4 17:11
这个不错,只是只有16*16的吗?
作者:
黄小豆
时间:
2015-5-5 12:10
新人回帖赚币。
作者:
fontex
时间:
2015-5-7 13:03
好东西,谢谢!
作者:
右手写爱
时间:
2015-5-9 09:35
楼主好人!
作者:
qwe38771
时间:
2015-6-10 20:14
谢谢楼主,我最近在做这样的课设
。万分感谢
作者:
1398480844
时间:
2015-7-31 11:44
为什么我的显示是乱码?
作者:
奋斗小范
时间:
2015-8-1 20:29
在学习光立方程序
作者:
静风
时间:
2016-9-25 20:43
为什么会有led乱跳的现象
作者:
天行健航行
时间:
2017-6-1 16:02
刚好课设需要,学习下,谢谢楼主
作者:
长腿满
时间:
2017-6-17 20:05
这个有仿真程序吗
作者:
zzqy
时间:
2017-12-24 14:24
感谢楼主分享
作者:
xdwdazhao
时间:
2020-3-11 20:33
谢谢楼主分享
作者:
az12580
时间:
2020-3-12 00:18
挺完整的,如果能补充595的使用方法和8x8点阵如何连接成更大的点阵就好了
作者:
harveykung
时间:
2023-12-19 23:40
没想到快9年了,还是那么经典
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1