找回密码
 立即注册
查看: 1238|回复: 16

为32位8051实验箱-STC32G12K128实验箱打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-18 23:45:42 | 显示全部楼层 |阅读模式
本帖最后由 wskhsm 于 2024-7-18 23:45 编辑

       最近有点时间了,逛论坛时发现STC在送“STC32G12K128-实验箱-V9.6”,当然,是有条件地送,要看视频并打卡,这不我不就来了,先声明,我就是冲着这个实验箱来的,之前有幸在群里解答过姚总的一个问题,获赠过两片示波器PCB,后面也白嫖过开天斧和屠龙刀,有时做调试时侯会用到,但是嘛,我这个人比较懒,嫌插线麻烦,眼馋上了这个实验箱,外设多,有专门官方例程,有专门模块插口,平常用来做测试应该挺方便的。按规则来,要看15集视频写观后感,这样也好,温故而知新,而且也不像白嫖一样有心里负担,毕竟也是通过劳动所得(虽说咱脸皮厚,多少还是要点脸的),其实之前也有STC的回访,说他们有新的东西可以送,大概率就是这个实验箱吧,当时觉得不好意思就拒绝了,现在想想,大腿都要拍青了,如果上天再给我一次机会,我一定厚着脸皮给收了。言归正传,开始为实验箱而努力。

      看了第一集的视频,想起了我第一次学单片机时的场景,也没多久大概在两三年前吧,以前我对模拟电路稍微熟悉一点,对数字电路的了解基本上就是0和1,说白了就是个小白,当时是混音响论坛时,看到一位大佬开源了NJW1194前级音频处理器的代码,当时查了一下资料,各项指标都不错,评价也很好,于是想自已也做一个,但是有个问题,他的显示屏用的是VFD屏,一是我找不到一样的,二是外围元件多,咱不懂编程,调试麻烦。后来看到有别的大佬用OLED屏去做显示屏,我就想用OLED去取代VFD,虽说咱不懂编程,但是找找资料改一下应该不是很难吧?结果我是高估自已的能力了。没有经过系统的学习去研究程序真的是跟看天书一样,完全看不懂,没办法,只能从头学,上某宝买了一块开发板,里面送视频教程的那种,当时啥也不懂,只是因为那个大佬的电路里面用的是STC15,所以就买了一块普中STC8A8K64S4A12+89C52双MCU的板子回来,带视频讲解的。静下心来看完基础部分,总算是对51单片机有了一定了解,但是要改程序还是远远不够,只能一边学一边跟着做实验,说实话,那视频讲解,除了基础部分,其他的内容真的很一般,看完了我也是一知半解。一次偶然的机会,看到一位“金善愚”老师讲解51单片机的视频,那讲课水平真的是高,逻辑严密,条理清晰,说话行云流水又通俗易懂,特别是基础知识讲得很详细很直白,从此以后我就跟着他的视频一边学习一边实践,大概三个月左右吧,有一天我试着修改那个项目的时侯,我发现OLED屏上面能正确显示参数了,通过按键调整屏幕上的参数也能跟着变化,那时起,我知道我快要成功了,从此单片机也算是入门了。

      说了那么多,其实我想说冲哥的一个说法我是非常赞同的,想快速入门单片,手上有项目是一个很好的方法,有项目就有想法,有想法就有方向。51入门我觉得并不难,有兴趣,有决心,有耐心,小学数学及格的应该都没问题,数学差的就别踩坑了,因为程序涉及到计算和逻辑推理,当然,只是个人之见,代表不了事实。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-19 00:03:35 | 显示全部楼层
打卡第二集视频
第二集讲的是硬件,对我来说也是比较熟释的,之前玩模拟电路,面对的都是硬件,只不过跟模拟电路不一样的是,数字电路之间传输的不是连续变化的电压或电流信号,而传输有规律1和0两种电平状态,这跟比较器的的特性是一样的,要么高要么低,不同器件之间的连接还要通过通信协议来协调。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-19 01:06:21 | 显示全部楼层
打卡第三集视频
第二集讲的是开发环境的搭建,其实就是一个编程软件和一个下载程序到单片机的软件,怎么下载安装里面说得很清楚,不愧是保姆级,使用STC难免会在8位和32位芯片之间来回跳,所以建议KEIL C51和KEIL C251都装,我是默认路径安装,先装KEIL C51再装KEIL C251。另外吐嘈ISP软件,下载工具的设置页面的选择没有记忆功能,比如说“在线下载完成之后持续给目标芯片供电”这个选项,我每次打开ISP软件的时侯都忘记把钩打上,等到下载完程序之后才发现芯片没上电。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 00:45:31 | 显示全部楼层
打卡第四集视频
      相比较STM32,我觉得还是51的位操作比较方便灵活,可以直接定义某一管脚,简单明了,STC8H之后的单片机IO口工作模式默认都是高阻,如果忘记设置IO口工作模式很容易翻车,所以写程序的第一步都是先根据IO口的功能定义好IO口的工作模式,STC的下载软件里有专门的IO设置软件,不用去翻手册去计算了,挺方便的,可惜的是,以前的软件可以通过数值反查IO状态,现在的没有了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 01:16:58 | 显示全部楼层
