找回密码
 立即注册
查看: 402|回复: 9

AI8051U学习打卡

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-16 21:48:00 | 显示全部楼层 |阅读模式

AI8051Uapp-translate-content AI8051Uapp-translate-config-button

第一集打卡app-translate-content

image.png

感悟

不得不说,这个频谱仪真的让我眼前一亮,还有flash传输图片的工具,试验箱的功能太多了。app-translate-content

第一集主要烧录了一些项目的代码,flash功能让我想起了很久以前玩的迪文屏幕,虽然区别很大,但雏形有了。

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-16 22:46:38 | 显示全部楼层

第二集 实验箱介绍、资料下载、环境安装

一、试验箱介绍

试验箱资源 大体如下图两图所示,资源很齐全,像OLed还考虑到SPI和IIC两种接口,太细心了。

Pastedimage20241216215414.png

Pastedimage20241216220724.png

二、资源下载app-translate-content

手册地址:

深圳国芯人工智能有限公司-产品_AI8051U系列

image.png

工具软件以及试验箱:

深圳国芯人工智能有限公司-工具软件app-translate-content

深圳国芯人工智能有限公司-实验箱app-translate-content

image.png

image.png

三、环境安装

嘻嘻,偷个懒,我比较推荐安装顺序是

C51-->C251-->MDK

这样就可以又玩51单片机也玩STC家32位单片机(兼容C251架构),还可以玩Arm架构的单片机了。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-17 00:36:34 | 显示全部楼层

第三集 点亮LED灯app-translate-content

一、电路基础知识app-translate-content

三极管

浅谈三极管 PNP NPN
符号 image.png image.png
驱动方法 B极低电平CE两端导通,反之CE截至 B极高电平CE两端导通,反之CE截至

实验箱LED电路图

image.png

由上图可知,P40给低电平,所有LED阳极连接至SYS-VCC,这个时候只需要将阴极所对应的端口(P00~P07)给低电平,即可点亮与其所对应的LED灯。

二、浅谈 STC AI8051U IO 口app-translate-content

具体可以详细看一下STC AI8051U 的手册,不得不说,STC家的手册写得真的是很详细,差点爱上了。什么时候出蓝牙、Wifi的,看不懂别人家的蓝牙手册[┭┮﹏┭┮]。

GPIO口的四种模式

image.png

三、代码编写app-translate-content

#include <stcai8051u.h>

void main(void)
{
    P0M0 = 0; P0M1 = 0; //设置 P0 (P00 ~ P07) 为准双向口
    P4M0 = 0; P4M1 = 0; //设置 P4 (P40 ~ P47) 为准双向口

    P40 = 0;  // P40 低电平 三极管CE连接
    P00 = 0;  // P00 低电平 LED点亮
    for(;;)
    {
    }
}

四、心得app-translate-content

嗯.......感觉,怎么跟写学校的实验报告一样,不过半夜自己一个人写这些还挺好玩的。写到一个点的时候就会想:“如果我是初学者,我应该不会哪里呢”忍住了长篇大论的心(其实是因为太久没接触忘记得差不多了,只留下了个大概印象,这个是啥,能做啥这样子)于是乎,这个帖子出来了(还有想要实验箱的私心嘿嘿)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-17 02:15:33 | 显示全部楼层

第四集 USB不掉电下载

一、下载所需文件、了解相关下载方式

下载地址:深圳国芯人工智能有限公司-库函数

首先先下载下面这个库文件包

image.png

CDC、HID两个都是USB标准的一部分。app-translate-content

CDC(communication device class):主要用于串行通信,模拟传统的串行端口。app-translate-content
CDC(communication device class):主要用于串行通信,模拟传统的串行端口。app-translate-config-button

HID(Human Interface Device):主要用于人机交互,键盘、鼠标等。app-translate-content

不仅可以通过官方提供的这两种方式下载,,还可以通过软复位的方式实现不断电下载,具体查看手册,又得夸一下这手册写得是真好。app-translate-content

二、移植关键部分到工程实现不断电下载app-translate-content

1、首先是这两个文件app-translate-content

image.png

2、其次添加头文件以及相关代码app-translate-content

