xnh 发表于 2024-8-6 16:39:16

跟着冲哥学习 STC32位8051单片机原理及C语言程序设计心德

本帖最后由 xnh 于 2024-8-6 16:38 编辑

在学习单片机的过程中,通过一系列精心制作的学习视频,我深刻体会到了从理论到实践的跨越之美。起初,面对复杂的电路图和编程指令,我感到既迷茫又充满挑战。但随着视频的逐步深入,每一个模块、每一条指令都变得生动起来,仿佛为我打开了一扇通往微控制器世界的大门。视频中,老师不仅详细讲解了单片机的硬件结构、工作原理,还通过实例演示了如何编写程序控制LED灯闪烁、读取传感器数据等基础实验。这种理论与实践相结合的方式,极大地提升了我的学习兴趣和动手能力。我逐渐学会了如何根据需求设计电路,编写逻辑清晰的代码,并成功地将想法转化为实际的硬件操作。此外,视频中的调试环节也让我受益匪浅。面对编程中的错误和硬件连接的问题,老师总是耐心地引导我们分析问题所在,并给出解决方案。这让我学会了独立思考和解决问题的能力,也明白了在单片机开发过程中,耐心和细心同样重要。

下面是我切身实现的一些基础功能CDC 烧录不断电下载https://www.stcaimcu.com/data/attachment/forum/202408/01/164240dw2gv3tec2sv3fkt.jpg

https://www.stcaimcu.com/data/attachment/forum/202408/06/163448fcikzp1hkm6ysiik.jpg

CDC数据发送 串口打印 并点亮对应数字的LED灯

https://www.stcaimcu.com/data/attachment/forum/202408/02/190525ua8tj5hae90jvtht.jpg


https://www.stcaimcu.com/data/attachment/forum/202408/02/190537wv7145jj5r2bmbrr.jpg


https://www.stcaimcu.com/data/attachment/forum/202408/02/190505vl7tj5t5fafhcpcm.jpg



xnh 发表于 2024-8-6 16:52:29

STC 32位8051单片机在多任务处理方面具备较高的灵活性和性能,能够满足复杂嵌入式系统的需求。

STC 32位8051单片机多任务处理概述
STC 32位8051单片机,作为传统8051单片机的升级版,不仅保留了8051系列单片机的经典架构和指令集,还通过增加32位处理能力、扩展内存和增强外设接口等方式,大幅提升了单片机的性能和应用范围。在多任务处理方面,STC 32位8051单片机提供了多种解决方案,包括基于中断的时间片轮询、实时操作系统(RTOS)等。

多任务处理实现方式
1. 时间片轮询
时间片轮询是一种简单而有效的多任务处理方法,特别适用于资源受限或任务数量不多的场景。在STC 32位8051单片机中,可以通过配置定时器产生周期性的中断,每个中断周期内轮流执行各个任务。这种方法实现简单,但任务调度不够灵活,且在高负载情况下可能导致实时性下降。

2. 实时操作系统(RTOS)
对于需要处理更多任务、实时性要求更高的应用,建议使用实时操作系统(RTOS)。RTOS提供了更灵活的任务调度机制,支持任务优先级、抢占式调度等功能,能够显著提高系统的实时性和可靠性。在STC 32位8051单片机上,可以选择适合的RTOS进行移植和开发,如RTX51 Tiny等。

RTX51 Tiny在STC 32位8051单片机上的应用
RTX51 Tiny是由Keil Software开发的一款专为8051基础嵌入式系统设计的实时操作系统(RTOS)。它支持时间片轮转任务切换和使用信号进行任务切换,虽然不支持抢先式的任务切换,但在许多应用场景下已经足够使用。RTX51 Tiny可以很容易地在STC 32位8051单片机上运行,提供实时内核、设备驱动程序和一套开发工具,帮助开发者快速构建多任务应用。

xnh 发表于 2024-8-6 16:54:29

STC32位8051单片机定时器使用指南

STC32位8051单片机作为传统8051单片机的增强版,不仅保留了8051系列单片机的经典特性,还通过增加32位处理能力和扩展功能,为嵌入式系统的开发提供了更强大的支持。其中,定时器作为单片机的重要外设之一,在精确控制时间、实现延时、定时中断等方面发挥着关键作用。以下将详细介绍STC32位8051单片机定时器的使用方法和注意事项。

