STC32G12K128开发板驱动1.8寸ST7735屏实战:基于天问Block图形化编程实现RTC数字时钟
STC32G12K128开发板驱动1.8寸ST7735屏实战:基于天问Block图形化编程实现RTC数字时钟
最近有不少朋友在玩立创的这块STC32G开发板,它自带一块1.8寸的彩色屏幕,性价比很高。但很多新手朋友拿到手后,面对屏幕驱动和编程有点无从下手。今天,我就带大家用图形化编程工具——天问Block,在这块板子上实现一个实时数字时钟。整个过程不需要写一行复杂的C语言代码,非常适合初学者入门,也能让有经验的开发者快速验证想法。
咱们这个项目会用到STC32G单片机内部的RTC(实时时钟)模块,让单片机自己记住时间,然后在屏幕上动态显示出来。我会手把手带你完成硬件连接确认、软件环境搭建、图形化逻辑搭建,直到最终烧录运行。跟着做一遍,你就能掌握用图形化工具开发单片机应用的基本流程了。
1. 认识你的开发板与硬件连接
在开始编程之前,咱们先得搞清楚手头的“家伙事儿”。你拿到手的是一块立创 STC32G12K128 开发板,它核心是一颗国产的8位增强型51单片机——STC32G12K128。这块板子最吸引人的地方,就是直接集成了一块1.8英寸的ST7735驱动芯片的彩色LCD屏幕。这意味着你不用再费心去焊接屏幕排线,省了不少事。
1.1 开发板核心资源一览
这块板子的核心是STC32G12K128单片机,它虽然内核是8位的,但性能比传统51强很多,主频最高能到35MHz,还内置了128K的大容量Flash和12K的RAM。对我们这个时钟项目来说,最关键的是它内部集成了一个独立的RTC实时时钟模块。这个RTC有专门的时钟源,即使单片机主芯片进入低功耗休眠状态,它也能继续走时,非常适合做时钟类产品。
板载的1.8寸屏幕分辨率是128x160,色彩是RGB 565格式(即65K色),通过SPI接口与单片机通信。SPI是一种高速同步串行通信方式,接线简单,速度也够快,非常适合驱动这种小屏。
1.2 屏幕引脚连接确认(重中之重)
虽然板子已经帮你把屏幕和单片机连好了,但咱们编程时必须知道它们是怎么连的,否则驱动代码就对不上号。根据板子设计,屏幕的SPI引脚已经固定连接到了单片机的特定IO口上。这是驱动屏幕的基础,一定要记牢:
| 屏幕引脚 (ST7735) | 连接至 STC32G 引脚 | 引脚功能说明 |
|---|---|---|
| SCL (时钟线) | P2.1 | SPI时钟信号,由单片机主控输出 |
| SDA (数据线) | P2.0 | SPI数据信号,用于发送命令和数据 |
| RES (复位) | P2.2 | 屏幕硬件复位,低电平有效 |
| DC (数据/命令) | P2.3 | 选择当前发送的是命令(低)还是数据(高) |
| CS (片选) | P4.4 | 屏幕使能引脚,低电平选中该屏幕 |
| BLK (背光) | P4.5 | 控制屏幕背光,高电平点亮 |
注意:这个连接关系是硬件设计时定死的,我们在天问Block里配置屏幕驱动时,必须按照这个对应关系来设置,屏幕才能正常工作。
2. 搭建开发环境:安装天问Block与芯片支持包
工欲善其事,必先利其器。接下来,咱们来准备编程软件。我们选择天问Block,这是一款非常好用的国产图形化编程工具,特别适合STC单片机,对新手极其友好。
2.1 软件下载与安装
- 访问天问Block的官方网站,下载最新版本的安装程序。
- 运行安装程序,按照提示完成安装。过程很简单,和安装普通软件没什么区别。
- 安装完成后,打开天问Block软件。
2.2 安装STC32G芯片支持包
第一次打开天问Block,它可能还没有我们这块板子所用芯片的模型。我们需要手动添加支持:
- 在软件界面中,找到“主板”或“设备”选择区域。
- 在搜索框里输入“STC32G”,查找相关的支持包。
- 找到“STC32G12K128”或类似的选项,点击安装。软件会自动下载并安装该芯片的所有图形化模块。
- 安装完成后,在主板选择列表里选中“STC32G12K128”。
这时候,软件左侧的模块区就会出现一系列针对STC32G的图形积木块,比如“引脚操作”、“延时”、“串口”,以及我们马上要用到的“屏幕”和“RTC”模块。
3. 图形化编程:一步步构建数字时钟逻辑
环境准备好了,现在开始最核心的部分——用拖拽积木的方式编写程序。咱们的逻辑很简单:初始化屏幕和RTC,然后在一个死循环里,不断从RTC读取时间,并刷新到屏幕上。
3.1 初始化设置:屏幕与RTC
首先,我们需要在“当开机时”这个积木下面,放置初始化模块。这相当于C语言里的main函数开头部分。
初始化屏幕: 从“显示器”或“屏幕”类别中,找到“ST7735 初始化”积木。拖拽过来后,你需要根据我们1.2节的引脚连接表,逐一设置参数:
RES引脚:选择P2_2DC引脚:选择P2_3CS引脚:选择P4_4SDA引脚:选择P2_0SCL引脚:选择P2_1- 屏幕尺寸:选择
160*128(注意,这里是宽x高) - 旋转方向:可以根据你的喜好选择
0、90、180、270度,我们先选0。
打开屏幕背光: 屏幕初始化后,默认背光可能是关闭的。我们需要从“引脚”类别找到“数字输出”积木,设置
P4_5引脚为“高电平”,这样背光就亮了。初始化RTC: 从“时间”或“RTC”类别找到“RTC初始化”积木。STC32G的RTC需要配置时钟源,我们使用内部低速IRC时钟即可,通常有一个“开始RTC”或“初始化RTC”的积木,直接拖过来就行。你可能会看到一个“设置RTC时间”的积木,我们先不用,因为第一次运行需要设置一个起始时间,这个我们后面单独做。
初始化部分的图形化代码看起来应该是这样的(概念示意):
[当开机时] [ST7735初始化 RES=P2_2 DC=P2_3 ... 尺寸=160*128 旋转=0] [设置数字引脚 P4_5 为 高] [RTC初始化]3.2 主循环:读取时间与显示时间
初始化完成后,程序就进入主循环,不断重复执行里面的逻辑。
创建变量存储时间: 在“变量”类别中,创建几个变量来存放时间数据,比如:
hour(时)、minute(分)、second(秒)。天问Block创建变量非常直观,点一下“新建变量”然后命名就行。读取RTC时间: 在“循环执行”积木内部,从“RTC”类别找到“获取RTC时间”相关的积木。通常它会返回一个包含年、月、日、时、分、秒的结构或列表。我们找到能单独获取“小时”、“分钟”、“秒”的积木,将它们分别赋值给我们刚才创建的变量
hour,minute,second。在屏幕上显示时间: 这是最有成就感的一步!使用“屏幕”类别下的“显示字符串”积木。
- 首先,你可能需要用“清屏”积木清除上一秒显示的内容,或者采用局部刷新更高效。
- 然后,使用“转换文本”积木,将数字类型的
hour、minute、second合并成一个时间字符串,比如“12:30:45”。 - 最后,使用“显示字符串”积木,指定显示的坐标(X, Y位置)、字符串内容、文字颜色和背景颜色。你可以选择大一点的字体,让时钟更醒目。
主循环的图形逻辑大致如下:
[重复执行] [hour 设为 [获取RTC小时]] [minute 设为 [获取RTC分钟]] [second 设为 [获取RTC秒]] [清屏] // 或使用填充矩形覆盖旧内容 [在屏幕 (X:20, Y:50) 处显示 文字 [连接 [hour] [连接 “:” [连接 [minute] [连接 “:” [second]]]]] 颜色 白色 背景色 黑色] [延时 200毫秒] // 适当延时,降低刷新频率,避免屏幕闪烁3.3 首次运行设置时间
现在程序逻辑有了,但RTC里还没有一个正确的时间。我们需要一个“校准”环节。一个简单的办法是: 在初始化RTC之后,添加一个“如果”判断,例如判断某个变量(如first_run)是否为0。如果是0,则执行“设置RTC时间”积木,将当前时间(比如2024年1月1日 12:00:00)写入RTC,并将first_run变量设为1。这样,只有第一次上电时会设置时间,以后重启都会从RTC继续走时。
4. 程序编译、下载与调试
图形化程序搭建完成后,它只是一堆可视化的逻辑块。我们需要把它变成单片机可以执行的机器码。
4.1 编译生成HEX文件
- 点击天问Block界面上的“编译”或“生成代码”按钮。
- 软件会首先检查你的图形逻辑有没有错误,比如引脚冲突、逻辑不通等。
- 检查无误后,它会将图形积木“翻译”成C语言代码,并调用底层的Keil C51编译器进行编译。
- 编译成功后,会在你的项目文件夹里生成一个后缀为
.hex或.bin的文件,这就是单片机的可执行程序。
4.2 连接硬件与下载程序
- 使用USB线将STC32G开发板连接到电脑。开发板上通常有一个USB转串口芯片(如CH340),电脑会自动或手动安装驱动后,会识别出一个串口(COM口)。
- 在天问Block中,找到“下载”或“烧录”按钮。点击后,软件会弹出设置窗口。
- 选择正确的COM口(可以在电脑的设备管理器中查看)。
- 选择正确的单片机型号(STC32G12K128)。
- 点击“下载/编程”按钮。
- 最关键的一步:给开发板断电再重新上电(或者按一下板子的复位键)。这是STC单片机进入下载模式的触发信号。之后,软件就会开始擦除旧程序、写入新程序,进度条走完就成功了。
4.3 上电运行与效果验证
程序下载完成后,开发板会自动复位运行。你应该立刻看到1.8寸屏幕上显示出时间,并且秒数在逐秒递增。
如果屏幕没显示?别急,按顺序排查:
- 背光亮了吗?如果屏幕全黑,用手电筒斜着照屏幕,看有没有非常暗的内容。如果没有,检查
P4.5背光控制引脚的设置是否正确。 - 检查引脚配置:回头仔细核对3.1节的屏幕初始化积木,每一个引脚选择是否都与硬件连接表一致?
RES、DC、CS这三个控制引脚最容易出错。 - 检查编译下载:确认程序是否真的下载成功了?下载时有没有报错?
- 简化测试:可以先不显示时钟,只写一个程序,在开机时用“填充屏幕”积木把屏幕刷成红色或绿色,看屏幕驱动本身是否正常。
当屏幕上成功显示出跳动的时间,这个基于STC32G和天问Block的RTC数字时钟项目就大功告成了!通过这个实战,你不仅学会了如何驱动SPI屏幕,还掌握了STC32G内部RTC的使用方法,更重要的是,体验了用图形化工具快速开发嵌入式应用的便捷。你可以在此基础上继续发挥,比如添加日期显示、设置闹钟、美化UI界面,让这个时钟功能更加丰富。
