几个月前开始接触STC8G1K08A这8脚单片机,觉得挺有意思的,范例代码要做成实用的功能,还是要很多试验,才能有一些收获。
先实现了上电等待5秒,再接通1秒,然后断开进入掉电模式,仅涉及定时器和IO相关的代码
再实现了桶装水自动抽水器的定时功能,短按开始抽水,再短按,停止抽水,或者自动倒计时 n 秒后停止抽水;长按3秒开始抽水并进入设置模式,直到短按停止抽水,自动保存长按开始到短按结束之间的时间,作为下次自动倒计时时长,即倒计时时长可设置。涉及定时器、IO、按键中断,短按,长按,长长按,EEPROM读写等操作,还有就是掉电模式进入和恢复等。
最近又研究PWM,控制LED高亮、中亮、低亮、熄灭的不同显示效果,用deepseek和kimi提供的代码,由于不是适配STC8G1K08A芯片,所以无法运行,看STC8G.pdf芯片规范文件,还是很多不理解,特别是IO口不同工作模式的切换,希望大佬可以指点指点。
以下是使用STC8G1K08A单片机实现通过按键控制LED开关和亮度的代码示例。代码基于STC单片机的C语言开发环境,使用PWM信号控制LED亮度,并通过按键切换高亮、中亮、低亮和熄灭状态。
硬件连接说明- P32:按键输入,连接到单片机的P32引脚。
- P54:PWM输出,连接到单片机的P54引脚,用于控制LED亮度,默认输出高电平(熄灭)。
- LED:通过电阻连接到P54引脚,另一端接电源正极,当IO口低电平时点亮。
- 按键:一端连接到P32引脚,另一端接地。
软件设计思路- PWM控制:使用STC单片机的定时器功能生成PWM信号,通过占空比控制LED亮度。
- 按键检测:检测P32引脚的状态,判断按键是否按下。
- 状态切换:通过按键切换LED的亮度状态(高亮、中亮、低亮、熄灭)。
- 上电默认高亮:程序启动时,设置为高亮状态。
复制代码
|