一、定时器概述
STC32位8051单片机的定时器是基于时钟频率的计数器,通过内部或外部时钟源进行计数,实现定时和计数功能。定时器模块通常包括定时器控制器(TCON)寄存器和定时器模式(TMOD)寄存器等关键部件,用于控制定时器的计数、中断和模式选择等功能。

二、定时器工作模式
STC32位8051单片机的定时器支持多种工作模式,以满足不同应用场景的需求。常见的工作模式包括:

定时器模式:定时器在计数器达到设定的比较值时产生中断或输出一个脉冲信号。
计数器模式:定时器在计数器溢出时产生中断或输出一个脉冲信号,此时外部脉冲信号作为计数时钟。
自动重装载模式:定时器在计数溢出后自动重新加载初始值,实现连续定时功能。

三、定时器配置步骤
选择时钟源:确定定时器的时钟源,可以选择内部时钟源或外部时钟源。内部时钟源通常是单片机的系统时钟,而外部时钟源可以是外部晶振或其他外部信号。
设置定时器模式:通过TMOD寄存器设置定时器的工作模式。TMOD寄存器的低4位用于设置定时器0的工作模式,高4位用于设置定时器1的工作模式。
设置初始值:根据定时需求,通过THx(定时器高8位)和TLx(定时器低8位)寄存器设置定时器的初始值。初始值决定了定时器的计数范围和时间间隔。
启动定时器:通过设置TCON寄存器中的TRx(定时器启动/停止控制位)来启动定时器。当TRx位被置为1时,定时器开始计数。
编写中断服务程序:如果需要使用定时器中断,需要编写相应的中断服务程序。当中断发生时,CPU会暂停当前执行的程序,并跳转到中断向量表中对应的中断服务程序执行。

四、注意事项
时钟源选择:合理选择时钟源对定时器的精度和稳定性至关重要。内部时钟源通常较为稳定,但可能受到系统其他部分的影响;外部时钟源可以提供更高的精度,但需要额外的硬件支持。
初始值计算:初始值的计算需要根据定时器的时钟频率和定时需求进行精确计算。错误的初始值可能导致定时器无法正常工作或定时精度不足。
中断优先级:在使用定时器中断时,需要注意中断优先级的设置。如果系统中存在多个中断源,需要合理设置中断优先级以避免中断冲突和优先级反转等问题。
功耗考虑:在电池供电的嵌入式系统中,定时器的功耗是一个需要考虑的因素。可以通过合理设置定时器的工作模式和时钟源来降低功耗。

五、应用实例
以STC32位8051单片机为例,假设需要实现一个每秒钟触发一次中断的定时器功能。首先,需要选择合适的时钟源并计算定时器的初始值。然后,按照上述步骤配置定时器并启动它。最后,编写中断服务程序以执行定时任务。

通过以上步骤,可以充分利用STC32位8051单片机的定时器功能,实现精确的时间控制和定时中断处理,为嵌入式系统的开发提供有力支持。

xnh 发表于 2024-8-6 16:56:01

STC32位8051单片机计数器使用指南

STC32位8051单片机作为8051系列单片机的增强版,不仅保持了8051单片机的经典特性,还通过增加32位处理能力和扩展功能,为嵌入式系统的开发提供了更强大的支持。其中,计数器作为单片机的重要外设之一,在测量外部事件频率、实现计数功能等方面发挥着关键作用。以下将详细介绍STC32位8051单片机计数器的使用方法和注意事项。

一、计数器概述
计数器是单片机中用于对外部事件进行计数的部件,它通过接收外部脉冲信号来实现计数功能。在STC32位8051单片机中,计数器通常与定时器共用硬件资源,但可以通过设置寄存器的不同值来区分定时和计数模式。

二、计数器工作模式
STC32位8051单片机的计数器支持多种工作模式,但主要区别在于计数源的选择。在计数模式下,计数器通常选择外部脉冲信号作为计数源,而在定时模式下,则选择内部时钟信号。对于计数器的具体工作模式设置,通常通过TMOD寄存器中的C/T位(Count/Timer,计数/定时)来切换。

