4.2寸墨水屏模块-含程序说明 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 4.2寸墨水屏模块-含程序说明

简介:4.2寸墨水屏驱动模块--三色,包含程序使用说明

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2021-02-04 12:43:00
更新时间: 2023-05-15 20:41:16
描述
## 墨水屏驱动模块,现用于大连佳显4.2寸墨水屏,写有墨水屏程序的注解以及使用的说明,请看下文 #### 了解更多墨水屏相关,可以登录[大连佳显官网](https://www.good-display.cn/) ### 模块介绍: * 模块体积:30mm*36mm * 供电电压:5 V * 适用于SPI通信的墨水屏,通过此模块连接控制芯片和裸屏,主控板使用的是[VET6基础板](https://oshwhub.com/mimiww/vet6-ji-lie) ### 模块整体较为简单,但仍有几个需要注意的地方,需要仔细查看: 1. **在电源上** * 本次使用的 4.2 寸屏需要使用 5V 供电。 * 对于2.9寸以上的电子墨水屏,比如3.5寸、4.3寸、6寸、8寸电子纸,如果使用3.7V锂电池供电,需要升压IC,将3V升到5V。而对于2.04寸或2.9寸及更小尺寸的电子纸就不需要升压IC了,直接用3V驱动就可以了。 2. **主控板的选型** * 由于存储图像点阵数据需要较大的空间,这里一张图片会占据15KB左右的空间,所以应该注意单片机的 ROM/RAM 的大小,在这里使用的是[VET6基础板](https://oshwhub.com/mimiww/vet6-ji-lie),可供参考。 3. **元件的选择** * 电容耐压值需要大于等于15V,MOS管的选型,官方推荐的型号是Si1304BDL或Si1308EDL,当然也可以根据参数选择相似的MOS,电感的电流值不要太小,要保证500mA以上,太小可能会导致发热情况。 * fpc座儿,是一个很重要的元件,这里使用的是抽拉式 上接[fpc连接器](https://item.szlcsc.com/11639.html),**一定注意fpc座儿的引脚顺序**,原理图一定不要首末引脚倒置,注意比对。 4. **焊接** * 由于fpc排座为0.5mm间距,焊接难度稍大,建议先焊接上排座儿后在焊接其他元件。 5. **刷新方式** * 只有单色墨水屏支持局部刷新,彩色墨水屏只支持全刷。 * 全刷:电子纸刷新需要画面闪烁多次后,最终显示所需要的画面,其中闪烁的目的是清除显示残影,以达到最佳的显示效果。 * 局刷:电子纸刷新无画面闪烁,局刷需要用户在使用的时候,刷新几次后,进行一次全刷操作,以清除显示残影。 6. **通信方式** * 使用模拟 SPI 通信方式,SPI 工作频率不要超过 2MHz * IO 口配置 输入:BUSY  输出:CS、RES、D/C、SCLK、SDIN。 ### 程序移植步骤 1. 下载测试程序,可以直接从附件下载或者登录官网下载。 2. 修改引脚即可开始跑例程 3. 原版程序是用keil 4 编写的,如果使用的是keil 4 ,可以直接打开,如果使用的是keil 5,就需要改变一下属性,否则可能出现无法下载的情况 4. 实际过程 * 修改 keil 4 工程文件的后缀,改成 keil 5 工程文件 * 具体是将工程文件后缀添加字母 x ,属性会自动改变。 原先是 ![](https://img.imgdb.cn/item/603a5bd85f4313ce25452602.png) 后来是 ![](https://img.imgdb.cn/item/603a5bd85f4313ce25452600.png) 5. 根据自己的引脚定义,更改程序,如果只是测试,那么更改引脚顺序接口,官方的例程中自带了显示效果 * 我们先打开 EPD 文件下的 `Display_EPD_W21_spi.c` 文件,需要修改 `void EPD_GPIO_Init(void)` 函数中的引脚初始化函数,下图是更改后的内容 ![](https://img.imgdb.cn/item/603a5bd85f4313ce25452604.png) \* 打开 `Display_EPD_W21_spi.h` 文件,修改引脚宏定义即可 ![](https://img.imgdb.cn/item/603a5bd85f4313ce25452608.png) ### 实际效果如下 - - - ![](https://img.imgdb.cn/item/603a5d315f4313ce2545d3d3.jpg) ![](https://img.imgdb.cn/item/603a5d975f4313ce254602ba.jpg) ![](https://img.imgdb.cn/item/603e2377360785be5446013d.jpg) ![](https://img.imgdb.cn/item/6044423bcef1ec5e6f9c8b05.jpg) ## 墨水屏程序使用说明 接下来会简要说明三色墨水屏的显示步骤,对需要用到的函数做相应的详细解释,针对不同的显示内容,会给出相应的函数调用模板,直接调用即可, 看了这篇文章,就可以像控制常见的OLED那样,方便地控制墨水屏了 * 墨水屏的显示内容同样是由一个一个的像素点构成的,本次使用的是4.2寸的墨水屏,它的像素尺寸为400x300,即X轴坐范围为0~400,Y轴坐标范围是0 ~ 300 * 三色墨水屏不能局部刷新,适合显示内容不需要频繁改变的情况,局部刷新可以使用使用黑白的两色墨水屏 * 墨水屏可显示的内容有:整幅图片,指定的字符和文字,指定的 点 线 圆 矩形等图形 * 三色墨水屏如何显示三种颜色?其实是两张图片的叠加,首先将黑白图片置于底层,之后叠加一张红白的图片在上层 * 移植墨水屏程序,只需要修改IO的定义即可,其中BUSY需要设置为输入模式,其他引脚需要设置为输出模式 * 整幅图片的显示和指定的字符图形等内容的显示方法不同 ##### 一些基本函数的说明: - - - | 函数名称 | 参数 | 函数作用 | 注释 | | :--- | :--- | ---- | --- | | EPD\_GPIO\_Init\(\); | 空 | GPIO 初始化 | | | EPD_init(); | 空 | 墨水屏初始化 | | | EPD_sleep(); | 空 | 进入睡眠模式 | 必要的函数,不可删除 | | delay_s(a); | 秒数 | 延时函数 | 延时 a 秒 | | PIC\_display\_Clear\(\); | 空 | 清屏函数 | 清除屏幕内容 | | EPD\_init\_GUI\(\); | 空 | GUI初始化 | 加载图形用户界面 | | Paint_SelectImage(); | 数组指针 | 设置虚拟画布数据存储位置 | | | Paint_Clear(); | 颜色(WHITE BLACK RED) | 清除图片颜色 | 不单独使用 | | EPD_Display(); | 数组指针 | 显示函数 | 将指定的内容进行显示 | | Paint_DrawNum(); | X,Y,数字,大小,背景块颜色,数字颜色 | 指定数字内容 | 不单独使用 | | Paint_DrawPoint(); | X,Y,颜色,粗细,填充样式 | 在指定坐标绘制点 | 不单独使用 | | Paint_DrawLine(); | X0,Y0,X1,Y1,颜色,实/虚线,粗细 | 绘制任意斜率的直线 | 不单独使用 | | Paint_DrawRectangle(); | X0,Y0,X1,Y1,颜色,是否填充,粗细 | 绘制矩形 | 不单独使用 | | Paint_DrawCircle(); | 圆心X,圆心Y,半径R,颜色,是否填充,粗细 | 指定位置绘制指定大小的圆 | 不单独使用 | | Paint\_DrawString\_EN\(\); | X,Y,字符串,大小,背景块颜色,字体颜色 | 显示字符串 | 不单独使用 | | Paint\_DrawString\_CN\(\); | X,Y,汉字或字符串,大小,背景块颜色,文字颜色 | 指定位置显示指定的汉字 | 不单独使用 | #### 程序的具体实现: 1. 程序的初始化 * 程序初始化包括墨水屏的初始化,引脚的初始化,中断的初始化,GUI的初始化 2. 必要的过程函数 * 设置函数:包括设置画布空间,设置屏幕尺寸和显示方向等 * 清除函数:应用在显示字符等内容上,过渡过程需要的函数 * 休眠函数:电子屏刷新后,必须进入睡眠模式,再重新初始化 3. 整幅图像和指定字符的显示过程是不一样的,下面会分别解释 #### 整幅图片的显示 * 显示整幅图像的步骤为先取模再调用如下四个函数,直接调用即可,任一函数都不可省略 ``` C EPD_init();     //初始化 PIC_display(gImage_BW,gImage_R); //显示函数 EPD_sleep(); //睡眠模式,不可删除 delay_s(2); //延时2s ``` * 具体说明: 1. 调用上面四行语句,就可以在屏幕上显示存储的图像,黑白图像在底层,红白图像在顶层,叠加实现三色效果,图像的点阵数据存储在`Ap_29demo.h`文件中,使用两个数组分别存储,`gImage_BW[15000]`存储黑白图像数据,`gImage_R[15000]`存储红白图像数据,两个数组名称不要修改,我们只需要修改点阵数据即可。 2. 图像的取模可以通过 `image2lcd`软件实现,软件已经放在了附件中。 3. 注意图像需要的格式为:尺寸:400 * 300 文件格式为 .bmp 文件,尽量是两种颜色且区别较大的图像 4. 软件需要先注册来消除水印,注册码可以使用 0000-0000-0000-0000-6A3B ,软件按下图设置参数即可,之后点击打开导入图像,想要正常显示,颜色反转前打勾,调整一下亮度和对比度以达到最佳的显示效果,之后保存为`.c`文件,复制其中的十六进制文件替换到两个数组的文件即可 5. 在`while(1)`中调用上面四句函数,如果不需要循环显示的话,在四句话后加上一句 `while(1);`即可 ![](https://img.imgdb.cn/item/604a60875aedab222c635841.png) #### 指定字符、图形等内容的显示 * 步骤:初始化 → 设置黑白空间 → 指定黑白内容 → 清除颜色 → 设置红白空间 → 指定红白内容 → 清除颜色 → 显示 → 睡眠 * 下面会给出一个模板: ``` C Paint_NewImage(BW_Image,EPD_WIDTH,EPD_HEIGHT,0,WHITE); //设置黑白屏幕尺寸和方向 Paint_NewImage(R_Image,EPD_WIDTH,EPD_HEIGHT,0,WHITE); //设置红白屏幕尺寸和方向 EPD_init_GUI(); //初始化GUI Paint_SelectImage(BW_Image); //设置黑白画布空间 Paint_Clear(WHITE); //清除图片颜色 /* 指定黑白内容开始 */ /* 指定黑白内容结束 */ Paint_SelectImage(R_Image); //设置红白画布空间 Paint_Clear(WHITE); //清除图片颜色 /* 指红白内容开始 */ /* 指定红白内容结束 */ EPD_Display(BW_Image,R_Image); //显示图像 EPD_sleep(); //进入必要的休眠模式,不可删除 delay_s(2); //延时2s ``` * **具体说明** * 显示指定内容,复制上面的语句,然后在两行注释位置间写入指定内容即可,下面会对不同的内容做相应的介绍 * 上述程序执行流程为:先设置屏幕的参数,再初始化GUI,也就是图形用户界面,之后设置好底层的黑白显示空间,就可以写入黑白内容了,指定内容后,再设置红白空间,写入红白内容,到这里,就已经指定显示的所有内容了,但是只是到这儿是不能显示的,需要调用显示函数,将上述内容显示出来,最后进入休眠模式。 * 显示数字、英文字符、绘制 点、线、 圆形、矩形 直接调用函数即可,显示中文需要先取一下字模,取字模软件同样放置在附件中,取字模过程会在下面介绍 * 上述的程序尽量不要随意修改,例如:如果不设置数据空间,删去Paint\_SelectImage\(BW\_Image\);则底层为全黑色,不设置Paint\_SelectImage\(R\_Image\);则顶层为全红色 * 下面会介绍数字、字符、点、线条、矩形、圆、汉字的显示方法,只需要将它们放在上述程序的注释处的内容即可 - - - 1. 显示数字和字符串,因为两者的使用相似,所以放在一起 * 显示数字函数举例:`Paint_DrawNum(0, 0, 123456789, &Font24, WHITE, BLACK);` * 显示字符串函数举例:`Paint_DrawString_EN\(0, 70, "Hallo World", &Font24, BLACK, WHITE);` * 其中参数从左开始为:起始的X坐标、Y坐标、显示的数字/字符串、数字/字符串尺寸,背景尺寸,数字/字符串尺寸 * X的坐标范围: 0 ~ 400 Y的坐标范围 : 0 ~ 300 * 两个函数使用较为简单,前三项好理解,说下后面三项参数: 1. &Font24:字符的尺寸,共5种,分别为&Font8、&Font12、&Font16、&Font20、&Font24,直接使用即可 2. 背景颜色:墨水屏字符的显示区域为一个矩形,背景块和字符的显示颜色相反即可显示指定内容,此参数即背景块颜色 3. 字符颜色:即文字的颜色,背景和文字颜色不同可实现反转的效果 4. ![](https://img.imgdb.cn/item/604b674d5aedab222cd818ab.jpg) ![](https://img.imgdb.cn/item/604b674d5aedab222cd818a4.jpg) - - - 2. 指定位置显示 点 * 调用函数:`Paint_DrawPoint(X, Y, BLACK, DOT_PIXEL_8X8, DOT_STYLE_DFT);` * 参数:为X坐标 Y坐标 点 的颜色 点的大小 是否填充 * 其中点的大小范围是 1X1 ~ 8X8 ,默认点是填充的 - - - 3. 绘制任意斜率的线段 * 调用函数:`Paint_DrawLine(X0, Y0, X1, Y1, BLACK, LINE_STYLE_SOLID, DOT_PIXEL_8X8);` * 参数:从左到右--起始位置的X坐标,Y坐标,重点位置的X坐标、Y坐标、线条颜色、实线or虚线、线条粗细 * 经过前四个函数,即起点(X,Y) 和 终点(X,Y),这样,就达到了任意的斜率 * 之后是线条的类型:实线还是虚线,默认实线 * 最后是线条的粗细,同样是 1X1 ~ 8X8 * ![](https://img.imgdb.cn/item/604b6a635aedab222cd9fb21.jpg) - - - 4. 指定位置显示指定尺寸的矩形 * 调用函数:`Paint_DrawRectangle(X0, Y0, X1, Y1, BLACK, DRAW_FILL_EMPTY, DOT_PIXEL_1X1);` * 参数:左上角坐标X、Y,右下角坐标X、Y,矩形的颜色、是否填充,边的粗细 * 下图显示了填充和不填充的区别 60437aea360785be54b99872.jpg =200x100 - - - 5. 显示任意的圆 * 调用函数:`Paint_DrawCircle(X, Y, R, BLACK, DRAW_FILL_EMPTY, DOT_PIXEL_1X1);` * 参数:圆心的坐标--(X,Y)、半径R、颜色,是否填充、圆的粗细 * 下图显示了填充和不填充的区别 60437aea360785be54b99879.jpg =200x100 - - - 6. 显示汉字 * 调用函数:`Paint_DrawString_CN(X,Y, "菊花台", &Font24CN, WHITE,BLACK);` * 参数:起始点坐标(X,Y),显示的中文,中文字体大小,背景颜色,文字颜色 * 其中,字体大小仅支持 `Font12CN` 以及 `Font24CN` * 使用中文,需要手动取字模,取模软件可以用`PCtoLCD2002`,我会放置在附件中,软件参数设置请看下图,需要:阴码 逐行式 顺向 输出十六进制 C51格式 ![](https://img.imgdb.cn/item/604b5e245aedab222cd2ad6f.png) * `Font12CN`对应的字符宽和高位 16 x 21 ,设置如下,还可以更改字体 ![](https://img.imgdb.cn/item/604b5e245aedab222cd2ad74.png) * `Font24CN`对应的字符宽和高位 32 x 41,设置如下 ![](https://img.imgdb.cn/item/604b5e245aedab222cd2ad79.png) * 接下来输入文字,点击 `生成字模` ,就会自动生成十六进制数据: * ![](https://img.imgdb.cn/item/604b5f225aedab222cd34cee.png) * 需要`Font12CN`型号文字,则打开 `FONTS`文件下的 `font12CN.c` 文件,复制刚才取模软件生成的数据到数组中,需要注意,生成的数据格式上需要和给出的例子的格式相同,即 ``` C {"你", 0x00,0x00,0x00,0x10,0x00,0x10,0x02,0x20,0x06,0x20,0x06,0x7E,0x0C,0x73,0x0C,0xC7, 0x19,0x9C,0x1B,0x10,0x38,0x10,0x68,0x92,0x09,0x93,0x09,0x93,0x0B,0x11,0x08,0x70, 0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },/*"你"*/ ``` * `Font24CN` 型号是一样的步骤,只要数组中有了字模,就可以在函数中随意使用了 ![](https://img.imgdb.cn/item/604b68775aedab222cd8bdc6.jpg)
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
ID Name Designator Footprint Quantity
1 PWR LED1 0603_D_JX 1
2 4.7K/1% R2 0603_R_JX 1
3 68uH L1 IND-SMD_L6.0-W6.0_FNR60XXS 1
4 105 C14,C13,C12,C11,C10,C9,C8,C7,C6,C5 C0603 10
5 4.7uf C2 C0603 1
6 4.7uF C1 C1206_M 1
7 HDR-M-2.54_1x8 J1 HDR-M-2.54_1X8 1
8 2N7002 Q1 SOT-23_L2.9-W1.3-P0.95-LS2.4-BR 1
9 MBR0530 D4,D3,D1 SOD-123_L2.8-W1.8-LS3.7-RD 3
10 2.2R R12 R0603 1
11 10k R9 R0603 1
12 FPC 0.5MM 24P Pull type H2.0mm Pick up P1 FPC-SMD_24P-L17.5-W5.4-P0.50 1

展开

工程视频/附件
序号 文件名称 下载次数
1

202102280821.mp4

3211
2

显示效果.mp4

1548
3

测试程序.rar

307
4

Image2Lcd.rar

72
5

字模.rar

73
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP