风声雨生 发表于 2025-3-20 22:01:35

焊接技术不错

蓝天白云51 发表于 2025-3-23 21:44:00

楼主提供的ST7735驱动的128×160彩色显示屏,这个屏驱动没有数字显示函数.
小白不知如何添加.

浦江一水 发表于 2025-3-24 09:13:53

蓝天白云51 发表于 2025-3-23 21:44
楼主提供的ST7735驱动的128×160彩色显示屏,这个屏驱动没有数字显示函数.
小白不知如何添加. ...
感谢你的浏览回复和提出问题。

ST7735彩屏显示数字是不需要再添加数字显示函数的。
任何需要显示的内容,进入显示屏,其实最终都是在控制点阵像素的显示。
把你要显示的数字,转换成字符串,调用字符串显示函数, 定位显示即可。

比如:
//有一个数字常量,
PI=3.1415926;
//定义一个字符串变量,
char S;

如果希望用16点阵的字体,在坐标x=10,y=10的位置上,显示 “3.14”,

那么,代码这样写:

sprintf (S,"%4.2f",PI);         //将数字转换为字符串, 2位小数,总长度4个字符
LCD_H16(10,10,S,15,0);   //调用LCD_H16()函数, 黑底白字显示"3.14"

很简单的.

如果你想显示数字时, 加上一些西文的变量说明(并且改变小数保留位数)...
比如, 显示: "PI=3.14159"
那么, 代码这样写:

sprintf (S,"PI=%7.5f",PI);         //将数字转换为字符串, 保留5位小数,总长度7个字符
LCD_H16(10,10,S,15,0);   //调用LCD_H16()函数, 黑底白字显示"PI=3.14159"

也是很简单的.

如果你想显示数字时, 加上一些中文的说明(并且已经准备好了汉字小字库)...
比如, 显示: "圆周率 PI=3.14159"
那么, 代码这样写:

sprintf (S,"圆周率 PI=%7.5f",PI);   //将数字转换为字符串, 保留5位小数,总长度7个字符
LCD_H16(10,10,S,15,0);                //调用LCD_H16()函数, 黑底白字显示"圆周率 PI=3.14159"

这依然是很简单的...

因为LCD_H16()函数是具有中西文混合显示功能的。
LCD_A16()函数是西文字符串函数, 也可以用它来显示数字。
总之,是不需要再添加数字显示函数的。
注意和充分利用标准函数sprintf()函数的用法。



不知能否理解?
欢迎提问,会再作解释。



蓝天白云51 发表于 2025-3-24 18:17:19

浦江一水 发表于 2025-3-24 09:13
感谢你的浏览回复和提出问题。

ST7735彩屏显示数字是不需要再添加数字显示函数的。


明白了,知道怎么做了.谢谢楼主详细讲解.

蓝天白云51 发表于 2025-3-24 22:42:05

今天将楼主的7735lcd演示程序不做任何修改直接下载进stc32g128开发板,硬件接线也一样.
结果运行完全正常.看来ai8051u与32g128完全兼容.

浦江一水 发表于 2025-3-25 09:10:23

蓝天白云51 发表于 2025-3-24 22:42
今天将楼主的7735lcd演示程序不做任何修改直接下载进stc32g128开发板,硬件接线也一样.
结果运行完全正常.看 ...

很棒!{:qiang:}

Ai8051U与32G12K128还是有许多不同的.
本实验所用的都是最基本通用的功能指令, 因此是兼容的.

从照片看, 稍有不同的是色彩号的定义了.
现在市面上7735屏,由于不同厂家的二次开发, 内核稍有不同,有少许差异.
可在尝试在LCD_Init()中的:
LCD_WR_CMD(0x36); LCD_WR_DAT(0x60);
改变为:
LCD_WR_CMD(0x36); LCD_WR_DAT(0x68);
这是改变色彩格式RGB还是BGR的选择项. 可以试一下...
另外还可注意一下这一语句:
//LCD_WR_CMD(0x21); //Display Inversion 根据需要:反色
取消前面的注释, 启用反色功能. 可以试一下...

最终的目的是要达到指定的颜色不失真.
这样就便于将来实战项目时, 正确地控制色彩显示.