三、计数器配置步骤
选择计数源:确定计数器的计数源,即选择外部脉冲信号作为计数器的输入。
设置工作模式:通过TMOD寄存器设置计数器的工作模式。将C/T位设置为1,表示选择计数模式;同时设置其他相关位以配置计数器的其他特性,如是否允许外部中断触发计数等。
设置初始值:根据需要,通过THx(计数器高8位)和TLx(计数器低8位)寄存器设置计数器的初始值。在某些情况下,为了从0开始计数,可以将这两个寄存器都设置为0。
启动计数器:通过设置TCON寄存器中的TRx(计数器启动/停止控制位)来启动计数器。当TRx位被置为1时,计数器开始对外部脉冲信号进行计数。
读取计数值:在需要时,可以通过读取THx和TLx寄存器的值来获取当前的计数值。注意,由于这两个寄存器是8位的,因此需要将它们组合起来以获取完整的16位计数值。

四、注意事项
计数源选择:确保选择的计数源是稳定的,以避免因计数源不稳定而导致的计数误差。
计数范围:STC32位8051单片机的计数器在16位模式下,其计数范围通常为0到65535。在计数前,需要确保计数器的计数范围满足应用需求。
中断处理:如果需要在计数值达到特定值时产生中断,需要配置相应的中断服务程序,并设置中断优先级以避免中断冲突。
功耗考虑:在电池供电的嵌入式系统中,计数器的功耗也是一个需要考虑的因素。虽然计数器的功耗相对较低,但在设计低功耗系统时仍需注意。

五、应用实例
以STC32位8051单片机为例,假设需要实现一个测量外部脉冲信号频率的计数器功能。首先,需要将计数器的计数源设置为外部脉冲信号,并设置C/T位为1以选择计数模式。然后,根据需要设置计数器的初始值和中断服务程序。最后,启动计数器并开始接收外部脉冲信号进行计数。通过读取计数器的计数值并计算单位时间内的脉冲数,即可得到外部脉冲信号的频率。

xnh 发表于 2024-8-6 16:59:49

STC32位8051单片机看门狗定时器(Watchdog Timer, WDT)详解

在嵌入式系统设计中,看门狗定时器是一种重要的硬件或软件机制,用于监控系统的运行状态,防止程序陷入死循环或由于硬件故障导致的系统停滞。STC32位8051单片机,作为8051系列单片机的增强版,通常也内置了看门狗定时器功能,以确保系统的稳定性和可靠性。以下将详细介绍STC32位8051单片机看门狗定时器的原理、配置方法及应用注意事项。

一、看门狗定时器原理
看门狗定时器本质上是一个可重置的定时器,它在系统正常运行时不断计数。当系统程序按预期执行时,会定期“喂狗”(即重置看门狗定时器),以防止其溢出。如果由于软件错误、硬件故障或外部干扰导致程序无法正常执行(如陷入死循环),看门狗定时器将在未被重置的情况下溢出,从而触发系统复位,使单片机恢复到初始状态,避免系统长时间处于错误状态。

二、配置方法
STC32位8051单片机的看门狗定时器配置通常涉及以下几个步骤:

1. 启动看门狗定时器:通过配置相关的寄存器来启动看门狗定时器。这通常涉及设置看门狗控制寄存器(如WDTCN)的特定位,以启用看门狗功能。
2. 设置定时周期:看门狗定时器的定时周期可以通过编程进行设置。STC32位8051单片机可能提供了多种预设时间等级,开发者可以根据应用需求选择合适的定时长度。定时周期的设置通常也通过修改看门狗控制寄存器来实现。
3. 编写“喂狗”代码:在程序的适当位置插入“喂狗”代码,即在看门狗定时器溢出前重置其计数器。这通常通过向看门狗控制寄存器写入特定的值来完成。

