找回密码
 立即注册
查看: 521|回复: 8

学习《Ai8051U教学视频》心得感悟

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-13 14:59:20 | 显示全部楼层 |阅读模式
第一集 序言
1.     ai8051u优点:
截图202501131447587227.jpg
2.ai8051u的简介:
截图202501131452555524.jpg
第一集序言作为整个系列视频的开篇,为观众搭建了一个初步的认知框架,使观众对 AI8051 有了宏观上的认识,激发了进一步学习的兴趣。
第二集 硬件、软件介绍
截图202501131454513635.jpg
1.硬件PCB/PCBA
截图202501131455232742.jpg
截图202501131455489186.jpg
2.软件Keil——ISP——头文件——插件——代码包
截图202501131457563202.jpg
对软硬件的全面介绍,在后续学习编程和进行实际开发时,可以更有针对性地利用其硬件资源,合理配置软件参数,从而实现各种预期的功能。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-14 16:16:35 | 显示全部楼层
第三集 点亮一个LED
第三集是理论与实践相结合的一集,通过实际操作点亮第一颗 LED,让我们亲身体验到了 AI8051 的编程和控制过程,具有很强的成就感和实践指导意义。
点亮两个LED
截图202501141627538203.jpg
原理:
与传统8051不同之处在于:有四种输入输出方式
截图202501141647042138.jpg


截图202501141616067746.jpg
截图202501141616571336.jpg
截图202501141620409157.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-14 19:53:14 | 显示全部楼层
第四集usb不停电下载
了解到 USB 不停电下载的实现原理,以及相关的硬件电路和软件编程。这种下载方式无需频繁给单片机上电断电,大大提高了开发效率,减少了开发过程中的等待时间。
1.下载以下两个库文件到main.c路径相同。
2.添加头文件及其代码如下。
#include "ai8051u.h"                        //调用头文件
#include "stc32_stc8_usb.h"                //调用头文件

//注意:擎天柱的LED端口在P2,且没有三极管的电源控制,所以只要控制P2端口即可,本节课程的其余内容(USB不停电下载)均通用!

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

void main(void)
{unsigned char i;
    P_SW2 |= 0x80;                //B7位写1,使能访问XFR
        
    P0M1 = 0x00;   P0M0 = 0x00;
    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 接口配置

    IE2 |= 0x80;                                    //使能USB中断
    EA = 1;                                                                                        //IE |= 0X80;
        
        while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
        
        while(1)
        {
               
        if (bUsbOutReady)
        {
            USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            
            usb_OUT_done();
        }
               

       for(i=0;i<8;i++)
                        {
                                P2=~(0X01<<i);
                                Delaynms(1000);
                        }

        }
}
实现一个流水灯
截图202501141947039105.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-14 20:47:05 | 显示全部楼层
第五集 c语言基础
有c语言基础的、学过普通8051的可以简单看看
1.数制
截图202501142047564697.jpg
2.c语言常用运算符
截图202501142049519267.jpg
截图202501142050194049.jpg
截图202501142050416865.jpg
3.数据的基本类型
截图202501142052291071.jpg
4.c语言串口中printf函数的实现


截图202501142108068150.jpg


