"
世界上最神奇的mif文件生成方案
每次想要什么功能,总是找软件,死要命的找,比方说上位机、字模提取软件等等。
可是,你又听说过mif文件生成软件嘛??
当年要在液晶上显示东西,字库很大,回头大。假如说64*64的单色的图片,那你需要在Quartus II Memory Initialzation File 手工输入,需要输入4096个值,等你成功, 都NC了……
我就NC过,NC了一半,我罢工了……
字模提取软件提取的东西,都是十六进制的,而且都是8位的,我何不用C语言把他直接转换为mif文件呢?
功夫不负有心人,其实很简单,处理一个文件就OK。
那已经是一年前的事情了,现在重新要用到,终于,狠下心,把它总结一下,为全人类做贡献了。
步骤请看如下
目的:要得到16*8的字符“Crazy Bingo”的mif文件?
总共有16811=1408个数据,按列取,两个字节为一个数据,共8*11=88个数据
(1) 用PCtoLCD2002这款软件提取“Crazy //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg3NDgyMA==.html
Bingo”的HEX文件,如下:生成字模后,保存。
(2) 用notepad++这款软件打开,直接进行列操作,删除一些参数,得到有效数据
(3) 设置C程序 define参数,程序如下
#include
#define Data_Width 16 //mif 存储数据宽度
#define Data_Depth 88 //mif 存储数据总量 8*11
void main()
{
int i,S=0;
int HEX_Data【Data_Depth】; //输入8位HEX 数据(0x...)
//在桌面新建Mif文件
FILE *fp;
fp=fopen(""C:\Documents and Settings\All Users\桌面\Mif.mif"",""w"");
//写入mif文件初始化数据
fprintf(fp,""WIDTH=%d;\n"",Data_Width); //写入mif 存储数据宽度
fprintf(fp,""DEPTH=%d;\n"",Data_Depth); //写入mif 存储数据总量
fprintf(fp,""\n"");
fprintf(fp,""ADDRESS_RADIX=DEC;\n""); //十进制表示地址
fprintf(fp,""DATA_RADIX=HEX;\n""); //十六进制表示数据
fprintf(fp,""CONTENT BEGIN;\n""); //内容开始
fprintf(fp,""\n"");
for(i=0;i
{
//代码效果参考: https://v.youku.com/v_show/id_XNjQwNjg3MjkwOA==.html
scanf(""%x"",&HEX_Data【i】);
fprintf(fp,""\t%d\t:\t%x;\n"",i,HEX_Data【i】);
}
fprintf(fp,""\n"");
fprintf(fp,""END;""); //标志mif 文件CONTENT完毕
fclose(fp); //关闭文件
//CMD界面显示
printf(""\n"");
printf(""Congratulate to you,Crazy Bingo!"");
printf(""Built mif file successfully!\n"");
printf(""Have a fun and never give up!\n"");
getchar();
getchar();
getchar();
}
(4) 编译,在CMD复制入第二步最后得到的数据
(5) 桌面
(6) 记事本格式打开
(7) Quartus II 打开
(8) 然后再调用ROM+相关程序,就可以在液晶上看到我了哈哈
(9) 再看看别的,下面是五个32*32的汉字的mif,32位的
哈哈,以后一定要好好学C++,自己编写一个界面,写个小软件,送给玩FPGA 的小朋友们……
"