OpenEdv-开源电子网

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

新手lcd实验求解

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-10-27
在线时间
0 小时
发表于 2015-3-8 12:51:22 | 显示全部楼层 |阅读模式
5金钱
在lcd显示的试验中,为什么发的字符串有白色底纹背景,而我画一个圆怎么没有呢?

最佳答案

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

你去看看原子代码那里有个LCD_ShowChar的函数,里面有下面的一段代码如下:  if(temp&0x80)POINT_COLOR=colortemp; else OINT_COLOR=BACK_COLOR; LCD_DrawPoint(x,y); 根据你的实验现象,你设置的colortemp;=POINT_COLOR(画笔颜色)是红的,BACK_COLOR(背景颜色)是白的,如你LCD显示的第一个 字母M所示,这条语句 if(temp&0x80)POINT_COLOR=colortemp;就是说,当(x,y)这个点刚好是要显示M的字迹的时候,就会 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
发表于 2015-3-8 12:51:23 | 显示全部楼层
你去看看原子代码那里有个LCD_ShowChar的函数,里面有下面的一段代码如下:

 if(temp&0x80)POINT_COLOR=colortemp;
else OINT_COLOR=BACK_COLOR;
LCD_DrawPoint(x,y);

根据你的实验现象,你设置的colortemp;=POINT_COLOR(画笔颜色)是红的,BACK_COLOR(背景颜色)是白的,如你LCD显示的第一个
字母M所示,这条语句 if(temp&0x80)POINT_COLOR=colortemp;就是说,当(x,y)这个点刚好是要显示M的字迹的时候,就会使POINT_COLOR=colortemp,画笔颜色变成红,所以你打的这个点是红色的,当当(x,y)这个点不是显示M的字迹的时候,
POINT_COLOR=BACK_COLOR,画笔的颜色变成白色,所以你打的这个点是白色的,这样就能显示一个红色M字迹,白色背景的字符了。
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-3-8 13:14:24 | 显示全部楼层
lcd显示字符的函数有这个参数,你goto进去看下
博观而约取,厚积而薄发。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-3-8 13:51:26 | 显示全部楼层
这问题问的

1、不看资料
2、不看代码

看了现象就来问问题的

不做评论
学无止境
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-3-8 14:07:50 | 显示全部楼层
我看到你的圆了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2014-7-19
在线时间
25 小时
发表于 2015-3-8 14:10:02 | 显示全部楼层
回复【4楼】八度空间:
---------------------------------
^-^
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
发表于 2015-3-8 15:42:45 | 显示全部楼层
void Draw_Circle(u16 x0,u16 y0,u8 r)
{
int a,b;
int di;
a=0;b=r;   
di=3-(r<<1);             //判断下个点位置的标志
while(a<=b)
{
LCD_DrawPoint(x0+a,y0-b);             //5
  LCD_DrawPoint(x0+b,y0-a);             //0           
LCD_DrawPoint(x0+b,y0+a);             //4               
LCD_DrawPoint(x0+a,y0+b);             //6 
LCD_DrawPoint(x0-a,y0+b);             //1       
  LCD_DrawPoint(x0-b,y0+a);             
LCD_DrawPoint(x0-a,y0-b);             //2             
   LCD_DrawPoint(x0-b,y0-a);             //7               
a++;
//使用Bresenham算法画圆     
if(di<0)di +=4*a+6;   
else
{
di+=10+4*(a-b);   
b--;
}      
}


而画圆的函数,简单的说就是在平凡的调用LCD_DrawPoint(x,y)函数,你进去这条画点的函数看看,
void LCD_DrawPoint(u16 x,u16 y)
{
LCD_SetCursor(x,y); //设置光标位置 
LCD_WriteRAM_Prepare(); //开始写入GRAM
LCD->LCD_RAM=POINT_COLOR; 
}
他就是始终用到一种颜色 LCD->LCD_RAM=POINT_COLOR,就是画笔颜色,如你LCD画的圆所示,看不到白色的背景颜色,因为你就始终让POINT_COLOR为红色。
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-10-27
在线时间
0 小时
 楼主| 发表于 2015-3-8 19:28:46 | 显示全部楼层
回复【6楼】前进的小兵:
---------------------------------
谢了,大兵哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 06:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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