找回密码
 立即注册
楼主: fcxqcz***

看冲哥的视频,打卡

[复制链接]
  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-20 18:13:36 | 显示全部楼层
    第七集 第二讲 按键点灯
    使用左移运算符,实现按一次按键左移一个LED点亮
    ------------------------------
    数组
    类型 数组名[数组长度];
    把LED每次变化需要的样式,放到数组里面,把数组中的每个数依次给P6显示。
    在keil里面竖着选择。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-20 18:57:02 | 显示全部楼层
    第八集 蜂鸣器
    有源蜂鸣器,无源蜂鸣器
    用一个IO口通过SS8550三极管控制蜂鸣器
    ----------------------------
    小需求,模拟电磁炉的部分功能
    两个按键,按键1开关机,按键2,选择运行的功能,8个LED,每个LED表示一个运行功能,一个蜂鸣器。
    两个按键,按键1开关机,按键2,选择运行的功能,8个LED,每个LED表示一个运行功能,一个蜂鸣器。
    1、按下按键1,蜂鸣器响一下,8个LED全部亮一下,表示开机。
    2、开机后,按下按键2,蜂鸣器响一下,8个LED其中一个亮,再按按键2,蜂鸣器响一下,8个LED下一个亮,原来亮的熄灭,依次。。。
    3、按下按键1,蜂鸣器响一下,LED全部熄灭,表示关机。
    ---------
    这个小需求类似于上一集的按一下按键,点亮下一个灯,上一个灯熄灭。
    使用模块化编程,把小需求单独写到c和h文件中。
    --------------------
    用bit 定义一个位的变量,来记录开机关机状态。
    用一个u8定义一个变量,记录选择运行的功能。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-20 19:24:05 | 显示全部楼层
    第八集 第二讲 蜂鸣器
    在上一讲的基础上,增加按键3。
    按下按键3后启动由按键2选择的功能,选择的LED闪烁,按键2不能再对选择功能做操作。
    再按键3关闭启动的功能,恢复按键2能选择功能的操作。
    -------------
    按键3按下,启动功能后,按键1需要按的久一些才能关机,原因是LED闪烁时占用了时间,没有及时运行到按键1检测的地方。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-20 20:24:31 | 显示全部楼层
    第九集 数码管的静态使用
    数码管就是很多LED按照一定样子排列起来,封装到一起。
    共阳极数码管,把所有正极接到一起。共阴极数码管,把所有负极接到一起。
    用Excel计算每个数字对应数码管的编码。
    -------------------------
    数码管的静态显示,只对一个数码管操作。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-20 21:01:13 | 显示全部楼层
    第十集 数码管的动态显示
    动态显示,是多个数码管循环显示,在短时间内循环一周,在人眼分辨不出来的是一个一个数码管挨个亮过时,人眼看来就好像都在显示。
    循环一周的时间在20ms以内。
    -------------------------
    8个数码管,一个数码管称为一位数码管。
    同时把8位数码管点亮,每个数码管上显示相同的内容。
    -------------------------
    动态显示数码管
    一个数码管显示1ms时,看到所有数码管一起显示,
    把显示时间加长,可以看到挨个数码管一个一个显示。
    -----------------
    数码管显示小数点,课程的方法是把带小数点的码表也写道数组里面。
    还有一个方法,在需要小数点的地方数码管码表的值与0xEF,这样dp就是0,其他数值不变。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-20 22:22:57 | 显示全部楼层
    第十一集 定时器的使用
    在确定时间内对某些功能操作,更精确的时间,并且不会被其他功能影响,这样就用到了定时器。
    定时器有定时功能和计数功能。
    定时器中断,每个一段时间打断主函数的程序,把定时器内容运行完后,再回到主程序运行。
    -----------------
    T0,设置为定时器。
    看STC32G数据手册,定时器章节。
    T0设置的寄存器在TMOD中T0_C/T设置定时器0是定时器功能 数据手册14.2.2
    分频,不分频时,每来一个时钟定时器计数一次,12分频,每来12个时钟定时器计数一次。
    分频的设置在T0x12来设置,在14章开始就有介绍。
    T0_M1 T0_M0 两个寄存器确定定时器是16位和8位,是自动重载和不重载。
    TF0 定时器T0溢出中断,定时达到设定值后,自动置一。
    TR0 开启定时器,置一后定时器开始工作。
    EA 总中断开启。
    ---------------------------
    定时器时间计算看数据手册14.2.3
    T0 工作在 1T 模式(AUXR7/T0x12=1) 时的输出时钟频率 =(SYSck)/(TM0PS+1)/(65536-[RL_THO, RL_TLO])/2
    T0 工作在 12T 模式(AUXR7/T0x12=1) 时的输出时钟频率 =(SYSck)/(TM0PS+1)/12/(65536-[RL_THO, RL_TLO])/2

    输出的时间=1/输出的时钟频率 单位S

    ------------------
    用STC-ISP 生成定时器初始化函数
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-21 09:34:27 | 显示全部楼层
    第十二集 计数器
    每次引脚有一个脉冲输入,计数器+1。是定时器的另一种用法,定时器的脉冲来自系统时钟,并且时钟一般是固定不变了,计数器的脉冲一般来自引脚,也可以来自其他地方,计数器的脉冲不固定。
    计数器的脉冲可以上升沿计数,也可以是下降沿计数。
    计数超出最大值后。用一个变量在计数器中断中 +1,变量每次 +1 实际上是 65536。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-21 12:05:53 | 显示全部楼层
    第十三集 简易多任务处理
    先把每个功能都分到对应的c和h文件中
    h文件要有防重复包含的宏,
    #ifndef xxx
    #define xxx
    h文件中的内容
    #endif
    在c文件中定义的变量,要在其他地方使用
    要在h文件中用extern 关键字声明
    extern 数据类型 变量名;
    变量的声明一定不能有初始化。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-21 14:47:49 | 显示全部楼层
    第十三集 第二讲 简易多任务处理
    51中可以位寻址的变量定义
    数据类型 bdata 变量名=初始化值;
    然后就可以用sbit把上面定义的变量分解成一个一个位进行操作,例如
    uint8_t bdata LED_DATA=0XFF;
    sbit LED0 = LED_DATA^0;
    ....
    如果其他地方使用
    estern bit LED0;
    声明,这里不用sbit
    按键的功能
    1、消抖 2、按下瞬间 3、松开瞬间 4、长安3秒
    我认为按下状态不用课程中讲的那么多,需要的状态,未按下、单击、长按、三种状态就够用了。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-15 21:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    40

    回帖

    154

    积分

    注册会员

    积分
    154
     楼主| 发表于 2023-5-21 15:11:05 | 显示全部楼层
    第十三集 第三讲 简易多任务处理
    把按键写成一个单独的模块。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-13 08:06 , Processed in 0.064276 second(s), 62 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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