找回密码
 立即注册
楼主: kaily

Ai8051U-实验指导书:实验内容与源代码

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 4 天前 | 显示全部楼层
2.8          深圳大学--I/O口实验:I/O口读取按键状态并点灯


2.8.1            实验要求

                           可以通过正确设置I/O口模式来读取实验箱上按键的电平,然后根据对应按键的电平来设置LED灯的点亮/熄灭状态


2.8.9            
实验3USB-CDC读取按键状态在串口助手显示并点亮LED

                         电脑AiCube-ISP软件中的,USB-CDC串口助手通知单片机读【P3.2/P3.3/P3.4/P3.5】的状态,
                         送回USB-CDC串口助手显示,同时将相应的状态送到LED【P0.2/P0.3/P0.4/P0.5】显示(点亮/熄灭)


截图202509041745254461.jpg

Project7-IO(USB-CDC串口助手显示)-Ai8051U.zip (34.74 KB, 下载次数: 2)

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 4 天前 | 显示全部楼层
2.8        深圳大学--I/O口实验:I/O口读取按键状态并点灯

2.8.1         实验要求
                         可以通过正确设置I/O口模式来读取实验箱上按键的电平,然后根据对应按键的电平来设置LED灯的点亮/熄灭状态


2.8.11       实验4USB-CDC读取按键状态,在ISP软件的 【调试仿真接口 | 擎天柱-LED-DIP40 虚拟显示
                         电脑AiCube-ISP软件中的,USB-CDC串口助手通知单片机读【P3.2/P3.3/P3.4/P3.5】的状态,
                         送到 AiCube-ISP 软件中的【调试仿真接口 | 擎天柱-LED-PID40】虚拟显示,
                         同时将相应的状态送到LED【P0.2/P0.3/P0.4/P0.5】显示(点亮/熄灭)

截图202509041751176679.jpg

Project8-IO(USB-CDC擎天柱显示)-Ai8051U.zip (34.49 KB, 下载次数: 2)


回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 4 天前 | 显示全部楼层
2.8          深圳大学--I/O口实验:I/O口读取按键状态并点灯


2.8.13    实验5:I/O口行列按键扫描,蜂鸣器发声大型实战


2.8.13.1  实验介绍

           用行列扫描方法扫描2行4列8按键的矩阵式键盘,按键按下时驱动蜂鸣器发声,
           8个按键按下时蜂鸣器分别发对应的Do、Re、Mi、Fa、So、La、Si、Do不同的声音,
           同时通过USB-CDC将按下按键的键码发到【CDC/HID-串口助手】显示。

          【蜂鸣器发声说明】:
           Ai8051U实验箱上的蜂鸣器为无源蜂鸣器,通过方波驱动蜂鸣器发声,不同频率的方波可使蜂鸣器发不同音调的声音。
           例如:高8度的Do的频率为261.6Hz*2=523Hz,即半周期为1000000/523/2=956us,
               所以MCU输出一个低电平和高电平均为956us的方波波形驱动蜂鸣器,即可使蜂鸣器发出高8度的Do的声音。

          【按键扫描说明】:
           如1个按键要判断为正常按下,而不是抖动,
           假定需要该按键保持按下持续保持为低状态时间是50mS ~ 200mS;
           假定1个主循环的运行时间大概 10mS ~ 30mS
           则如发现某个按键按下,需要连续 6次主循环都能读到该按键按下
           ===如发现多个按键按下,则归0,重新开始
           调整按键的灵敏度只需要修改,
           ===【判断按键已按下的时间,即读到为低经历了多少次主循环的次数】

截图202509041803412170.jpg

Project9-IO实战行列矩阵按键扫描-Ai8051U.zip (35.72 KB, 下载次数: 2)



回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.9       深圳大学--传统外部中断实验:INT0,INT1,INT2,INT3