#include "stcai8051u.h"
#include "stc32_stc8_usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRPDUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void main(void)
{
    P_SW2 |= 0x80; //使能访问SFR

    P0M0 = 0; P0M1 = 0; //设置 P0 (P00 ~ P07) 为准双向口
    P4M0 = 0; P4M1 = 0; //设置 P4 (P40 ~ P47) 为准双向口

    P40 = 0;  // P40 低电平 三极管CE连接
    P00 = 0;  // P00 低电平 LED点亮

    usb_init();              // USB CDC 接口配置
    IE2 |= 0x80;             // 使能USB中断
    EA = 1;
  
    while(DeviceState != DEVSTATE_CONFIGURED);  //等待USB完成配置

    for(;;)
    {
    }
}

至此,就可通过点击ISP的下载按钮实现不断电下载。app-translate-content

心得

懒是推动人类发展的一大动力

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-17 02:50:05 | 显示全部楼层

第五集 C语言基础app-translate-content

一、数据类型

类型 位数 字节 值的范围app-translate-content
bit 1 0 or 1app-translate-content 0 或 1app-translate-config-button
charapp-translate-content 煳app-translate-config-button 8 1 -128 ~ 127app-translate-content -128 ~ 127app-translate-config-button
unsigned charapp-translate-content 无符号字符app-translate-config-button 8 1 0 ~ 255app-translate-content 0 ~ 255app-translate-config-button
int 16 2 -32768 ~ 32767app-translate-content -32768 ~ 32767app-translate-config-button
unsigned intapp-translate-content 无符号整数app-translate-config-button 16 2 0 ~ 65535app-translate-content 0 ~ 65535app-translate-config-button
floatapp-translate-content 浮app-translate-config-button 32 4 ±1.17549435E-38 ~ ±3.4028235E+38app-translate-content ±1.17549435E-38~±3.4028235E+38app-translate-config-button
doubleapp-translate-content 双app-translate-config-button 64 8 ±2.2250738585072014E-308 ~ ±1.7976931348623158E+308app-translate-content
±2.2250738585072014E-308~±1.7976931348623158E+308app-translate-config-button

注意:short = intapp-translate-content 注意:short = intapp-translate-config-button

二、运算符app-translate-content

1、算术运算符app-translate-content

运算符 描述
+ 相加
- 相减
* 相乘
/ 相除
% 取余
++ 自增,参数加一app-translate-content
-- 自减,参数减一app-translate-content

2、逻辑运算符

1为真 0为假,A && B

运算符 描述
&& 称为逻辑与运算符。如果两个操作数都非零,则条件为真。app-translate-content
II 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。app-translate-content
称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。app-translate-content

3、关系运算符

运算符 描述
== 检查两个操作数是否相等,相等则为真
!= 检查两个操作数是否相等,不相等则为真
> 检查左操作数的值是否大于右操作数,是则为真
< 检查左操作数的值是否小于右操作数,是则为真
>= 检查左操作数的值是否大于或等于右操作数,是则为真
<= 检查左操作数的值是否小于或等于右操作数,是则为真app-translate-content

三、判断、循环app-translate-content

1、判断


if(条件)
{
    满足条件则进到大括号里运行大括号里的程序,反之跳出
}

if(条件)
{
    满足条件则进到大括号里运行大括号里的程序,反之进入else
}
else
{
    不满足if中的条件则进到大括号里运行大括号里的程序
}

多重分支判断
if(条件)
{
    满足条件则进到大括号里运行大括号里的程序,反之进入进入下一个if判断
}
else if(条件)
{
    不满足上一个if,若满足这个if 条件,则进入,反之进入else
}
else
{
    不满足上面两个if 的条件则会执行到这里
}

2、循环app-translate-content


while(条件)
{

}

for(初始化语句;  条件;  完成一次循环后执行的语句)
{

}
// 区别于while\for的是do{}while()先执行一遍再判断
do
{

}while(条件)

break 可以跳出循环,终止循环
continue 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-17 12:37:41 | 显示全部楼层

第六集 IO口输入输出app-translate-content

一、GPIOapp-translate-content

GPIO(General Purpose Input/Output Ports)通用输入输出端口,能输出高低电平或者读取引脚状态(高低电平)。

1、STC AI8051U GPIO 模式介绍

image.png

灌电流:电流从外部进入(灌入)IO口

拉电流:电流从IO口被拉出

image.png

二、按键电路基础知识app-translate-content

1、实验箱电路

image.png

由图可知,按下按键后,引脚被拉至低电平。app-translate-content

2、按键消抖app-translate-content

机械按键由于自身结构,按下和松开瞬间都有有一定的抖动,为了避免误触发,所以需要消除抖动,达到确认按键按下的目的。app-translate-content

