ye_feng 发表于 2025-2-27 13:29:47

学习《Ai8051U教学视频》学习手记

【全球《单片机原理及应用@Ai8051U》 免费教育 大学】:
===如用Ai8051U 做为主控参加 2025年 / 2027年 全国大学生电子设计竞赛,
      最高奖 100万,一等奖2万,二等奖5000元 !总额不超过 200万元
      需要在正式比赛前 3个月,到本坛打卡,发表准备参赛的心路历程
      同意获奖后,参赛作品的全套资料知识产权归本坛所有,共享给51世界前进
===保姆级免费视频教程, 单片机0基础开始,C语言0基础开始
《8051U深度入门到32位51大型实战教学视频》
发表学习心得 七集 以上,赠送 超级强大的 Ai8051U实验箱,并保证会持续到15集课程以后
可做:USB声卡,各种USB教学设备,音频播放器,示波器,FFT频谱分析仪,
          AI手写计算器,AI语音识别
100万套 Ai8051U-实验箱,等您在本坛学习打卡区,发表学习感悟后,【免费 + 包邮 送】


========================Ai8051U强在里?=====================================
第一集打卡:
Ai8051U比STC32G:
      1.在屏幕显示和视频播放上,由于优化QSPI的Flash芯片读写的功能,使大容量视频播放有了质的提升。
      2.有了音频总线。
      3.PWM可以更好兼容DMA了,DMA:支持 SPI移位接收数据到存储器、SP 移位发送存储器的数据、I2C 发送存储器的数据、I20 接收数据到存储器、串口 1213/4 接收数据到的存储器、串口 1/2/3/4 发送存储器的数据、ADC 自动采样数据到存储器(同时计算平均值)、LCD驱动发送存储器的数据、以及存储器到存储器的数据复制硬件数字 ID:支持 32+32 字节
      4.可以实现频谱分析仪,MDU32:硬件 32 位乘除法器(包含 32 位除以 32 位、32 位乘以 32 位)TFPU:单精度浮点运算器(支持浮点加、减、乘、除以及正弦、余弦、正切和反正切等运算)
      5.手写计算器演示很顺。
      6.QSPI:支持单线、双线和四线模式

ye_feng 发表于 2025-2-27 16:06:48

Ai8051U 第二集打卡
      实验箱硬件介绍

      软件下载:
   1.安装 编译环境
      登录 Keil 官网,下载最新版的C251和C51编译器,下载链接如下:https://www.keil.com/download/product/进入下载页面,我们可以看到C51和C251的下载链接,这里将这两个安装包都下载

   下载后安装在C:\Keil_v5 目录下。
      无论是新版本还是旧版本,C51、C251和MDK是安装在不同的目录,并不会有冲突。软件的和谐也是3个软件分别进行的,之前已经安装完成并设置好的软件,并不会因为后续有安装新的软件而改变所以安装时只需要按照默认方式安装即可,Keil软件会自动处理好
   2.安装 Alapp-ISP 下载/编程烧录/软件,含强大的辅助开发工具包
      安装 STCAI公司研发的 AIapp-ISP下载/编程/烧录/软件,含强大的辅助开发工具包。登录 STCAI官网,下载最新版的AIapp-ISP安装包,下载链接如下:https://www.stcai.com/gjrj下载 AIapp-ISP 压缩包

      3. 打开ISP工具添加型号和头文件到Keilk中,注意选择单片机型号AI8051U-34K64

      4.查看AI8051U实验箱V1.2使用说明书:
      1.单片机型号选择“AI8051U-34K64
      2.实验箱 使用硬件 USB 接口下载。进入 USB 下载模式需要先按住实验箱上的P3.2/INTO按键(P32接地),然后按一下0N/0FF电源按键/断电,接着松开ON/OFF电源按键/上电,最后可松开P3.2/INT0 按键。正常情况下就能识别出“(HID1)USBWriter”设备。
      3.点击界面中的“打开程序文件”按钮,在出现的打开程序代码文件的对话框中选择需要下载的文件。

ye_feng 发表于 2025-2-27 17:30:06

Ai8051U 第三集打卡
   1.创键一个空工程
打开 Keil 软件,在上方的菜单栏 Project标签中,找到 New uVision Project 选项,开始新建工程。


将文件存入刚刚建好的文件夹 中,再给项目起个名称(方便查找)(尽量是英文的,如 Tes...),点击“保存”。如下图:


在“Select Device for Target'Target1”选项卡中:
选择 STC MCU Database
然后展开 AI选项,选择“Ai8051U-32BitSeries”选项注意:这是建立 Ai8051U 的 32 位 8051 工程项目,会调用 Keil C251 编译器来编译 32 位 8051的项目。
这是建立 Ai8051U 的8位 8051 工程项目,注意:如果在此处选择了“Ai8051U-8Bit Series会调用 Keil C51 编译器来编译8位的项。
最后点击'OK’以完成单片机选择。



