|
基于上次的帖子 基于HZK16和HZK12的点阵字体显示体验,不过这次是用C语言实现罢了
https://www.cncalc.org/thread-25299-1-1.html
可知如何采用位运算的方法进行像素内容显示,只需要把每个字节与相应的字节位比较即可
比如需要显示一行数据,十进制是6,二进制是110 ,补位后是0110
1110
可以分别与 十进制数 8 二进制数 1000
十进制数 4 二进制数 0100
十进制数 2 二进制数 0010
十进制数 1 二进制数 0001
比较 获得每个位的信息
方法比较直观,但是考虑到9860内存只有64K,中文字库不可能直接读到内存中,文件需要一直保持在打卡位置,当应用结束后关闭
- int draw_font(int file_handle,char a1,char a2,char x,char y)
- {
- unsigned char chunk[24];
- int i,j,k,n,offset;
- unsigned char data8[8] = {128,64,32,16,8,4,2,1};
- offset = (94*a1+a2)*24;
- Bfile_ReadFile(file_handle, chunk, 24, offset);
-
- for(j=0;j<12;j++){
- for(k=0;k<2;k++){
- n = chunk[j*2+k];
- for (i=0;i<9;i++){
- if (n>=data8[i]){
- n = n - data8[i];
- Bdisp_SetPoint_VRAM(x+i+8*k,y+j,1);
- }
- }
- }
- }
- Bdisp_PutDisp_DD();
- }
复制代码
源代码在此
CHV.c
(3.98 KB, 下载次数: 67)
|
|