找回密码
 立即注册
楼主: txbweiwu123

学习Ai8051U教学视频心得实验箱

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:69
  • 最近打卡:2026-01-23 09:48:56
已绑定手机

1

主题

17

回帖

291

积分

中级会员

积分
291
发表于 2025-10-26 17:02:51 | 显示全部楼层
这是第八集的第二部分

一,文件的创建
创建文件需要三步:新建文件并保存,添加到工程,添加引用路径。
一般的一个.c和一个.h文件执行一个设置或一个任务或功能。这样可以让代码简洁。
.h文件格式:
#ifndef_XXX_H
#define_XXX_H
调用头文件
函数声明
#endif
.c文件格式
#include xxx.h
函数定义
添加文件一定要记得引用路径和添加到工程里。
编写好文件后,打开工程设置,将文件所在的路径添加到工程中。
二,结构体
什么是结构体:将一些有内置联系的不同变量组织起来,封装成一个整体,即定义一个结构体,这是一种新的数据类型。
结构体声明:使用关键字struct
struct结构体名     //结构体名并非必要
{
成员列表
}
Typedef struct
{
U8 run;                //任务状态
U16 timcount;          //定时计数器
U16 tritime;            //重载计数器
Void*taskhook(void);//任务函数也是一个函数指针可以调用任何参数为空,返回值为空//的函数
} TASK_COMPONENTS;
Static TASK_COMPONENTS Task_coms[] = //创建结构体数组
{
//状态  计数  周期  函数
{0,    1,    1,  执行功能},
{0,    10,   10,  执行功能},
};
在工程中创建两个文件:task.ctask.h
task.c中输入
#include task.h
Typedef struct
{
U8 run;//任务状态
U16 timcount;//定时计数器
U16 tritime;//重载计数器
Void*taskhook(void);//任务函数
} TASK_COMPONENTS;
Static TASK_COMPONENTS Task_coms[] =
{//状态 计数 周期   函数
{0,  1,  1,    samle_display},
{0,  1010,   samle_matrixkey},
{0,  1010,   samle_adckey},
{0,  300300samle_NTC},
{0,  500500samle_RTC},
//这里还可以添加其他任务
};
Task.h中输入
#ifndef  __TASK_H
#define __TASK_H
#include config.h
Typedef struct
{
U8 run;//任务状态
U16 timcount;//定时计数器
U16 tritime;//重载计数器
Void*taskhook(void);//任务函数
} TASK_COMPONENTS;
Void task_marks_handler_callback(void);
Void task_pro_handler_callback(void);
#endif
就可以实现定时器周期性多任务调度系统。

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:69
  • 最近打卡:2026-01-23 09:48:56
已绑定手机

1

主题

17

回帖

291

积分

中级会员

积分
291
发表于 2025-10-27 09:14:15 | 显示全部楼层
第八集的内容比较多,而且涉及 的概念也多,函数,指针,数组,结构体,糅杂在一起,需要很好的C语言功底才能理解和应用,多花点时间去学习。
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:69
  • 最近打卡:2026-01-23 09:48:56
已绑定手机

1

主题

17

回帖

291

积分

中级会员

积分
291
发表于 2025-10-29 11:38:25 | 显示全部楼层
求助!!!
实验2   查询方式,查询到电脑命令后,printf_usb("Hello World!\r\n")
按照视频教学的方法创建项目,添加代码,编译没有问题,下载到实验箱后,运行出错,发送6,没有返回Hello World! 。如图:
屏幕截图 2025-10-29 113950.png
怎么回事啊。





回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:69
  • 最近打卡:2026-01-23 09:48:56
已绑定手机

1

主题

17

回帖

291

积分

中级会员

积分
291
发表于 2025-11-19 09:31:58 | 显示全部楼层
这几天反复看AI8051U手册,才知道是自己没有理解视频教程的意思而导致的问题。程序没有错,连接试验箱,下载程序到试验箱后,要在CDC-HID  串口助手选项卡内右侧的多字符串发送区域进行设置,勾选发送选项和HEX选项,勾选相应的两个就可以了。在发送小窗口右键点击,输入返回的内容,比如“HELLO WORLD!”,对应的HEX小窗口左键点击输入相应的数字,比如‘6’ ,设置好后,点击发送小窗口,则在接收窗口就可以显示相应的内容。
屏幕截图 2025-11-19 092739.png


截图202511190928244970.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:69
  • 最近打卡:2026-01-23 09:48:56
已绑定手机

1

主题

17

回帖

291

积分

中级会员

积分
291
发表于 2025-11-21 10:51:32 | 显示全部楼层
感谢STC公司免费赠送的AI8051U试验箱,全面进入32位时代。
利用试验箱和AiCube进行点灯实验。同时实现不停电下载功能。
打开 AiCube-ISPv6.96f)软件,点击AiCube选项卡,出现如图的窗口:
屏幕截图 2025-11-21 091918.png
点击新建AiCube项目,在出现的新窗口中:‘目标单片机型号’选择Ai8051U-32Bit
屏幕截图 2025-11-21 092226.png
‘项目名称’输入led01。‘项目保存路径’选择自己想要保存的文件夹。点选‘创建项目文件夹’。‘项目文件类型’为单文件项目。点击确定。点选左侧的‘USB通用串行总线’
然后点击保存按钮,这样可以实现不停电下载功能。再点击创建KEIL项目及程序文件按钮,打开KEIL软件。
双击main.c,打开main.c文件,可以看到程序的主框架已经写好,只需在主函数的添加用户代码处添加如下代码即可:
P40 = 0;
P00 = 0;
P07 = 0;
保存,编译,就可以创建单片机可执行文件:led01.hex文件。
屏幕截图 2025-11-21 093821.png
回到AiCube-ISP软件当中,要想实现不停电下载,就要在‘收到用户命令后复位到ISP监控程序区’选项卡中将下面的三个都点选上。
屏幕截图 2025-11-21 095527.png
点击下载按钮,程序顺利下载完成,试验箱上的led灯亮了两个,第一个和第八个。成功。
添加一些代码实现led灯闪烁功能:
        P40 = 0;
        P00 = 0;      //LED灯亮
        delay_ms(400);//延时函数,延时400毫秒。
        P00 = 1;      //LED灯灭
        delay_ms(400);//延时400毫秒
