第一节Ai8051U简介
1.1Ai8051应用
1. 屏幕显示和视频播放(flash编程器)
2. IIS录放音
3. PWM_DMA
4. 频谱分析仪(上位机)
5. 手写计算器(Ai功能)
6. QSPI,PWM相移,硬件乘除,单精度浮点
1.2 Ai8051基本信息
支持8位/32位指令集,性价比高
管脚兼容: 89C52RC, 12C5A60S2
34K SRAM(2Kedata, 32K xdata), 64K Flash
TFPU@120MHz, 硬件浮点/硬件三角函数 运算器
DMA支持PWM, DMA支持外设直接到外设, P2P
120MHz-PWM支持硬件移相,16位PWM; 真12位ADC
USB, 4组串口,12位ADC, 轨到轨比较器
QSPI, SPI, I2S, I2C, TFT-i8080/M6800接口
第二节实验环境介绍
2.1硬件简介:Ai8051U实验箱
1.调试与通讯接口:USB-TypeC、USB-TypeA、USB转双串口、USB Link 1D接口
2.声光部件:8路流水灯、8位数码管、OLED显示屏接口、TFT彩屏接口、无源蜂鸣器、话筒录音、立体声线路输出、立体声耳机输出
3.按键:矩阵按键、ADC键盘、T0、T1按键、INT0、INT1按键、复位按键、电源按键
4. 其他外设:示波器BNC输入、DS18B20温度传感器、32768Hz无源晶振、RTC电池、红外发射接收
2.2软件和工具
1.编程软件:KeilC251,用于编写程序
2.ISP软件:AIapp-ISP,用于下载程序与调试,提供头文件,同时提供多种常用工具
3.下载插件:Keil中断拓展插件,可将中断号拓展到254
4.下载代码包和手册:方便学习参考
2.3下载程序
第三节 点亮LED
3.1新建工程
3.1.1选择单片机型号
3.1.2添加文件
添加main.c文件到工程
3.1.3配置相关选项
CPU Mode :Source模式,Ai8051U系列目前只支持Source模式,由于Ai8051U系列单片机在中断中的压栈和出栈都是4字节模式,勾选”4 Byte Interrupt Fram Size”
Memory Model:Xsmall模式,Ai8051U的程序逻辑地址为FF:0000H~FF:FFFFH,需要使用24位地址线才能正确访问,默认的常量类型必须使用“far”类型,默认指针变量必须为4字节
Code Rom Size:代码大小在64k以内选择”Large”,超过64k选择”Huge”,同时设置ROM地址和大小
HEX文件格式选择:程序大小在64k以内选择HEX-80,超过64k选择HEX-386
3.2程序编写
3.2.0实验原理
(1)当P40为低电平时,控制三极管导通,当P00为低电平时,点亮LED
(2)编写程序时,首先要添加单片机对应型号的头文件
(3)IO口工作模式配置:通过端口模式配置寄存器PxM0、PxM1进行配置
3.2.1添加头文件
利用ISP软件添加头文件”ai8051u.h”
3.2.2实验程序
- #include "ai8051u.h" //调用头文件
- //使用擎天柱进行练习
-
- void main(void)
- {
- P2M1 = 0X00; P2M0 = 0X00;
-
- // P0M1 = 0X00; P0M0 = 0X00; //配置I/O口模式,准双向
- // P4M1 = 0X00; P4M0 = 0X00;
-
- // P40 = 0; //打开开关三极管
-
- while(1)
- {
- P20 = 0;
-
- // P00 = 0; //低电平点亮LED
-
- }
- }
复制代码
3.2.3实验结果(擎天柱版)
成功点亮LED
第四节USB不停电下载
4.1下载USB库文件
4.2移植关键部分到工程
4.2.0实验原理
(1)功能脚切换控制(P_SW2)B7:EAXFR,置1使能访问XFR,扩展特殊功能寄存器
(2)中断使能寄存器(IE)B7:EA,总中断允许控制位,置1使CPU开放中断
4.2.1添加头文件
添加“stc_usb_cdc_32.lib”和“stc32_stc8_usb.h”文件
4.2.2USB初始化函数
由lib与.h文件实现
4.2.3命令参数
设置自定义命令(相当于密码),用于实现不停电下载
4.2.4设置寄存器
设置P_SW2与EA(或IE),使能中断功能
4.3实验程序
4.4实验结果
下载程序后识别到USB-CDC,可以实现不停电下载
第五节C语言基础
5.1USB-CDC串口之printf函数的实现
打开USB库中的PRINTF_HID宏定义(去掉//),将printf重定向到printf_hid
最新库文件直接定向到printf_usb,无需使用printf_hid
原型函数printf_hid(const char *fmt, …);
参数fmt -- 是格式控制字符串,包含了两种类型的对象:普通字符和转换说明。
普通字符:在输出时,普通字符将原样不动地复制到标准输出。
printf("8051U深度入门到32位51大型实战视频\r\n");
转换说明:不直接输出,用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明符结束,从而说明输出数据的类型、宽度、精度等。
printf("8051U深度入门到32位51大型实战视频,%s\r\n","加油");
转换说明简介:
1.类型:根据不同的 fmt 字符串,函数可能需要一系列的附加参数,每个
参数包含了一个要被插入的值,替换了 fmt 参数中指定的每个 % 标签。
关于附加参数,既可以是变量,也可以是常量。
2.位置:printf()函数的普通字符和转换说明放在" "双引号内,附加参数
放在双引号外,每个附加参数之间用逗号隔开。
3.数量:printf() 的附加参数与转换说明符是⼀⼀对应关系,如果有 n 个转
换说明符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的转
换说明符,printf() 可能会输出内存中的任意值。
5.2数的进制:2进制、8进制、10进制、16进制
5.3数据的基本类型
想要使用64位变量,需要在程序文件里面添加申明:#pragma float64
5.4C语言常用运算符
第六节I/O输入输出
6.1GPIO简介
GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,可以读入引脚状态(高电平/低电平)和输出高低电平,高电平:VCC,低电平:GND
GPIO工作模式配置:通过PnM1和PnM0进行配置
驱动LED的方法:
GPIO电压需要在一定范围才能正确识别高低电平
6.2按键输入检测
6.2.0实验原理
使用“==”直接读取引脚电平,按键按下时引脚通过电阻与GND相连,为低电平
按键按下后一小段时间内电平会出现波动,一般在20ms以内,使用软件延时进行消抖
软件延时程序:使用ISP软件自动生成
6.2.1实验程序
常用函数编写在头文件中,便于重复使用
6.2.2实验结果(课后练习)
成功实现要求的功能
第七节定时器中断
7.1定时器简介
由于MCU是单核的,同一时间只能执行一个事情,没有特殊情况不能被打断。所以这里就要引入一个特殊的情况,定时器中断。
定时器作用:
(1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
(2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)
7.2定时器应用
使用ISP软件进行定时器配置
7.2.1定时器工作原理(定时器0模式0)
系统时钟经过预分频、12分频/不分频作为定时器的输入
C/T控制定时器/计数器0作为定时器(置0)还是计数器(置1,输入为外部引脚)
T0_M1,T0_M0控制定时器模式,00为16位自动重装载模式
TL0与TH0设置定时初始值
使能中断后即可实现定时中断功能
定时器计算公式:
7.2.2实验程序
复制代码
7.2.3实验结果(课后练习)