数码之家

 找回密码
 立即注册
搜索
查看: 571|回复: 21

[C51] 小白学51单片机,LCD12864显示字符

[复制链接]
发表于 2024-2-19 16:13:59 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前面介绍过这块屏是不带字库的,
要自己取字模,

红色那根线是CS2 我给接到P0.5

显示效果如下

1.jpg

用的取字模软件是pctolcd2002
按列行式,逆向取模

2.png
数字模

3.png
中文模

4.png

5.png

6.png

7.png

8.png

9.png

10.png

11.png

12.png






打赏

参与人数 2家元 +60 收起 理由
家睦 + 30
springvirus + 30 以資鼓勵

查看全部打赏

发表于 2024-2-19 16:30:05 | 显示全部楼层
厉害了,买了一些单片机学习的资料和物料,一直在养灰……年纪来了不想折腾

打赏

参与人数 1家元 +30 收起 理由
springvirus + 30 以資鼓勵

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 09:29:44 | 显示全部楼层
yiguangqiang 发表于 2024-2-19 16:30
厉害了,买了一些单片机学习的资料和物料,一直在养灰……年纪来了不想折腾 ...

有人爱骑车,有人爱钓鱼,就当是兴趣爱好吧,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 09:33:42 | 显示全部楼层
写字符的方式应该跟取字模方式有很大关系,有空折腾一下
回复 支持 反对

使用道具 举报

发表于 2024-2-20 13:27:49 | 显示全部楼层
我就是从51入坑的,现在还在51的坑里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 19:29:30 | 显示全部楼层
有个问题想请教一下,
显示字符的程序中有3个数字,第一个是表示在哪行,第二个是表示哪列,第三个是表示在字模中的第几个字,
这3个数字是有一定规律的,行是0246,列是每次加16,字是每次累加,
想请教的是这三个能不能用变量来代替,要怎样写这个循环?

0f6d760eea0c9099d0ba7580050df88.png

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 20:13:57 | 显示全部楼层
本帖最后由 hellozwt 于 2024-2-20 22:55 编辑

我用一个笨办法可以简单很多,
之前要写32行的显示代码,现在5行就可以了

bbbf8c421fc1e881e26bae10b433264.jpg

把行和列先写在数组里,
然后32个字做一个for循环
代码如下:

uchar table1[]={0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6};
uchar table2[]={0,16,32,48,64,80,96,112,0,16,32,48,64,80,96,112,0,16,32,48,64,80,96,112,0,16,32,48,64,80,96,112};

void main(void)
{
    uchar a,b,c;   //a行 b列 c第几个字
    lcd_init();     //初始化
    lcd_clear();  //清屏
    for(c=0;c<32;c++)
    {
        lcd_write_cn(table1[a],table2,c,cn1);
        a++;  b++;
    }
    while(1);   
}


回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 20:29:17 | 显示全部楼层
还有更好的办法吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 22:56:20 | 显示全部楼层
更正一下
     lcd_write_cn(table1[a],table2[b],c,cn1);
回复 支持 反对

使用道具 举报

发表于 2024-2-21 13:34:36 来自手机浏览器 | 显示全部楼层
早就想学,就是记不住,看见各位老师好羡慕啊。
回复 支持 反对

使用道具 举报

发表于 2024-2-21 13:40:07 | 显示全部楼层
喜欢51单片机,但是现在逐渐迁移到MicroPython,毕竟越来越懒了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-21 17:05:08 | 显示全部楼层
3be7889f2a16ee6ef976e2ea2cd38492.mp4 (3.67 MB, 下载次数: 0)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-21 17:07:51 | 显示全部楼层
再次优化一下,
char table1[]={0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6};
void main(void)
{
    uchar a,b,c;   //a行 b列 c第几个字
    lcd_init();     //初始化
    lcd_clear();  //清屏
    for(c=0;c<32;c++)
    {
        lcd_write_cn(table1[a],b,c,cn1);
        a++;
        b=b+16;
       if(b==128) b=0;
       delayms(200);
    }
    while(1);   
}
回复 支持 反对

使用道具 举报

发表于 2024-2-21 17:30:28 | 显示全部楼层
hellozwt 发表于 2024-2-21 17:07
再次优化一下,
char table1[]={0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6};
void m ...

为何
char table1[]={0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6};
-----------table1[]里是8个0,8个2,7个4,8个6?不是8个4?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-21 19:37:41 | 显示全部楼层
ccma1000 发表于 2024-2-21 17:30
为何
char table1[]={0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6};
-----------tab ...

是8个4  我的程序是在小本本上写的,发贴是在大电脑上写的,抄漏了一个数

下班的路上我在想,其实 a 也可以用变量 ,用C来判断
当C=0-7时让a=0
当C=8-15时让a=2
当C=16-23时让a=4
当C=24-31时让a=6
明天再试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-21 21:51:00 | 显示全部楼层
孟总 发表于 2024-2-21 13:34
早就想学,就是记不住,看见各位老师好羡慕啊。

想学就开始吧,从最简单的开始,我也是刚学没多久,
回复 支持 反对

使用道具 举报

发表于 2024-2-22 08:49:07 | 显示全部楼层
hellozwt 发表于 2024-2-21 19:37
是8个4  我的程序是在小本本上写的,发贴是在大电脑上写的,抄漏了一个数

下班的路上我在想,其实 a 也 ...

  lcd_write_cn(table1[a],b,c,cn1);可以改为
  lcd_write_cn((c>>3)<<1,b,c,cn1);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-22 09:28:50 | 显示全部楼层
本帖最后由 hellozwt 于 2024-2-22 09:40 编辑
ccma1000 发表于 2024-2-22 08:49
lcd_write_cn(table1[a],b,c,cn1);可以改为
  lcd_write_cn((c>>3)

谢谢
(c>>3)<<1
这个我没看明白,能讲解一下吗?

右移3位 ,再左移1位 ?

回复 支持 反对

使用道具 举报

发表于 2024-2-22 09:34:48 | 显示全部楼层
STC-ISP V6.92O 正式版发布,大家一起多测试多提提宝贵建议
体验了一下最近更新的STC-ISP(V6.92O)正式版完善了的取模工具



支持纯字模的模式(格式1)和带索引的模式(格式2),
还有汇编格式(ASM)和二进制格式(BIN)
以及符合OLED格式的垂直模式,以及符合U8G2库和TFT屏的水平模式
每种模式里,通过选择不同的顺序组合,以及数据字节是低位在前还是高位在前,
还可以适应LED点阵屏之类其它种类的屏幕。
字体格式之类的设置也比较方便^_^
130016px01v00paxa0bqsa.jpg 130017j4tppjppj4cjc42c.jpg
最新更新的图片取模工具,几乎支持了目前所有种类屏幕的取模格式。
比如用于TFT-LCD屏和彩色OLED屏的16位格式
131700u8lpqkfpupqo4hy4.jpg

stc-isp-15xx-v6.92O.zip

6.1 MB, 下载次数: 1, 下载积分: 家元 -55

回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-28 19:05 , Processed in 0.156000 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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