找回密码
 立即注册
楼主: FRSTC

学习记录!!!

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-2 12:27:29 | 显示全部楼层
第六集:LED闪烁和花式电灯
1、基于Delay的LED闪烁
     LED的闪烁可以使用Delay函数实现,Delay函数使用了枚举的软延时方法,用此方法可以便捷地实现LED闪烁,但是运行效率不高,在延时的时间内无法完成其他事情,极大损耗了单片机的性能。

2、新建文件格式
     为了防止重复定义,在建立新文件时需要使用模块化编程。
     xxx.h格式
          #ifndef __XXX_H
          #define __XXX_H
          调用头文件
          函数声明
          #endif

     xxx.c格式
          #include "xxx.h"
          函数定义
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-2 12:49:31 | 显示全部楼层
第七集:按键电灯
1、按键的原理
     按键是一个开关,按下时开关导通,松开时按键断开,通过IO口读取高低电平就能接收到按键的开关情况了。按键在按下时会发生抖动,在一个极短的时间内,按键在导通和断开中反复切换,为了消除抖动影响,需要为按键添加防抖动程序。

2、按键电灯实现
     按键电灯是基于循环加Delay实现的。在一个循环中反复判断按键的状态,若被按下,则改变LED的开关状态。按键防抖的实现在按下按键后,程序会延时10ms后再判断按键是否被按下,这样可以有效地防抖,但是执行效率较低。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-3 14:10:35 | 显示全部楼层

第八集:蜂鸣器的应用
1、认识蜂鸣器
     蜂鸣器分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器内部自带震荡源,一通电就会叫,而无源蜂鸣器内部不带振荡原,需要单片机提供振荡信号才能发声,无源蜂鸣器发声音调可以随着振荡信号而改变,价格更低。本教程使用有源蜂鸣器,驱动原理类似LED驱动方式,通电就响。

2、蜂鸣器控制原理
     如下图1为蜂鸣器控制原理图。P5.4连接三极管基极,当P5.4输出低电平时,三极管导通从而驱动蜂鸣器发声。

3、蜂鸣器实战应用
while(1){
     if( KEY1 == 0  ){
                delay_ms(10);
                if(  KEY1 == 0 ){               
                        if( Run_Flag==0 ){
                                Run_Flag = 1;
                                BEEP = 0;
                                delay_ms(10);
                                BEEP = 1;
                                P40 = 0;
                                P6 = 0X00;
                                delay_ms(200);
                                P6 = 0XFF;
                        }                       
                        else{
                                Run_Flag = 0;
                                BEEP = 0;
                                delay_ms(10);
                                BEEP = 1;
                                P6 = 0XFF;
                                Run_Mode = 0;
                                Run_Now         = 0;       
                        }
                        while(  KEY1 == 0 );
                }
        }
       
        if( KEY2 == 0 ){
                delay_ms( 10 );
                if( KEY2 == 0 ){
                        if( Run_Now==0 ){
                                BEEP = 0;
                                delay_ms(10);
                                BEEP = 1;               
                                Run_Mode ++;
                                if( Run_Mode>8 )
                                        Run_Mode = 1;
                               
                                P6 = ~(1<< (Run_Mode-1));
                       
                        }
                        while( KEY2 == 0);
                       
                }
        }
        if( KEY3 == 0 ){
                delay_ms( 10 );
                if( KEY3 == 0 ){
                        if( Run_Mode>0 ){
                                BEEP = 0;
                                delay_ms(10);
                                BEEP = 1;               
                                Run_Now = !Run_Now;
                        }
                        while( KEY3 == 0);
                }
        }
        if( Run_Now == 1 ){
                P6 = 0XFF;
                delay_ms(200);
                P6 = ~(1<< (Run_Mode-1));
                delay_ms(200);
        }
        else{
                P6 = ~(1<< (Run_Mode-1));
        }
}
66f47c3b388d999decc0e94e80ac0ad.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-4 13:25:55 | 显示全部楼层
第九集:数码管的静态使用
1、认识数码管
     数码管也叫LED数码管,内部是由多个发光二极管封装在一起组成,可以有多种颜色、多种外形、多种样式,理论上可以显示任意字符或图案,但是本质上来说他们都是通过点亮内部LED来显示。
     按LED单元连接方式可分为共阳极数码管和共阴极数码管(如图1 所示),尾缀A表示共阳,K表示共阴。

