OpenEdv-开源电子网

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

关于oled屏显示变量的问题

[复制链接]

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-7-11
在线时间
21 小时
发表于 2016-8-18 11:37:05 | 显示全部楼层 |阅读模式
3金钱
买了一块OLED屏用的是M47SP1322驱动的
提供的程序只能显示一串特定的字符串,函数如下:
void Asc12_24(unsigned char x,unsigned char y,unsigned char ch[])
{
  unsigned char x1,c=0, i=0,j;      
  while (ch!='\0')
  {   
    x1=x/4;
    c =ch-32;
    i++;  //ÏÂÒ»¸ö×Ö·û
        
    if(x1>59)  
       {x=0;
       x1=x/4;
       y=y+24;
       }  //»»ÐР        
            
    if (y <=48)    //63-15
        {
        Set_Column_Address(Shift+x1,Shift+x1+3,CS1); //设置列坐标,shift为偏移量由1322决定。1位8/4-1.
        Set_Row_Address(y,y+23,CS1);  //
        Set_Write_RAM(CS1);     //写显存
        for(j=0;j<48;j++)
            {
              Con_4_byte(ASC12X24[c*48+j],CS1);    //数据转换
                 }
         }
    else
         if (y >=64 )
         {
            Set_Column_Address(Shift+x1,Shift+x1+3,CS2); //
设置列坐标,shift为偏移量由1322决定。1位8/4-1            
           Set_Row_Address((y-63),(y-63+23),CS2);  //
            Set_Write_RAM(CS2);     //   写显存
            for(j=0;j<48;j++)
             {
                Con_4_byte(ASC12X24[c*48+j],CS2);    //数据转换
                    }
             }

          else     //×&#214;&#212;&#218;&#214;&#208;&#188;&#228;&#206;&#187;&#214;&#195;
          {    //×&#214;&#212;&#218;&#201;&#207;°&#235;&#198;&#193;&#178;&#191;·&#214;
            Set_Column_Address(Shift+x1,Shift+x1+3,CS1);
            Set_Row_Address(y,63,CS1);  //
            Set_Write_RAM(CS1);     //  
             for(j=0;j<(64-y)*2;j++)
            {
                Con_4_byte(ASC12X24[c*48+j],CS1);   
                     }
            //×&#214;&#212;&#218;&#207;&#194;°&#235;&#198;&#193;&#178;&#191;·&#214;
            Set_Column_Address(Shift+x1,Shift+x1+3,CS2); //
            Set_Row_Address(0,(y+23-64),CS2);  //
            Set_Write_RAM(CS2);     //  
               for(j=(64-y)*2;j<48;j++)
             {
                 Con_4_byte(ASC12X24[c*48+j],CS2);    //
                     }
                        
             }
            x=x+16;    //下个字符x坐标
                 }  
   
}

现在我想显示一个变量,做到实时显示,请问大神们有木有好的办法。写一个新的函数?
望不吝赐教


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

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11541
金钱
11541
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-8-18 11:44:04 | 显示全部楼层

Set_Column_Address(Shift+x1,Shift+x1+3,CS1);
Set_Row_Address(y,y+23,CS1);
Set_Write_RAM(CS1);

最关键就是这三句,告诉它行坐标、列坐标,再告诉它显示内容。
搞明白这三句,就可以自己写了。

别被运算和循环所迷惑,无外乎就是找到显示位置的起始点而已。

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 20:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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