冲哥-8051U深度入门到32位51大型实战--学习记录帖
如题,记录STC最新AI8051U亲密接触过程。第一集 序言 冲哥
AI8051U优势:
一、屏幕显示孼视频播放(FLASH编程器)。
二、IIS录放音。
三、PWM_DMA。
四、频谱分析仪(上位机)
五、手写计算器。
六、QSPI\PWM移相,硬件乘除,单精度浮点。
1、演示屏幕显示和视频播放功能。首先矫正定位刷新。主频40M。选择串行FLASH编程器。
2、演示IIS录放音,STOP 50 VOL音量.集成了录放音的功能。
3、演示PWM_DMA功能,WS2812点阵屏显示数字时钟。覆盖涂色的亚克力板看的更清晰,其实下面可以加一层碳酸纸或散光膜。用的PWM_DMA实现的功能。实现一千多颗2812灯的显示不会干扰。
4、演示频谱仪。需要用到FFT绘图。中心频点在2.5K左右。采用IIS录音+FFT快速刷新。
5、演示手写计算器。手写自动输入和自动计算。
6、演示FLASH播放器。用的屏9341.擦除芯片,选择串行FLASH编程器。加载图片,
简介:
Ai8051U,USB 型 1T 8051,支持32位和8位指令集, RMB2.3
管脚兼容天王级别的:89C52RC,12C5A60S2
要兼容8位8051指令集,可以用 Keil C51/IAR/SDCC 编译器
===就相当于更强大的8H8K64U
要兼容32位8051指令集,可以用 Keil C251 编译器,双核兼容设计
===就相当于更强大的?32G12K128, 32G8K64
34KSRAM(2K edata, 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 接口
PDIP40,LQFP44,LQFP48
第一课时完结。 必须点赞 第二集 硬件及工具介绍 冲哥
实验箱正面讲解:
1、演示AI8051U实验箱,PCBA-成品线路板。一条数据线+一个短路帽。
2、USB-TypeA接口,双USB数据线配套。
3、USB Link 1D接口,下载器使用。
4、USB TypeC接口,转接口。
5、USB转双串口,用于通讯集成(STC自研芯片),可以替换CH430,最高波特率在10M左右,基本市面上常用通讯协议支持在内。
6、TF卡插座、测试文件系统使用。在实际应用中可以扩展自动化系统资料存储与保存。
7、示波器BNC输入,需要配备示波器采集表笔头。后面红色元件为示波器调整波形。修正失真。
8、立体声耳机输出,接耳机放音。
9、立体声线路输出,接音响线路。
10、话筒录音,实现录音功能。
11、OLED显示屏SPI/I2C 8/7线接口,可以接显示屏。
12、8位流水灯-入门基操。
13、TFT彩屏,两排线接入。
14、掉电检测电压调节--测试存储使用,掉电以前要保存--比如自动化设备异常停电的数据保存---检测到断电行为。
15、红外接收。
16、红外发射。
17、矩阵键盘,两列+四行,和ADC键盘区别,矩阵键盘采用横向四个脚纵向两个脚实现控制。ADC键盘16个都是用一个引脚控制。
18、AI8051U主芯片,48脚。
19、T0、T1按键,定时器控制按键。
20、INT0\INT1按键,中断控制按键。
21、复位按键。
22、电源按键,单片机强制断电,进入下载模式。
23、QSPI/SPI FLASH FLASH编程器通过上位机软件通过USB传输到单片机存储至此。
24、LCD对比度插口调节 ,最下面接口可以接LCD的屏。显示不清晰可以用左下角电位器调节。
25、RTC时钟,芯片内置RTC功能,保持主板上点时钟最新计时。
26、相关短路帽调试插针,后续功能演示。
27、外部并行总线扩展32KSRAM.---------
实验箱背面讲解:
28、32768Hz无源晶振,RTC实验必须用到这个这个晶振。
29、24C02 EEPROM,存储芯片,外置存储器掉电存储。
30、DS18B20温度传感器,低成本温度检测。
31、无源蜂鸣器,声音预警。
32、SP3485,485通信。
33、AI8H12K12U USB转双串口,一个USB连接电脑转双串口。
34、TP2604S、74HC4051、LMV358、TLV320AIC23B I2S DAC等芯片后面测试时讲解。
软件和工具:
35、安装KEIL5编程软件。
36、下载ISP软件----写入单片机必须工具。
37、添加单片机型号的头文件。
38、Keil中断扩展插件。
39、下载代码包和手册。
40、安装KEIL5讲解--略。
41、下载AI8051U规格书,最新手册。
42、下载实验箱1.2代码包
43、下载拓展Keil的C代码中断号并找到KEIL5安装路径对应安装。
44、下载第一个程序。
1)单片机选择AI8051U-34K64
2)实验箱使用USB下载,进入USB下载模式需要先按住实验箱P3.2/INT0按键,P32接地,然后按一下电源开关0N/0FF断电,松开上电。正常情况下就可以识别出HID1 USB Writer设备,
3)然后选择下载的程序文件,下载的时候一定要注意选对IRC时钟频率,开发文件中查看#define MAIN_Fosc 时钟主频定义,
第二课时完结。
tianjing818 发表于 2025-1-19 10:06
必须点赞
谢谢{:4_269:}。 第三集 点亮第一颗LED 冲哥
一.创建空工程(参考手册6.5章节)
二.添加头文件 (利用ISP软件,结合手册6.4章节)
三.输入如下代码,并编译
1、新建设置超过64K程序的代码项目,选择保存路径,输入项目名称,添加目标芯片型号Ai8051u-32bit.。
2、添加第一个文件main.c.左侧树状路径选择Source Group 1---右键---Add Existing Files to Group添加新建的文件到本新工程中。--或者直接双击就可选择添加。
3Optionsfor Target中设置,选择Tatget选项卡,CPU选择 Source (251 native),4Byte...复选款一定要勾选,因为Ai8051u系列只支持source模式,由于Ai8051u系列单片机在终端中的压栈和出栈都是四字节(牵扯到内存分配管理),Memory model(内存模式)选择Xsmall:ptr-4.
3、在output(输出选项卡)选择创建文件格式HEX File中选择HEX-386,程序空间超过64K,则HEX Format必须选择HEX-386模式,只有程序空间在64K以内才可以选择HEX-80,
4、添加头文件.include头文件两种方式,<>和“”,第一种在系统安装文件,第二种开发项目本地文件夹路径文件,推荐用第二种"",避免移植项目遗漏。ISP可以自动生成相关头文件请选择项目保存位置。
5、main.c文件中#include 引用上面的头文件。
6、设置自动缩进四格,点击keil5上面工具栏左右侧那个扳手,不正确就需要修理,选择C/C++,缩进选4这样键盘TAB按键按一次会自动前进4格,shift+TAB自动后退4格。Edit0r语言选项卡选择GB2312,这样中文注释不会乱码。
7、左键双击头文件选中,右键--选择open file,就可以跳到头文件内容,方便快捷查看和对照。
8、main函数执行一次与多次循环的讲解,内嵌while函数。
9、点亮第一个LED灯的最小程序。编译完成。ISP选择选择新编译的文件,不需要时钟就不管他。
10、视频中下载后点亮结果点不亮,缺少P40=0;的声明,就和写代码不规范想打人一样-。-
11、改了后还是不亮,原来P40M0,P40M1写成P0M0,P0M1,想打人-。-
12、讲解P0等效电路图,SYS_VCC=3.3V,每个管脚串3,3K电阻,电源出口接PNPss8550三极管,P40端口接ss8550偏置电压0伏导通.(备注:SS8050NPN结构偏置电压必须高电平导通)
13、配置I/O口。
1、每个I/O孔的配置都需要两个寄存器进行设置。
2)P0M0即P0M0第0位和P0M1的第0位组合起P0.0的模式。
3)配置组合模式:
00准双向口,传统8051端口模式,弱上拉,灌电流可达20mA,拉电流为270-150uA
01推挽输出(强上拉输出,可达20mA,要加限流电阻)
10 高阻输入(电流既不能流入也不不能流出--此路不通@@)
11开漏模式,内部上拉电阻断开。即可读取外部也可对外输出(高低电平)。如果正确读取外部状态需要对外输出高电平,需外加上拉电阻,否则对不到外部状态,也无法对外输出高电平。
---开漏工作模式,对外设置输出1,等同于高阻输入。
---开漏工作模式,打开内部上拉电阻或外部加上上拉电阻,简单等同于【准双向口】
14、每个语句结束要:分号结束,大括号要缩进。
15、二进制4个0位对应16进制1个位0,所以八位十六进制写法就是0X00.
16、芯片管脚可以在ISP右侧快捷选项卡里面的《封装脚位》选项卡查看 P0M0=0可以理解为P00-P07为准双向口
17、ISP的IO口配置工具,在ISP软件右侧的IO配置工具中快速设置。
第三课时完结。 第四集 USB不停电下载 冲哥
一、.实验对比演示
二、.下载所需文件(STC官网-软件工具-库函数-USB库文件)
三.移植关键部分到工程:
添加头文件
USB初始化函数(lib+.h库实现)
命令参数
打开P_SW2寄存器和IE2寄存器(只打开一个位!)
1、实验对比演示。
2、下载所需文件
3、移植stc_usb_cdc_32.LIB文件到当前测试文件夹,Add文件到工程项目。
4、在main.c中引用USB头文件#include"stc32_stc8_usb.h"。
5、移植所有端口为双向。调用usb_init() 函数。
6、移植不停电下载命令行三行到main.c,注意此处的不停电下载命令要与ISP里面的命令要相同。
7、功能脚切换控制P_SW2中EAXFR设置(B7位)--扩展RAM区特殊功能寄存器(XFR)访问寄存机。0禁止,1允许访问。赋值用或等于(|=0x80 1000 0000)避免覆盖其他七位原值.
8、一直USB等待连接命令,while循环里移植发送缓冲区固定命令用于测试。
9、生成文件提示警告57,是因为头文件定义了很多函数实际还没有使用,可以点击顶部魔术棒快捷键,选择L251 MIsc,输入57屏蔽。
10、下载时检查CPU指令模式32-bit,勾选当目标文件变化时自动装在并发送下载命令---这样一生成完就可以自动下载。
第四课时完结。 第五集 C语言基础 冲哥
一.C语言 USB-CDC串口之printf函数的实现
二.数的进制:2进制、10进制、16进制
三.数据的基本类型
四.C语言常用运算符
1、C语言USB-CDC串口之printf函数的实现。
2、#define printfprintf_hid 替换名和被替换名。参数fmt 格式控制字符串,包含拉ing中对象:普通字符和转换说明。打印时英文输入双引号里面打印字符串。演示CDC测试。
3、转换说明:
1)类型,替换fmt参数中指定每个%标签,附加参数可以是敞亮,可以是变量。
2)位置:普通字符和转换说明放在双引号内,参数以英文逗号隔开。
3)数量:附加参数和转换说明是一一对应关系,有N个转换,printf参数是N+1,Print本体占1;如果参数少于对应转换,可能会输出内存中任意值。
4、ASCII字符代码表(ISP调试HEX模式 16进制输出的代码)
5、数据类型:想要使用64位变量,需要在程序文件里面添加申明:#pragma float64。
6、进制的转换,二进制,8进制,16进制-、
7、变量的定义方法和声明替换#define...
8’、C语言运算符,注意除号(/)只返回整倍数,求余用%号。强制转换运算结果前面添加(U16)。
9、定义变量分为全局变量和局部变量,注意作用域有效区。
10、算数运算符,+—*/%,++,--、
11、关系运算符:==,!=,>.<,>=,<=,单片机里面0为假,非零为真。
12、逻辑运算符: 逻辑与&&,逻辑或||,逻辑非!。
13、赋值运算符:=、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=。
14、位运算符:&、|、^、~、<<、>>。
15、其他运算符:点运算符,选择运算符。。。
第五课时完结。
第六集 I/O输入输出冲哥
一、什么是GPIO
二、按键输入检测
三、课后小练
1、什么是GPIO?
GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
高电平就是指接近于电源正极电压的电平;也叫逻辑“1”; VDD最大电压不能超过5.5V。上限溢出允许0.3v内.
单片机输出高电平就是输出VCC电压,输出低电平就是输出GND的电压。
四种模式:准双向口、推挽输出、高阻输出、开漏模式。 灌电流(电源到管脚串电阻尽量大于1K,不小于470欧)和拉电流(管脚到Gnd,推挽/强上拉)的讲解
单片机电压3.3V,施密特触发器,低电平不能高于0.99V,高电平不能低于1.18V。
2、按键输入检测:实验箱上P32串300R电阻,按下接地低电平,不按高电平。
3、代码编写:按下亮,松开灭 。
4、按键参数状态取反(!),交互状态,while循环锁定只输入一次。
5、按键消抖。延时20毫米(ISP右侧延时计算器),引用头文件#include "intrins.h" 。延时后内部嵌套一个if循环里面包含while确认判断指令是否为消抖后结果.
6、 main函数里面添加以下三条指令。
WTST = 0; //设置程序指令延时参数,
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
第六课时完结。
第七集 定时器中断 冲哥
一、定时器的介绍
二、定时器的应用
三、函数的定义、声明、调用
1、单核只能执行循环单条命令执行完毕才执行下一个命令,没有特殊情况不能被打断,引入特殊情况定时器中断。
2、定时器作用:
1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作。
2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)。
3、ISP软件右侧定时器计算器自动生成定时函数。选择时钟24M,定时3秒,模式位24位自动重载。
4、边界定时器中断执行测试。
5、关于Keil软件8051和80251编译器所有版本中的BUG,0xfd、0xFE、0xFF问题,主要表现为字符串中不能含有0xFD编码的汉字,否则在编译时会跳过而出现乱码,解决办法在0XFD编码的汉字后增加一个0xfd.
官方解决方案printf("数\xfd学") 显示正常。
6、定时器应用:定时器0模式0(16位自动重装载模式)图解。
7、定时器模式寄存器(TMOD)当GATE=0,TR0=1,定时器开始。
8、中断请求寄存器TCON讲解,TF0定时器0溢出中断标志,中断服务中,硬件自动清零。
9、IE0:外部中断0中断请求标志,中断服务程序中,硬件自动清零。
10、计算定时器的原理讲解。
11、函数的定义、声明、调用。
12、函数名不能与C语言关键字重名。定义函数名、返回值、参数。
13、声明:在头文件中声明结尾以英文分号结束。
14、调用:在需要的地方调用函数名,结尾加上小括号和分号,如果有参数就写入括号内,以英文逗号分开。
15、代码功能演示:关闭自动重载定时器TR0=0,
16、代码调试,状态参数取反(!)与停止。演示交互式控制。
第七课时完结。
页:
[1]
2