- 博客(28)
- 收藏
- 关注
原创 工作指示灯的闪烁方式
在电路板设计中,指示灯的闪烁方式通常用于传达设备的不同状态。此设计可帮助用户快速识别设备状态,同时为调试和维护提供直观依据。
2025-02-23 10:22:59
299
原创 单片机程序的分层设计方法
分层设计是单片机程序模块化的核心方法之一,通过将不同职责的代码分离到不同层次,能够显著提升代码的可维护性、可移植性和可扩展性。实际项目中可结合具体需求调整层级(如增加协议层或任务调度层),同时注意平衡性能与可维护性。
2025-02-22 17:52:20
817
原创 单片机程序的模块化设计
实际应用案例:某工业温控系统通过模块化设计,将PID算法、传感器驱动、通信协议分离,使系统响应时间从15ms优化到8ms,同时支持快速适配STM32/GD32等多平台。单片机程序的模块化设计是提高代码可维护性、可复用性和可扩展性的关键方法。
2025-02-22 17:41:26
923
原创 裸机编程(Bare-Metal)和实时操作系统(RTOS)对比
在单片机开发中,裸机编程(Bare-Metal)和实时操作系统(RTOS)是两种常见的设计方法,它们在架构、资源管理、开发复杂度等方面存在显著差异。裸机编程是单片机开发的“基本功”,适合资源敏感的小型项目;RTOS则是应对复杂系统的“利器”,通过牺牲部分资源换取开发效率和可靠性。开发者需根据项目需求、硬件资源和团队经验权衡选择。
2025-02-11 08:13:15
565
原创 测试单片机写LCD刷新率
最近要做一些带LCD彩屏显示的产品,部分应用需要比较高显示刷新率,为了知道单片机写屏幕的最高刷新率,做了如下简单的测试代码。测试基本思路是:向屏幕写一张满屏的图片,然后记录在1秒内能够写多少次,总共测试10秒,最后显示出每一秒的写入次数(示例代码是用了两张图片交替显示),这个思路也可以测试图形算法的速度。雅特力AT32F403A芯片 240M主频 + XMC 8位数据宽度 驱动ILI9341 320*240分辨率,没有使用DMA,实测写屏速度是37HZ (27.6ms/次)。
2022-09-14 11:42:51
1132
原创 GD32F3x0使用定时器实现高精度Delay延时函数
GD32F3x0 单片机使用定时器做Delay延时函数的代码:/************************************************************Copyright (C), 2013-2022FileName: Delay.hAuthor : 祥子 QQ:570525287Version : 1.0Date : 2022-1-5Description: Function List:History : <author> &
2022-04-23 16:46:20
2555
1
原创 利用KEIL内置的__DATE__和__TIME__宏自动生成软件版本
使用KEIL开发项目时,手动更改版本号会比较繁琐,而且经常容易错漏,为了减少这类繁琐的操作,可以利用KEIL内置的 __DATE__ 和__TIME__这两个宏来获取编译时的日期和时间作为版本
2022-03-22 14:32:02
4496
3
原创 一些宏定义
一些宏定义/************************************************************Copyright (C), 2013-2021FileName: my_type.hAuthor : 祥子 QQ:570525287Version : 2.0Date : 2021-1-5Description: Function List:History : <author> <time> <version
2021-12-22 08:55:09
413
原创 简单的LED恒流电路
利用三极管+MOS管做LED的恒流电路:工作原理:1、Q1没有导通的情况下,Q2的B极电压为0V,Q2截止,Q1的G极由R1施加电压,Q1导通;2、Q1导通后,电流流过R3,R3上产生电压,当R3电压升到0.7V,Q2导通, Q1的G极被拉低(0.7V),Q1截止。3、如此反复开/关,达到恒流效果。恒流公式:I = 0.7V / R3用28V给一个LED供电的实测效果,电流稳定在15mA:Q2 B极的波形,电压708mV,开关频率11.9MHz------------END--
2021-12-18 10:51:26
7689
2
原创 颜色对照表
颜色对照表单片机RGB565格式定义表//---------------------颜色表--------------------#define GUI_LightPink 0xFDB8 \\浅粉红#define GUI_Pink 0xFE19 \\粉红#define GUI_Crimson 0xD8A7 \\猩红#define GUI_LavenderBlush 0xFF9E \\脸红的淡紫色#defi
2021-09-19 18:50:29
5254
1
原创 STM32F103 使用外部16MHZ晶振总结
STM32F103官方库默认是8M晶振,改成 16M 3225-4Pin的晶振,需要对时钟配置做如下修改:1、把stm32f10x.h中的HSE_VALUE宏定义改成16M#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */改成:#define HSE_VALUE ((uint32_t)16000000) /*!< Value of the External
2021-03-10 14:43:02
3546
原创 使用Visual Studio Code (VS Code)写C51代码(配置指南)
用Keil写代码是会让人发疯的,以前一直用VS stdio 写,后来发现VS Code更强大,于是开始用,但是发现写C51有些关键字是不支持的,老是提出错误,也是几经折腾,终于摸索出一些解决办法,记录下来,碰到这些问题的可以参考一下。一、安装VS Code后,需要安装以下两个插件:1、C/C++ Intellisense 插件2、Chinese (Simplified)Languge 中文语言插件有时安装VS Code后输入代码没有提示,是因为没有安装.net framework 4.5.2 ,安
2021-01-26 17:36:19
9939
3
原创 单片机显示Image2Lcd生成的单色图像
在内存较小又没有外置存储的情况下,有时为了节省单片机的flash空间,把图标做成单色的,在显示时再着不同的前景和背景颜色,变成简单的彩色。这里用的是Image2Lcd v2.9 生成设置如下:显示代码/*-----------------------------------------LCD_DrawPicture_1bit-------------------------------------scan: 扫描模式 Bit7: 0:自左至右扫描,1:自右至左扫描。 Bit6: 0:自顶至底扫
2020-11-25 16:41:04
3484
2
原创 步进电机受干扰的解决办法
这个SMT在线点胶机用于给刷了锡膏的PCB上点红胶,固定大体积元件,红胶和锡膏是同一面,刷完锡膏后,直接自动在接驳台传送带上点胶。为了能稳定点胶,在板子到达指定位置后,要控制接驳台停止运送,刚开始采用的是干预进板传感器的方式来控制停转,点胶机工作比较正常,但在有些情况下接驳台不受控制,后来改成直接控制接驳台电机电源,能很好的控制停转,但出现了一个严重的问题,点胶机工作不正常,步进电机在回原点的过程中出错,卡死在半途。经过折腾实验,确认步进电机运转正常,但只要在步进电机在运行的时候,如果这时接驳台电机突然断电
2020-11-08 12:31:30
2392
1
原创 STM32F103ZET6移植到STM32F103C8T6记录
把stm32f103rc的程序改到stm32f103c8t6上的步骤:1、修改芯片型号:2、修改全局宏定义 STM32F10X_MD3、下载设置:4、换启动文件:startup_stm32f10x_hd.s ------> startup_stm32f10x_md.scl:互联型产品,stm32f105/107系列vl:超值型产品,stm32f100系列xl:超高密度产品,stm32f101/103系列ld:低密度产品,FLASH小于64Kmd:中等密度产品,
2020-11-06 17:41:42
1364
原创 main函数中如何更好的定时执行任务
没有使用RTOS实时操作系统,一个祼奔的单片机如果要每隔20ms扫描一次按键,100ms让LED变化一次,我们应该怎么做?第一种实现方法:void main(void){ u8 cnt; HardInit(void); while(1) { if (cnt++ >=5) { cnt = 0; ScanKey();//扫描按键 } LED = ~LED; //LED灯取反一次 delay_ms(20); DoSomething(); //做其它事情
2020-10-24 17:08:20
3115
7
原创 一套强悍的实现按键按下_弹起_长按_功能代码
最近做一些项目,对按键操作要求比较复杂,要实现按键按下、弹起、组合、长按等不同状态的响应,之前写过一篇按键实现的文章,现在把代码重新优化了一下,分享给大家,代码实现了下面功能:按下:(按键被按下去,但没有松开)弹起 : (松开按键)重复:(按键被一直按住,键值重复出现,像电脑键盘一样,按住一个字符不放它就能一直输入)长按:(按住一定时间不松开)按下时长:(记录按键从按下到弹起的时间)**采用时间片轮询方式扫描按键动作,带消抖功能,运行稳定,可移植性好,不同平台,只要简单修改硬件相关的部分。
2020-10-24 10:45:20
2031
1
原创 WS2812B全彩LED驱动
今天心血来潮花了点时间写了个WS2812B的驱动,把灯点亮了。WS2812B是一款全彩LED控制IC,单总线控制,信号时序如下图,其它信息请看规格书,要注意高低电平的时间一定要控制在规格书的要求范围内。WS2812B可以级联,每个灯接收的是24bit数据(GRB颜色值),D1灯在收到24bit数据后,会把数据保存,如果还收到数据,会通过DO脚传给D2用STM32F0芯片,48M时钟,驱动代码如下:头文件:/********************************************
2020-10-09 16:48:21
29206
11
原创 绘波形图制代码
绘制波形图显示效果头文件:#ifndef MY_WAVE_H#define MY_WAVE_H#include "DIALOG.h"#include "sys.h"#include "my_GUI.h"//图形结构体typedef struct _Graph{ int oX; int oY; int datMax; //最大值 int datMin; //最小值 int post; //当前位置 RECT_INFO rect; //窗口尺寸 GUI_COLO
2020-09-14 19:58:39
677
原创 LM393实现简易PWM调压电路
LM393+MOS管实现简易的PWM调压电路电路工作原理:◆R21、R24 电阻分压后接到1IN- ,1IN+脚接PWM信号,当1IN+为高电平时,1IN+大于1IN-,1OUT输出24V高电平,当1IN+为低电平时,1OUT输出低电平,其实1OUT输出就是24V的PWM信号,经过R26、C15、R27、C16电路后将PWM电压转成一个平滑的电压,输入到2IN-端,2IN+接到电压输出端,当输出的电压(2IN+)低于1IN-时,2OUT输出低电平,MOS管导通,输出电压上升;当输出电压大于1IN-后,
2020-09-07 12:00:57
18317
7
原创 RDA226数字热释电传感器调试笔记
RDA226数字热释电传感器是一款将传统热释电传感器的敏感元件与信号处理芯片集成化设计,芯片共有6个引脚,可以调节感应灵敏度、输出延时、以及开启/关闭,使用方便。下面是芯片调试过程的总结。1、感应灵敏度调节SENS脚上的电压决定了传感器输入信号的比较阈值,这个电压在0V ~ 1/4VDD电压之间,0V灵敏度最高,1/4VDD电压灵敏度最低,当电压是3V时,R7取100K,SENS电压是2...
2020-09-07 11:32:36
2370
原创 MP2451电路调试笔记
MP2451电路调试笔记EN脚内部有一个8V的稳压管,因此电路中R5可不要,R2取124K接到VIN脚。C7取100nF ,C8要根据不同输出电压选取,3.3V输出时取值33pFC7、C8取值不对,纹波会很大
2020-09-07 11:29:58
3024
4
原创 单片机按键扫描实现短按_长按_重复_组合键功能详解
在单片机项目中,按键操作通常是产品与用户交互必不可少功能,按键又有短按、长按、重复、组合键等操作,本文介绍了一种按键扫描的实现方法,能够实现短按、长按、重复以为组合键的功能。短按:即按下按键马上松开,如图1,按下的 时间tl小于允许的最大时间t_max,则认为是短按长按:即按下按键3秒后再松开,如图2,按下的 时间tl大于时间t_lmax重复:即一直按住按键不放,重复该按键,如图3,按下的时...
2020-03-13 22:28:08
7224
1
原创 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-05-27 21:30:53
367
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人