三、应用注意事项
1. 确保定期“喂狗”:为了防止看门狗定时器溢出,必须在定时周期内定期“喂狗”。通常,在程序的主循环或关键代码段后插入“喂狗”代码是一个好习惯。
2. 合理设置定时周期:定时周期的设置应考虑到系统的运行特性和对复位时间的容忍度。过短的定时周期可能导致系统频繁复位,而过长的定时周期则可能使系统在故障状态下运行过长时间。
3. 考虑看门狗复位的影响:看门狗复位会导致单片机恢复到初始状态,这可能会中断当前正在进行的任务或导致数据丢失。因此,在设计系统时,应考虑看门狗复位对系统状态和数据的影响,并采取相应的恢复措施。
4. 硬件与软件的结合:在某些情况下,可能需要结合硬件看门狗和软件看门狗来提高系统的可靠性。硬件看门狗通常更可靠,但成本较高;软件看门狗则相对灵活,但可能受到软件错误的影响。

xnh 发表于 2024-8-6 17:14:33

对于这段时间学习STC 8051单片机的整体总结如下

1. 学习心得:
   学习初期感受:面对复杂电路图和编程指令的迷茫与挑战。

   视频学习成效:通过精心制作的学习视频,理解了单片机硬件结构和工作原理,并通过实例学会了控制LED灯闪烁、读取传感器数据等基础实验。

   实践能力提升:视频中的调试环节提高了独立思考和解决问题的能力,学会根据需求设计电路和编写逻辑清晰的代码。

2. 基础功能实现:

   CDC烧录技术:掌握了CDC烧录不断电下载的方法。

   串口通信:实现了CDC数据发送和串口打印功能,并能点亮对应数字的LED灯。

3. 多任务处理:

   STC32位8051单片机优势:在多任务处理方面具备较高的灵活性和性能,适合复杂嵌入式系统。

   实现方式:介绍了时间片轮询和实时操作系统(RTOS)两种多任务处理方法,特别是RTX51 Tiny在STC32位8051单片机上的应用。

4. 定时器使用指南:

    定时器概述:作为重要外设,在精确控制时间、实现延时、定时中断等方面发挥关键作用。

    工作模式:包括定时器模式、计数器模式和自动重装载模式。

    配置步骤:选择时钟源、设置定时器模式、设置初始值、启动定时器、编写中断服务程序。

    注意事项:包括时钟源选择、初始值计算、中断优先级和功耗考虑。

5. 计数器使用指南:

    计数器概述:用于对外部事件进行计数,实现计数功能。

    工作模式:主要通过选择计数源来区分定时和计数模式。

    配置步骤:选择计数源、设置工作模式、设置初始值、启动计数器、读取计数值。

    注意事项:包括计数源选择、计数范围、中断处理和功耗考虑。

6. 看门狗定时器详解:

    原理:可重置的定时器,监控系统运行状态,防止程序陷入死循环或系统停滞。

    配置方法:启动看门狗定时器、设置定时周期、编写“喂狗”代码。

    应用注意事项:确保定期“喂狗”、合理设置定时周期、考虑看门狗复位的影响以及硬件与软件的结合。

xnh 发表于 2024-8-6 17:18:15

模数转换器(ADC)是一个重要的外设,用于将模拟信号(如电压、电流等)转换为数字信号,以便微控制器进行处理。关于ADC采集电源电压和ADC按键的应用,以下是一些基本概念和步骤:ADC采集电源电压
[*]确定ADC分辨率和精度:首先,了解你的STC32位8051单片机ADC的分辨率(如10位、12位等)和精度,这将决定你能够测量的最小电压差。
[*]设计分压电路:由于电源电压可能超过ADC的输入范围(通常是0V到参考电压Vref,可能是VCC或外部提供的电压),你可能需要设计一个分压电路来降低输入电压到ADC可接受的范围内。
[*]配置ADC:通过单片机的寄存器设置,配置ADC的参考电压、输入通道(选择连接到电源电压的通道)以及其他相关参数。
[*]编写ADC采集代码:编写C语言代码来启动ADC转换,并在转换完成后读取ADC结果。这通常涉及到设置ADC控制寄存器、启动转换、等待转换完成以及读取ADC数据寄存器。
[*]处理ADC数据:将ADC的原始数据转换为实际的电压值,这通常需要将ADC的计数值乘以参考电压并除以ADC的分辨率(例如,对于10位ADC,分辨率是1024)。
[*]应用电压值:根据获取到的电源电压值,你可以执行进一步的操作,如电源管理、电压监测或故障诊断等。
ADC按键
[*]按键电路设计:设计一个按键电路,通常是将按键一端连接到单片机的ADC输入通道,另一端连接到地或某个固定电压(取决于你希望检测的是按键按下时的低电平还是高电平)。可能需要添加上拉或下拉电阻以确保稳定的电压水平。
[*]配置ADC:同样地,配置ADC以读取按键连接的输入通道。
[*]编写ADC采集代码:编写代码来定期采集按键所在通道的ADC值。
[*]按键状态判断:通过比较ADC的读取值与预设的阈值来判断按键是否被按下。这取决于按键电路的设计和ADC的精度。
[*]响应按键操作:根据按键的状态,执行相应的操作,如改变LED状态、触发中断或执行其他函数。
需要注意的是,ADC采集按键时可能会受到接触电阻、按键抖动等因素的影响,因此在实际应用中可能需要添加去抖动逻辑或算法来提高按键检测的准确性和可靠性。

