OpenEdv-开源电子网

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

求助,LCD不能显示

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
发表于 2018-5-7 12:26:43 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 jinhe000 于 2018-5-7 21:23 编辑

大神们,求助了,我是小白,很白的小白。
先说下,LCD不能显示,在while循环里面的四句话,都提示说是“pass char[9] to paramater of type 'u8 *' (aka unsigned char *) converts between pointers to integer type with different ”
,谢谢大家了




int main(void)
{
u8 i=0;

   RCC_Configuration();        //系统时钟初始化
   GPIO_Configuration();//端口初始化
   USART_Configuration();
   NVIC_Configuration();
   FSMC_Configuration();
   ILI9325_Init();
   delay_ms(1000);
   ILI_9325_CLEAR(WHITE);
        
          for(i=0;i<17;i++)
   {
             show_Str(10+i*15,100,i,BLUE,WHITE);
   }
               
        while(1)
        {
            LCD_ShowString(30,130,200,12,12,"2014/5/4");           
            LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^");
           LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
          LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        }
         
}
         
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
{         
        u8 x0=x;
        width+=x;
        height+=y;
    while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
    {      
        if(x>=width){x=x0;y+=size;}
        if(y>=height)break;//退出
        LCD_ShowChar(x,y,*p,size,0);
        x+=size/2;
        p++;
    }  
}


void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{                                                            
    u8 temp,t1,t;
        u16 y0=y;
        u8 csize=(size/8+((size%8)?1:0))*(size/2);                //得到字体一个字符对应点阵集所占的字节数        
         num=num-' ';//得到偏移后的值(ASCII字库是从空格开始取模,所以-' '就是对应字符的字库)
        for(t=0;t<csize;t++)
        {   
                if(size==12)temp=asc2_1206[num][t];                  //调用1206字体
                else if(size==16)temp=asc2_1608[num][t];        //调用1608字体
                else if(size==24)temp=asc2_2412[num][t];        //调用2412字体
                else return;                                                                //没有的字库
                for(t1=0;t1<8;t1++)
                {                           
                        if(temp&0x80) ILI_9325_Draw_Point(x,y,BLACK);

                        else if(mode==0)ILI_9325_Draw_Point(x,y,BLACK);
                        temp<<=1;
                        y++;
                        if(y>=lcddev.height)return;                //超区域了
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                if(x>=lcddev.width)return;        //超区域了
                                break;
                        }
                }           
        }                                            
}   


void ILI_9325_Draw_Point(u8 x,u16 y,u16 color)
{
        LCD_WR_CMD(0x50,x);        //x起始
        LCD_WR_CMD(0x51,x);        //x结束
        LCD_WR_CMD(0x52,y);        //y起始
        LCD_WR_CMD(0x53,y);        //y结束

        LCD_WR_CMD(0x20,x);
        LCD_WR_CMD(0x21,y);
        LCD_WR_REG(0x22);
        LCD_WR_Data(color);
}





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
 楼主| 发表于 2018-5-7 12:27:45 | 显示全部楼层
主函数里面,for循环里面的可以显示,但是while循环里面的东西显示不出来
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
 楼主| 发表于 2018-5-7 14:06:34 | 显示全部楼层
本帖最后由 jinhe000 于 2018-5-7 20:51 编辑

刚才又调试了下,在相应的位置没有显示出数字和字母,显示的只是若干个“点”,接着求助大家,谢谢了
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-5-7 15:18:47 | 显示全部楼层
先试着显示一个字符什么的看一下
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
 楼主| 发表于 2018-5-7 20:50:42 | 显示全部楼层
大瓶子凌凌漆 发表于 2018-5-7 15:18
先试着显示一个字符什么的看一下

还是不行。。。
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-5-8 10:03:25 | 显示全部楼层
jinhe000 发表于 2018-5-7 20:50
还是不行。。。

那就先从显示一个点开始试一下,是不是Draw_point程序有问题?再逐步往上试验。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
 楼主| 发表于 2018-5-9 09:50:58 | 显示全部楼层
大瓶子凌凌漆 发表于 2018-5-8 10:03
那就先从显示一个点开始试一下,是不是Draw_point程序有问题?再逐步往上试验。

应该是Draw_point的问题,现在是能在指定的位置显示“点”,但是就是不能显示字符和数字
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
 楼主| 发表于 2018-5-9 10:08:41 | 显示全部楼层
比如说现在我想显示“ABCD”,但是只能显示出4个点
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-5-9 11:21:08 | 显示全部楼层
delay一下。。。while里刷那么快,看不清。。。。。
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-5-9 16:35:17 | 显示全部楼层
jinhe000 发表于 2018-5-9 09:50
应该是Draw_point的问题,现在是能在指定的位置显示“点”,但是就是不能显示字符和数字

如果能在指定的位置显示点,就不是Draw_point的问题,要逐步往上试验,show_char;show_string
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-5-6
在线时间
3 小时
 楼主| 发表于 2018-5-14 13:07:46 | 显示全部楼层
大瓶子凌凌漆 发表于 2018-5-9 16:35
如果能在指定的位置显示点,就不是Draw_point的问题,要逐步往上试验,show_char;show_string

LCD_ShowChar,应该是这个函数的事情,可是我就是不知道错在哪里
,请帮我看看,谢谢
回复

使用道具 举报

8

主题

571

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2922
金钱
2922
注册时间
2016-5-13
在线时间
185 小时
发表于 2018-5-15 17:25:51 | 显示全部楼层
LCD_ShowString(30,130,200,12,12,(u8 *)"2014/5/4");           
while(1);
虽然不明白你们在说什么,但感觉很厉害的样子。
回复

使用道具 举报

1

主题

20

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1856
金钱
1856
注册时间
2017-12-27
在线时间
14 小时
发表于 2018-6-6 10:20:56 | 显示全部楼层
STM32VCT6使用FSMC驱动3.5寸TFT全视角IPS液晶屏
http://www.openedv.com/forum.php ... 9&fromuid=95471
(出处: OpenEdv-开源电子网)
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-7-26 15:12:42 | 显示全部楼层
函数参数好好理解一下, 传递参数是什么    函数接收参数是什么   LCD_ShowString()函数最后一个参数 改成char 类型   
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 22:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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