2.9.1        深大--中断实验1(外部中断INT0/P3.2,INT1/P3.3控制点灯并USB仿真)
                    
                    1、了解传统的外部中断INT0/P3.2,INT1/P3.3的使用
                    2、了解Ai8051U对传统外部中断INT0/P3.2,INT1/P3.3功能的扩展
                    3、学习使用USB进行仿真
                    4、学习使用在中断中设置标志位,在主循环中查询并处理中断事件的处理方式


2.9.1.1    实验介绍
                    1,边缘触发中断,INT0/P3.2 外部中断实验演示程序:
                                    P3.2设置为高阻输入,打开内部上拉电阻
                        或          P3.2设置为准双向口,打开内部上拉电阻
                                    INT0/P3.2设置为边缘触发中断。
                    【实验步骤】:
                              (1) 先点击Run(运行)按钮,按下P3.2按键,保持不松开(为了验证下一步的实验),
                                   进INT0中断后,读到INT0/P3.2口是 低,下降沿,点亮 P0.7,退出中断服务程序。
                              (2) 点击Run(运行)按钮,松开P3.2按键
                                   进INT0中断后,读到INT0/P3.2口是 高,上升沿,点亮 P0.0,退出中断服务程序。
                                   利用仿真,可以设置运行到断点处,捕捉当前程序运行到哪,是下降沿,还是上升沿

                    2,下降沿触发中断,INT1/P3.3 外部中断实验演示程序:
                                  P3.3设置为高阻输入,打开内部上拉电阻
                        或        P3.3设置为准双向口,打开内部上拉电阻
                                  INT1/P3.3设置为下降沿触发中断。
                    【实验步骤】:
                                 (1) 先点击Run(运行)按钮,按一下P3.3按键
                                      进INT1中断后,点亮 P0.4,退出中断服务程序。
                                      
                        利用仿真,可以设置运行到断点处,捕捉当前程序运行到哪。


截图202509050926291320.jpg

Project10-中断(外部中断INT0和INT1控制点灯并USB仿真)-Ai8051U.zip (18.37 KB, 下载次数: 1)

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.9           深圳大学--传统外部中断实验:INT0INT1INT2INT3


2.9.2             深大--中断实验2(单片机主动触发外部中断INT2/P3.6,INT3/P3.7控制点灯并USB仿真)
                                   1、   了解Ai8051U新增的外部中断INT2/P3.6,INT3/P3.7功能
                                   2、   学习使用USB进行仿真
                                   3、   学习使用在中断中设置标志位,在主循环中查询并处理中断事件的处理方式


2.9.2.1        实验介绍

                                 1、下降沿触发中断,单片机内部主动触发INT2/P3.6口,产生中断实验演示程序:
                                                 P3.6设置为高阻输入,打开内部上拉电阻
                                       或     P3.6设置为准双向口,打开内部上拉电阻
                                                INT2/P3.6固定为下降沿触发中断
                                2、下降沿触发中断,单片机内部主动触发INT3/P3.7口,产生中断实验演示程序:
                                               P3.7设置为高阻输入,打开内部上拉电阻
                                      或    P3.7设置为准双向口,打开内部上拉电阻
                                              INT3/P3.7固定为下降沿触发中断

                                   【实验步骤】:
                                     Ø     先点击Run(运行)按钮,运行到单片机内部主动触发INT2/P3.6时,
                                             会进入INT2中断,点亮 P0.0灯,退出中断服务程序,继续运行。
                                     Ø     运行到单片机内部主动触发INT3/P3.7口时,会进入INT3中断,点亮P0.7灯,退出中断服务程序。

                                     利用仿真,可以设置运行到断点处,捕捉当前程序运行到哪。

截图202509050941238919.jpg

Project11-中断(单片机主动触发INT2和INT3控制点灯并USB仿真)-Ai8051U.zip (9.48 KB, 下载次数: 1)



回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.10       深圳大学--定时器实验:定时器0/124位定时器


