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

实验一:PRINTF_USB 直接输出数据

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-18 15:29:56 | 显示全部楼层
xhl*** 发表于 2025-9-17 12:18
《32位8051单片机原理及应用》学习心得

第1集 序言:

谢谢老师审阅、指导
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-18 15:30:47 | 显示全部楼层
第2集 硬件及工具介绍:

宣誓:那怕梦想让我们碰得遍体鳞伤,也要坚持勇往直前。
AI8051U实验箱硬件介绍:
一、试验箱介绍
Ai8051U 实验箱 V1.2
包括:
透明盒子×1个(从手柄处打开)      
开发板×1块
跳线帽(短路帽)×1组(千万别丢了,很有用)
USB-TypeA数据线×1条,用于烧录程序
可以从官网下载使用说明书。官网地址:深圳国芯人工智能有限公司-实验箱

PCB(单线路板)
PCBA:‌PCBA(Printed Circuit Board Assembly)指的是印刷电路板组件(元器件焊好后)。

二、关于开发板
官网下载Ai8051U芯片手册。

USB Link1D接口;与官方发行的下载烧录调试工具(建议另入手1个);见说明书:五
USBTypeA、TypeC烧录接口(与官方赠送的USB数据线接口配套的)
USB转双串口,也是TypeC的;STC自己的芯片(AI8H2K12U)波特率最高10Mb/S,在背面(可以替换市面上的CH340)。主流、主推。
89C52RC的UART案例选用的波特率是9600bits/8=1200Bytes/S

现在的PC基本都不再提供串口,因此需要使用一个USB转串口的芯片(CH340N、CH340K)来实现PC与单片机的通讯

TF卡插座,可以用于跑文件系统。
示波器BNC输入;需要表笔连接;右边红色电容用于调节波形(防止波形失真)。
立体声线路输出(上,接音响)、立体声耳机输出(下)
话筒录音
OLED屏接口(如指纹锁屏幕)
8路流水灯(二极管灯,是否点亮作为是否入门标准)
8位数码管(2个4位组成,时钟显示等)
TFT彩屏(彩屏,如猫和老SHU的动画 )
掉电检测电压调节,用于在掉电之前保存用户数据
红外接收头、红外发射。
矩阵键盘,横向用4个引脚、纵向用2个引脚控制8个按键。
板子上的按键都是轻触开关

ADC键盘,1个引脚控制16个按键。
T0、T1按键
INT0、INT1按键
电源按键、复位按键,ISP下载,参见说明书【电源按键】
QSPI / SPI Flash,猫和老鼠的照片存在这上面,MCU读取然后显示到TFT上(画面流畅,章显8051U的flash质的提升)。
LCD插口和对比度调节电位器(可调电阻器,调对比度)
RTC电池,TypeA掉电时为MCU RTC(Real-time Clock)供电
背面
32.768KHz无源晶振
2^15=32768

对比STC89C52RC用的是11.0592MHz 无源晶振,11.0592MHz能够整除UART的多种波特率所需的分母。如:11_059_200/9600=1152
或12MHz。
对于定时器,分频可选两种,分别是12分频和6分频,默认是12分频。系统的时钟频率为11.0592MHz时,按默认分频,计数脉冲的频率是11059200/12 Hz,因此一个计数脉冲的时间是12/11059200 s,大约是1.08us。

如果采用12MHz的晶振,一个计数脉冲的时间是12/12MHz=1us,(定时1ms,计数器加1000次,每次耗时1us)由此可见,对于没有UART等通信波特率需求时,使用12MHz的晶振对于计时更加精确。

24C02 EEPROM
可以用于防止MCU烧掉时,数据被毁。

EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦写可编程只读存储器)是一种非易失性存储器(断电后仍能保留数据),可以多次写入和擦除数据。EEPROM广泛应用于需要永久存储数据的电子设备中, 常用于存储设备工作模式、用户偏好设置、关键参数等信息。

STC89C52RC 时用的即是AT24C02CN,存储容量为2Kb = 256Bytes(2048位,256字节),采用I2C协议进行读写。

DS18B20 温度传感器
STC89C52用的是同款。

低成本、高精度。

无源蜂鸣器
SP3485,485通信
AI8H2K12U,USB转双串口。板子上用的像是第三款16脚的这种。立创商城¥2.3。
三、软件环境
1 安装keil
Keil官网下载C51\C251\MDK 5.43a;

