txbweiwu123 发表于 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.c和task.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,10, 10,   samle_matrixkey},{0,10, 10,   samle_adckey},{0,300, 300, samle_NTC},{0,500, 500, samle_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就可以实现定时器周期性多任务调度系统。

txbweiwu123 发表于 2025-10-27 09:14:15

第八集的内容比较多,而且涉及 的概念也多,函数,指针,数组,结构体,糅杂在一起,需要很好的C语言功底才能理解和应用,多花点时间去学习。

txbweiwu123 发表于 2025-10-29 11:38:25

求助!!!
实验2   查询方式,查询到电脑命令后,printf_usb("Hello World!\r\n")
按照视频教学的方法创建项目,添加代码,编译没有问题,下载到实验箱后,运行出错,发送6,没有返回Hello World! 。如图:

怎么回事啊。





txbweiwu123 发表于 2025-11-19 09:31:58

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



txbweiwu123 发表于 2025-11-21 10:51:32

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

风徐来 发表于 2025-12-10 08:31:02

加油,坚持就是胜利,我也是打卡领到实验箱的,对学习单片机很有意义。

芯Skye 发表于 2025-12-11 09:37:23



注册坛友福利【免费+包邮 送】擎天柱: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

txbweiwu123 发表于 2026-1-21 16:43:50

第九集数码管一、数码管介绍:数码管本质上就是几个LED灯共同组成的8字形显示器,如图1,8个LED


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

数码管引脚通过两个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;      //将数据右移一位,则最高位的移入CYHC595_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,0xfe);}在主函数中调用seg_task()函数,就可以实现静态显示数字了。
页: 1 [2]
查看完整版本: 学习Ai8051U教学视频心得实验箱