实验:
1)头文件中去掉“#define PRINTF_HID”前的//
2)定义变量X和Y
截图202501142150185795.jpg
3)在此位置代码编程
截图202501142151251135.jpg
4)结果
截图202501142147012335.jpg
截图202501142047237692.jpg
截图202501142048461166.jpg
截图202501142049023993.jpg
截图202501142108379254.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-14 22:08:17 | 显示全部楼层
第六集输入输出I/O
硬件与软件的结合:I/O 输入输出是单片机与外部设备交互的关键。
1.GPIOGeneral Purpose I/O Ports)意思为通用输入/输出端口。通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
单片机输出高电平就是输出VCC电压,输出低电平就是输出GND的电压。
截图202501142215175644.jpg
截图202501142215289885.jpg
截图202501142227377986.jpg
2.按键检测
截图202501142228286358.jpg
按键去除抖动
截图202501142253478808.jpg
实验代码和课后作业的代码(主函数部分)
                //任务1:按下P32按钮灯亮,松开P32按钮灯灭;
                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {                        
                       P20 = 0;
                }
                else
                {
                        P20 = 1;
                }
               
               
                //任务2:按下P32按钮灯灭,松开P32按钮灯亮;
                if( P32 == 1 )                                                                //判断P32按钮是否按下
                {
                        P20 = 0;
                }
                else
                {
                        P20 = 1;
                }
               
                //任务3:按一下灯亮,按一下灯灭
                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                                state = !state;                                                //变量取反 0 1 0 1 0 1
                                P20 = state;
                                printf("state:%d\r\n",(int)state);
                                
                                while( P32 == 0 );                                        //等待P32松开
                                
                        }
                }
         //课后任务1:按一下P32按钮灯亮,按一下P33按钮灯灭;
         if( P32 == 0 )                                                                //判断P32按钮是否按下
          {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                        P20 = 0;
                        while( P32 == 0 );        
                        }
          }
                 if( P33 == 0 )                                                                //判断P33按钮是否按下
          {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P33 == 0 )
                        {
                        P20 = 1;
                        while( P33 == 0 );        
                        }
          }
//课后任务2:按一下亮一颗灯,在按一下亮两颗灯,直到全亮(变量+加法和乘法)
if( P32 == 0 )                                                                //判断P32按钮是否按下
          {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                                if(i >= 8)
                                {
                                     i = 0;
                                     P2 = 0XFF;
                                }
                                else
                                {  
                                    P2 &= ~(0x01<<i);
                                    i++;
                                }
                                while( P32 == 0 );        
                        }
          }

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-14 23:46:05 | 显示全部楼层
第七集 定时器中断
1.函数定义、声明、调用的区别(有c语言基础的可简单看)
截图202501142348251136.jpg
2.定时器作用:
    (1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
    (2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)
实时性与效率的提升:定时器中断能够在设定的时间间隔后自动触发中断,使 CPU 及时响应定时任务,大大提高了系统的实时性和执行效率。例如在工业生产中的数据采集系统,利用定时器中断可以定时采集传感器数据,确保数据的及时性和准确性,而 CPU 在其他时间可以处理其他任务,避免了资源的浪费 。
多任务处理的基础:通过合理设置多个定时器中断,可以实现多任务的并行处理。比如在一个智能家居系统中,可以使用一个定时器中断来定时控制家电的开关,另一个定时器中断来定时采集环境数据,如温度、湿度等,从而实现多个任务的同时运行,提高系统的整体性能和响应速度。
3.定时器用法:
1)利用软件直接生成
截图202501142349593908.jpg
2)原理
ai8051u有6个24位定时器
截图202501142355029376.jpg
每个定时器有4种模式
截图202501142359249873.jpg
以定时器0的模式0位例
截图202501142354087625.jpg
3)公式计算
截图202501150000422064.jpg


截图202501142357324121.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-01-15 19:14:26
已绑定手机

1

主题

9

回帖

41

积分

新手上路

积分
41
发表于 2025-1-15 00:03:29 | 显示全部楼层
加油,话说大哥为什么没有申请到试验箱
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-01-14 19:38:50
已绑定手机

1

主题

8

回帖

51

积分

注册会员

积分
51
发表于 2025-1-15 08:46:48 来自手机 | 显示全部楼层
twrzluxr 发表于 2025-1-15 00:03
加油,话说大哥为什么没有申请到试验箱

刚刚才学习到第七集
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-01-15 19:14:26
已绑定手机

1

主题

9

回帖

41

积分

新手上路

积分
41
发表于 2025-1-15 19:05:36 | 显示全部楼层
mansun*** 发表于 2025-1-15 08:46
刚刚才学习到第七集

必须15集才给吗
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 15:32 , Processed in 0.127848 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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