tiny6410裸机实验第9章--------------LCD(显示字母)

【说明】

              前一节我们初始化了LCD,使得我们可以在任何一个像素画点了。可是我们平时很少直接在屏幕上画画的吧,大多数情况下我们是在上边显示英文或者中文,那我们怎么显示英文呢,这就是这一节的重点。

 

【显示原理】

              字母是怎么显示的呢,想象一个8*8的矩阵,每一个元素就是一个像素,那我们就可以用白色像素描出一个字母"A",用黑色作为其他像素的颜色,不就可以显示一个A吗,原理就是这样的

 

【字模】

              那我们在代码中如何表示一个字符呢,用数组,比如下面这样,是一个char 型数组的八个元素。注释是其二进制的样子

              如果我们把其中的1画成白色,把0画成黑色,看看像不像一个A。。。哈哈。就是这样做的

              

              现在我们知道了如何画出一个A。但是有那么多字符,如果我们一个一个定义要花好多时间啊,

              其实不需要我们自己去定义,你可以去网络上下一个,也可以去内核里找,自己定义那就太2了。

 

【怎么使用】

              来看看画字符的函数就知道了。

              这个函数不仅仅画出指定的字符,而且会移动“光标”,使得下一次画出的字符在这一个后边

void lcd_putc(unsigned char c)
{
	static int x = 0;
	static int y = 0;

	int i,j;
	unsigned char line_dots;

	/* 获得字模 */
	unsigned char *char_dots = fontdata_8x8 + c * 8;	


	/* 在framebuffer里描点 */
	if (c == '\n')
	{
		//y = (y + 8) % 272;
		y += 8;
		if (y > 272)
			y = 0;
		return ;
	}
	else if (c == '\r')
	{
		x = 0;
		return;
	}

	for (i = 0; i < 8; i++)	
	{
		line_dots = char_dots[i];
		
		for (j = 0; j < 8; j++)
		{
			if (line_dots & (0x80 >> j))
			{
				PutPixel(x+j,  y+i, 0xff0000);
			}
			else
			{
				PutPixel(x+j,  y+i, 0);
			}
		}
	}

	//x = (x + 8) % 480;
	x += 8;
	if (x > 480)
		x = 0;
	
	if (x == 0)
	{
		//y = (y + 8) % 272;
		y += 8;
		if (y > 272)
			y = 0;
	}
	
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值