发布时间:2020-03-23 阅读量:1637 来源: 我爱方案网 作者: 刘杰
【编者按】设计PCB,单片机语言,通过结构体Hardware_Init的函数指针调用系统初始化函数,完成GPIO的初始化,接着进入主循环,延时500ms将运行指示灯翻转,实现LED闪烁功能。可应用在实现交通灯、荧光棒、灯牌等产品,实现技术产品化。
一、工具链接
1、Keil c51 UV4
https://yunpan.360.cn/surl_yrIfYYmeRFk
2、STC-ISP下载软件
https://yunpan.360.cn/surl_yxH4CuUUvI3
二、学习板获取方式
方法1:自己设计PCB,自行打板焊接;
方法2:用作者设计的PCB,自行打板焊接。
三、程序功能
1、将通过Delay延时实现LED闪烁的代码结构调整为面向对象结构;
2、用定时器实现LED闪烁。
四、硬件部分
五、面向对象知识
面向对象是软件开发方法,是相对于面向过程来讲的。通过把数据与方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式;
单片机C语言的面向对象编程,是利用结构体,将变量、指针、函数等进行封装,达到编程更加方便、程序可读性更好、方便移植等目的。
1、结构体
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
常用的定义方法:
typedef struct
{
变量;
指针;
函数指针;
} 结构体名称_t;
2、指针
指针是地址,指向内存中的变量。
常用的定义方法:数据类型 * 指针名;
3、函数指针
函数指针是指向函数的指针变量。
常用的定义方法:返回值类型 ( * 指针变量名) ([形参列表]);
六、编程说明 - 面向对象程序结构
1、文件结构如下:
main.c -> 主函数文件,包含main函数等;
Public.c -> 公共函数文件,包含Delay延时函数等;
Sys_init -> 系统初始化函数,包含GPIO初始化函数等;
LED.c -> LED外设函数,包含LED打开、关闭函数等。
2、主函数如下:
运行流程:
通过结构体Hardware_Init的函数指针调用系统初始化函数,完成GPIO的初始化,接着进入主循环,延时500ms将运行指示灯翻转,实现LED闪烁功能。
3、源代码
版权需要,这部分内容,请在微信公众号阅读。
七、定时器
工作流程:通过寄存器配置定时器的工作模式。设定定时值。定时器启动后,定时器在时钟源的驱动下向下计数,当计数到0时,中断标志位TF0置位,触发定时器中断,此时可以重新设定时值或自动重装定时值,重新计数,周而复始。 如果定时器中断开启了,CPU会停下手头的工作,转而去运行定时器中断函数,中断函数运行完之后,CPU继续干手头的工作。
八、中断概念
1、中断存在的意义
为了提高CPU快速处理紧急事件的能力,比如按键中断、定时任务、故障报警、接口通信等。
2、中断概念
举例:码农A在全神贯注的撸代码,突然,手机铃声响起,追求已久的女神竟然打电话过来了,然后快速的接听了电话,接听完电话,码农A继续撸代码。
主循环 -> 码农A撸代码
手机铃声 -> 中断标志位
接听电话 -> 中断处理
中断返回 - >码农A继续撸代码
九、编程说明 - 定时器
1、文件结构如下:
main.c -> 主函数文件,包含main函数等;
Public.c -> 公共函数文件,包含Delay延时函数等;
Sys_init -> 系统初始化函数,包含GPIO初始化函数等;
LED.c -> LED外设函数,包含LED打开、关闭函数等。
Timer0.c -> 定时器函数,包含定时器初始化,中断函数等
2、主函数如下:
运行流程:
通过结构体Hardware_Init的函数指针调用系统初始化函数,完成GPIO与定时器0的初始化,接着进入主循环,CPU闲着。间隔一定时间进入定时器中断处理函数,实现LED闪烁功能。
3、定时器中断函数
版权需要,这部分内容,请在微信公众号阅读。
4、源代码
版权需要,这部分内容,请在微信公众号阅读。
十、观看视频
地址: https://live.bilibili.com/21988510
别具一格的单片机实战项目免费教学,以产品为导向,一起做项目的形式,加qq 1273755275拉入学习交流群。
开源项目,开发工具,技术资料以及更多原创技术文章,请关注微信公众号:硬件家园 yjjy168168168
作者:刘杰,在软硬件技术上有10年的经验,在单片机的经验更是突出,解决过多个单片机难题,可接单片机和软件开发等项目。目前在开讲单片机的教学,教程会在我爱方案网更新,敬请期待!
安森美(onsemi)推出的碳化硅共源共栅场效应晶体管(Cascode FET),通过创新架构融合SiC JFET与低压硅MOSFET,成功解决了SiC JFET常开特性的应用瓶颈。该设计兼具SiC材料的高效优势与硅器件的易控特性,在硬开关与软开关场景中展现显著性能提升。本文将深入剖析其结构原理及核心优势。
在现代电子系统的设计中,晶振作为提供稳定时钟信号的“心脏”,其性能直接影响着整个系统的可靠性与效率。面对差分晶振与无源晶振(晶体谐振器) 这两类核心时钟源,工程师们往往需要在性能、成本、设计复杂度与抗干扰能力之间寻求微妙的平衡。这两者绝非简单的引脚差异,而代表了截然不同的工作原理与设计哲学:
为确保电子系统在各种工作环境下的频率稳定性,尤其是应对频率偏移(如温漂)问题,晶体振荡器(XO)常采用补偿技术。其中,VCXO(电压控制晶振)和TCXO(温度补偿晶振)是实现精密频率补偿的核心方案。VCXO利用电压调控实现精准的频率微调,擅长维持卓越的短期稳定性;而TCXO则通过内置温度传感与补偿电路,在苛刻温度环境中自动维持频率的长期稳定。这两种补偿方式针对不同应用需求,构成了提升时钟源性能的关键路径。
【小知识】时钟芯片一种高性能、低功耗、带RAM的实时时钟电路,英文名称:Real-time Clock/Calendar Chip(简称:RTC),可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。采用IIC通信接口。
晶振作为电子设备的"心跳发生器",其起振状态直接决定系统能否正常运行。本文深度解析四种检测方法的实战要点:示波器法需规避探头电容引发的停振风险,万用表电压法需警惕芯片故障导致的误判,频率计通过波形特征精准锁定起振状态,而听声辨振实为认知误区——人耳可闻的异常声响反而暴露晶振缺陷。随着5G/新能源产业爆发式增长,国产晶振厂商正加速技术攻坚,保障起振检测的可靠性已成为行业刚需。