标记重捕 发表于 2024-6-28 00:05:20

STC01 控制LED闪烁

本帖最后由 标记重捕 于 2024-6-29 07:47 编辑

一 实验目标

https://pic1.zhimg.com/80/v2-12962ba541c47ae78b1343a6e2bd59e0_720w.webp
自从知道STC8H8K64U核心板可以代替DIP40的89C52插在51开发板上,我就买了一块核心板。收到核心板后,打算练练手。如文章题目所示,这次的实验是要控制LED的闪烁。
二 硬件连接

https://pic1.zhimg.com/80/v2-c01ecb573e72519a81f039425592c454_720w.webp
这块核心板并不是所有IO口都有LED,根据原理图,我选择使用P20口的LED作为操作对象。从电路图中可见,LED的阴极连接了P20口。
三 代码步骤及实现

3.1 包含芯片头文件

https://pic4.zhimg.com/80/v2-c4fd153f7629725cd4e5331d88cd0897_720w.webp
使用官方提供的STC8H头文件。
3.2 数据类型重定义

https://pic2.zhimg.com/80/v2-169f8362bf26ad3a0b687a427e90ebcd_720w.webp
这是官方的数据类型重定义文件,但是我很不喜欢u8 u16这样的命名方式,所以做了更改,改成了uint8_t的形式。
3.3 定义时钟频率

https://pic2.zhimg.com/80/v2-cf3c2eb928d7853d302ca7710fa2ac89_720w.webp
这是官方的数据类型配置文件,这里定义的系统时钟是24MHz。这个频率可以在STCISP软件中更改。
https://pic3.zhimg.com/80/v2-98a54f919f1eaaa339471b66795cf79a_720w.webp

3.4 实现延时函数

https://pic1.zhimg.com/80/v2-a587a15ba98e667335bf920d7a53d2c8_720w.webp
调用时钟参数设置延时函数,最小延时单位为1ms。
3.5 LED功能的封装

https://pic2.zhimg.com/80/v2-15560429b5055fa63974e0c374fa23d9_720w.webpGPIO初始化
https://pic1.zhimg.com/80/v2-f05eb36ef338da2d3bcdd0bcc759c604_720w.webp根据数据手册,配置M0 M1,实现配置P20为准双向口。
LED亮
https://pic1.zhimg.com/80/v2-83fd6dd4f035cc4fc3044a3309ea0630_720w.webp

LED灭

https://pic2.zhimg.com/80/v2-468f0ea89a6c33fb2df12c575db73bb5_720w.webp
LED闪烁

https://pic3.zhimg.com/80/v2-6b994a2e5ecaa032884a11c12d415ea6_720w.webp

3.6 程序一直运行LED的闪烁

https://pic3.zhimg.com/80/v2-6f61cfee2f4e228bbe9b84669d9da4d6_720w.webp
其中SYS_Ready为结构体StartUpInit的成员;Run为结构体System的成员在Run中每隔300ms变更一次P20端口的电平。
四 实验现象4.1 程序烧录

https://pic1.zhimg.com/80/v2-1123a138069bc4b84b49c34bb333609c_720w.webp
官方提供的烧录步骤说明。
4.2 现象
https://pic2.zhimg.com/v2-75f1c30d272a2f72f0adb379afa44445_b.jpg




LED闪烁演示

soma 发表于 2024-7-20 16:38:15

这个可以用开发板的uart下载吧。也可以直接USB下载吧。

小坤 发表于 2024-8-2 08:54:34

用是VS_CODE 开发

fztyp 发表于 2024-8-3 01:18:19

小坤 发表于 2024-8-2 08:54
用是VS_CODE 开发

可以用vscode开发吗

机灵小老鼠 发表于 2024-8-3 08:33:55

vscode 仅仅是一个代码编辑和查看的工具
页: [1]
查看完整版本: STC01 控制LED闪烁