本帖最后由 wskhsm 于 2024-7-21 14:49 编辑

打卡第五集视频
      虽然单片机运行时用的都是二进制,实际上编程时我们用得比较多的还是10进制和16进制,二进制我一般都是设置寄存器参数时使用,而且我比较懒,都是用WINDOWS自带的计算器去转换的,能不动脑尽量不要去动脑。二进制转10进制有个好像叫8421大法比较好用。

     我平常喜欢用计算器,但是基本原理还是要懂,与(&)跟或(|)都是针对2进制的计算符。
1.与运算(&)
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0;
2.或运算(|)
参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0;   0|1=1;   1|0=1;    1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1;
3.异或运算(^)
参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0;   0^1=1;   1^0=1;   1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

以上内容来源于网络,我只是个搬运工。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 14:47:48 | 显示全部楼层
本帖最后由 wskhsm 于 2024-7-21 15:46 编辑

打卡第六集视频
      几乎所有的单片机教程的开头都离不开点灯、闪灯、流水灯,这个没毛病,与最直观的方式去了解单片机的运行原理,闪灯、流水灯都离不开延时程序,延时程序又分软件延时和定时器延时,软件延时就是一直让CPU不停运算,以消磨时间的方式达到延时的目的,有点像磨洋工,程序简单的话影响不大,程序对响应速度有要求的话就不太适合,一般我都是用在程序头,进循环之前,其他地方都是用定时器,毕竟现在STC的定时器都比较多,合理分配一下都是够用的。while()跟do while按我的理解是一个是先判断再执行,一个是先执行再判断。函数调用很简单,最常见的问题就是忘记声明,我就是这样。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 17:18:13 | 显示全部楼层
本帖最后由 wskhsm 于 2024-7-21 19:24 编辑

打卡第七集视频
      按键程序是一个非常常用的程序,我对按键程序的要求是稳定可靠,占用资源少。稳定可靠就是能准确判断出是否有按键按下,也就是消抖,消抖分硬件消抖和软件消抖,硬件消抖通常做法是在按键上并一个103-104的小电容,利用电容两端不能突变的原理实现消抖,也有通过施密特电路去实现硬件消抖,但是电路复杂,一般情况下用不上。软件消抖是通过延时避开按键按下时的不稳定阶段实现消抖,我通常都是软硬结合,两者同时使用。占用资源少就不能用阻塞延时,可以用非阻塞延时,状态机或定时器,我一般用定时器,占用资源少,响应迅速。
     关于流水灯,我这里还有另外一个写法:

        while(1)
        {
                for(i=0;i<8;i++)
                {
                        P6 = ~(0x01 << i);
                        Delay500ms();
                }
        }

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 20:18:56 | 显示全部楼层
打卡第八集视频
      这一集主要是讲按键菜单的构建,按键按下后实现的功能,这个需要先想好框架,再按框架去编写程序实现功能。蜂鸣器其实是个电磁元件,电磁元件有个特性,就是断开的时侯会产生一个比自身供电高很多的反向电动势,容易损坏电路,所以两端加个二极管吸收反向电动势,达到保护电路的目的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 20:57:18 | 显示全部楼层
本帖最后由 wskhsm 于 2024-7-21 21:00 编辑

打卡第九集视频
数码管显示数字其实就是通过点亮不同的段码来显示,将不同数字的段码从0开始由小到大放入数组中,调用时数组时,使用相应的数字,即可以调出相应的段码值,将段码值赋值给端口,就可以显示出相应的数字,当然数码管的所有段码引脚必须要接同一个端口。我都忘记了数码管还分静态和动态了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-02-28 16:59:12

5

主题

26

回帖

277

积分

中级会员

积分
277
发表于 2024-7-21 21:38:04 | 显示全部楼层
打卡第十集视频
      数码管的驱动方式分静态和动态两种,常用的一位数码管一般都有9个引脚,一个位选引脚和8个段选引脚,要驱动数码管,就必须把这些引脚分别接到不同的IO上(位选可以不接IO,接按可阴共阳高电平或低电平),所以一个静态数码管需要占用8个IO口,N个则需要占用N*8个IO口,驱动多位静态数码管占用的IO口太多了,所以动态数码管就是来解决这个问题的。动态数码管的单个数码管引脚跟静态数码管是一样的,不同是动态数码管同名段选引引脚是接到一起的,位选引脚是独立,通过位选引脚分时选择方式,即可在不同的数码管上面显示不同内容,只要位选切换速度足够快,即可实现人眼中同时点亮的效果。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 03:21 , Processed in 0.121415 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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