2.10.1        深大--定时器0/124位定时器实验(定时器中断点灯并通过USB-CDC端口输出信息)

                             1、了解传统的定时器0,定时器1的使用
                             2、了解Ai8051U对定时器0,定时器1功能的扩展(增加16位自动重载模式)
                             3、学习使用USB-CDC和电脑进行数据传输
                             4、学习使用在中断中设置标志位,在主循环中查询并处理中断事件的处理方式


2.10.1.1      实验介绍

                             1、定时器0Timer0)定时2s产生中断,P00灯闪烁,CDC窗口显示“Timer0!”
                             2、定时器1Timer1)定时500ms产生中断,P07灯闪烁,CDC窗口显示“Timer1!”
                                 观察到:
                                 (1)AiCube-ISP软件的CDC窗口每显示4次“Timer1”,显示1次“Timer0”
                                 (2)实验箱,P07亮灭各2次,P00亮1次

截图202509050955215864.jpg

Project12-定时器(定时器中断点灯并通过USB-CDC端口输出信息)-Ai8051U.zip (34.96 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.10       深圳大学--定时器实验:定时器0/124位定时器

2.10.3        深大--定时器0/1INT0/INT1,中断组合应用实验,演示程序


                           学习使用在多个不同的中断中设置标志位,在主循环中查询并处理中断事件的处理方式

截图202509051026123405.jpg

Project-定时器(定时器0,定时器1,INT0,INT1,中断组合应用实验,演示程序.zip (36.57 KB, 下载次数: 2)
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.11          大型综合实战--深大课程设计:时钟+数码管+矩阵按键+蜂鸣器发声

2.11.1            实验介绍

                                       1、熟悉矩阵式按键扫描方法
                                       2、了解使用74HC595控制LED数码管
                                       3、软件模拟RTC,实现RTC的时、分、秒控制和设置
                                       4、I/O控制无源蜂鸣器发声,Key0 ~ Key7按键按下,会发出对应的Do/Re/Mi/Fa/So/La/Si/Do音符
                                       5、扩展部分:如何实现长按键
                                       6、熟悉Ai8051U实验箱
                                       7、熟练使用AIapp-ISP系统软件
                                       8、本项目主要熟悉如何管理多文件项目

2.11.1.1        按键扫描说明

                                            如按键要判断为正常按下,而不是抖动,需要该按键保持按下持续保持为低状态时间是20ms ~ 50ms
                                           主循环中有个1ms的时间基准,将按键扫描程序作为1ms事件,按键状态维持20ms不变,即可对按键去抖动,得到稳定的键码。


2.11.1.2        实验现象和操作说明

                                            将本项目的HEX文件下载到Ai8051U的实验箱后
                                      1、在LED数码管上面低6位会动态显示当前的RTC时间

                                      2、按下两行4列的8个矩阵按键后:
                                             Ø   在LED数码管的最高位会显示当前的按键键码
                                             Ø   同时会根据不同的按键发出不同按键音
                                           (特别注意:需要将实验箱上“跳线3:蜂鸣器 / 原理图标号是J1C”的跳线连上,蜂鸣器才会发声)

                                      3、矩阵按键中的按键0,是RTC模式设置键
                                             Ø   上电后RTC为正常工作模式,此时数码管动态显示RTC时间
                                             Ø   按一次按键0,RTC会切换为小时设置模式,此时RTC的小时值会0.5秒闪烁一次
                                             Ø   再按一次按键0,RTC会切换为分钟设置模式,此时RTC的分钟值会0.5秒闪烁一次
                                             Ø   再按一次按键0,RTC会切换为秒钟设置模式,此时RTC的秒钟值会0.5秒闪烁一次
                                             Ø   在按一次按键0,恢复为RTC正常工作模式

                                      4、矩阵按键中的按键4和5分别是上调键和下调键
                                             Ø   只有在RTC的时/分/秒设置模式时,上调键和下调键才有效

                                      5、时钟设置模式时,长按按键4和5,可实现快速设置功能

2.11.1.3        Keil环境下多文件项目管理说明

                                     当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性
                                      Ø   比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。
                                      Ø   一般建议是一个模块对应一个.c程序文件和一个.h头文件
                                      Ø   模块的初始化函数以及相关的数据处理函数都在.c文件中实现
                                      Ø   与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量
                                      Ø   如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。
                                      Ø   特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误
                                      Ø   为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含:
                                      #ifndef XXXX
                                      #define XXXX
                                      ...
                                      #endif

截图202509051049363283.jpg

Project-定时器(实战--时钟 数码管 矩阵按键扫描 蜂鸣器发声)-Ai8051U.zip (237.96 KB, 下载次数: 2)


回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.12         深圳大学--RTC实验

2.12.1            深大-RTC实验(拓展学习之使用RTC功能设定闹钟)

                                      1、学习使用Ai8051U的RTC实时时钟功能
                                      2、学习使用Ai8051U的RTC的闹钟功能
                                      3、学习使用USB-CDC和电脑进行数据传输


2.12.1.1         实验介绍

                                      1、程序运行约5s后,AiCube-ISP软件的CDC窗口显示“RTCStart”,RTC闹钟10s产生中断,打印数据在CDC窗口显示“Alarm!”
                                      2、CDC串口发送任意数据,读取RTC的秒值,并在CDC窗口显示
                                      观察到:
                                           Ü  程序运行5s后,AiCube-ISP软件的CDC窗口显示“RTC Start”,再10s后,CDC窗口显示“Alarm!”
                                           Ü  CDC串口发送任意数据,在CDC窗口显示当前的RTC秒值

截图202509051058425711.jpg

Project13-RTC(拓展学习之使用RTC功能设定闹钟)-Ai8051U.zip (34.6 KB, 下载次数: 1)

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2025-09-06 09:35:19

5

主题

196

回帖

1179

积分

超级版主

积分
1179
发表于 3 天前 | 显示全部楼层
2.13        深大实验-串口通讯(硬件UART1与电脑收发通讯)

2.13.1.        实验介绍
                                  1、 熟悉串口1/UART1通讯原理
                                  2、 了解Ai8051U实验箱布局及其原理图
                                  3、 熟悉AIapp-ISP系统软件的应用
                                  4、 熟悉如何管理多文件项目


2.13.2.        认识实验箱
                                  Ai8051U的实验箱正面图:
                                  截图202509051110035532.jpg

                                  1、J20:        USB转双串口U2(Ai8H2K12U)TypeC接口。本实验需要用TypeA(连接电脑)-TypeC(连接实验箱J20)线相连。(详见J20-U2原理图)
                                  2、J18跳线:本实验要实现硬件串口1/UART1与电脑收发通讯,则需要将实验箱上“J18跳线C、D”的跳线连上。详见J18跳线原理图
                                      Ø  J18.C:使主控芯片UART1的P3.7/TxD_2与双串口U2(Ai8H2K12U)联通。
                                      Ø  J18.D:使主控芯片UART1的P3.6/RxD_2与双串口U2(Ai8H2K12U)联通。


2.13.3.        Keil环境下多文件项目管理说明

                                  当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性
                                  Ø   比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。
                                  Ø   一般建议是一个模块对应一个.c程序文件和一个.h头文件
                                  Ø   模块的初始化函数以及相关的数据处理函数都在.c文件中实现
                                  Ø   与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量
                                  Ø   如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。
                                  Ø   特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误
                                  Ø   为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含:
                                  #ifndef XXXX
                                  #define XXXX
                                  ...
                                  #endif

截图202509051111292350.jpg

Project-串口通讯(硬件UART1与电脑收发通讯)-Ai8051U.zip (10.97 KB, 下载次数: 1)


回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-8 04:18 , Processed in 0.146486 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表