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

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

 荐  火... [复制链接]

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-5 10:19:44 | 显示全部楼层
[打卡第二集]——@圆
第二集:了解基本外部硬件,这个了解一下即可,需要编写代码的时候再去了解一下该硬件的特性即可
回答最后问题:该试验箱外部硬件包含 数码管、LED灯、NTC热敏电阻、18820、按键
最直接的就是温度控制器,数码管显示温度,ntc检测室内温度,达到一定温度遥控空调开启制冷模式(家里的格力红外协议需要自己去一个一个解码,还是比较麻烦的)
回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-5 10:32:49 | 显示全部楼层
[打卡第三集]——@圆
第三集:开发环境搭建
这里我是先装的C51再装的C251再装mdk,全部装在同一个keil里。装完之后一个一个填上密钥。stc-isp导入仿真芯片包,这里最好是下载最新版的,老版本可能会缺少你需要的芯片包。编译的时候会报错说中断的问题,在官网搜“拓展Keil的C代码中断号”,安装完解决问题
然后是pdf的一个阅读,我是把pdf截成一块一块的,太多页会溢出,喂给千问,有问题让AI给出意见。建议是用到哪里的外设就投喂那一块的pdf,喂多了会有幻觉
回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-5 12:32:35 | 显示全部楼层
[打卡第四集]——@圆
第四集:建立工程点亮第一个灯
原理不做解释,视频很详细,这里根据库函数点亮lED,视频演示的是第一种直接配置寄存器。 我这个是库函数两种配置,一种是stm32结构体配置,另一种是将寄存器封装后的配置和视频配置没啥大区别。
方法1结构体配置开销会比直接操作寄存器慢


  1. #include <STC32G.H>
  2. #include        "STC32G_GPIO.h"
  3. //该程序将P03配置为低电平,点亮LED
  4. void LED_OFF_Init()
  5. {
  6.     GPIO_InitTypeDef GPIO_LED_OFF;
  7.     GPIO_LED_OFF.Mode = GPIO_OUT_PP;    // 设置推挽输出模式
  8.                 //GPIO_OUT_PP 推挽、GPIO_OUT_OD 漏极开路、GPIO_IO_PU 准双向、GPIO_IN_HIZ 高组输入
  9.     GPIO_LED_OFF.Pin  = GPIO_Pin_3;     // 选择P3 引脚
  10.    
  11.     GPIO_Inilize(GPIO_P0, &GPIO_LED_OFF); // 配置到P0端口
  12. }
  13. /*
  14. void GPIO_LED_config(void)
  15. {
  16.         //Px_MODE_IO_PU(GPIO_Pin_x)    //准双向口
  17.         //Px_MODE_IN_HIZ(GPIO_Pin_x)   //高阻输入
  18.         //Px_MODE_OUT_OD(GPIO_Pin_x)   //漏极开路
  19.         //Px_MODE_OUT_PP(GPIO_Pin_x)   //推挽输出
  20.         P0_MODE_IO_PU(GPIO_Pin_3);                        //P0.3设置为准双向口
  21. }
  22. */
  23. void main()
  24. {
  25.           // 系统初始化代码
  26.     WTST = 0;  //控制CPU读取程序存储器的等待时间,默认7,加快速度
  27.     EAXSFR();  //使能访问芯片内部的扩展SFR(XFR)区域
  28.     CKCON = 0;  //控制CPU访问外部数据存储器(XRAM)的速度
  29.                
  30.         LED_OFF_Init();
  31.         P03=0;
  32.                
  33.         while(1);
  34. }
复制代码

点亮图

点亮图

1-1LED.zip

76.54 KB, 下载次数: 135

工程文件

回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-5 17:58:49 | 显示全部楼层
[打卡第五集]——@圆
第五集:移植USB_CDC (有点麻烦的地方,最好是一步一步看完)
强烈要求stc官方在论坛添加视频播放倍速功能!!!!(实际上是有的,我没发现在右侧三个点哪里)
这块USB_CDC 算是一个比较亮眼的操作,一根数据线搞定还能打印数据,极大节约外围硬件的搭建成本,详细了解直接阅读stc32g.pdf第102页,视频是154页(我刚用的时候踩了不老少坑)
步骤如下:1.打开最新版本stc-isp软件 2.选择对应的芯片型号 3.点击 [收到用户命令后复位到ISP监控程序区] 4.选择usb(HID)模式,VID:34BF、PID:FF01  5.勾选[使用默认的内部自定义命令“@STCISP”][下次使用HID接口进行ISP下载]
程序资料这块的,尽可能的都参考试验箱的,在这个stc-isp软件内的范例程序在这个usb打印数据是有问题的(烧录完没弹出新设备,啥反应都没,我不知道是不是实验箱子做了其他设计,我只用最小系统是没办法使用。我不因该怀疑的,可能是晶振频率我没设置对,希望有人能解答)

这里照着视频做,怎么做都会出现无法找到 “stc.h”和“usb.h”,下载【教学视频配套附件】,手动添加这两个库
接着一堆报错
WARNING L14: INCOMPATIBLE MEMORY MODEL
MODULE:  stc_usb_hid_32g.LIB
MODEL:   XSMALL
这里点击魔术棒修改内存模型,点击魔术棒,点击Target,修改Memony Model 为 XSmall
接着可以编译了,但是有43个警告(全是usb.h内的函数,但是我不知道这个lib里面有些啥函数),这里直接设置忽略这些警告
方法:在 Keil 中,打开 Project -> Options for Target '...',选中 Device 标签页,勾选 Use Extended Linker (LX51)。然后切换到 LX51 Misc 标签页,在 Misc controls 输入框中填入 REMOVEUNUSED。此方法能自动移除所有未使用的代码段的警告

如果想知道程序有没有运行,点击usb-hid助手可以观察到有一个“STC、STC HID Demo”,设备管理器是看不到的,这个我不是很理解是为什么。
如果我你发现有设备,但是无法自动烧录,请你检查【char *USER_STCISPCMD = "@STCISP#";  //设置自定义下载命令】这里是否与你在stc-isp设置的一致,如果不移植就无法自动烧录,这里要注意

视频后半段使用cdc这块的,我不知道是啥原因啊,可能是我用的usb库是最新版的?添加[stc_usb_cdc_32g.LIB]会与【char *USER_STCISPCMD = "@STCISP#";】冲突,注释掉就正常了。
然后是这两行
// 在软件复位前,强制关闭USB功能
USBCON = 0x00;      // 清除USB设置
USBCLK = 0x90;      // 停止USB时钟
最新的usb库应该是自带,不用配置也能正常启动

这里建议stc在更新这些库的时候,在库上添加日期或者版本号!!!!名字一模一样怎么区分?

自动下载.zip

263.14 KB, 下载次数: 140

第4集下

回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-6 10:18:48 | 显示全部楼层
[打卡第五集上]——@圆
第五集上:实现串口打印数据Printf()
我也是没招了。我上一集不是使用最新的usb_cdc lib文件,需要注释char *USER_STCISPCMD = "@STCISP#";才能运行。
现在遇到的问题是,如果我使用最新的lib, printf_hid 函数缺少
换回视频附件内的usb_cdc功能正常了。
那么,如果你们做了修改,我怎么知道你改了什么。改了之后会不会有影响,改完之后怎么使用,这些文档去哪里看。



[打卡第五集下]——@圆
第五集下:运算符
这些没啥好说的,菜鸟教程里面有大把教程,还能直接编写程序无需搭建环境。

2-1USB_CDC - C语言printf.zip

147.69 KB, 下载次数: 133

回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-6 10:37:39 | 显示全部楼层
[打卡第六集上]——@圆
第六集上:LED闪烁
这里我通常是直接stc-isp生产一个延时函数,输入icr和延时时间,直接复制粘贴。
剩下的就都是C语言的基础了

[打卡第六集下]——@圆
第六集下:花式点灯
主要介绍模块化编程和函数之间的调用,让代码简洁清晰
回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-6 10:45:20 | 显示全部楼层
[打卡第七集上]——@圆
第七集上:按键点灯
视频讲解的是软件消抖,通过延时10us避开按键抖动误触发
硬件上一般并联100nf电容,就能避免减小抖动了
然后就是一些if else的嵌套

[打卡第七集下]——@圆
第七集下:按键点灯
主要就是统计按键按下的时间,通过变量记录下来,再接着判断是长按还是短按
回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-6 10:55:42 | 显示全部楼层
[打卡第八集上]——@圆
第八集上:蜂鸣器
这个我以前学习的时候,也是学蜂鸣器,在Proteus里面点点半天不响,后来才知道有两种蜂鸣器。当时也是给我极大的挫折,因为我的代码和人家的是一模一样的,为什么我的不响。
如果想制作那种八音盒,要用无源蜂鸣器,有源的很难听音调单一!
最好是通过三极管或者mos驱动,避免单片机直驱。

[打卡第八集下]——@圆
第八集下:作业
主要是一个拆解各个模块工作的逻辑
回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-6 11:56:55 | 显示全部楼层
[打卡第九集]——@圆
第九集上:数码管静态显示
数码管其实就是led塞在里面,按点灯的逻辑一个一个点亮显示字符,只需要判断是共阴还是共阳
一般采用数组将0-9这些字符定义为16进制数,整个赋值给8位io
静态驱动很占用io口,一个数码管就占用8个,好处是无频闪,抗干扰


回复

使用道具 举报 送花

7

主题

33

回帖

145

积分

注册会员

积分
145
发表于 2026-6-6 12:10:45 | 显示全部楼层
[打卡第十集]——@圆
第十集:数码管动态显示
通过切换公共端选择需要点亮的数码管和8位数据IO,快速点亮利用余晖效应,每增加一个数码管只需要多用一个IO

优点:节约io,缺点占用cpu,抗干扰差,手机拍摄频闪
推荐在实际项目使用MAX7219专门驱动
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-10 07:30 , Processed in 0.078146 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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