image.png

按键消抖一般有两种方法,一种是通过并联电容实现硬件消抖,一种是软件定时检测实现消抖,软件消抖一般时间在20ms以内。app-translate-content

由图可知,实验箱木有满足硬件消抖的条件。app-translate-content

三、课后任务app-translate-content

1、题目 按一下亮一颗灯,在按一下亮两颗灯,直到全亮app-translate-content

2、实现

#include "stcai8051u.h"
#include "stc32_stc8_usb.h"
#include "intrins.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRPDUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void Delay20ms(void)      // 24.000Mhz
{
    unsigned long edata i;

    __nop_();
    __nop_();

    i = 119998UL;
    while(i)i--;
}

void main(void)
{

    unsigned char i = 0;

    WTST = 0;   //设置程序指令延时参数,
    EAXFR = 1;  //扩展寄存器(XFR)访河使能
    CKCON = O;  //提高访问XRAM速度

    P0M0 = 0; P0M1 = 0; //设置 P0 (P00 ~ P07) 为准双向口
    P3M0 = 0; P3M1 = 0; //设置 P3 (P30 ~ P37) 为准双向口
    P4M0 = 0; P4M1 = 0; //设置 P4 (P40 ~ P47) 为准双向口

    P40 = 0;  // P40 低电平 三极管CE连接
    P0 = 0xff;

    usb_init();              // USB CDC 接口配置
    IE2 |= 0x80;             // 使能USB中断
    EA = 1;
  
    while(DeviceState != DEVSTATE_CONFIGURED);  //等待USB完成配置

    for(;;)
    {
       if(P32 == 0)
       {
          Delay20ms();
          while(P32 == 0);
          if(i >= 8)
          {
             i = 0;
             P0 = 0xff;
          }
          else
          {
             P0 |= (1 << i);
             i++;
          }
       }
    }
}

四、心得

嗯......还行,视频里教得很详细。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:428
  • 最近打卡:2025-05-07 00:13:45
已绑定手机

19

主题

3192

回帖

4944

积分

论坛元老

积分
4944
发表于 2024-12-17 12:46:01 | 显示全部楼层
这个while(P32 == 0);用的好啊,只有按键释放才执行后面任务,但是这样的话按键不释放就一直是之前的动作。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-17 14:43:40 | 显示全部楼层

第七集 定时器中断app-translate-content

一、定时器介绍app-translate-content

定时器,可以简单理解成一个沙漏,沙子的数量、漏孔的大小决定了什么时候沙子会漏完。

1、STC AI 8051U 定时器资源

image.png

查看手册第十六章可以看到一共有六个定时器,都支持24位模式。

2、定时器模式

以定时器1举例,共有4种模式(具体各定时器所拥有的模式需要查看手册,这里简单举例)

image.png

对于模式0,如下图所示:app-translate-content

GATE 门控位,TR1启动定时器,AUXR的第六位选择时钟分频,C/T选择脉冲来源,TH1、TL1是计数寄存器,RL_TH1、RL_TL1是TH1和TL1的影子寄存器,TF1是中断标志位,发生中断时TF1 = 1,需要手动清零。

image.png

对于模式1,如下图所示:app-translate-content

image.png

对于模式2,如下图所示:

image.png

3、定时器计算方式app-translate-content

image.png

通过上图的同时可以很方便算出TH1和TL1的具体值。app-translate-content

二、工具介绍 STC-ISPapp-translate-content

STC家提供了很方便的工具 --> STC-ISP,像IO口、定时器、串口、CAN等都可以直接生成,间接屏蔽了底层,我们只需要处理程序的主要逻辑即可。

image.png

三、心得app-translate-content

虽然有STC-ISP这样方便的工具使用,但最好还是明白他的基本原理,出问题的时候也知道该从哪里排查起。

支持国产,国产winwinwin

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-17 14:44:08 | 显示全部楼层
so*** 发表于 2024-12-17 12:46
这个while(P32 == 0);用的好啊,只有按键释放才执行后面任务,但是这样的话按键不释放就一直是之前的动作。 ...

嗯嗯是的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-12-16 21:11:06
已绑定手机

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2024-12-18 16:59:44 来自手机 | 显示全部楼层
已经收到实验箱啦,这几天考完试继续打卡😘
1000728106.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 05:09 , Processed in 0.122456 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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