8051U 现在功能真的太强吧!
看完第一集序言真是出乎意料,比以前强大太多,具有6大超强功能:1.屏幕显示和视频播放(flash编程器)
2.IIS录放音
3.PWM_DMA
4.频谱分析仪(上位机)
5.手写计算器
6.QSPI,PWM移相,硬件乘除,单精度浮点
以前刚接触到这个51单片机的时候,就是输一些代码,没有什么其他功能,现在居然可以手写了,而且还可以频谱分析,另外居然还可以编辑动画视频,真的太强大了,还有录音功能,太出乎意料。我现在刚开始学单片机一点也不懂,不知道什么时候能够学会,是不是真的按照这上面的视频看完以后就能达到学会的效果。
实验箱功能够强大
第二集实验箱,这个功能是非常齐全,该有的功能基本上都有了,该集主要内容:1 实验箱硬件部分介绍
2 需要安装的软件
keil
ISP烧录软件下载,和keil中加型号
keil的中断插件下载
实验箱的代码包,使用手册,AI8051芯片手册下载
3 下载第一个程序观察流水灯效果
看实验箱上面连接电脑需要一个硬件,但是我看视频上只需要一根线,如下图
这个这个到底是需要硬件连接还是只需要一根数据线连接?还是说这个数据线里面已有有硬件?
具体操作:进入 USB 下载模式需要先按住实验箱上的 P3.2/ INT0 按键 / 接地,然后按一下 ON/OFF 电源按键 / 断电,接着松开 ON/OFF 电源按键 /上电,最后可松开 P3.2/ INT0 按键。正常情况下就能识别出“STC USB Writer (HID1)” 设备 , 点击 STC-ISP 下载软件中的“下载 / 编程”按钮 下载代码
软件我是从网上下载的,安装了4次,软件都不能用,最后就找到了一个最新版的才可以用。安装非常简单,按照上面的说明一步步来就行了
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
https://v.stcai.com/sv/1c5eec2-197fcd9b766/1c5eec2-197fcd9b766.mp4
上面是 小李 演示:Ai8051U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成
https://v.stcai.com/sv/1fce8086-197cf2b9dd4/1fce8086-197cf2b9dd4.mp4
上面是 小赵 演示:Ai8051U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成
songchao 发表于 2025-10-11 18:57
看完视频第二集,我感觉现在官方的软件做的还是比较强大的,而且做的比较好的是实验箱,这个功能是非常齐全 ...
第三集是创建工程和添加头文件
AI8051U规格书上有详细步骤
songchao 发表于 2025-10-12 08:41
第三集我看了两遍,学习单片机我以前一点头绪都没有,迷迷糊糊的,现在终于有一点头绪了。视频讲解的非常详 ...
第四集我一点也没有看明白,感觉很乱。等收到试验箱的时候,我再重新详细的去看,具体内容如下:
1 直接下载和按钮重启下载的效果比较
2 下载文件,STC官网-软件工程-函数库-USB库函数
3 移植关键代码和文件到工程
3.1添加头文件.lab和.h
3.2USB初始化函数
3.3复制命令参数
3.4开中断等寄存器
这个视频看起来比较乱,我感觉还是看网页推荐的首先做的三个实验,那两个视频看起来比较易懂
songchao 发表于 2025-10-12 11:45
第四集我一点也没有看明白,感觉很乱。等收到试验箱的时候,我再重新详细的去看。 ...
第五集让我感觉有点任重道远啊。10进制以前上学时学了一点,几十年了都还给老师了,不过可以用计算器计算,这个倒没太大问题。C语言以前发过书,但是老师没有教,现在等于是一点c语言基础都没有,要重新学习,压力很大呀!
C语言运算符和进制数,具体如下
格式字符 含义
%d 以十进制整数形式输出
%ld 以十进制长整形输出
%f 以单精度浮点型输出
%lf 以双精度浮点型输出
%0 以八进制整型输出整数。
%x或%X 以十六进制形式输出整数
%u 以十进制无符号整形输出
%i 以十进制整形输出(与%d无异)
%c 输出单个字符
%s 输出字符串
%e或%E 以指数形式输出
%g或%G 自适应数据输出(数据够大或够小则以指数形式输出,否则以小数形式输出
%p 输出地址
标志 含义 实例
n.m n表示整数占几行,m表示小数占几行 %2.3f
- 输出的结果左对齐 %-d
空格 输出值为正时冠以空格,为负时冠以负号
# 输出带有前导的数据(八进制为0~ %#d
~~十六进制为X~~~~表示数字)
数的进制:2进制 10进制 16进制
10进制 2进制 10进制 2进制
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
10进制 16进制 10进制 16进制
0 0 17 11
1 1 18 12
2 2 19 13
3 3 20 14
4 4 21 15
5 5 22 16
6 6 23 17
7 7 24 18
8 8 25 19
9 9 26 1A
10 A 27 1B
11 B 28 1C
12 C 29 1D
13 D 30 1E
14 E 31 1F
15 F 32 20
16 10 33 21
C语言常用运输符
1.算术运算符
加(+)减(-)乘(*) 除(/)
模(余)运算符(%): 不允许出现浮点型,余数正负取决于被除数正负
自增(++i,i++) 自减(--i,i--)
2.位运算符
右移(>>) 左移(<<)
按位与(&)
按位或(|)
按位与或(^)
取反(~)
3.赋值运算符
+=加赋值
-=减赋值
*=乘赋值
/=除赋值
%=求余赋值
&=按位与赋值
|=按位或赋值
^=按位与或赋值
<<=左移位赋值
>>=右移位赋值
songchao 发表于 2025-10-12 12:37
看完第五集让我感觉有点任重道远啊。10进制以前上学时学了一点,几十年了都还给老师了,不过可以用计算器 ...
第六集这一集看起来IO口还是比较轻松的,就是课后两个小作业没办法完成,因为没有实验箱,等实验箱到了以后再来做这个练习吧,反正还是需要重复看视频来学习的。
关于LED闪烁和花式点灯:1秒=1000毫秒=1000 000微秒
#define 名称 需要定义的内容
函数的使用:
1.函数定义:
返回值 函数名称(入口参数)
{
函数要执行的功能
}
返回值:没用返回值就是void
函数名称:避开关键词,不重复,非特殊字符随便取
入口参数:类型+名称,多个参数“,”分开,空就写void
2.函数声明
返回值 函数名称(入口参数)
3.函数调用
函数名称(入口参数)
新建文件,使用模块化编程
新建xxx.c和xxx.h文件,代表一个功能块
xxx.h格式:
#indef_XXX.H
#define_XXX.H
调用头文件
函数声明
#endif
xxx.c格式
#include"xxx.h"
函数定义
添加文件一定要记得引用路径和添加到工程里
songchao 发表于 2025-10-12 14:08
第六集这一集看起来IO口还是比较轻松的,就是课后两个小作业没办法完成,因为没有实验箱,等实验箱到了以 ...
第七集定时器部分,软件可以直接生成定时代码,这个非常方便。就是课后作业功德箱现在没办法完成,等到申请的实验箱到了以后再做吧。
利用中断3秒闪一次灯的代码#include "ai8051u.h"
#include "stc32_stc8_usb.h"//usb 库文件,和那个stc_usb_cdc_32.LIB文件都是USB库文件,搞那个USB不停电下载时加的
#include "intrins.h"#define u8 unsigned char //8位无符号变量(0-255)
#define u16 unsigned int //16位无符号变量(0-65535)char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";void Delay20ms(void) //@24.000MHz
{
unsigned long edata i;_nop_();_nop_();i = 119998UL;while (i) i--;}u8 state=0;
u8 count=0;void Timer0_Init(void) //3秒@24.000MHz
{
TM0PS = 0x5B; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x3F; //设置定时初始值
TH0 = 0x01; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}void main(void)
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度P0M1 = 0x00; P0M0 = 0xff; //设置为推挽输出P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口usb_init(); //USB CDC 接口配置Timer0_Init(); //定时器初始化IE2|=0x80; //使能USB中断EA = 1; //开总中断吗?while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置P40=0; //打开LED灯的总开关while (1){ if (bUsbOutReady) //如果接收到了数据 { //USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试) usb_OUT_done(); } //这里面写代码 if(P33==0) { Delay20ms(); if(P33==0) { printf("count=;%d\r\n",count); while(P33==0); } }}}void Timer0_Isr(void) interrupt 1 //3秒中断执行一次
{
state=!state;
P00=state;
count++;
}
songchao 发表于 2025-10-13 08:18
第七集定时器部分,软件可以直接生成定时代码,这个非常方便。就是课后作业功德箱现在没办法完成,等到申 ...
第八集:文件创建和结构体任务调度超级有用
文件创建
结构体任务调度
实验箱已收到了,非常漂亮!非常感谢官方大力支持!!
页:
[1]