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

视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版

   火... [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-22 17:30:53

27

主题

163

回帖

2116

积分

金牌会员

积分
2116
发表于 2023-5-22 19:13:53 | 显示全部楼层
第五集打卡:
这集主要学习了C语言的一些基础内容,如调试输出的printf(),各种字符类型,如最常见的%d,%f,%u等等,还要就是数据类型,如char,int,long等等,而又再细化为有符号和无符号型,如signed int,就是有符号整形,数据长度不变,占用字节不变,有正负值,如unsignd int就是无符号整形,就是没有负数的,也是数据长度不变,占用字节不变
还有就是一个级别的数据运算符,=,+,-,*,/等,也有逻辑判断的,如==,!=,>=,<=等,还要数据类型的与(&&)或(||)非(!),再延伸就是,按位或|=,按位与&=等等,还有一个左移<<=,右移<<=,这个在涉及流水灯的时候也是一个运用
然后还有就是ascii码的认知,这个并不是stc公司定义的,也不是单片机系统定义的,这是国家通用的转换码
还要就是二进制、十进制、十六进制的转换,其实还要一个是八进制,基本上用不到,有涉及到cbd格式的时候,才用的比较多
回复 支持 反对

使用道具 举报 送花

0

主题

6

回帖

34

积分

新手上路

积分
34
发表于 2023-5-22 21:39:16 | 显示全部楼层
打卡。二十二集学习了CDC串口通信,知道如何配置来实现CDC串口通信
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-22 17:30:53

27

主题

163

回帖

2116

积分

金牌会员

积分
2116
发表于 2023-5-22 21:49:35 | 显示全部楼层
第六集打卡:
这集主要跟着冲哥学习了延时函数和模块化编程
先说一下延时函数,这个是消耗时钟周期去进行延时的,缺点就是:在延时期间无法执行其他程序,然后精准性比较差,好处就是方便,如果我们要精准的话,还是要采取定时器的方式,这个在stc官方烧录软件上就有这个选项,选择需要的定时器然后选择1T还是12T模式,并输入每次的延时就可以;
再说一说模块化编程,模块建议是保存在工程文件的同一目录下,其中每一个模块都需要.c和.h文件,比如我们需要弄一个delay延时函数,我能就会用到数据类型,假设我们还是采用U16的情况下,我们就还需要再该工程里引用相关的头文件,我觉得模块化最大的优点就是移动性强,后期不用反复输入,我加在别的工程里,只要引用一下,就能使用这个函数
再说一下课后作业
while(1)
{
    P60=0;
    delay_ms(500);
    P60=1;
    delay_ms(500);
    P60=0;
    delay_ms(500);
    P60=1;
    delay_ms(500);
    P60=0;
    delay_ms(500);
    P60=1;
    delay_ms(500);
    P60=0;
    delay_ms(1500);
    P60=1;
    delay_ms(1500);
    P60=0;
    delay_ms(1500);
    P60=1;
    delay_ms(1500);
    P60=0;
    delay_ms(1500);
    P60=1;
    delay_ms(1500);
    P60=0;
    delay_ms(500);
    P60=1;
    delay_ms(500);
    P60=0;
    delay_ms(500);
    P60=1;
    delay_ms(500);
    P60=0;
    delay_ms(500);
    P60=1;
    delay_ms(500);
}
当然,这是一直比较简单的手段,那如果非常多的时候呢,那手都得打断,我们可以采取函数,如do while,或者for函数的方式
不仅提高了代码可读性,还提高了编程效率
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-22 17:30:53

27

主题

163

回帖

2116

积分

金牌会员

积分
2116
发表于 2023-5-22 23:00:51 | 显示全部楼层
第七集打卡:
按钮消抖:其实有两个办法,一个是软件消抖,也就是检测到按下的时候,延时有一段时间,再检测是否被按下,如果是就执行程序,还有一种办法就是硬件消抖,其实就是焊接一个瓷片电容,起到滤波的作业
为什么要消抖,主要是单片机反应是很快的,如果不消抖可能会存在执行两次程序的情况
if函数:if函数里有一个经常犯的错误就是if(KEY=0);这个是错误的函数,只有一个=,那是赋值的意思,两个等于才是判断的意思,要写成if(KEY==0);
if不仅仅仅是if,还要else,也还有else if,else就是否则,else if 就是再如果
状态取反:也就是取反电平状态,原本是1的就变成0,是0的就变成1,但还是那句话,程序反应时间是在几微秒的,所以说,我们要让他锁死,也就是while()判断,确保按下一次就是取反一次,而不会一直取反
按键也可分为按下后执行,也可抬起后再执行,其实很简单,就是锁死在后,程序在前就是按下执行,锁死在前,程序在后就是抬起后执行
LED等左移再回来左移,可以采用检测取判断,然后再赋值,还有一个办法,就是采用数值的形式,先把0xfe,0xfd,0xfb等等的输入到数组里去,然后再配合if函数和一个变量也能实现循环的效果
然后关于冲哥中途说的,怎么样中途的时候实现右移,我觉得最优方案应该就是采用数值的方式,左移是变量++,右移就是变量--
流水灯的话,那就直接for函数再加上判断就好啦
再说说课后作业,切换led不同的输出效果,其实就是数值输入比如0xfe,0xa5,0xe3等等,再多不怕,就能实现不同的效果了,而且从某种意义上来说,这个数值没跑完的时候,是不会有重复的效果的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:142
  • 最近打卡:2025-05-07 10:11:07

3

主题

64

回帖

1200

积分

金牌会员

积分
1200
发表于 2023-5-23 08:54:22 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:260
  • 最近打卡:2025-06-21 08:22:46
已绑定手机

29

主题

776

回帖

3472

积分

超级版主

积分
3472
QQ
发表于 2023-5-23 10:41:45 | 显示全部楼层
冲哥视频真的精品!打卡学习送实验箱啦~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-22 17:30:53

27

主题

163

回帖

2116

积分

金牌会员

积分
2116
发表于 2023-5-23 14:39:14 | 显示全部楼层
第八集打卡:
有源蜂鸣器和无源蜂鸣器的区别就是,前者仅需输入电平就可以发声,后者需要输入pwm信号才可以发声
这上半段主要还是对if函数进行了强化练习,关于课后作业,我是这样理解的,还是采用if函数的形式,只要启动这个程序后,赋值一个变量为1,然后其他按键按下的时候,不仅检测是否按下,还检测这个变量是否为1,如果为1就不执行,直到我们再按下按键3对他进行置零,当然,会有人问,这个一个按键能进行连个操作,其实就是if和else的配合啦、
然后下半段就是关于课后作业的讲解,确实也是和我描述的思路类似
其实我觉得,学习单片机,学习C语言,就是一个逻辑的问题,只要逻辑通畅,其实就已经入门了,要是没有逻辑性,哪怕你对单片机再了解,对C语言再熟悉,都做不出好的产品来
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:142
  • 最近打卡:2025-05-07 10:11:07

3

主题

64

回帖

1200

积分

金牌会员

积分
1200
发表于 2023-5-23 16:10:29 | 显示全部楼层
24集打卡,https://www.stcaimcu.com/forum.p ... =2110&pid=15968

发现手册的比较器例程上升沿下降沿注释标反了
QQ截图20230523155307.png QQ截图20230523155514.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-22 17:30:53

27

主题

163

回帖

2116

积分

金牌会员

积分
2116
发表于 2023-5-23 16:59:07 | 显示全部楼层
第九集打卡:
第九集开始学习数码管的操作了,其实点了数码管和点亮LED是一样的操作,只不过还是采用常规的P6=0xff可能有些被动了,所以采用了数组的形式,我们可以按照数码管的0-9的显示,在数组了0-9的位输入对于的十六进制数,这样便于我们变量++,而且在这一块,com口采用了三极管控制,极大程度上增加了io口的带载能力
如果要点亮多个数码管,显示不同的内容,我们就要用到动态刷新,其实就是利用了人眼的暂留效应实现的,如果采用高速相加拍摄的话,我们会发现,其实是一个个点亮的,只不过太快了,让我们看起来就像一起点亮一样,如果只是点亮4个数码管的话,其实可以不用采用动态刷新,因为我们的io口足够的多,完全可以一组带一个,但这样就太浪费io口的资源了,毕竟这只是在做试验,如果是做项目的话,这样就会增加很多的成本,不过也可以采用595芯片,减少io口的资源浪费
课后作业一:H:0x89,J:0xf1,L:0xc7,n:0xc8,o:0xe3,P:0x8c,U:0xc1
课后作业二:其实就是数值循环而已,到九了就置零,然后蜂鸣器响其实就是按键里的程序,按下的同时,暂停循环,然后判断数值里的变量值是多少,然后赋值给蜂鸣器的io口
回复 支持 反对

使用道具 举报 送花

0

主题

1

回帖

38

积分

新手上路

积分
38
发表于 2023-5-23 20:26:29 | 显示全部楼层
跟着冲哥学stc 冲冲冲
回复 支持 反对

使用道具 举报 送花

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

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

GMT+8, 2025-6-22 18:15 , Processed in 0.250521 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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