2、控制原理
     若要控制数码管显示不同的数字,只需控制连接数码管的不同IO口输出指定的高低电平。如图1所示,以共阳极接法为例,假使要显示数字0,就要点亮abcdef,熄灭g,因此需要abcdef口输出低电平,g口输出高电平,显示其他数字同理。

3、数码管实现0-9显示
     显示0-9数字可以使用数组将每个数字需要点亮的IO口通过16进制记录下来,最后直接调用数字修改最低位的IO口即可。
图1 数码管.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-6 15:10:05 | 显示全部楼层
第十集:数码管的动态显示
1、数码管动态刷新原理
     单片机在同一时间只能点亮一个数码管,因此,若想点亮多个数码管需要采用动态刷新策略。因为视觉暂留现象,只需要让单片机在极短时间内依次点亮每个数码管,再重复这一过程,就能造成数码管都点亮的假象。

2、控制原理
     控制原理如下图所示,首先选择第一位数码管输出对应的位码,然后输出数码管应显示的数字,最后延时一定的时间。
数码管控制流程图.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:249
  • 最近打卡:2025-05-09 08:22:02
已绑定手机

3

主题

26

回帖

1162

积分

金牌会员

积分
1162
发表于 2024-9-6 16:37:39 | 显示全部楼层
阿杰爱*** 发表于 2024-8-30 21:39
可以先申请一个屠龙刀先学着,找客服申请
我今天刚肝完15集,试验箱已经发货了 ...

请问,怎么联系客服?在论坛里吗,还是微信上?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:130
  • 最近打卡:2025-05-07 18:17:53

13

主题

164

回帖

375

积分

中级会员

积分
375
发表于 2024-9-6 20:57:33 | 显示全部楼层
sdg2a15er 发表于 2024-9-6 16:37
请问,怎么联系客服?在论坛里吗,还是微信上?

论坛里那个试验箱申请下面不是有联系方式吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-8 16:31:11 | 显示全部楼层
第十一集:定时器的使用
1、定时器的作用和意义
     定时器是定时器和计数器的统称,当设置为定时器模式时,可以实现硬件计时或者时程序每隔固定的时间产生一次中断,完成某项操作;当设置为计数器模式时,能够对脉冲进行计数;此外定时器能够替代长时间的delay,提高CPU运行效率,能够及时的响应某个事情。

2、STC32G单片机定时器使用原理
     第一步:对定时器T0,用它们在特殊功能寄存器TMOD中相对应的控制位C/T来选择T0为定时器还是计数器。
TMOD寄存器.png
     第二步:当定时器T0设置为定时模式时,特殊功能寄存器AUXR中的T0x12决定定时器是12分频还是不分频。
AUXR寄存器.png
     第三步:设置定时器的工作模式
定时器工作模式.png
     第四步:设置TCON寄存器
TCON寄存器.png
     第五步:设置中断使能寄存器
中断使能寄存器.png

3、定时器的简单应用
     定时器的频率、周期如下图所示公式计算
定时器频率、周期公式.png
     最后,通过STC-ISP的定时器计算器功能可以便捷的生成想要的定时器哦。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-9 11:02:56 | 显示全部楼层
第十二集:计数器的使用
1、计数器的功能
     计数器可以记录高低电平变化的次数,例如光电编码器,可以通过计数器记录光电编码器在一段时间内产生的脉冲次数来确定电机的转速。

2、计数器的配置
     计数器的配置流程与定时器类似。

3、keil中的0xFD问题
     在keil软件的8051和80251编译器版本中,字符串不能带有0xFD编码的汉字,否则在编译时会跳过0xFD而出现乱码,解决办法就是在带有0xfd的汉字后面增加一个0xfd。另外,keil项目路径名也不能含有带0xFD编码的汉字。
0xFD问题.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2024-10-18 22:14:02

1

主题

16

回帖

95

积分

注册会员

积分
95
发表于 2024-9-16 11:23:36 | 显示全部楼层
第十三集:简单多任务处理
1、应用模块化编程
     模块化编程是指将一个程序工程分成许多个源文件(.c 文件和 .h 文件),每个 .c 文件可以被称为一个模块,每一个模块都有其各自的功能,而每一个.h文件则是声明该模块,相当于功能说明书   模块化编程在嵌入式中为必须要掌握的技能。在写完一个函数后需要对其添加函数头加以说明。
     修饰符extern的作用:如果在一个a.c文件中定义了一个变量int v,需要让b.c文件直接访问int v变量,则需要使用extern函数。extern用在变量的声明前,用来说明“此变量实在别处定义的,要在此处引用”
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 09:29 , Processed in 0.158295 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表