Ccjiayou 发表于 2025-2-25 11:39:52

AI8051U学习记录

学习心得:Ai8051U单片机实验第一节 Ai8051U简介在这一节中,我了解了Ai8051U单片机的基本信息和应用场景。Ai8051U支持8位和32位指令集,硬件功能丰富,支持PWM、DMA、硬件浮点运算等,能够应用于多种领域,如音视频处理、频谱分析等。第二节 实验环境介绍通过Ai8051U实验箱,配合KeilC251编程环境,我能访问多种硬件资源,包括USB接口、数码管、OLED显示屏、ADC输入等。这一部分让我熟悉了编程环境的配置与硬件连接。第三节 点亮LED3.1 实验原理通过设置GPIO端口模式,当P40为低电平时,控制三极管导通,P00为低电平时点亮LED。3.2 实验代码
#include "ai8051u.h" //引入头文件void main(void) {    P2M1 = 0X00; P2M0 = 0X00; //配置P2端口为准双向模式    //P0M1 = 0X00; P0M0 = 0X00;//配置P0端口为准双向模式    //P4M1 = 0X00; P4M0 = 0X00;//配置P4端口为准双向模式    //P40 = 0;//打开开关三极管    while(1) {      P20 = 0; //低电平输出      //P00 = 0; //点亮LED    }}

3.3 实验结果成功点亮LED,程序能在P2端口输出低电平,LED成功亮起。第四节 USB不停电下载4.1 实验原理通过USB进行程序下载而不需要断电,增强调试便捷性。配置USB库文件,设置P_SW2和EA寄存器,使得中断和USB通信功能正常工作。4.2 实验代码
#include "stc32_stc8_usb.h"#include "ai8051u.h"void usb_Init(void) {    WTST = 0;    EAXFR = 1;    CKCON = 0;    usb_init();//USB初始化    EA = 1;    while (DeviceState != DEVSTATE_CONFIGURED);//等待USB配置完成}

4.3 实验结果成功实现通过USB下载程序,并且在不停电状态下调试,USB设备正确识别为CDC接口。第五节 C语言基础5.1 printf函数的使用通过使用USB-CDC接口,成功将printf输出重定向到USB,能够实时调试程序。5.2 实验代码#define u8 unsigned charvoid main() {    printf("Ai8051U实验开始\r\n");    printf("当前状态: %d\r\n", led_state);}

5.3 实验结果通过printf函数,成功输出调试信息,进一步加深了对printf的使用理解。第六节 I/O输入输出6.1 GPIO配置通过配置GPIO口,我能够控制LED和读取按键状态。通过P32、P33判断按键状态,进行对应操作。6.2 实验代码
void key1_Press(void) {    if (P32 == 0) {//按键检测      Delay20ms();//去抖      if (P32 == 0) {            state = !state;            P40 = state;//切换LED状态            printf("状态: %d\r\n", state);      }      while (P32 == 0);//等待按键松开    }}

6.3 实验结果按键输入检测成功,能够根据按键状态控制LED并输出状态信息。第七节 定时器中断7.1 定时器配置定时器配置使得程序能够定时执行任务,提高了程序的效率,避免了使用延时函数的低效。7.2 实验代码
void Timer0_Init(void) {    TM0PS = 0x1E;//设置定时器预分频    AUXR &= 0x7F;//设置定时器12T模式    TMOD &= 0xF0;//设置定时器模式    TL0 = 0xFC;    //设置定时初始值    TH0 = 0x03;    //设置定时初始值    TF0 = 0;       //清除定时器溢出标志    TR0 = 1;       //启动定时器    ET0 = 1;       //使能定时器中断    EA = 1;      //使能全局中断}

7.3 实验结果成功实现定时器中断,每1秒钟定时执行任务。
页: [1]
查看完整版本: AI8051U学习记录