使用STC8A8K64S4A12为主控,可以自由烧录不同字体的16*16大小的字库。
使用简单的串口控制控制协议,实现时间专用字符显示,短字符串,长字符串显示;
详细说明、原理图及代码已分享在附件中,有需要的可以下载查看。
显示器具有如下基本功能:
1.时间显示时,时间分号点自动闪烁,时间的每一个字符位均可独立向上滚动翻页显示;
2.短字符[8个字符]显示,默认向上滚动后停滞显示。
3.长字符[128个字符]显示,可以配置向上、下、左、右滚动显示;滚动速度可调节0~250共250级。
4.自定义显示,此时可作为如同常见的OLED屏来发送显示数据。
5.定义了几个简单的内置动画,可通过命令指定显示。
6.显示亮度可自由调节,可设置为0~10级,可设置为自动调节显示亮度,此时将通过环境亮度自动调节显示亮度。
7.代码及说明文档:
2020-07-26 点阵屏.zip
(728.66 KB, 下载次数: 145)
限于文件大小,以下是一些简单展示,实际效果并非如此,绝对的丝滑:
图1-部分效果1
图2-部分效果2
图3-代码列表
图4-调试
图5-应用,网络天气时钟
单片机源程序如下:- #include "main.h"
- #include "image.h"
- /*!---------------------------------------------
- *@file: main.c
- *@author: mu yu qiu feng [Yuan Huafei]
- *@date: 2021-04-10
- *@descr: MCU:STC8A8K64S4A12
- ROM:64KB SRAM:8KB IRAM:256B SYSCLK:24.8832
- -----------------------------------------------*/
- void main(void)
- {
- stf_init(); // 初始化标志定时器
- display_init(); // 初始化显示
- spp_init(); // 初始化串口协议
- while(1)
- {
- spp_unpack(); //解包
-
- if(Comreg & DISP_EN) //打开显示[默认打开]
- {
- if((Comreg & CUSTOM_EN)==0) //未开启自定义显示
- {
- switch( Disp_num )
- {
- case 1:
- if(display_time_string())
- {
- Uart1_Send_Byte(0x04|0x80);
- }
- break;
-
- case 2:
- if(display_short_string())
- {
- Uart1_Send_Byte(0x05|0x80);
- }
- break;
-
- case 3:
- if(display_long_string(Comreg & SCROLL_DIR,Long_len))
- {
- Uart1_Send_Byte(0x06|0x80);
- }
- break;
-
- case 4: //播放内置动画1 跳跳球
- display_animation(img2,17);
-
- break;
-
- case 5: //播放内置动画2 滑稽脸
- display_animation(img3,2);
-
- break;
- case 6: //播放内置动画3 小娃跳大神
- display_animation(img4,4);
-
- break;
-
- default: break;
- }
- }
- if(Comreg & 0x20) //开启自动亮度 [默认关闭]
- {
- display_auto_lum( );
- }
- }
- }
- }
复制代码 |