OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9176|回复: 5

不带字库的12864该怎么自己建立字库和调用?

[复制链接]

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
发表于 2015-10-25 18:27:57 | 显示全部楼层 |阅读模式
5金钱
#ifdef  CHAR_CODE

#include"charcode.h"

uchar Lcd12864_Write16CnCHAR(uchar x, uchar y, uchar *cn)
{
	uchar j, x1, x2, wordNum;

	//--Y的坐标只能从0到7,大于则直接返回--//
	if(y > 7)
	{
		return 0;
	}

	//--X的坐标只能从0到128,大于则直接返回--//
	if(x > 128)
	{
		return 0;
	}
	y += 0xB0;	   //求取Y坐标的值
	//--设置Y坐标--//
	LcdSt7565_WriteCmd(y);
	while ( *cn != '\0')	 //在C语言中字符串结束以‘\0’结尾
	{	
	
		//--设置Y坐标--//
		LcdSt7565_WriteCmd(y);

		x1 = (x >> 4) & 0x0F;   //由于X坐标要两句命令,分高低4位,所以这里先取出高4位
		x2 = x & 0x0F;          //去低四位
		//--设置X坐标--//
		LcdSt7565_WriteCmd(0x10 + x1);   //高4位
		LcdSt7565_WriteCmd(0x04 + x2);	//低4位

		for (wordNum=0; wordNum<50; wordNum++)
		{
		    //--查询要写的字在字库中的位置--//
			if ((CN16CHAR[wordNum].Index[0] == *cn)
			     &&(CN16CHAR[wordNum].Index[1] == *(cn+1)))
			{
				for (j=0; j<32; j++) //写一个字
				{		
					if (j == 16)	 //由于16X16用到两个Y坐标,当大于等于16时,切换坐标
					{
						//--设置Y坐标--//
			   			LcdSt7565_WriteCmd(y + 1);
			
						//--设置X坐标--//
						LcdSt7565_WriteCmd(0x10 + x1);   //高4位
						LcdSt7565_WriteCmd(0x04 + x2);	//低4位
					}
					LcdSt7565_WriteData(CN16CHAR[wordNum].Msk[j]);
				}
				x += 16;
			}//if查到字结束		
		} //for查字结束	
		cn += 2;
	}	//while结束
	return 1;
}

#endif
[/mw_shl_code]


求大神指导一下上面指针是怎么用的?

最佳答案

查看完整内容[请看2#楼]

没有就自己取模, 放到单片机flash,或者外部spi flash 1L  姐个  拿个   是哪儿的方言么?  还以为姐哥呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5704
金钱
5704
注册时间
2013-11-22
在线时间
1198 小时
发表于 2015-10-25 18:27:58 | 显示全部楼层
没有就自己取模, 放到单片机flash,或者外部spi flash
1L  姐个  拿个   是哪儿的方言么?  还以为姐哥呢
回复

使用道具 举报

1

主题

374

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1309
金钱
1309
注册时间
2014-7-23
在线时间
418 小时
发表于 2015-10-25 20:03:45 | 显示全部楼层
姐个指针指向的是汉字的起始地址,因为姐个汉字由它一个双字内码组成,所以有了后面拿个*(cn+1)。。。。。。。。。。
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2015-10-26 17:40:10 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
谢谢
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2015-10-26 17:43:54 | 显示全部楼层
回复【2楼】guset_03:
---------------------------------
if(j==16)而不是if(j>=16)呢?
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2018-7-12
在线时间
34 小时
发表于 2018-8-6 17:33:31 | 显示全部楼层
这个想显示数字怎么在主函数里写呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表