找回密码
 立即注册
查看: 202|回复: 0

学习打卡 - 《Ai8051U教学视频》学习心得一到九课

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-06 13:56:12

7

主题

10

回帖

269

积分

中级会员

积分
269
发表于 2025-1-17 09:59:27 | 显示全部楼层 |阅读模式
前面三课比较简单,一口气学完了,也一口气把学习心得发一下。

第一课 序言
单片机开发是一项能对综合知识能力有很高要求的项目,而且是跨学科。开发比较辛苦,但也能学到很多知识。
展示了基于8051U的一些高级功能,通过这些实现的功能展示了8051U的强大计算能力和配套的软硬件的良好支持。
相比我之前使用89系列做的屏,8051U速度确实快了很多。
另外很想知道频谱FFT分析是由MCU采集电脑计算的,还是MCU采集计算的电脑只是显示。

第二课 硬件工具介绍


对于我这种不是新手又不是高手的菜鸡来说这一课还是比较简单的。
大部分的软件都已经有了,中断扩展还是比较实用,已下载使用。我个人一般不喜欢使用中断,除非有很高的实时要求的部分。
有PJ接口和驻极体还是比较好的,对于我这种音响技术爱好者来说可以做一些基于音频的实验开发,非常的NICE。
对于有电解电容情结的人来说还是希望安装几个电解电容点缀一下。
建议:1.可以做些排针方便外部资源扩展;
    2. 空余的PCB板上可以考虑预留一些功能性焊盘,比如I2S D/A芯片,ROM芯片,音频AMP芯片等;
   3. 24C02太小了,可以考虑容量大点的,或做个空焊盘留给使用者自己添加。可以平衡成本和功能。

    4.可考虑增加一个DC005接口方便外接供电。

第三课 点亮第一颗LED

讲得很详细,确实非常适合入门学习。特别是讲了一些代码编写规范,从开始就培养好的编程习惯。
要记得配置I/O模式,我自己写了一个函数,以后复制粘贴就行了。
总的来说这节课相对简单,基本都掌握了。由浅入深继续学习。
第四课 不停电下载

不停电下载确实很实用,特别是对开发人员来说,不用频繁的去操作。特别是这种手把手的教学很好,完全不用自己思考,跟着做就行了,大赞。


但是可惜的是我按照视频做出来后MCU没能出COM口,也不能实现视频的功能,不知是不是因为板子不同的原因。
下载后系统无法识别。我是USB直连到MCU的P3.0和P3.1R的。上电时按住P3.2开关可以进入USB模式,下载了程序后就不行了,代码也跑不起来。如果不用USB库代码,下载代码后都能正常运行.

1.系统不能正确识别MCU模拟的USB
2.以下是项目配置.

3. 代码很简单,就是利用定时器4让P0驱动LED累加亮起来.

#include<STC8051U.H>
#include<intrins.h>
#include"stc32_stc8_usb.h"
char*USER_DEVICEDESC = NULL;
char*USER_PRODUCTDESC = NULL;
char*USER_STCISPCMD = "@STCISP#";
voidsys_initial()
{
    P0M1 = 0x00;
    P0M0 = 0xff;
    P3M1 = 0X00;
    P3M0 = 0X00;
    P3PU = 0xff;
    P_SW2 |= 0x80;
    //EAXFR = 1;
    P0 = 0x00;
    WTST = 0x00;
    P4M1 = 0X00;
    P4M0 = 0X00;
}
voiddelay50ms(void) //@22.1184MHz
{
    unsigned long edata i;
    _nop_();
    _nop_();
    i = 276478UL;
    while (i) i--;
}
voidtime4_init(void)  //10MS @ 24MHz
{
    T4T3M = 0X00;
    ET4 = 0;
    T4IF = 0;
    T4L = 0XE0;
    T4H = 0XB1;
    TM4PS = 0X00;
    T4R = 1;   
}
voidmain()
{
    unsigned char t=0,i=0;
    sys_initial();
    delay50ms();
    usb_init();
    while (DeviceState != DEVSTATE_CONFIGURED);
    IE2 |= 0x80;
    EA = 1;
    time4_init();
    while(1)
    {
       _nop_();
       _nop_();   
       if(T4IF)
       {
           T4IF=0;
           i++;
           if(i>=254) i=0;
       }      
       if(i==50)
       {
           i=0;
           t++;
       }
     if(bUsbOutReady)
        {
           USB_SendData(UsbOutBuffer,OutNumber);              
            usb_OUT_done();
        }
       P0 = t;
       _nop_();
       _nop_();
    }

}
第五课 C语言基础

加深了对printf的理和对USB库的运用。
课末后的总结和提醒很好,方便抓住要点,加深记忆。

第六课 输入输出

GPIO看似简单其实也是暗藏玄机,不小心就会出很多BUG。特别是和外设元件组合使用时,对模拟电路要有比较深刻的理解才能制作出稳定可靠的产品。
按键的消抖也是一门学问,要做到既不影响程序运行又能可靠的采集按键信号也是很不容易呢。我个人不喜欢使用软延时,对于物理按键还是比较热衷硬件消抖,比如经典的555硬件消抖等。不过现在市场卷得很,产品做的太匠心了成本降不下来,消费者才不关心这些技术细节呢,让人好生烦恼。
各位高手有什么好的消抖方案还望不各赐教。

第七课 定时器中断

开篇的插图很温馨。

定时器我喜欢用查询法,除非实时性有特殊要求的场合。
我们是心有灵犀吗,视频最后的+功德小作业居然被我提前实现了。

第八课 定时器周期性调度任务

开始时的关于上次课程的错误总结分析很实用,特别是对于我这种小白来说。关于中英符号错误的问题,推荐使用针对代码优化的字体,可以明显的区分中英符号,数字1和字母l等。我主要使用DejaVu 和Hack,有需要的可以去网上下载来试试。
结构体数组的周期性任务调度。这个还是很实用的,加深了对结构体结合数据来分配时间性任务调度的认识和运用。
这节课总的来说比较基础,所有知识点都已经掌握了。

第九课 数码管

很喜欢数码管,一个没有数码管的单片机产品是没有灵魂的。最喜欢的是静态数码管,除了成本高以外没啥缺点。动态数码管也是被卷成本的产物。
对595的时序讲解得很细致,有些以前没太注意的地方现在终于融汇贯通了.

接口协议功能以前都没注意,学到了。

还有一点之前没有注意到,使用这功能需要包含 "AI_usb.h", 同时打开usb宏定义行,这个容易忘.







后续的课程明天继续听讲。



问渠哪得清如许 唯有源头活水来
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 12:00 , Processed in 0.103142 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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