蓝天白云51 发表于 2025-3-25 11:30:55

浦江一水 发表于 2025-3-25 09:10
很棒!

Ai8051U与32G12K128还是有许多不同的.


原来如此! 那个24点阵大字,原显示不是亮红,将色号由12改为11,就显示亮红了.
感觉色号不对.
谢谢楼主,受益了.

浦江一水 发表于 2025-3-25 12:53:54

蓝天白云51 发表于 2025-3-25 11:30
原来如此! 那个24点阵大字,原显示不是亮红,将色号由12改为11,就显示亮红了.
感觉色号不对.
谢谢楼主,受 ...

如果是 "将色号由12改为11,就显示亮红了",
那么,根据色号定义看:
0x07FF,   //11亮青 0000 0111 1111 1111
0xF800,   //12亮红 1111 1000 0000 0000
说明是反色了, 其它颜色也都是不符合原先定义的.
比较简单的办法是: 只要将LCD_Init()函数中的反色控制语句用上即可.
就是将:
//LCD_WR_CMD(0x21); //Display Inversion 根据需要:反色
改成:(取消前面的注视符"//")
LCD_WR_CMD(0x21); //Display Inversion 根据需要:反色
就可以了. 可试试看...

补充说明:
本实验程序中的颜色号从0号到15号的16色,是根据UCDOS汉字系统的定义而定义的.
0x0000,   //0黑色00000 000000 00000
0x1048,   //1蓝色00010 000010 01000
0x1442,   //2绿色00010 100010 00010
0x1452,   //3青色00010 100010 10010
0x9042,   //4红色10010 000010 00010
0x9052,   //5紫色10010 000010 10010
0xA484,   //6橙色10100 100100 00100
0x8410,   //7灰色10000 100000 10000
0xC618,   //8亮灰11000 110000 11000
0x001F,   //9亮蓝00000 000000 11111
0x07E0,   //10亮绿 0000 0111 1110 0000
0x07FF,   //11亮青 0000 0111 1111 1111
0xF800,   //12亮红 1111 1000 0000 0000
0xF81F,   //13亮紫 1111 1000 0001 1111
0xFFE0,   //14黄色 1111 1111 1110 0000
0xFFFF,   //15白色 1111 1111 1111 1111

原main.c 程序代码中的
LCD_H24(20,4,"**单片机**",12,1);   //24点阵中西文混合显示字符串
控制色彩是: 亮红色字, 暗蓝色背景
根据照片所示看: 推测是改成了:
LCD_H24(20,4,"**单片机**",11,0);   //24点阵中西文混合显示字符串
这样显示效果就是: 亮红色字, 白色背景.

蓝天白云51 发表于 2025-3-26 11:04:56

浦江一水 发表于 2025-3-25 12:53
如果是 "将色号由12改为11,就显示亮红了",
那么,根据色号定义看:
0x07FF,   //11亮青 0000 0111 1111 1 ...

设定反色后,色号对应的颜色都正确了.
while(1)
{ for(i=0;i<16;i++)LCD_CLS(i);      //16色清屏测试
    LCD_CLS(1);                           //蓝色清屏
                Delayms(2000);
          LCD_H24(20,4,"**单片机**",12,1);      //24点阵中西文混合显示字符串
          LCD_A24(38,30,"Ai8051U",15,1,7);      //显示12*24字符串
          LCD_H16(28,60,"Ai8051U单片机",6,1);//16点阵中西文混合显示字符串
          LCD_A08(47,80,"A08_Ai8051U",15,1,11); //显示6*8字符串
          LCD_A12(36,99,"A12_Ai8051U",10,1,11); //显示8*12字符串
    Delayms(2000);


设定反色,其他不变.

LCD_WR_CMD(0x21); //Display Inversion 根据需要:反色




浦江一水 发表于 2025-3-26 11:16:54

蓝天白云51 发表于 2025-3-26 11:04
设定反色后,色号对应的颜色都正确了.
while(1)
{ for(i=0;i

OK! 非常好, 完全准确。{:qiang:}{:qiang:}{:qiang:}
页: 1 2 [3] 4
查看完整版本: 初学51单片机的爱好者之入门佳配+擎天柱 (多项实验源码)