xnh 发表于 2024-8-6 17:19:13


关于模数转换器ADC的总结

[*]ADC概述:
[*]功能定义:模数转换器(ADC)是单片机中的一个重要外设,负责将模拟信号(如温度、压力、声音等传感器输出的连续变化信号)转换为数字信号,以便单片机进行数字处理。
[*]应用场景:在STC32位8051单片机应用中,ADC常用于数据采集系统,如环境监测、工业自动化控制等领域。

[*]STC32位8051单片机ADC特性:
[*]增强功能:作为8051系列单片机的升级版,STC32位8051单片机可能集成了更高性能的ADC模块,支持更高的转换速率、分辨率和采样率。
[*]内部/外部参考电压:ADC模块通常支持内部参考电压或外部参考电压,以提供准确的转换基准。
[*]多通道输入:可能支持多个模拟信号输入通道,允许同时或依次采集多个模拟信号。

[*]ADC使用要点:
[*]初始化配置:在使用ADC之前,需要进行初始化配置,包括选择参考电压、设置分辨率、配置输入通道等。
[*]启动转换:通过软件指令启动ADC转换,等待转换完成后读取转换结果。
[*]结果处理:读取转换结果后,根据需要进行数据处理和分析,如滤波、校准等。

[*]ADC在STC32位8051单片机中的应用实例:
[*]温度监测:通过连接温度传感器(如热敏电阻、热电偶等)到ADC输入,实现环境温度的实时监测。
[*]光强测量:连接光敏电阻或光敏二极管到ADC输入,测量环境光强变化。
[*]音频采集:虽然不常见,但在特定应用中,可能通过ADC对微弱的音频信号进行采集和预处理。

[*]ADC编程注意事项:
[*]转换时间:根据ADC的转换速率和采样率,合理安排数据采集和处理的时间间隔。
[*]噪声抑制:采用合适的滤波算法或硬件滤波电路,减少模拟信号中的噪声对转换结果的影响。
[*]电源稳定性:确保ADC模块的电源稳定,避免电源波动对转换精度的影响。

[*]ADC与多任务处理的结合:
[*]任务调度:在多任务处理系统中,合理安排ADC数据采集任务与其他任务的执行顺序和时间片,确保数据采集的实时性和准确性。
[*]中断处理:利用ADC中断功能,在转换完成后自动触发中断处理程序,提高系统的响应速度和处理效率。


xnh 发表于 2024-8-6 17:21:56

看了冲哥的学习视频,对于我这种有编程基础的人学习单片机还是更加通俗易懂。 学习单片机的开发的过程中我了解到了每个版本不同的单片机的C语言组件库版本等等都是不一样的。让我在学习过程中也能提升一些日常工作编程不了解的东西。 还是很不错的!

xnh 发表于 2024-8-6 17:24:18

本帖最后由 xnh 于 2024-8-6 17:25 编辑


在上一阶段的学习中 我通过视频,论坛的帮助学习到了不少内容。
下一阶段我将围绕更深入的软硬件进行学习进步。在学习过程中也会在论坛上发布我遇到的问题和更多的解决方案。 同时遇到不懂不会的也会发表再论坛上希望大家多多帮助。
页: [1] 2 3
查看完整版本: 跟着冲哥学习 STC32位8051单片机原理及C语言程序设计心德