您的位置:首页 > 其它

世界上最神奇的mif文件生成方案

2010-08-02 08:34 253 查看

世界上最神奇的mif文件生成方案

每次想要什么功能,总是找软件,死要命的找,比方说上位机、字模提取软件等等。 可是,你又听说过mif文件生成软件嘛?? 当年要在液晶上显示东西,字库很大,回头大。假如说64*64的单色的图片,那你需要在Quartus II Memory Initialzation File 手工输入,需要输入4096个值,等你成功, 都NC了…… 我就NC过,NC了一半,我罢工了…… 字模提取软件提取的东西,都是十六进制的,而且都是8位的,我何不用C语言把他直接转换为mif文件呢? 功夫不负有心人,其实很简单,处理一个文件就OK。 那已经是一年前的事情了,现在重新要用到,终于,狠下心,把它总结一下,为全人类做贡献了。 步骤请看如下 目的:要得到16*8的字符“Crazy Bingo”的mif文件? 总共有16*8*11=1408个数据,按列取,两个字节为一个数据,共8*11=88个数据 (1) 用PCtoLCD2002这款软件提取“Crazy Bingo”的HEX文件,如下:

生成字模后,保存。 (2) 用

notepad++这款软件打开,直接进行列操作,删除一些参数,得到有效数据







(3) 设置C程序 define参数,程序如下 #include <stdio.h> #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<Data_Depth;i++) { 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 的小朋友们……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: