找回密码
 立即注册
楼主: 浦江一水

新手学用STC8H8K64U驱动128*160彩色显示屏,实验体会...

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-5-7 21:16:33 | 显示全部楼层
本帖最后由 浦江一水 于 2024-5-7 22:26 编辑


2,关于LCD显示屏的横竖屏切换;   


显示屏横竖屏切换. 主要看初始化的代码了...
大凡显示屏的初始化代码, 一般都由厂家提供, 如果厂家不提供, 任何人, 再聪明, 两辈子也猜不出来的.

要根据资料说明,研究清楚初始化中的代码: 对相关寄存器, 写入不同的数据, 就可以了实现切换了.
比如这款显示屏, 无论带不带键盘, 屏都是ST7735驱动, 因此驱动初始化是一样的.


我自己整理了一下是这样的:
//========================================================
//  ST7735 显示屏初始化
//========================================================
void  LCD_Init(void)
{
    P1M0 = 0x80; P1M1 = 0x00;
    CS=0;  //片选中
    BL=0;  //背光灭
    //--ST7735R Reset Sequence--  复位
    RES =0; delay(120);  //Delay 120ms

    RES =1; delay(100);  //Delay 100ms
    //--End ST7735S Reset Sequence--
    LCD_WR_CMD(0x11);  //Sleep out
    delay(120);                //Delay 120ms
    //--ST7735S Frame Rate--
    LCD_WR_CMD(0xB1); LCD_WR_DAT(0x01); LCD_WR_DAT(0x2C); LCD_WR_DAT(0x2D);
    LCD_WR_CMD(0xB2); LCD_WR_DAT(0x01); LCD_WR_DAT(0x2C); LCD_WR_DAT(0x2D);
    LCD_WR_CMD(0xB3); LCD_WR_DAT(0x01); LCD_WR_DAT(0x2C); LCD_WR_DAT(0x2D);
                                    LCD_WR_DAT(0x01); LCD_WR_DAT(0x2C); LCD_WR_DAT(0x2D);
    //--End ST7735S Frame Rate--
    LCD_WR_CMD(0xB4); LCD_WR_DAT(0x07); //Dot inversion
    //--ST7735S Power Sequence--
    LCD_WR_CMD(0xC0); LCD_WR_DAT(0xA2); LCD_WR_DAT(0x02); LCD_WR_DAT(0x84);
    LCD_WR_CMD(0xC1); LCD_WR_DAT(0xC5);
    LCD_WR_CMD(0xC2); LCD_WR_DAT(0x0A); LCD_WR_DAT(0x00);
    LCD_WR_CMD(0xC3); LCD_WR_DAT(0x8A); LCD_WR_DAT(0x2A);
    LCD_WR_CMD(0xC4); LCD_WR_DAT(0x8A); LCD_WR_DAT(0xEE);
    //--End ST7735S Power Sequence--
    LCD_WR_CMD(0xC5); LCD_WR_DAT(0x0E); //VCOM //1a
    LCD_WR_CMD(0x36); LCD_WR_DAT(0xC0); //LCD_WR_DAT(0xC0);竖屏 // LCD_WR_DAT(0xA8); 横屏  //MX, MY, RGB mode
    //--ST7735S Gamma Sequence--
    LCD_WR_CMD(0xE0); LCD_WR_DAT(0x0F); LCD_WR_DAT(0x1A); LCD_WR_DAT(0x0F); LCD_WR_DAT(0x18);
                                    LCD_WR_DAT(0x2F); LCD_WR_DAT(0x28); LCD_WR_DAT(0x20); LCD_WR_DAT(0x22);
                                    LCD_WR_DAT(0x1F); LCD_WR_DAT(0x1B); LCD_WR_DAT(0x23); LCD_WR_DAT(0x37);
                                    LCD_WR_DAT(0x00); LCD_WR_DAT(0x07); LCD_WR_DAT(0x02); LCD_WR_DAT(0x10);
    LCD_WR_CMD(0xE1); LCD_WR_DAT(0x0F); LCD_WR_DAT(0x1B); LCD_WR_DAT(0x0F); LCD_WR_DAT(0x17);
                                    LCD_WR_DAT(0x33); LCD_WR_DAT(0x2C); LCD_WR_DAT(0x29); LCD_WR_DAT(0x2E);
                                    LCD_WR_DAT(0x30); LCD_WR_DAT(0x30); LCD_WR_DAT(0x39); LCD_WR_DAT(0x3F);
                                    LCD_WR_DAT(0x00); LCD_WR_DAT(0x07); LCD_WR_DAT(0x03); LCD_WR_DAT(0x10);
    LCD_WR_CMD(0x2A); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0x80);  //宽度128
    LCD_WR_CMD(0x2B); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0xA0);  //高度160
    LCD_WR_CMD(0xF0); LCD_WR_DAT(0x01);  //Enable test command  
    LCD_WR_CMD(0xF6); LCD_WR_DAT(0x00);  //Disable ram power save mode
    //LCD_WR_CMD(0x2C);
    //--End ST7735S Gamma Sequence--
    LCD_WR_CMD(0x3A); LCD_WR_DAT(0x05); //65k mode
    LCD_WR_CMD(0x29); //Display on
    BL=1;  //背光亮
}

简单说明一下:

上述函数中,
LCD_WR_CMD() 是写命令函数,
LCD_WR_DAT() 是写数据函数,

有关屏方向的, 绿色字体是目前竖屏模式, 如果要切换成横屏, 用后面的蓝色字语句替代绿色字即可;  红色字体是保存备忘的.
另外注意, 红色字体宽度高度那两行, 如果切换成横屏; 那么终点数据要作相应修改. 最后的数据 宽度0xA0, 高度0x80.
各函数的X,Y坐标的范围, 相应调整即可, 其它都不需要改动的.

另外, 你说 " #define USE_LANDSCAPE 横竖屏切换,实际不起作用,..."

这是条件编译, 有正确的配套一般也应该是可以的, 并不是简单一句话就行的.
要先定义.... 再根据不同的定义, 在上述的几个地方加相应变化语句, 最后实现改变定义一个值, 就方便切换了... 原理是一样的....

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-5-7 21:18:36 | 显示全部楼层
本帖最后由 浦江一水 于 2024-5-8 15:40 编辑
cadp*** 发表于 2024-5-7 09:14
能不能帮忙写一个上位机下载文本的PC机专用软件?应答式的........
3,关于写一个PC机向单片机发送文本文件专用软件.
可以的....  抽空编写一个.... 将放在这里....  
根据所提的要求:"写一个上位机下载文本的PC机专用软件?应答式的,单片机发送请求字符”XX",PC端发送文本.txt的第一行,单片机接收完再请求再发送第二行,逐行发每行字符100字以内。"
虽然猜不出下载文本到单片机里去的目的和用途, 但是对应的要求还是照做了.

匆编写了一个, 来了......
ISP-TXT.bmp
一般而言, 下载HEX格式(本质上也是纯文本文件)到单片机里去的可能性要较大些, 所以软件在打开文件时可选类型拓展了HEX格式.
另外也扩充了一些功能, 比如"手动发送一行"和"连续发送"等, 这样使用起来可能比较更灵活一些。


软件比较简单,也许不太适应各人的操作习惯。望海涵,将就着使用吧。
纯绿色软件,单一EXE可执行文件,解压即可使用。鼠标指针悬停到每个图标上,都有信息提示。
ISPTXT.rar (207.17 KB, 下载次数: 85)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2024-07-16 08:38:18

0

主题

24

回帖

296

积分

中级会员

积分
296
发表于 2024-5-8 09:41:57 | 显示全部楼层
浦江*** 发表于 2024-5-7 21:14
楼上坛友提了三个问题.
1,关于中西文混合输入(显示);


看到《无线电》不由想起当年的《电子报》啊,岁月不饶人,90年代没有网络论坛,知识就靠报刊杂志传递了,当年痴迷音响电路。
扯远了回归正传,非常感谢大佬详细的解答,让人豁然开朗,原来*STR传递至子函数的内容不是字符串本身,而是一串16进制数字,

难怪我将显示英文字符子函数(蓝色部分)插进去不行,昨晚将整个子函数代码放进去才解决问题。将显示汉字字符和显示英文字符
合并成一个子函数。
捕获.JPG


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2024-07-16 08:38:18

0

主题

24

回帖

296

积分

中级会员

积分
296
发表于 2024-5-8 10:07:29 | 显示全部楼层
浦江*** 发表于 2024-5-7 21:16
2,关于LCD显示屏的横竖屏切换;   

对比了商家的代码,难怪不起作用,原来根本没有定义到点子上,我只是一时应用能用就行,没有详细研究那个PDF说明资料,那个非专业看得头疼
谢谢您的指点
晚上我去试一试

捕获.JPG

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2024-07-16 08:38:18

0

主题

24

回帖

296

积分

中级会员

积分
296
发表于 2024-5-8 10:24:05 | 显示全部楼层
浦江*** 发表于 2024-5-7 21:18
3,关于写一个PC机向单片机发送文本文件专用软件.

可以的....  抽空编写一个.... 将放在这里....  

先谢为敬
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-5-8 15:57:30 | 显示全部楼层
本帖最后由 浦江一水 于 2024-9-7 20:19 编辑

楼上Cadplus坛友,客气了。

看到《无线电》不由想起当年的《电子报》啊,岁月不饶人,90年代没有网络论坛,知识就靠报刊杂志传递了,当年痴迷音响电路。
这段话非常感同身受, 估计年代、经历、兴趣爱好等已相差不远的了。




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2024-07-16 08:38:18

0

主题

24

回帖

296

积分

中级会员

积分
296
发表于 2024-5-10 11:25:27 | 显示全部楼层
浦江*** 发表于 2024-5-7 21:18
3,关于写一个PC机向单片机发送文本文件专用软件.
可以的....  抽空编写一个.... 将放在这里....  
根据所提 ...

非常感谢坛友,这么快就编好了,软件做得很好,绿色方便实用。
正在业余时间做一个小铣床,三轴单片机数控,之所以不用成品控制板Mach3之类,因为这种工业用的控制卡应用复杂,
而且要连电脑不能脱机,自己做就简单多了,有了你这个软件,可以将复杂的运算交给AUTOCAD去做,
生成G代码或者自定的文本代码发送单片机执行,简单加工的直接脱机完成。
单片机完全新手,按这构思够好长时间去消化了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-09 08:51:43

31

主题

347

回帖

3541

积分

荣誉版主

积分
3541
发表于 2024-5-11 09:43:31 | 显示全部楼层
明白了下载文本(控制脚本)的意图, "小铣床,三轴单片机数控", 极有意思的制作项目, 很受启迪...
祝楼上坛友顺利愉快...
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-09 08:48:23

4

主题

512

回帖

2017

积分

金牌会员

积分
2017
发表于 2024-5-31 10:01:39 | 显示全部楼层
浦江*** 发表于 2024-5-11 09:43
明白了下载文本(控制脚本)的意图, "小铣床,三轴单片机数控", 极有意思的制作项目, 很受启迪...
祝楼上坛友 ...

默然,认识一群有知识和理想的人,快乐啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:271
  • 最近打卡:2025-05-09 07:25:29
已绑定手机

29

主题

70

回帖

748

积分

高级会员

单片机新手小秦

积分
748
发表于 2024-9-26 12:36:47 | 显示全部楼层
cadp*** 发表于 2024-5-10 11:25
非常感谢坛友,这么快就编好了,软件做得很好,绿色方便实用。
正在业余时间做一个小铣床,三轴单片机数 ...

用单片机代替MACH3,做成功了吗,做好了跟你学习一下
我有个台钻,想脱离电脑控制,用单片机操作
电脑开机关机太慢了。动作单一,我感觉用单片机完全可以操作
联系邮箱497400050@qq.com
497400050#qq.com
我是我的邮箱,感谢发送
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 09:06 , Processed in 0.262472 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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