stm32 SSD1325驱动及UI迭代库
来源:互联网 发布:在线编辑源码插件 编辑:程序博客网 时间:2024/05/23 13:40
stm32 SSD1325驱动及UI迭代库 Source code on GitHub
包含多种组件,高效开发UI。图 Images
配置 Configuration
引入c和头文件
引脚定义位于ssd1325.h头部
#define RCC_APB2Periph_OLED_PORT RCC_APB2Periph_GPIOA#define OLED_PORT GPIOA#define OLED_RST_PIN GPIO_Pin_12#define OLED_RST_L GPIO_ResetBits(GPIOA, GPIO_Pin_12);#define OLED_RST_H GPIO_SetBits (GPIOA, GPIO_Pin_12);#define OLED_MISO_PIN GPIO_Pin_6#define OLED_MISO_PIN_L GPIO_ResetBits(GPIOA, GPIO_Pin_6);#define OLED_MISO_PIN_H GPIO_SetBits (GPIOA, GPIO_Pin_6);#define OLED_NSS_PIN GPIO_Pin_4#define OLED_NSS_L GPIO_ResetBits(GPIOA, GPIO_Pin_4);#define OLED_NSS_H GPIO_SetBits (GPIOA, GPIO_Pin_4);#define OLED_DC_PIN GPIO_Pin_8#define OLED_DC_L GPIO_ResetBits(GPIOA, GPIO_Pin_8);#define OLED_DC_H GPIO_SetBits (GPIOA, GPIO_Pin_8);#define OLED_SCLK_PIN GPIO_Pin_5#define OLED_MOSI_PIN GPIO_Pin_7
初始化
OLED_NSS_L;OLED_Init();
Draw_Component
在屏幕上绘制组件
void Draw_Component ( u8 type, u8 index, u8 x0, u8 y0, u8 x1, u8 y1, u8 z, u8 c0, u8 c1, u8 chr[] );
此方法需要传入10个参数,如未设置,该项参数应填0
type => 支持的组件
COMPONENT_NULL 空组件,用以重置COMPONENT_LABEL_ENABLED Label,在屏幕上绘制一个标签 此时 index => 组件编号 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 4 (绘制4*6文字) / 6 (绘制6*10文字) z => 绘制层,应填0 chr[] => Label文字COMPONENT_LABEL_DISABLED 禁用的Label,与COMPONENT_LABEL_ENABLED参数一致,颜色会变灰COMPONENT_LABEL_HIDDEN 无效COMPONENT_BUTTON_ENABLED Button,在屏幕上绘制一个按钮 此时 index => 组件编号,此button可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 右下角x坐标 y1 => 右下角y坐标 z => 绘制层,应填0 chr[] => Button文字,库会默认居中COMPONENT_BUTTON_DISABLED 禁用的Button,此时Button不能被Update_Component方法选中COMPONENT_BUTTON_HIDDEN 无效COMPONENT_RADIO_TRUE Radio,在屏幕上绘制一个已经被选中选框 此时Radio文字为6*10,4*6文字请参见COMPONENT_SRADIO 此时 index => 组件编号,此Radio可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 z => 绘制层,应填0 chr[] => Radio文字COMPONENT_RADIO_FALSE Radio,在屏幕上绘制一个已经未被选中选框COMPONENT_RADIO_DISABLED 禁用的Radio,此时Radio不能被Update_Component方法选中COMPONENT_RADIO_HIDDEN 无效COMPONENT_TEXT_ENABLED Text,在屏幕上绘制文本框 文本框与标签不同,文本框包含方框且应限制文字个数 此时 index => 组件编号,此Text可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 右下角x坐标 y1 => 右下角y坐标 z => 绘制层,应填0 c1 => 4 (绘制4*6文字) / 6 (绘制6*10文字) chr[] => Text文字COMPONENT_TEXT_DISABLED 禁用的Text,此时Text不能被Update_Component方法选中COMPONENT_TEXT_HIDDEN 无效COMPONENT_PBAR_ENABLED PBar,在屏幕上绘制进度条 进度条的文字颜色会被自动处理为反色 此时 index => 组件编号 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 右下角x坐标 y1 => 右下角y坐标 z => 绘制层,应填0 c1 => 进度条左边距,显示百分比时,此值应为0 c2 => 进度条长度,应小于 y1-y0 chr[] => PBar文字COMPONENT_PBAR_DISABLED 禁用的PBarCOMPONENT_WINDOW_ENABLED 无效COMPONENT_WINDOW_HIDDEN 无效COMPONENT_CHART_ENABLED 无效COMPONENT_CHART_HIDDEN 无效COMPONENT_LISTITEM_ENABLED ListItem,在屏幕上绘制顶部菜单列表 进度条的文字颜色会被自动处理为反色 此时 index => 组件编号,此ListItem可被选中,参见Update_Component方法 x0 => 左上角x坐标 z => 绘制层,应填0 chr[] => ListItem文字COMPONENT_LISTITEM_DISABLED 禁用的ListItem,此时ListItem不能被Update_Component方法选中COMPONENT_LISTITEM_HIDDEN 无效COMPONENT_SRADIO_TRUE sRadio,在屏幕上绘制一个已经被选中选框 此时sRadio文字为4*6,6*10文字请参见COMPONENT_RADIO 此时 index => 组件编号,此sRadio可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 z => 绘制层,应填0 chr[] => sRadio文字COMPONENT_SRADIO_FALSE sRadio,在屏幕上绘制一个已经未被选中选框COMPONENT_SRADIO_DISABLED 禁用的sRadio,此时sRadio不能被Update_Component方法选中COMPONENT_SRADIO_HIDDEN 无效COMPONENT_BLANK 无效
Update_Component
更新组件状态
此方法需要传入index,即当前被选中的组件编号,库会自动进行反色
void Update_Component ( u8 select_index );
Recycle_Component
回收组件
此方法需要传入两个index,位于这两个index之间的组件会被系统回收
void Recycle_Component ( u8 indexA, u8 indexB );
Change_Index
改变当前选中组件,传入index改变量
如果下一个组件,应传入1,上一个组件应传入-1
库会自动识别此组件是否可被选中
void Change_Index ( s8 dx );
Draw_Menu
绘制一个Menu
注意,Menu是上层组件,位于z=1层,当Menu可用时,其他组件均无法使用,且main会被暂停,直到选中一个菜单项。
你可能需要修改Menu程序中的上下确定设定
u8 Draw_Menu ( u8 menu[][12], u8 x0, u8 y0, u8 x1, u8 y1, u8 default_select );
参数
menu[][12] => { {0x02}, => 0元素存放菜单项个数 "5HLQD", "8HLQD", };x0 => 左上角x坐标y0 => 左上角y坐标x1 => 右下角x坐标y1 => 右下角y坐标default_select => 默认选中项,以0开始计
Draw_Notification
绘制一个提示框
注意,提示框是上层组件,位于z=1层,当提示框可用时,其他组件均无法使用,且main会被暂停,直到终止。
你可能需要修改提示框程序中的注销设定
void Draw_Notification ( u8 title[], u8 chr[] );
参数
title[] => 提示框标题chr[] => 提示框内容
Draw_Reverse
绘制反色
void Draw_Reverse ( u8 x0, u8 y0, u8 x1, u8 y1, u8 z );
参数
x0 => 左上角x坐标y0 => 左上角y坐标x1 => 右下角x坐标y1 => 右下角y坐标z => 反色层
Clean_Screen
清屏
void Clean_Screen ( u8 x0, u8 y0, u8 x1, u8 y1, u8 z );
参数
x0 => 左上角x坐标y0 => 左上角y坐标x1 => 右下角x坐标y1 => 右下角y坐标z => 应用层
Next_Frame
绘制帧
当上述操作完成后,必须调用Next_Frame方法,库才会输出一帧到屏幕上。
void Next_Frame ( void );
例 Sample
在页面上绘制一些文本和确认按钮
OLED_NSS_L; /* 初始化 */OLED_Init();Clean_Screen(0, 0, 64, 128, 0); /* 清屏 */Draw_Component(COMPONENT_LABEL_ENABLED, 1, 0, 0, 6, 0, 0, 0, 0, "Agreement"); /* 绘制Agreement标题 */Draw_Component(COMPONENT_LABEL_ENABLED, 2, 10, 0, 4, 0, 0, 0, 0, "COPYRIGHT RIJN, 2014. "); /* 绘制两行文本 */Draw_Component(COMPONENT_LABEL_ENABLED, 3, 16, 0, 4, 0, 0, 0, 0, "PIXELNFINITE.COM ");Draw_Component(COMPONENT_BUTTON_ENABLED, 4, 50, 80, 62, 127, 0, 0, 0, "Agree"); /* 绘制确认按钮 */Change_Index(1); /* 将光标下移一位,库会自动选中Button */Update_Component(4); /* 更新组件状态 */Next_Frame(); /* 绘制 */
© Rijn, pixelnfinite.com, 2015.
stm32 SSD1325驱动及UI迭代库 Source code on GitHub
图 Images
配置 Configuration
引入c和头文件
引脚定义位于ssd1325.h头部
#define RCC_APB2Periph_OLED_PORT RCC_APB2Periph_GPIOA#define OLED_PORT GPIOA#define OLED_RST_PIN GPIO_Pin_12#define OLED_RST_L GPIO_ResetBits(GPIOA, GPIO_Pin_12);#define OLED_RST_H GPIO_SetBits (GPIOA, GPIO_Pin_12);#define OLED_MISO_PIN GPIO_Pin_6#define OLED_MISO_PIN_L GPIO_ResetBits(GPIOA, GPIO_Pin_6);#define OLED_MISO_PIN_H GPIO_SetBits (GPIOA, GPIO_Pin_6);#define OLED_NSS_PIN GPIO_Pin_4#define OLED_NSS_L GPIO_ResetBits(GPIOA, GPIO_Pin_4);#define OLED_NSS_H GPIO_SetBits (GPIOA, GPIO_Pin_4);#define OLED_DC_PIN GPIO_Pin_8#define OLED_DC_L GPIO_ResetBits(GPIOA, GPIO_Pin_8);#define OLED_DC_H GPIO_SetBits (GPIOA, GPIO_Pin_8);#define OLED_SCLK_PIN GPIO_Pin_5#define OLED_MOSI_PIN GPIO_Pin_7
初始化
OLED_NSS_L;OLED_Init();
Draw_Component
在屏幕上绘制组件
void Draw_Component ( u8 type, u8 index, u8 x0, u8 y0, u8 x1, u8 y1, u8 z, u8 c0, u8 c1, u8 chr[] );
此方法需要传入10个参数,如未设置,该项参数应填0
type => 支持的组件
COMPONENT_NULL 空组件,用以重置COMPONENT_LABEL_ENABLED Label,在屏幕上绘制一个标签 此时 index => 组件编号 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 4 (绘制4*6文字) / 6 (绘制6*10文字) z => 绘制层,应填0 chr[] => Label文字COMPONENT_LABEL_DISABLED 禁用的Label,与COMPONENT_LABEL_ENABLED参数一致,颜色会变灰COMPONENT_LABEL_HIDDEN 无效COMPONENT_BUTTON_ENABLED Button,在屏幕上绘制一个按钮 此时 index => 组件编号,此button可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 右下角x坐标 y1 => 右下角y坐标 z => 绘制层,应填0 chr[] => Button文字,库会默认居中COMPONENT_BUTTON_DISABLED 禁用的Button,此时Button不能被Update_Component方法选中COMPONENT_BUTTON_HIDDEN 无效COMPONENT_RADIO_TRUE Radio,在屏幕上绘制一个已经被选中选框 此时Radio文字为6*10,4*6文字请参见COMPONENT_SRADIO 此时 index => 组件编号,此Radio可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 z => 绘制层,应填0 chr[] => Radio文字COMPONENT_RADIO_FALSE Radio,在屏幕上绘制一个已经未被选中选框COMPONENT_RADIO_DISABLED 禁用的Radio,此时Radio不能被Update_Component方法选中COMPONENT_RADIO_HIDDEN 无效COMPONENT_TEXT_ENABLED Text,在屏幕上绘制文本框 文本框与标签不同,文本框包含方框且应限制文字个数 此时 index => 组件编号,此Text可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 右下角x坐标 y1 => 右下角y坐标 z => 绘制层,应填0 c1 => 4 (绘制4*6文字) / 6 (绘制6*10文字) chr[] => Text文字COMPONENT_TEXT_DISABLED 禁用的Text,此时Text不能被Update_Component方法选中COMPONENT_TEXT_HIDDEN 无效COMPONENT_PBAR_ENABLED PBar,在屏幕上绘制进度条 进度条的文字颜色会被自动处理为反色 此时 index => 组件编号 x0 => 左上角x坐标 y0 => 左上角y坐标 x1 => 右下角x坐标 y1 => 右下角y坐标 z => 绘制层,应填0 c1 => 进度条左边距,显示百分比时,此值应为0 c2 => 进度条长度,应小于 y1-y0 chr[] => PBar文字COMPONENT_PBAR_DISABLED 禁用的PBarCOMPONENT_WINDOW_ENABLED 无效COMPONENT_WINDOW_HIDDEN 无效COMPONENT_CHART_ENABLED 无效COMPONENT_CHART_HIDDEN 无效COMPONENT_LISTITEM_ENABLED ListItem,在屏幕上绘制顶部菜单列表 进度条的文字颜色会被自动处理为反色 此时 index => 组件编号,此ListItem可被选中,参见Update_Component方法 x0 => 左上角x坐标 z => 绘制层,应填0 chr[] => ListItem文字COMPONENT_LISTITEM_DISABLED 禁用的ListItem,此时ListItem不能被Update_Component方法选中COMPONENT_LISTITEM_HIDDEN 无效COMPONENT_SRADIO_TRUE sRadio,在屏幕上绘制一个已经被选中选框 此时sRadio文字为4*6,6*10文字请参见COMPONENT_RADIO 此时 index => 组件编号,此sRadio可被选中,参见Update_Component方法 x0 => 左上角x坐标 y0 => 左上角y坐标 z => 绘制层,应填0 chr[] => sRadio文字COMPONENT_SRADIO_FALSE sRadio,在屏幕上绘制一个已经未被选中选框COMPONENT_SRADIO_DISABLED 禁用的sRadio,此时sRadio不能被Update_Component方法选中COMPONENT_SRADIO_HIDDEN 无效COMPONENT_BLANK 无效
Update_Component
更新组件状态
此方法需要传入index,即当前被选中的组件编号,库会自动进行反色
void Update_Component ( u8 select_index );
Recycle_Component
回收组件
此方法需要传入两个index,位于这两个index之间的组件会被系统回收
void Recycle_Component ( u8 indexA, u8 indexB );
Change_Index
改变当前选中组件,传入index改变量
如果下一个组件,应传入1,上一个组件应传入-1
库会自动识别此组件是否可被选中
void Change_Index ( s8 dx );
Draw_Menu
绘制一个Menu
注意,Menu是上层组件,位于z=1层,当Menu可用时,其他组件均无法使用,且main会被暂停,直到选中一个菜单项。
你可能需要修改Menu程序中的上下确定设定
u8 Draw_Menu ( u8 menu[][12], u8 x0, u8 y0, u8 x1, u8 y1, u8 default_select );
参数
menu[][12] => { {0x02}, => 0元素存放菜单项个数 "5HLQD", "8HLQD", };x0 => 左上角x坐标y0 => 左上角y坐标x1 => 右下角x坐标y1 => 右下角y坐标default_select => 默认选中项,以0开始计
Draw_Notification
绘制一个提示框
注意,提示框是上层组件,位于z=1层,当提示框可用时,其他组件均无法使用,且main会被暂停,直到终止。
你可能需要修改提示框程序中的注销设定
void Draw_Notification ( u8 title[], u8 chr[] );
参数
title[] => 提示框标题chr[] => 提示框内容
Draw_Reverse
绘制反色
void Draw_Reverse ( u8 x0, u8 y0, u8 x1, u8 y1, u8 z );
参数
x0 => 左上角x坐标y0 => 左上角y坐标x1 => 右下角x坐标y1 => 右下角y坐标z => 反色层
Clean_Screen
清屏
void Clean_Screen ( u8 x0, u8 y0, u8 x1, u8 y1, u8 z );
参数
x0 => 左上角x坐标y0 => 左上角y坐标x1 => 右下角x坐标y1 => 右下角y坐标z => 应用层
Next_Frame
绘制帧
当上述操作完成后,必须调用Next_Frame方法,库才会输出一帧到屏幕上。
void Next_Frame ( void );
例 Sample
在页面上绘制一些文本和确认按钮
OLED_NSS_L; /* 初始化 */OLED_Init();Clean_Screen(0, 0, 64, 128, 0); /* 清屏 */Draw_Component(COMPONENT_LABEL_ENABLED, 1, 0, 0, 6, 0, 0, 0, 0, "Agreement"); /* 绘制Agreement标题 */Draw_Component(COMPONENT_LABEL_ENABLED, 2, 10, 0, 4, 0, 0, 0, 0, "COPYRIGHT RIJN, 2014. "); /* 绘制两行文本 */Draw_Component(COMPONENT_LABEL_ENABLED, 3, 16, 0, 4, 0, 0, 0, 0, "PIXELNFINITE.COM ");Draw_Component(COMPONENT_BUTTON_ENABLED, 4, 50, 80, 62, 127, 0, 0, 0, "Agree"); /* 绘制确认按钮 */Change_Index(1); /* 将光标下移一位,库会自动选中Button */Update_Component(4); /* 更新组件状态 */Next_Frame(); /* 绘制 */
© Rijn, pixelnfinite.com, 2015.
0 0
- stm32 SSD1325驱动及UI迭代库
- STM32+uCGUI优化 及R61505w驱动
- stm32内部温度芯片的驱动及应用实现
- Qt键盘驱动映射及简单ui界面
- STM32 PWM底层驱动
- STM32驱动FM24CL16
- STM32驱动Nokia5110
- STM32驱动DS18B20
- STM32标准IIC驱动
- STM32驱动W25X64存储器
- STM32驱动MPU6050
- stm32驱动DS1302芯片
- STM32驱动DP83848注意事项
- stm32 驱动 TFT LCD
- stm32之继电器驱动
- STM32 驱动液晶LCD12864
- STM32外设驱动---LED
- STM32驱动步进电机
- 常用牛人主页链接(计算机视觉、模式识别、机器学习相关方向,陆续更新)
- matlab 的legend的任意标注
- hdu 1527
- 1602液晶显示实验报告
- Lambda表达式详解
- stm32 SSD1325驱动及UI迭代库
- 时间管理的七句话
- QT中QWidget、QDialog及QMainWindow的区别
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 一个不严谨的zigbee数据丢失测试
- 【树形DP】HDU1561-The more, The Better
- 满屏的王宝强,真相其实在这...
- [0-1]只能输入小数后两位正则
- ToolBar 学习笔记