Ai8051U视频教程第二集-硬件及工具介绍配套程序\02.硬件及工具介绍\网友推荐的Keil-C51C251环境搭建,其中C251和官网最新版是一样的;

有版权问题,需要破解。

已安装过keil C51(V9.61)C251(V560)、MDK(5.43a),同一文件夹里。
安装后快捷方式标注版本,以免混淆。

2 ISP
官网(https://stcai.com/)下载。ISP始终使用最新版即可!

下载最新版****AIapp-ISP-V6.95A 版
视频制作时的版本是6.94Y,bilibili视频更新时间2024-11-21 00:26:11,当前学习时间是2024/12/08 17:18
版本从旧到新依次是:94H、94X、94Y、95A

3 添加头文件


4 代码包
官网(https://stcai.com/)下载 试验箱代码包包含:

手册
原理图
Keil 中断拓展插件,文件 拓展Keil的C代码中断号.zip,解压,exe需要安装。
keil C51/C251 编译器只支持31以内中断号,超过31编译报错。热心网友提供的简单拓展工具,可将中断号拓展到254
四、ISP USB方式烧录程序
1、 使用 USB 线将实验箱与电脑进行连接

2、 打开 AIapp-ISP-v6.95A 下载软件

3、 选择单片机型号为“AI8051U-34K64”,打开需要下载的用户程序

4、 实验箱使用硬件 USB 接口下载。进入 USB 下载模式需要

先==按住==实验箱上的 P3.2/INT0 按键 / 接地
然后按一下 ON/OFF 电源按键 / 断电,接着松开 ON/OFF 电源按键/上电,
最后可松开 P3.2/ INT0 按键。
正常情况下就能识别出“STC USB Writer (HID1)”设备

5、 【打开程序文件】

6、选择的芯片型号、串口、CPU指令模式(默认为32-Bit的C语言)、IRC频率,点击 STC-ISP 下载软件中的【下载 / 编程】按钮。
主频main Fosc 选择与main.c里的定义的相同(24MHz)
谢谢老师
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-19 18:03:24 | 显示全部楼层
xhl*** 发表于 2025-9-18 15:30
第2集 硬件及工具介绍:

宣誓:那怕梦想让我们碰得遍体鳞伤,也要坚持勇往直前。

谢谢老师审核指导。
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-19 18:04:54 | 显示全部楼层
第三集 开发环境搭建和程序下载
摘要
1、AiCube-ISP-V6.96A 软件下载
2、STC32数据手册下载
3、PDF阅读器下载
4、学会PDF查阅数据手册
5、跟着手册搭建C251开发环境
6、第一个工程的编译与下载
详细步骤:
1.AiCube-ISP-V6.96A 软件下载
1.1.去官网www.stcai.com/gjrj下载最新版ISP下载/编程软件。
1.2.打开软件:输入单片机型号:STC32G12K128-Beta,并从软件下载STC32G手册(或者从官网:www.stcai.com/xpsc)。
1.3.下载一个PDF阅读器(比如福昕阅读器)
1.4.从ISP软件的示例程序中下载STC32G实验箱程序(或者从官网www.stcai.com/yyaf下载STC32G12K128源代码)。
1.5.从所有例程中选“跑马灯”
1.6.在ISP软件,添加型号、头文件到E:\keil v5,显示“添加MCU型号成功”
1.7.打开keil v5软件,并打开例程程序“跑马灯”的源代码C后缀
1.8.编译一下,0 error,0 warnning
1.9.由于用USB下载,禁止“先关闭USB驱动程序windows强制数字签名”
1.10.同时点击“安装STC-CDC/USB转串口驱动”。
1.11.点击“安装软件模拟USB下载驱动”,安装成功后,右下窗口里会显示“操作成功 及日期、时间”
1.12.打开实验箱手册,图片里显示与PC连接接口,用USB线连接。
1.13.打开STC-ISP下载软件。
1.14.选择单片机型号STC32G12K128,打开需要下载的用户程序。
1.15.实验箱采用硬件接口USB下载。
1.16.进入下载模式,先按下P3.2按键,接接着按下电源按键断电,再松开电源按键上电,待STC-ISP下载软件的扫描串口出现:USB-CDC转变为(hid1)usb-writer,说明已经通信连接,此时松开P3.2按键。(参考官方手册STC32GK12128实验箱-V9.4使用说明书)
1.17.打开跑马灯程序,时钟频率选择24MHZ(与主程序描述一致:#define main Fosc 24000000UL )
1.18.点击“打开程序”,选择项目文件中的objects->hex格式的主程序
1.19.点击“下载/编程”按钮,进行程序下载(如果右下窗口显示“单片机型号错误”需要重选单片机)
1.20.其他例程下载:如8段数码管显示等,都可以直接下载测试。
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-21 07:35:39 | 显示全部楼层
xhl*** 发表于 2025-9-19 18:04
第三集 开发环境搭建和程序下载
摘要
1、AiCube-ISP-V6.96A 软件下载

谢谢老师审核与指导
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-22 18:03:59 | 显示全部楼层
第四集 建立工程点亮第一颗LED
摘要:
1. LED点亮原理
2. 新建工程
3. 点亮第一个LED
4. 实现自动下载工程
详细操作步骤:
1. LED点亮原理
1.1. LED二极管的简单实验:手动通过导线将电池正极、负极分别与二极管正极、负极连接,二极管点亮。揭示了二极管工作的本质(正负极绝对电压值的差值达到二极管导通阈值)。在二极管正负极两端,分别接直流电压表,清楚显示2个电压值,由此计算出二极管两端差值,在二极管导通阈值范围内点亮,如果未达到不能导通就不能点亮,超过则有可被击穿而烧毁。
1.2. 单片机系统,二极管的负极连接的单片机GPIO端口,输出低电平,二极管的正极通过三极管连接VCC电源(通常+5v左右),此三极管基极连接单片机端口,输出低电平,二极管灯泡会通电发光。
1.3. 通过二进制01直接控制某一个端口,如P3.2=1。也可以用16进制控制某个系列端口,如P3=0X64(P3.2=1,其余P3.0=P3.1=P3.3=P3.4=P3.5=P3.6=P3.7=0)
2. 新建工程:
2.1. 跟着手册做工程《STC32G12K128实验箱V9.4》:
2.1.1. 新建keil v5项目。
2.1.2. 跟着手册,摘录原案例程序,要求代码编写规范,保存代码文件格式:Demo.c
2.1.3. 打开:project菜单中\new uVersion Project ,
2.1.4. 在目录文件夹中e:\leil_v5\projects\0.Demo.c,1件名:Demo
2.1.5. keil 软件配置中:select  Device for Target 1
2.1.6. Device选填:STCmcu Database,在下面窗中中可以看到:STC 的所有MCU数据库
2.1.7. 选择单片机型号:STC32G12K128 series,点击“ok
2.1.8. 这里没有提示:Copystarlup 251,Asmto project Folder and Add File to project?,可以不用管。
2.1.9. 汉字编码语言标准按GB2312
2.1.10. 代码缩进4字节设置;TAB Size
2.1.11. 所有代码书写,都必须是在英文模式下进行的。
2.1.12. keil_v5软件中,新建项目文件:New project file
2.1.13. 右击“Source group 1添加源代码文件Demo.c”,打开“source group 1”,可以看到目录下已存在添加的文件。
2.2. 按手册要求进行源代码编程:
2.2.1. 注意代码书写:关键词要求小写,写完以后变成红色(如果写完以后变成黑色,说明有问题),后面P0M1=0X00,其中“X”大小写均可以。
2.2.2. 主函数的书写:要求都是小写。
2.2.3. 演示程序代码如下:
Sfr P0 = 0X80;
Sfr P0m1 = 0X93;
Sfr P0M0 = 0X94;
Void main()
{
    P0M0 = 0X00;
P0m1 = 0X00;
While(1)
{
P0++;
}
     }
2.2.4. 代码编写完成,打开keil v5软件:options for target target...
2.2.5. Create executable:objects \Demo,勾选“create HEX files,HEX format:选择:HEX-386
2.2.6. 编译一下,0 error0 warning。同时输出窗口提示:
2.2.6.1. creating hex file:.\objects\Demo
0 error 0 warning”说明编译成功。
3. 点亮第一个LED
3.1. 详细步骤:
3.1.1. 思考led为什么不亮?    引脚不对
3.1.2. 怎样控制单独的一个引脚?   Sbit P00=P0^0;  //选择P0.0
3.1.3. 怎样控制这个引脚输出电平?  P00=0;  //在主函数中初始化P0.0输出低电平(P00=1 输出高电平;
3.1.4. 书写规范:一行一句,大括号缩进(需要keil设置),缩进4格,注释完整
3.1.5. 注释://”:单行注释;  /*  */”:多行注释(字体变绿色)
3.1.6. 搜索:CTRL+F,  STC32G手册查找搜索非常有用
3.2. 新建工程的下载/编程:led灯并没有像我们期待的那样点亮。
3.2.1. 查找 STC32G12K128手册,检查端口配置是否正确,发现P4(三极管控制引脚)P6(led控制引脚)需要低电平。
3.2.2. 查找特殊功能寄存器地址。
3.2.3. 所以程序按手册修改如下:
   
  Sfr P0 = 0X80;       //改为P4端口
Sfr P0m1 = 0X93;      
Sfr P0m0 = 0X94;      
Sfr P4 = 0Xc0;       //P4端口操作完成
Sfr P4m1 = 0Xb4;
Sfr P4M0 = 0Xb4;
Sfr P6 = 0Xe8;       //P4端口操作完成
Sfr P6m1 = 0Xcb;
Sfr P6M0 = 0Xcc;
Sbit P40=P4^0;      //三极管控制引脚
Sbit P60=P6^0;      //led控制引脚
Void main()
{
    P4M0 = 0X00;    //配置P4为准双向口(M0\M1成对配置P4模式)
P4m1 = 0X00;
P6M0 = 0X00;     //配置P6为准双向口(M0\M1成对配置P6模式)
P6m1 = 0X00;
While(1)         //死循环
{
//P0++;
P40 = 0;       //三极管引脚输出低电平
P60 = 0;        //led4引脚输出低电平
}
     }
3.2.4. 对程序进行编译,观察窗口出现一个.\object\Demo.c\……”,同时提示“编译成功”
3.2.5. 连接USB连线,按下P3.2,电源断电再上电,年至keil软件的扫描窗口,USB-CDC转变为“(频)usb-writer”,松开P3.2按键。
3.2.6. 打开keil程序并下载,看到程序下载成功。
3.2.7. Led灯被点亮。

枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-23 08:09:20 | 显示全部楼层
xhl*** 发表于 2025-9-22 18:03
第四集 建立工程点亮第一颗LED上摘要:1. LED点亮原理2. 新建工程3. 点亮第一个LED4. 实现自动下载工程思考 ...

谢谢老师审核指导。
这里有一个小小的更正:将其中的第2项--新建工程 与 第3项--点亮第一个led,明确分开。
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-23 08:11:15 | 显示全部楼层
xhl*** 发表于 2025-9-23 08:09
谢谢老师审核指导。
这里有一个小小的更正:将其中的第2项--新建工程 与 第3项--点亮第一个led,明确分开 ...


枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-24 17:28:03 | 显示全部楼层
xhl*** 发表于 2025-9-23 08:09
谢谢老师审核指导。
这里有一个小小的更正:将其中的第2项--新建工程 与 第3项--点亮第一个led,明确分开 ...

请问茜茜老师:
STC32G-DEMO-CODE:“23-通过USB CDC协议虚拟串口收发数据”,怎么找不到啊?请老师指导一下,谢谢
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-02 10:54:46
已绑定手机

6

主题

31

回帖

216

积分

中级会员

积分
216
发表于 2025-9-24 19:30:06 | 显示全部楼层
第四集 建立工程点亮第一颗LED下

摘要:
1)LED点亮原理
2)新建工程
3)点亮第一个LED
4)实现自动下载工程
详细步骤:
4.实现自动下载工程
4.1.对照STC32G数据手册,实现程序自动下载:
4.1.1.上个led点亮的Demo演示程序,没有问题。Keil软件右下窗口显示:操作成功!(2025-9-23 14:21:17),同时显示“HID-ISP正在等待……”
4.1.2.如果我们程序修改需要重新下载时,还必须按下P3.2键,电源断电上电,重新用USB线连接PC与单片机,这个过程重复操作,给程序员带来额外负担。
4.1.3.为此STC工程师改进技术和工艺,采用了不停电下载。
4.2.USB-HID不停电下载:
4.2.1.Keil软件设置:
4.2.1.1.勾选“USB(HID)模式”,VID=34BF,PID=FF01,勾选“RTS”、“DTR”。
4.2.1.2.勾选“使用默认内部自定义命令”@STCISP#”
4.2.1.3.勾选“下次使用STC-HID接口进行ISP下载”
4.2.1.4.第一次下载,不勾选“每次下载都先发送自定义命令”
4.2.1.5.勾选“每次下载前都重新装载目标文件”
4.2.1.6.将USB下载线连接PC与单片机。
4.2.1.7.按下P3.2键,按下电源键断电再松开上电。
4.2.1.8.观察ISP下载软件的扫描窗口里显示“(HID1)USB-writer”说明通信成功,此时松开P3.2按键。
4.2.1.9.打开程序->编译->下载程序。
4.2.2.下载STC32G-DEMO-CODE压缩包,解压缩,找到“76-通过USB HID协议打印数据信息--可用于调试”,打开stc_usb_hid.uvproj项目工程,打开main.c
4.2.3.参照源程序main.c,编写自已的源代码。
4.2.4.包含头文件:’COMM/stc.h’、’COMM/usb.h’(这2个头文件在COMM文件夹中)
4.2.5.在’source group 1’中添加COMM文件夹中的库函数‘Stc_usb_hid_32g.h’
4.2.6.usb初始化、时钟设置,其他参数设置参照范例程序。
4.2.7.编译程序
4.2.8.用USB-link线连接目标设备与PC机。按下P3.2键,电源VCC断电再上电
4.2.9.当扫描串口出现“USB-writer”,说明已通信连接上,松开P3.2键
4.2.10.在ISP软件中打开并下载目标程序:objects/demo.hex,观察到led灯被点亮了。
4.3.打开‘STC32G手册(新版)’上的2.29章节(P177/1878页),学习:用户程序复位到系统区进行USB模式ISP下载的方法(不停电)。
4.3.1.由于STC工程师,在STC单片机中增加一个特殊功能寄存器:IAP-CONTR。当用户向该寄存器中写入0x60,即可实现软件复位到系统区,进而实现不停电就可实现ISP下载功能。程序修改后可继续直接下载,而不需要按下P3.2键及断电再上电操作。
4.3.1.1.勾选“当目标文件变化时自动装载并发送自动下载命令”,当程序经过修改并编译后,直接点击“下载”,可以看到程序“操作成功!”led灯同样被点亮了,表明USB不停电下载操作成功了。
4.4.USB-CDC不停电下载:
4.4.1.Keil软件设置:
4.4.1.1.勾选“USB-CDC/串口模式”,勾选“RTS”、“DTR”。
4.4.1.2.勾选“使用默认内部自定义命令”@STCISP#”
4.4.1.3.取消“下次使用STC-HID接口进行ISP下载”
4.4.1.4.第一次下载,不勾选“每次下载都先发送自定义命令”
4.4.1.5.勾选“每次下载前都重新装载目标文件”
4.4.1.6.将USB下载线连接PC与单片机。
4.4.1.7.按下P3.2键,按下电源键断电再松开上电。
4.4.1.8.观察ISP下载软件的扫描窗口里显示“USB-writer”说明通信成功,此时松开P3.2按键。
4.4.1.9.打开程序->编译->下载程序。
4.4.2.下载STC32G-DEMO-CODE压缩包,解压缩,找到“23-通过USB CDC协议虚拟串口收发数据”(新版本里该文件找不到,疑是:89-USB CDC转双串口-做自动停电上电烧录器),打开stc_usb_cdc..uvproj项目工程,打开main.c
4.4.3.参照源程序main.c,编写自已的源代码。
4.4.4.包含头文件:’COMM/stc.h’、’COMM/usb.h’(这2个头文件在COMM文件夹中)
4.4.5.在’source group 1’中添加COMM文件夹中的库函数‘Stc_usb_cdc_32g.h’
4.4.6.usb初始化、时钟设置,其他参数设置参照范例程序。
4.4.7.编译程序
4.4.8.下面操作同“USB-HID模式”(省略)
枯躁的背后,有成功的喜悦。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-3 10:38 , Processed in 0.147479 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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