找回密码
 立即注册
查看: 542|回复: 10

学习打卡 - Ai8051U深度入门

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-18 08:24:40 | 显示全部楼层 |阅读模式

通过擎天柱核心板学习Ai8051U视频的记录和体会

近期正在学习51单片机,已初步看完了内部结构。打算作些仿真实验,上网找datasheet,来到了本站。

有些年头没接触51单片机了,没想到近几年来,STC的51系列单片机发展如此神速,性能和功能扩展可谓有翻天覆地的提升。

感谢唐经理赠送的擎天柱核心板。

qtz.png

以下记录我通过这块核心板学习Ai8051U的过程和体会

  • 第一集 序言
  • 第二集 硬件及工具介绍
  • 第三集 点亮第一个LED
  • 第四集 USB不停电下载
  • 第五集 C语言基础
  • 第六集 IO输入输出
  • 第七集 定时器和中断
  • 第八集 定时器周期性调用任务
  • 第九集 数码管
  • 第十集 虚拟键盘Led和数码管
  • 第十一集 矩阵按键
  • 第十二集 复位系统
  • 第十三集 外部中断
  • 第十四集 IO中断
  • 第十五集
  • ...
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-18 10:20:47 | 显示全部楼层

第一集 序言

终于看完了第一集,给我的感觉是震撼,完全颠覆了我对传统8051单片机的认知。

视频中介绍了AI8051u突出的6个特点:

屏幕显示和视频播放(flash编程器)
IIS录放音
PWM_DMA
频谱分析仪(上位机)
手写计算器
QSPI,PWM移相,硬件乘除,单精度浮点

并通过视频真实展现!

另外还介绍了一些硬件参数和指标,目前我还不是太了解。

ch01-001.png

相信通过继续学习,应该能掌握。

以上,是本集的学习总结。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-18 11:16:43 | 显示全部楼层

第二集 硬件及工具介绍

看完本集,主要是Ai8051U实验箱硬件部分的介绍。

实验箱的硬件配置非常丰富,做工也非常精巧:

ch02-001.png

ch02-002.png

开发工具是 keil C251,这个需要重新学习,之前用的是 keil C51

以上,是第二集的学习总结。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-18 12:20:14 | 显示全部楼层

第三集 点亮第一个LED

根据上一集的介绍安装开发环境:

  • keil C251,
  • AIapp-ISP-v6.95E,当前已是v6.95E版本了!

编译如下实验C代码:

#include "ai8051u.h"

void main(void)
{
	P2M0 = 0;		//P2端口(P20-P27)为准双向口
	P2M1 = 0;

	while(1)
	{
		P20 = 0;	//P20端口输出0V
		P21 = 0;	//P21端口输出0V
	}
}

F7顺利编译通过。

下载程序时有些周折。我用的Win7未发现串口。后按P3.2+Power按键,连接成功。

ch03-001.png

运行效果如下:

qtz01.png

以上是第三集的学习总结。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-18 12:33:21 | 显示全部楼层

第四集 USB不停电下载

查资料才明白:USB-HID和USB-CDC的概念。

USB-HID(Human Interface Device)是一种人机交互设备,通常用于连接键盘、鼠标、游戏控制器等外设。

USB-CDC(Communication Device Class)是一种通信设备类,用于模拟提供虚拟 COM 端口 UART 接口的串行端口。

STC单片机U后缀的代表都有USB接口。

推荐使用 USB-CDC 模式。

ch04-001.PNG

上代码

#include "ai8051u.h"			//调用头文件
#include "stc32_stc8_usb.h"		//调用头文件

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

void main(void)
{
    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();
        }
	
		P20 = 0;	                                //P00端口输出0V
		P22 = 0;	                                //P02端口输出0V	}
}

看看isp串口的变化

ch04-002.png

以上是第四集的学习体会。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-20 12:51:02 | 显示全部楼层

第五集 C语言基础

较之汇编,C语言对人类阅读更加友好,同时也兼顾了性能,可直接操作底层硬件。

本集讲解了通过重定向USB-CDC串口之printf函数,替代的标准库中的实现,可为后续的开发调试提供定制。

ch05-001.PNG

代码

#define PRINTF_HID            //printf输出直接重定向到USB HID接口

int printf_hid (const char *fmt, ...);

