学习Ai8051U的总结笔记--《8051U深度入门到32位51大型实战视频》--打卡
情况介绍:对电子技术有兴趣,单片机的知识也了解一些。
8位的51系列单片机应用很广,但是在深圳国芯人工智能公司这里看到支持32位/8位51指令集的MCU还是非常令人鼓舞的。
从指标上看这款超越51系列的型号为Ai8051U的MCU功能很强大,运算能力强,接口众多,性能出众,希望能用其做出一些在测量方面常用的智能化仪表。
近期有些时间,注册了论坛会员,开始按照教学视频学习Ai8051U这款MCU。
学习网址:
https://www.stcaimcu.com/thread-11902-1-1.html 《8051U深度入门到32位51大型实战教学视频》--学习打卡16
第十六集 DS18B20测温
笔记:
1、DS18B20简介。
2、硬件连接。
3、功能描述。
4、代码编写。
学习心得:
总结:
后记:
2025年5月14日。 《8051U深度入门到32位51大型实战教学视频》--学习打卡15
第十五集 定时器做计数器
笔记:
1、计数器的作用。
只要输出信号是高低电平变化的传感器,想要计算高低电平脉冲个数的就可以接入MCU端口,用MCU的计数器功能将计算个数存入相关寄存器,程序读取寄存器中的计数值,完成相关工作。
2、定时器做为计数器的用法。
2.1 计数器逻辑结构。
当GATE=0(TMOD.7)时,如TR1=1,则定时器计数。
当GATE=1时,允许由外部输入INT1控制定时器1,这样可实现脉宽测量。
TR1为TCON寄存器内的控制位,具体功能描述见TCON寄存器的介绍。
当C/T=0时,多路开关连接到系统时钟的分频输出,T1对内部系统时钟计数,T1工作在定时方式。
当C/T=1时,多路开关连接到外部脉冲输入P3.5/T1,T1对外部脉冲输入计数,T1工作在计数方式。
单片机的定时器1有两种计数速率:一种是12T模式,每12个时钟加1,与传统8051单片机相同;另外一种是1T模式,每个时钟加1,速度是传统8051单片机的12倍。
T1的速率由特殊功能寄存器AUXR中的T1x12决定,如果T1x12=0,T1则工作在12T模式;如果T1x12=1,T1则工作在1T模式。
定时器1有两个隐藏的寄存器RL_TH1和RL_TL1。
RL_TH1与TH1共有同一个地址,RL_TL1与TL1共有同一个地址。
当TR1=0即定时器/计数器1被禁止工作时,对TL1写入的内容会同时写入RL_TL1,对TH1写入的内容也会同时写入 RL_TH1。
当TR1=1即定时器/计数器1被允许工作时,对TL1写入内容,实际上不是写入当前寄存器TL1中,而是写入隐藏的寄存器RL_TL1中,对TH1写入内容,实际上也不是写入当前寄存器TH1中,而是写入隐藏的寄存器RL_TH1,这样可以巧妙地实现16位重装载定时器。
当读TH1和TL1的内容时,所读的内容就是TH1和 TL1的内容,而不是RL_TH1和RL_TL1的内容。
当定时器 工作在模式1(TMOD/=00B)时,的溢出不仅置位TF1,而且会自动将的内容重新装入。
当T1CLKO/INT_CLKO.1=1 时,P3.4/T0管脚配置为定时器1的时钟输出T1CLKO。输出时钟频率为T1溢出率/2。
如果C/T=0,定时器/计数器T1对内部系统时钟计数,则:
T1工作在1T模式(AUXR.6/T1x12=1)时的输出时钟频率 = (SYSclk)/(TM1PS+1)/1/(65536-)/2。
T1工作在12T模式(AUXR.6/T1x12=0)时的输出时钟频率 = (SYSclk)/(TM1PS+1)/12/(65536-)/2。
如果C/T=1,定时器/计数器T1是对外部脉冲输入(P3.5/T1)计数,则:输出时钟频率 = (T1_Pin_CLK) / (65536-)/2。
2.2 定时器/计数器模式寄存器。
2.3 定时器/计数器控制寄存器。
3、定时器1测量INT1引脚低电平脉冲宽度。
4、课堂练习。
任务1:编写定时器1计数的的程序(为了方便计数,10个脉冲中断一次)。
任务2:编写INT1测量低电平时间(由按键模拟信号,100us的计数周期计数!)。
5、课后小练。
CT计数器:
在设备的出料端口有一个感应器,每次有成品出来就会有一个低电平出来,计算相邻的两个产品出来的时间差来计算CT时间。
a.计算P33引脚的相邻两次按下的时间,精确到100ms(即单个时间);
b.计算按下P33的次数(即总产量);
c.数码管前四位显示单个时间 ,后四位显示次数。
代码压缩包:
学习心得:
1、定时器和计数器的原理基本类似,都是计数,计数值溢出时产生相应中断或相应输出。
2、定时器/计数器都是对信号脉冲高低电平进行计数。
3、定时器/计数器利用MCU中系统时钟,可以做基于时间的段的统计与测量,将一些物理量转化成与时间有关的量。
总结:
1、学习了计数器的应用场景、逻辑结构。
2、学习了计数器的设置,使用方法。
后记:
2025年5月14日。 《8051U深度入门到32位51大型实战教学视频》--学习打卡14
第十四集 IO中断(所有普通IO都支持的“外部中断”)
笔记:
1、IO中断介绍。
相比于外部中断,IO中断有以下优点:
a. 支持所有的IO口(外部中断只有特定的外部中断的引脚)。
b. 可以任意配置上升沿/下降沿/高电平/低电平中断模式(外部中断只有上升/下降沿中断)。
缺点:
IO中断同时只能支持一种中断模式,外部中断0和1可以同时支持上升/下降沿中断(解决办法可以用两个IO端口实现双边沿检测!)。
2、IO中断用法。
2.1 选择合适的中断模式。
2.2 打开端口的中断功能。
2.3 配置IO口的中断。
2.4 中断号拓展处理。
3、中断优先级的设置。
4、练习。
任务1:编写IO中断的程序。
任务2:编写P4端口的IO中断,打断P3低电平中断的的程序(注意优先级)。
任务3:多路抢答器。
a. 上电后一位数码管显示0,表示没有按下。
b. 选择任意三个独立按键作为三个用户,分别代表“用户1”,“用户2”,“用户3”。
c. 谁第一个按下按钮,数码管就显示数字几,代表抢答成功。
代码压缩包:
学习心得:
1、IO中断扩展了中断的来源,所有IO口都可以当中断源,而且有4种中断模式,对应的应用场景会很多。
2、因为MCU的IO口众多,一个MCU就可以处理众多的中断源的请求,这样能节约MCU的数量,节约成本。
总结:
1、 学习了IO中断的概念及优缺点。
2、学习了如何设置并使用IO中断。
3、学习了如何在开发环境中扩展中断号。
后记:
2025年5月13日。 《8051U深度入门到32位51大型实战教学视频》--学习打卡13
第十三集 外部中断
笔记:
1、中断系统介绍。
中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。
1.1 什么是中断。
当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。
1.2 什么是中断系统。
实现这种功能的部件称为中断系统。
1.3 中断系统的优点。
a. CPU总是先响应优先级别最高的中断请求。
b. 中断可以嵌套,即高优先级中断可以中断低优先级中断的处理过程而先执行,执行完高优先级中断处理过程后再继续执行被中断的低优先级中断处理过程。
c. 可以用关总中断允许位(EA/IE.7)或相应中断的允许位屏蔽相应的中断请求,也可以用打开相应的中断允许位来使 CPU 响应相应的中断申请,每一个中断源可以用软件独立地控制为开中断或关中断状态。
d. 大部分中断的优先级别可用软件设置。高优先级的中断请求可以打断低优先级的中断。反之,低优先级的中断请求不可以打断高优先级的中断。
e. 当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断。
1.4 中断系统的中断源。
请求CPU中断的请求源称为中断源。
......
1.5 中断优先级。
高优先级中断可以打断正在执行中的低优先级中断。
......
1.6 列中断向量地址及同级中断优先级中断查询次序。
当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断。
......
2、外部中断介绍。
2.1 外部中断就是在MCU的一个引脚上,由于外部因素导致一个电平的变化(由高变低或由低变高),MCU捕获这个变化,内部自主运行的程序被暂时打断,转而去执行相应的中断处理程序,执行完后又返回原来中断的地方继续执行原来的程序。
2.2 引脚带INTx标志的可作为外部中断口。
Ai8051U外部中断包括:INT0/1/2/3/4。
2.3 支持的中断类型。
INT0支持:上升下降沿,下降沿。
INT1支持:上升下降沿,下降沿。
INT2支持:下降沿。
INT3支持:下降沿。
INT4支持:下降沿。
3、外部中断用法。
3.1 中断及中断优先级结构图。
3.2 外部中断涉及的寄存器。
外部中断0:IT0,IE0,EX0,EA。
外部中断1:IT1,IE1,EX1,EA。
外部中断n,n=2-4:INTnIF,EXn,EA。
学习心得:
1、中断是处理外界紧急事件很好的机制。
2、中断优先级的设置能更好处理更紧急的事件。
3、中断系统是多任务的核心机制。
4、理解好中断机制,能更好利用MCU编写效率更高,体验更好的程序。
总结:
1、学习了中断及中断系统的概念及原理。
2、学习了外部中断的概念。
3、学习了如何初始化外部中断,如何使用中断。
后记:
2025年5月12日。 《8051U深度入门到32位51大型实战教学视频》--学习打卡12
第十二集:复位系统
笔记:
Ai8051U系列单片机的复位分为硬件复位和软件复位两种。
硬件复位时,所有的寄存器的值会复位到初始值,系统会重新读取所有的硬件选项。同时根据硬件选项所设置的上电等待时间进行上电等待。
硬件复位主要包括4种:上电复位、低压复位、复位脚复位(低电平复位)、 看门狗复位。
软件复位时,除与时钟相关的寄存器保持不变外,其余的所有寄存器的值会复位到初始值,软件复位不会重新读取所有的硬件选项。
软件复位主要包括:写IAP_CONTR的SWRST所触发的复位。
复位操作可以确保系统处于确定状态,单片机在开始工作时处于已知的状态,使其能够正确初始化各个寄存器和外设。
复位操作可以避免不确定行为。没有进行复位时,内部控制寄存器的内容可能是随机的,这可能导致定时器溢出、中断异常、外设误操作等不确定行为。
复位操作可以初始化系统,包括清除寄存器、设置默认值、配置时钟等,为系统正常运行做好准备。
复位操作可以保证程序正常开始执行,确保程序从正确的地址开始执行,避免跳转到未知的地址或执行错误的指令。
1、硬件复位。
1.1 上电复位(复位电压为1.7-1.9V)。
上电复位时间的影响因素1:如对开机时间没有严格要求,建议勾选“上电复位使用较长延时”。
上电复位时间的影响因素2:如果需要快速开机,建议将P3.2/P3.3至少一个上拉一个5.1K电阻到Vcc。
1.2 低压复位。
勾选“允许低压复位(禁止低压中断)”选项后,当Vcc电压低于设置的低压检测电压时,MCU会产生低压复位。
不勾选“允许低压复位(禁止低压中断)”选项,当Vcc电压低于设置的低压检测电压时,MCU不产生低压复位,会产生低压中断标志。如果使能了低压中断的话,就会产生低压中断。
1.3 复位脚复位。
去掉“复位脚用在I/O口”的勾选,并外接电阻和按键,即可实现硬件复位。
1.4 看门狗复位。
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清理看门狗(也叫喂狗),那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以,在使用有看门狗的芯片时要注意清理看门狗。
程序中定时清除CLR_WDT,以免复位。
例如:
WDT_CONTR = 0x34; //清看门狗,否则系统复位
2、软件复位。
“IAP_CONTR = 0x60;”软件复位后进入下载模式。
“IAP_CONTR = 0x20;”软件复位后,从头运行用户程序。
3、课后练习。
密码锁的需求:
a. 没有输入时,显示“- - - - - - - -”。
b. 有输入时,按下一个按键,开始按顺序写入。
例如,第一个按下1,显示“1 - - - - - - -”。
例如,第二个按下3,显示“1 3 - - - - - -”。
c. 当按下的密码为“ 1 2 3 4 5 6 7 0”时,数码管显示open的字符,否则,还是显示“- - - - - - - -”。
代码压缩包:
学习心得:
1、MCU的复位机制是保护MCU正常运行的一种方法,有硬件复位和软件复位。
2、利用看门狗复位特性时,要在程序中不断清除CLR_WDT,保证正常程序执行情况下,看门狗不发生溢出而产生复位。
3、软件复位根据IAP_CONTR值的不同,可以进入不同的程序区,执行该区的代码。
总结:
1、学习了MCU的复位系统,包括硬件复位和软件复位。硬件复位包括4种:上电复位、低压复位、复位脚复位(低电平复位)、 看门狗复位。
2、学习了上电复位、低压复位、复位脚复位(低电平复位)如何在AIapp-ISP下载软件中如何操作。
3、学习了看门狗复位原理与如何实现。
4、学习了软件复位原理与如何实现。
后记:
2025年5月12日。 《8051U深度入门到32位51大型实战教学视频》--学习打卡11
第十一集:矩阵按键
笔记:
1、矩阵按键的原理。
1.1 独立按键,每个按键连接到一个独立的I/O口上,一端连MCU的I/O口,另一端连接Vcc或Gnd。用在按键少的应用中,编程简单。
1.2 矩阵键盘,按键两端都接到I/O口上,将I/O口逻辑上分组,形成按键矩阵的行和列,行与列的I/O口分别设置高低电平,按键按下时,程序读取(扫描)I/O口,得到这组I/O口的状态值,对应按键码值知道哪儿按键按下。占用的I/O口少。
2、矩阵按键的程序实现。
2.1 按键识别步骤:
第一步:先将P0.0-P0.3输出低电平,P0.6-P0.7输出高电平,此时有某按键按下,按下的那一行的I/O口就会变成低电平,就可以判断哪一行按下。
第二步:再将P0.0-P0.3输出高电平,P0.6-P0.7输出低电平,此时有某按键按下,按下的那一列的I/O口就会变成低电平,就可以判断哪一列按下。
第三步:行列组合一下就可以判断出是哪个按键按下了。
2.2 实现任务1:数码管显示当前的按键号。
代码打包在:
2.3 实现任务2:密码锁。
(a) 没有输入时,显示“- - - - - - - -”;
(b) 有输入时,按下一个按键,开始按顺序写入;
例如,第一个按下1,显示“1 - - - - - - -”;
例如,第二个按下3,显示“1 3 - - - - - -”;
(c) 当按下的密码为“0 1 2 3 4 5 6 7”时,数码管显示“open”的字符;否则还是显示“- - - - - - - -”。
代码见2.2章节中的压缩文件。
学习心得:
1、独立按键适用于按键少,IO口少的应用,优点是代码简单。
2、矩阵键盘可以有更多的按键,占用的IO口比一键一口少很多,代码处理稍微复杂。
3、这两种按键电子逻辑都是按下按键连接到高电平或低电平,程序读取(扫描)各个IO口状态,综合比较后得出哪个按键按下。
总结:
1、学习了独立按键、矩阵键盘的原理以及电子电路。
2、学习了程序中读取(扫描)按键的方法。
后记:
2025年4月30日。 《8051U深度入门到32位51大型实战教学视频》--学习打卡10
第十集:虚拟键盘LED和数码管
笔记:
1、虚拟显示--LED
1.1 准备好擎天柱核心板或Ai8051U试验箱。
1.2 准备好最新AIapp-ISP程序下载软件,最新版本已经到了V6.95M。
1.3 在AIapp-ISP软件菜单中的“调试仿真接口”-->“接口设置”按照下图所示设置。
1.4 参考AIapp-ISP软件菜单中的“调试仿真接口”-->“接口协议及帮助”中的内容,在源代码中调用接口函数,完成需要的功能。
1.5 任务1:P2口流水灯,P10闪烁。
代码如下:
2、虚拟显示--数码管
2.1 参考AIapp-ISP软件菜单中的“调试仿真接口”-->“接口协议及帮助”中的内容,在源代码中调用接口函数,完成需要的功能。
2.2 任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数。
代码见上面1.5节。
3、虚拟键盘
3.1 参考AIapp-ISP软件菜单中的“调试仿真接口”-->“接口协议及帮助”中的内容,在源代码中调用接口函数,完成需要的功能。
3.2 任务3:按下数字按键在数码管显示对应的按键数字。
代码见上面1.5节。
学习心得:
1、第十集主要是延续上一集继续讲解调试仿真接口的使用,对LED、数码管、虚拟键盘的使用已经初步掌握。
2、要注意调试仿真接口中传输的数据,分析数据能发现问题。目前有一个问题还没解决,在传输的数据中发现问题。问题在:向高手请教:《8051U深度入门到32位51大型实战教学视频》第九集做实验时发现跳码。有详细描述。
总结:
1、学习了调试仿真接口中LED、数码管、虚拟键盘的使用。
2、使用别的代码中定义的变量要用"extern 数据类型 变量名"方式引入。
3、程序结构框图参考如下截图:
后记:
上集中发现的问题还是没能解决。
2021年4月22日。 补记一下:
第八集视频讲解开始时提到一些编码时遇到的问题和解决办法,觉得需要特别注意一下。
从教学视频发布的帖子中拷贝过来,内容如下:
常见错误:
1.关键词/变量函数名称的大小写错误或者漏了一个字符,P00写出p00,u8写成U8等等;
2.大括号缺了半个;(大括号上下一定要对齐,就不容易遗漏)
3.符号的中英文错误;
4.语句结尾没加分号;
5.变量/函数定义之后没有声明/重复定义;
6.#include在调用头文件时后面要先加一个空格,在+引号头文件名称。 《8051U深度入门到32位51大型实战教学视频》--学习打卡9
第九集:数码管
笔记:
1、数码管介绍
1.1 数码管也叫LED数码管(LED Segment Displays)内部是由多个发光二极管封装在一起组成的“8”字型器件,引线已在内部连接完成,只需引出它们的各个笔划电极,供电路中控制发光二极管的亮灭。它可以有很多种颜色,很多种外形,很多种样式,但是本质来说它们都是通过点亮内部的LED来显示的,只要面板做好了,理论可以显示任意的字符或者图案。一个“8”称之为1位数码管,两个“8”就是2位数码管,以此类推。
1.2 发光二极管的类型按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
2、数码管显示原理
2.1 Ai8051U-32K64实验箱数码管电路图。
2.2 2个4位8段数码管由2个74HC595级联(Q7’引脚与下一个芯片的SER引脚相连)后控制其显示内容。74HC595是一个8位串行输入、并行输出(SIPO)的移位缓存器,并具有并行三态输出的芯片。在SCK 的上升沿,串行数据由SER输入到内部的8位移位缓存器,同时移位缓存器溢出数据位由Q7’输出;而并行输出则是在RCK的上升沿将在8位移位缓存器的数据存入到8位并行输出缓存器;当串行数据输入完成后,OE的控制信号为低使能时,并行输出端的三态门输出值等于并行输出缓存器所存储的值。
2.3 74HC595时序逻辑的讲解比较复杂,通过学习其它网上视频才基本了解。注意数据的高位优先还是低位优先,还有SER、SCK、RCK的配合时序。
3、数码管静态显示
3.1 手头只有擎天柱核心板,只是看视频教程,任务1:数码管静态的显示一个数字,代码实现部分没有编写。根据试验箱数码管部分的实际电路,要先送段码后送位码。教程中主要代码为:
4、数码管动态显示
4.1 动态显示的过程如下:
4.2 每个延时不能太短,视频教学中以1ms举例,实际使用中要保证总共一个显示循环结束的时间不能大于20ms,因为人眼的视觉暂留特点造成不容易分辨出50HZ以上的动态刷新。
4.3 任务2:数码管显示“12345678” ,任务3:数码管显示“00-00-00”分别代表时分秒 ,每过1秒钟秒+1,代码实现部分没有编写。
5、虚拟显示——LED和数码管
5.1 学习虚拟仿真口的调用方法。
5.2 实现对仿真接口编码,代码核心部分如下:
完整代码见下面压缩包:
学习心得:
1、为节约MCU的接口,用少量IO口控制数码管需要用外围芯片,这就需要对外围芯片进行控制。
2、数码管显示码值从AIapp-ISP工具中获取更快捷。
3、仿真接口很方便。
4、中断很方便。
5、74HC595芯片的控制时序理解有些难度,从网上搜索相关视频得以解决。
总结:
1、学习了数码管的相关知识。
2、学习了74HC595的原理,级联方法,控制数码管的电路,控制数码管的时序,以及代码控制数码管的编写方法。
3、针对实验器材不匹配的情况,学习了仿真接口的使用方法。
后记:
在自己实现视频教程的代码时,发现问题,已有新帖描述。
帖子地址:向高手请教:《8051U深度入门到32位51大型实战教学视频》第九集做实验时发现跳码。
2025年4月21日。
页:
[1]
2