下载到试验箱,LED灯开始闪烁。实验成功。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:523
  • 最近打卡:2026-02-12 12:16:14
已绑定手机

3

主题

31

回帖

2448

积分

金牌会员

积分
2448
发表于 2025-12-10 08:31:02 | 显示全部楼层
加油,坚持就是胜利,我也是打卡领到实验箱的,对学习单片机很有意义。
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:67
  • 最近打卡:2026-02-10 13:19:40

22

主题

89

回帖

913

积分

版主

积分
913
发表于 2025-12-11 09:37:23 | 显示全部楼层
截图202512110936483471.jpg

注册坛友福利【免费+包邮 送】擎天柱:Ai8051U转89C52核心板 | 强大的视频学习资源


先用这个学习



【免费 + 包邮 送】 送/申样/采购 可上班时间加 如下您对应地区分销商的客服 QQ或微信联系
加STC华南区客服司经理QQ: 2234917869 ;  微信:18012226298  要求 【免费+包邮】 送, 还免费教仿真  
加STC华南区客服刘经理QQ: 3398500488 ;  微信:18106296592  要求 【免费+包邮】 送, 还免费教仿真  
加STC华南区客服佘经理QQ: 614777595;   微信:18106296591 要求 【免费+包邮】 送, 还免费教仿真
加STC华南区客服曹经理QQ: 1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服聂经理QQ: 2593903262; 微信:18106296598  要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服吴经理QQ: 1463035472; 微信:19952583954  要求 【免费+包邮】 送, 还免费教仿真
加STC西北区客服孙经理QQ: 1347154513 ;  微信:18106296593  要求 【免费+包邮】 送, 还免费教仿真
加STC华北区客服杨经理QQ: 1638975601 ;  微信:19952583876  要求 【免费+包邮】 送, 还免费教仿真
加STC华中区客服唐经理QQ:2571301708 ; 微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
加STC东北区客服李经理QQ: 1017142298 ;  微信:19952583534  要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服曹经理QQ: 3897745450 ;  微信:18012226281 要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服吴经理QQ: 1463035472 ;  微信:19952583954 要求 【免费+包邮】 送, 还免费教仿真

工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)
【免费 + 包邮 送】 送/申样/采购传统电话热线:
0513-89896509,0513-55012928,0513-55012929

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:69
  • 最近打卡:2026-01-23 09:48:56
已绑定手机

1

主题

17

回帖

291

积分

中级会员

积分
291
发表于 2026-1-21 16:43:50 | 显示全部楼层
第九集数码管
一、数码管介绍:
数码管本质上就是几个LED灯共同组成的8字形显示器,如图18LED
屏幕截图 2025-12-10 152243.png

他有很多样式。可以显示数字,部分字母及符号。可分为共阴极和共阳极两种。试验箱上为88字形共阴极数码管如图2.

屏幕截图 2025-12-10 152636.png

数码管引脚通过两个74HC595芯片与单片机的引脚连接,单片机控制数码管的显示。
任务1:数码管静态显示数字
利用数组保存数码管断码表:
0x3F,       /*'0', 0*/
    0x06,       /*'1', 1*/
    0x5B,       /*'2', 2*/
    0x4F,       /*'3', 3*/
    0x66,       /*'4', 4*/
    0x6D,       /*'5', 5*/
    0x7D,       /*'6', 6*/
    0x07,       /*'7', 7*/
    0x7F,       /*'8', 8*/
    0x6F,       /*'9', 9*/
    0x77,       /*'A', 10*/
    0x7C,       /*'B', 11*/
    0x39,       /*'C', 12*/
    0x5E,       /*'D', 13*/
    0x79,       /*'E', 14*/
    0x71,       /*'F', 15*/
    0x40,       /*'-', 16*/
    0x00,       /*' ', 17*/
    0x80,       /*'.', 18*/
定义数组Unsigned char SEG_NUM[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D,0x7D,0x07, 0x7F, 0x6F, };
定义变量:
#define HC595_SER P34//数据引脚
#define HC595_SCK P32//时钟引脚
#define HC595_RCK P35//移出引脚
输出函数
Void send_595(unsigned char date)
{
Unsigned char i;
For(i=0;i<8;i++)
{
Date <<=1;        //将数据右移一位,则最高位的移入CY
HC595_SER = CY;  //先把数据写到引脚上
HC595_SCK = 1;   //给一个上升沿信号
HC595_SCK = 0;   //复位
}
}
Void display_seg(unsigned char i1,unsigned char i2)
{
Send_595(i1);  //数码管断码输出,高电平点亮
Send_595(i2);  //数码管位码输出,低电平点亮
HC595_RCK = 1;
HC595_RCK = 0;
}
Void seg_task(void)
{
Display_seg(seg_num[0],0xfe);
}
在主函数中调用seg_task()函数,就可以实现静态显示数字了。

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-2-12 18:04 , Processed in 0.117978 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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