OpenEdv-开源电子网

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

1.3寸OLED 彩屏240*240 stm32f103

[复制链接]

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-5-22
在线时间
30 小时
发表于 2019-7-2 22:12:31 | 显示全部楼层 |阅读模式
1金钱
请问一下这个OLED 字符或数字的大小怎么改大啊,有大佬知道吗, 附上源代码//在指定位置显示一个字符

//num:要显示的字符:" "--->"~"
//mode:叠加方式(1)还是非叠加方式(0)
//在指定位置显示一个字符

//num:要显示的字符:" "--->"~"

//mode:叠加方式(1)还是非叠加方式(0)
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 mode)
{
    u8 temp;
    u8 pos,t;
        u16 x0=x;
        u16 colortemp=POINT_COLOR;      
    if(x>LCD_W-16||y>LCD_H-16)return;            
        //设置窗口                  
        num=num-' ';//得到偏移后的值
        Address_set(x,y,x+8-1,y+16-1);      //设置光标位置
        if(!mode) //非叠加方式
        {
                for(pos=0;pos<16;pos++)
                {
                        temp=asc2_1608[(u16)num*16+pos];                 //调用1608字体
                        for(t=0;t<8;t++)
                    {                 
                        if(temp&0x01)POINT_COLOR=colortemp;
                                else POINT_COLOR=BACK_COLOR;
                                LCD_WR_DATA(POINT_COLOR);       
                                temp>>=1;
                                x++;
                    }
                        x=x0;
                        y++;
                }       
        }else//叠加方式
        {
                for(pos=0;pos<16;pos++)
                {
                    temp=asc2_2412[(u16)num*16+pos];                 //调用1608字体
                        for(t=0;t<8;t++)
                    {                 
                        if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点     
                        temp>>=1;
                    }
                }
        }
        POINT_COLOR=colortemp;                                          
}   
//m^n函数
u32 mypow(u8 m,u8 n)
{
        u32 result=1;         
        while(n--)result*=m;   
        return result;
}                         
//显示数字
//x,y :起点坐标         
//len :数字的位数
//color:颜色
//num:数值(0~4294967295);       
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len)
{                
        u8 t,temp;
        u8 enshow=0;
        num=(u16)num;
        for(t=0;t<len;t++)
        {
                temp=(num/mypow(10,len-t-1))%10;
                if(enshow==0&&t<(len-1))
                {
                        if(temp==0)
                        {
                                LCD_ShowChar(x+8*t,y,' ',0);
                                continue;
                        }else enshow=1;
                          
                }
                 LCD_ShowChar(x+8*t,y,temp+48,0);
        }
}


QQ图片20190702220632.jpg


1.3 TFT测试程序.rar

5.77 MB, 下载次数: 70

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-7-3 02:27:11 | 显示全部楼层
学习我们的液晶显示实验
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2019-7-3 10:19:15 | 显示全部楼层
把你字体库变大就相应变大了
回复

使用道具 举报

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-5-22
在线时间
30 小时
 楼主| 发表于 2019-7-3 10:20:12 | 显示全部楼层
awsawzj 发表于 2019-7-3 10:19
把你字体库变大就相应变大了

字体库不知道怎么生成啊
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2019-7-3 10:23:47 | 显示全部楼层
a15211862314 发表于 2019-7-3 10:20
字体库不知道怎么生成啊

你可以下个字模生成软件,或者网上搜索下有没有做好的字体库
回复

使用道具 举报

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-5-22
在线时间
30 小时
 楼主| 发表于 2019-7-3 10:26:03 | 显示全部楼层
awsawzj 发表于 2019-7-3 10:23
你可以下个字模生成软件,或者网上搜索下有没有做好的字体库

我找了一下2412的,没有,只有1608的字体库
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2019-7-3 10:27:00 | 显示全部楼层
那你就用字模软件自己做
回复

使用道具 举报

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-5-22
在线时间
30 小时
 楼主| 发表于 2019-7-3 10:38:03 | 显示全部楼层
awsawzj 发表于 2019-7-3 10:27
那你就用字模软件自己做

做出来不能用,没什么变化
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2019-7-3 10:45:47 | 显示全部楼层
用字模软件做成字库数组放在你的程序中,例如你的文字是24*24的,
假设原来是16*16的,则你的汉字显示程序中也要把相关的显示循环次数修改一下,例如把原来的16改为24.

回复

使用道具 举报

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-5-22
在线时间
30 小时
 楼主| 发表于 2019-7-3 15:49:18 | 显示全部楼层
backup2k 发表于 2019-7-3 10:45
用字模软件做成字库数组放在你的程序中,例如你的文字是24*24的,
假设原来是16*16的,则你的汉字显示程序 ...

没用,显示都不对了
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-3-26
在线时间
12 小时
发表于 2019-7-3 16:18:35 | 显示全部楼层
a15211862314 发表于 2019-7-3 15:49
没用,显示都不对了

显示不对可能是你那个显示函数里for循环的循环次数不对,或者你取模软件的取模方式不对。可以看看原子的TFT-LCD相关教程,静下心来理解一下原子的showchar函数,自然就明白怎么用了。
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2019-7-3 16:47:11 | 显示全部楼层
a15211862314 发表于 2019-7-3 15:49
没用,显示都不对了

显示不对是正常的。因为没有万能的程序,每个功能要求都要你自己修改程序才行。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 07:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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