[AI8051U入门第一步]环境安装和按键控制流水灯
学习目标
1、学习AI8052U的环境搭建
2、学习GPIO的输出
3、学习GPIO的输入
4、延时函数编写
本文章的具体代码可在我的资源里面下载
一、AI8051U环境搭建
STEP1:先去官网下载最新版本的ISP软件
STEP2:然后点击keil仿真设置,选择我们自己的单片机型号,最后电机添加型号和头文件
STEP3:然后选择我们keil的安装路径点击确定就添加成功了
STEP4:然后在keil里面查看单片机型号
二、AI8051介绍
Ai8051U 是 STC 公司推出的一款高性能 32 位 8051 单片机。它以超强抗干扰、超低价、高速、低功耗为目标,在智能硬件、物联网、工业控制等领域应用前景广泛。以下是具体介绍:
性能特点:
强大内核:基于 32 位 8051 内核,同时兼容 16 位和 8 位机,拥有 10 个 32 位累加器、16 个 16 位累加器和 16 个 8 位累加器,支持 32 位加减指令、16 位乘除指令以及 32 位乘除运算(MDU32)。
浮点运算:集成单精度浮点运算单元(TFPU),可支持三角函数和反三角函数运算,能快速处理复杂数学运算。
高速读写:支持单时钟 32/16/8 位数据读写(edata)和单时钟端口读写,数据处理效率高。
低功耗模式:具备 IDLE 模式和 STOP 模式两种低功耗模式。IDLE 模式下,CPU 停止工作但外设仍运行,6MHz 工作频率时功耗约 1.3mA;STOP 模式下,CPU 和外设都停止工作,功耗可降至 1μA 以下。
资源配置:
存储资源:内部集成 34K SRAM(其中 2K 为 edata,32K 为 xdata)和 64K Flash,可满足一定程序和数据存储需求。
外设接口:拥有丰富的外设接口,包括 USB、4 组串口、QSPI、SPI、I2S、I2C、TFT - i8080/M6800 接口等,还配备 12 位 ADC 和轨到轨比较器,可方便连接多种外部设备。
封装与兼容性:
多种封装:有 PDIP40、LQFP44、LQFP48 等封装形式,方便不同应用场景下的电路板设计。
引脚兼容:管脚兼容 89C52RC、12C5A60S2 等芯片,便于在现有设计基础上进行升级替换。
开发支持:
编译器支持:支持 Keil C51(8 位)和 Keil C251(32 位)编译器,开发者可根据使用 8 位或 32 位指令集的需求选择合适编译器。
系统移植:已成功移植 uC/OS - II 和 FreeRTOS 等多种实时操作系统,以及 FATFS 和 Petit FATFS 等文件系统,还支持 uGFX 和 U8g2 等图形用户界面,有助于简化开发过程,提升开发效率。
三、GPIO输入输出
AI8051U的GPIO也有4种模式和STC32G一样的。
接下来是LCD的流水灯程序
/**********************************
*功能:P2的流水灯
*形参:unsigned long ms 延时时间(单位ms)
*时间:2025/7/14
*作者:单片有机机
*/
void waterfall_light(unsigned long ms);
延时函数,这里的Sysclk是33.1776MHz
/**********************************
*功能:毫秒延时
*形参:unsigned long ms 延时时间(单位ms)
*时间:2025/7/14
*作者:单片有机机
*/
void delay_ms(unsigned long ms);
四、代码展示
system.c
#include "system.h"
/**********************************
*功能:IO初始化
*形参:无
*时间:2025/7/14
*作者:单片有机机
**********************************/
void GPIO_Init(void){WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快P_SW2 |= EAXFR; //扩展寄存器(XFR)访问使能CKCON = 0; //提高访问XRAM速度 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; //设置为准双向口 }
/**********************************
*功能:毫秒延时
*形参:unsigned long ms 延时时间(单位ms)
*时间:2025/7/14
*作者:单片有机机
*/
void delay_ms(unsigned long ms)
{unsigned long i;do{i = Sysclk / 6000;while(--i); //6T per loop}while(--ms);
}
system.h
#ifndef __system_H
#define __system_H
#include <AI8051U.H>#define Sysclk 33177600L
void GPIO_Init(void);
void delay_ms(unsigned long ms);#endif
LED.c
#include "LED.h"
#include "system.h"#define INT1 P33 //按键/**********************************
*功能:P2的流水灯
*形参:unsigned long ms 延时时间(单位ms)
*时间:2025/7/14
*作者:单片有机机
*/
void waterfall_light(unsigned long ms){static int light_cnt=0;switch(light_cnt){case 0:P27=1;P20=0;light_cnt =1;break;case 1:P20=1;P21=0;light_cnt =2;break; case 2:P21=1;P22=0;light_cnt =3;break;case 3:P22=1;P23=0;light_cnt =4;break; case 4:P23=1;P24=0;light_cnt =5;break;case 5:P24=1;P25=0;light_cnt =6;break; case 6:P25=1;P26=0;light_cnt =7;break;case 7:P26=1;P27=0;light_cnt =0;break; }delay_ms(ms);
}
LED.h
#ifndef __LED_H
#define __LED_H
#include <AI8051U.H>void waterfall_light(unsigned long ms);#endif
main.c
/********************************** (C) COPYRIGHT ******************************** File Name : Main.c* Author : 单片有机机* Version : V1.0* Date : 2025/07/14* Description : AI8051U的KEY控制流水灯* Hardware : 按键 P33 流水灯 P20-P27* Frequency : 33.1776Mhz
*******************************************************************************/
#include <AI8051U.H>
#include "system.h"
#include "LED.h"unsigned char waterfall_flag =0;
void main(){GPIO_Init(); //IO初始化 while(1){if(INT1 ==0){ //按键按下delay_ms(10);//延时消抖while(INT1 ==0); //等待按键抬起waterfall_flag =!waterfall_flag; //流水灯启停标志位 -1 开启 -0 关闭} if(waterfall_flag ==1){ waterfall_light(50);//流水灯程序} }
}/****************************************
*Updown Preject
*1、GPIO输入输出
*2、UART串口输出
*3、UART_MOdbus_RTU_Salve
*4、UART驱动4G模块
*5、ADC读取气体传感器
*6、Timer定时器
*7、NVIC引脚外部中断
*8、硬件SPI驱动0.96寸OLED
*9、软件SPI驱动1.88寸寸LCD
*10、软件IIC驱动AHT10
*11、硬件IIC驱动AHT10
*12、等等
****************************************/
#总结
学习就是投资自己。