选择完单片机后,工程界面还是一片灰白的。这时要给工程项目增加一个主程序文件,可以命名为
main.c 文件,点菜单下的NEW或ctrl+N ,保存文件并更名为:main.c 文件


双击source Group1 添加main.c文件


32 位 8051 工程项目的各种选项设置
1.在菜单栏下方找到一个类似魔术棒的工具,就是任务选项的设置。选择 Target 选项卡:


2.切换到 Output 选项卡,勾选'Creat HEX File’选项,否则编译后是不会创建 HEX 文件的。HEX 文件是可以通过烧录工具烧录到单片机用户程序区。



3.切换到 L251 Misc 选项卡,在 Misc controls 输入框中,输入大写的'REMOVEUNUSED’,移除未使用的函数(如:库函数),以实现不使用的函数不进行调用。


4.切换到 Debug 选项卡,创建项目时,Kei 默认是软件模拟仿真。我们可以借助 STCAI的工具进行硬件仿真,如下图:

   2.添加头文件。

   3.编写一个点亮LED00代码

ye_feng 发表于 2025-2-28 10:28:22

Ai8051U 第四集打卡USB不停电下载   
库文件下载地址:
https://www.stcai.com/khs


P_SW2 |=0x80 ; IE2 |=0x80 ;采用了或运算:


ye_feng 发表于 2025-2-28 11:49:13

Ai8051U 第五集打卡 C语言基础
1.数的转换计算

2.数据类型
想要使用64位变量:需要在程序文件里面添加申明:#pragma float64

#define u8 unsigned char   
u8 x;   //u8等效unsigned char .   u8 x;等效unsigned char x;

3.运算符






ye_feng 发表于 2025-2-28 13:21:42

Ai8051U 第六集打卡    I/O输入输出
GPlO (General Purpose l/O'Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
高电平就是指接近于电源正极电压的电平;也叫逻辑 .“1”
单片机输出高电平就是输出VCC电压,输出低电平就是输出GND的电压。


课后任务1.按一下P32按钮灯亮,按一下P33按钮灯灭:

while (1)
          {
                  if (bUsbOutReady)
      {
            USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            usb_OUT_done();
      }
                if (KEY1_SW_2==0)    //#define KEY1_SW_2 P32
                {
                        delay_ms(20);   //延时20ms,按键防抖(函数先声明后使用)
                        if (KEY1_SW_2==0)//判断SW_2是否真的按下
                        {
            P00=0;               //点亮LED00
                        }
                        while (KEY1_SW_2==0); //判断SW_2是否松开
                }                        
               
                if (KEY1_SW_3==0)    //#define KEY1_SW_3 P33
                {
                        delay_ms(20);    //延时20ms,按键防抖
                        if (KEY1_SW_3==0)//判断SW_3是否真的按下
                        {
          P00=1;         //关闭LED00
                        }
                        while (KEY1_SW_3==0);//判断SW_2是否松开
                }               

          }


void delay_ms (u16 ms)    //u16 表示类型 ms名称 比如:unsigned int   函数先声明后使用
{
      u16 i;
      do
      {
      i = MAIN_Fosc/6000;
                while(--i);
      }
      while (--ms);
}
课后任务2:课后任务2:按一下亮一颗灯,在按一下亮两颗灯,直到全亮
unsigned int state;或u16 state;两个语句等价。

                        if (key1_SW_2==0)    //#define KEY1_SW_2 P32
                {
                        delay_ms(20);               //延时20ms,按键防抖
                        if (key1_SW_2==0)       //判断SW_2是否真的按下
                        {

                              P0=~LED_display;                                //点亮LED00
                             state*=2;                                        //准备下一次显示数值:1>2>4>8>16>32>64>128
                                LED_display |=state;                        //增加一位显示
                                if(state>128)
                                {
                                   state = 1;                                 //判断显示最高位后,重新置1。
                                   LED_display=1;      
                                 }
                           while (key1_SW_2==0); //判断SW_2是否松开
                        }

               }


ye_feng 发表于 2025-2-28 17:34:43

Ai8051U 第七集打卡   定时器周期调度任务
   关于Keill软件中的0XFD问题的说明


定时器时间的计算


ye_feng 发表于 2025-3-1 14:38:51

Ai8051U 第七集   疑虑
   定时器初始化为什么一定要放在总中断开前面?
attach://86456.jpg
页: [1]
查看完整版本: 学习《Ai8051U教学视频》学习手记