kaily 发表于 2025-9-8 11:02:58

2.25         大型综合实战--大学课程设计:硬件SPI读写串行Flash

2.25.1.         实验介绍                                 1、本实验项目主要目的:                                    Ø掌握串口通讯                                    Ø硬件SPI读写串行Flash                                 2、掌握Ai8051U实验箱原理图中的串口通信电路、硬件SPI电路                                 3、熟悉AIapp-ISP系统软件中串口助手工具                                 4、熟悉如何管理多文件项目
2.25.1.1.      按键去抖动说明                                 如按键要判断为正常按下,而不是抖动,需要该按键保持按下持续保持为低状态时间是20ms ~ 50ms;                                 主循环中有个1ms的时间基准,将按键扫描程序作为1ms事件,按键状态维持50ms不变,即可对按键去抖动,得到稳定的键码。
2.25.1.2.      实验现象和操作说明                                 Ai8051U的实验箱正面图:                                 
                                 1、J20:          USB转双串口U2(Ai8H2K12U)TypeC接口。本实验需要用TypeA(连接电脑)-TypeC(连接实验箱J20)线相连。                                                      (详见Ai8051U实验箱中J20-U2原理图)                                 2、J18跳线:   本实验需要将实验箱上“J18跳线C”的跳线连上。                                     ØJ18.C:   使主控芯片UART1的P3.7/TxD_2与双串口U2(Ai8H2K12U)联通。                                                       详见Ai8051U实验箱中J18跳线原理图                                 3、SPI-Flash:详见Ai8051U实验箱中U6原理图
2.25.1.3.          Keil环境下多文件项目管理说明                                 当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性‌。                                     Ø   比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。                                     Ø   一般建议是一个模块对应一个.c程序文件和一个.h头文件                                     Ø   模块的初始化函数以及相关的数据处理函数都在.c文件中实现                                     Ø   与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量                                     Ø   如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。                                     Ø   特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误                                     Ø   为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含:                                              #ifndef XXXX                                              #define XXXX                                              ...                                              #endif

kaily 发表于 2025-9-8 11:35:29

2.26          深大实验--硬件SPI驱动OLED显示图片、图形、字符

2.26.1.         实验介绍                              1、本实验项目主要目的:                                    Ø硬件SPI驱动OLED显示                                    Ø如何实现显示图片、6*8点阵字符、8*16点阵字符、16*16点阵汉字                                    Ø如何画直线、方框、圆                              2、掌握Ai8051U实验箱原理图中SPI驱动OLED电路                              3、了解图片取模的原理,并熟练使用AIapp-ISP系统软件中图片取模工具                              4、了解字库生成原理,并熟练使用AIapp-ISP系统软件中字库生成工具                              5、继续熟悉如何管理多文件项目
2.26.1.1.      Aiapp-ISP系统软件图片取模工具的使用                              打开AIapp-ISP系统软件:                                     Ü点击菜单栏“工具”à“图片取模工具”,打开“图片取模工具”浮窗                                     Ü点击“打开图片”按钮,选择准备要取模的图片                                     Ü点击“打开”按钮                              如下图:                                                                此时,在打开的“图片取模工具”浮窗,我们看到被选择的图片显示在原始图片区和转换后的图片区:                                     Ü扫描模式:选择“垂直扫描,从左到右,从上到下”                                     Ü存储顺序:选择“高位在前”                                     Ü数据格式:选择“C表格格式”                                     Ü勾选“图片反色”                                     Ü设置:宽度:128;高度:64;输出格式:1位单色                                     Ü点击“开始转换”                              就会生成相应的点阵图片C代码,如下图:                                                            将点阵图片生成的C代码数据拷贝出来,本例是将此段代码放在“pic.h”中,形成表格数据,方便程序加载并在OLED上显示出来。
2.26.1.2.      Aiapp-ISP系统软件字库生成工具的使用                              打开AIapp-ISP系统软件,点击菜单栏“工具”à“字库生成工具”,打开“字库生成工具”浮窗:                                     Ü在“输入字符”区输入想要取模的文字,本例输入“深圳大学”                                     Ü点击第一行的工具栏上的“汉”按钮,打开“设置字体”浮窗,字库字体选择“宋体”                                     Ü扫描模式:选择“垂直扫描,从左到右,从上到下”                                     Ü数据格式:选择“C表格-格式2(后索引模式)”                                     Ü存储顺序:选择“低位在前”                                     Ü点击“生成字库”                              就会生成相应的点阵字库代码,如下图:                                                            将点阵字库生成的C代码拷贝出来,本例是将此段代码放在“font.h”中,形成表格数据,方便程序查询并提取字库。
2.26.1.3.       使用Aiapp-ISP系统软件图片取模工具生成ASCII的点阵字符C代码                              在AIapp-ISP系统软件的字库生成工具中,我们除了可以像上述操作步骤生成标准点阵字符C代码,还可以自己手动描点生成自己想要的点阵字符C代码。                              打开AIapp-ISP系统软件,点击菜单栏“工具”à“字库生成工具”,打开“字库生成工具”浮窗。                              先进行相应的设置:                                     Ü点击“字库生成工具”浮窗第一行的“M”按钮,清空字符点阵区域                                     Ü确定点阵宽度:6;点阵高度:8(本例中有6*8的点阵ASCII字符C代码数据和8*16的点阵ASCII字符代码数据)                                     Ü扫描模式:选择“垂直扫描,从左到右,从上到下”                                     Ü数据格式:选择“C表格-格式1(纯数据格式)”                                     Ü存储顺序:选择“低位在前”                              如下图:                                                               现在手动用鼠标在窗口左上角点阵描图区域,进行描图。                              以ASCII码的“0”为例,进行如下图中的描绘,再点击“生成字库”按钮,即可生成相应的字库C代码数据。                              以此类推,生成自己想要的全部ASCII码的点阵字库C代码数据。                              将点阵字库生成的C代码拷贝出来,本例是将此段代码放在“ascii.h”中,形成表格数据,方便程序查询并提取字库。                              
2.26.1.4.      认识Ai8051U实验箱和OLED屏                              Ai8051U实验箱:                                                            J9:OLED插座。Ai8051U实验箱上的J9插座可插7线或8线的OLED屏,本实验使用的OLED屏是7线,第8脚浮空。                                    详见Ai8051U实验箱中J9原理图。
                              OLED屏                              
2.26.1.5.      Keil环境下多文件项目管理说明                              当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性‌。                                     Ø   比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。                                     Ø   一般建议是一个模块对应一个.c程序文件和一个.h头文件                                     Ø   模块的初始化函数以及相关的数据处理函数都在.c文件中实现                                     Ø   与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量                                     Ø   如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。                                     Ø   特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误                                     Ø   为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含:                                          #ifndef XXXX                                          #define XXXX                                          ...                                          #endif


页: 1 2 3 [4]
查看完整版本: Ai8051U-实验指导书:实验内容与源代码