前面三课比较简单,一口气学完了,也一口气把学习心得发一下。
第一课 序言 单片机开发是一项能对综合知识能力有很高要求的项目,而且是跨学科。开发比较辛苦,但也能学到很多知识。 展示了基于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宏定义行,这个容易忘. |
|
|
后续的课程明天继续听讲。
|