#if defined PRINTF_SEGLED
#define printf  SEG7_ShowString
#elif defined PRINTF_HID
#define printf  printf_hid	//#define  替换名  被替换名
#endif

演示代码

#include "ai8051u.h"			//调用头文件
#include "stc32_stc8_usb.h"		//调用头文件
...
void main(void)
{
  ...
	while(1)
	{

        if (bUsbOutReady)							//如果接收到了数据
        {
			if( X && Y )	//如果条件为真,输出什么
			{
				printf("条件为真\r\n");
			}

            usb_OUT_done();							//
        }
        }
}

运行效果

ch05-002.png

后面讲到的数据的基本类型、数的进制、C语言常用运算符等内容。与标准C无差异。

以上是本集的学习体会。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-20 13:30:54 | 显示全部楼层

第六集 IO输入输出

从这一集开始终于进入实操了。

Ai8051U 提供了多达 P0 ~ P7 共8组IO端口,比我之前所了解的 P0 ~ P3 足足多了一倍。

ch06-001.PNG

GPIO 在准双向模式下,灌电流可达20mA,驱动能力足够强劲!

通过读取端口电平,高电平对应逻辑1,低电平对应逻辑0,可以判断示例中的按键状态。

ch06-002.PNG

在实际应用的,还需要对物理按键进行去抖动处理,提高实用性。

ch06-003.PNG

范例代码

//任务3:按一下灯亮,按一下灯灭
    if( P32 == 0 )
	{
		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松开
		}
	}

运行效果

ch06-003.png

以上是第六集的学习体会。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-20 17:48:47 | 显示全部楼层

第七集 定时器和中断

本集开始学习51单片机内部最重要的功能之一:定时器。

在实际应用中,经常会碰到需要延时的应用,如时钟等。如果采用软件延时(也就是让单片机执行空指令,消耗一定时钟周期来等待)的话,将增加CPU开销,降低CPU的工作效率,并会使其他操作响应延缓。这时,片内定时器就能发挥作用了。

翻阅数据手册,可知 Ai8051U 片内有6个定时器。

ch07-001.PNG

定时器的本质就是从设定值数到溢出之后置位一次标志位,如果使能ET0就可以进入中断!

片内定时器可实现精准的定时,这里涉及到时时长的计算,见下图:

ch07-002.PNG

范例代码

if( P32 == 0 )								//判断P32按钮是否按下
	{
		Delay20ms();							//延时20ms消抖
		if( P32 == 0 )
		{
			Run_State = !Run_State;				//运行状态取反
			if( Run_State==1 )					//运行
			{
				Timer0_Init();
			}
			else
			{
				TR0 = 0;						//关闭定时器
				P20 = 1;
				P21 = 1;
			}
			while( P32 == 0 );					//等待P32松开
		}
	}

}

运行效果

ch07-001.gif

以上是本集的学习体会。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-20 19:50:37 | 显示全部楼层

第八集 定时器周期性调用任务

这一讲干货满满!将定时器周期性任务调度讲得非常透彻。

ch08-001.PNG

随着任务复杂性提高,代码量快速增长。本章还示范给出了如何合理组织代码的宝贵经验。

之前的演示,所有代码都放在一个文件中。本集讲解的任务比较复杂,如果还是在一个文件中写所有代码,逻辑就不够清晰了。重新组织代码如下

main.c
 |-> io.c
 |-> task.c
 |-> config.c

Calls-main-c.png

定时器部分的代码与上一集区别不大,主要是任务更加复杂多样了。

运行效果

ch08-001.gif

以上是本集的学习心得。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2025-02-16 09:39:16
已绑定手机

1

主题

15

回帖

197

积分

注册会员

积分
197
发表于 2025-1-21 11:23:04 | 显示全部楼层

第九集 数码管

数码管是常用的显示输出方式,特别是在工业仪表方面。

多位数码管最常采用动态显示方式。

ch09-001.PNG

在本集中,对数码管的进行了全面的讲解。

开发工具还提供了虚拟显示功能,太棒了!使用擎天柱核心板也可以显示字符了,方便调试和学习了。

受擎天柱核心板限制,无板载数码管。使用虚拟显示,也可显示数码了!

运行效果

ch09-001.gif

以上是本集的学习心得。

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 11:18 , Processed in 0.154692 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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