前天在玩OLED时想完成一直想弄得一个东西,就是简单的单片机游戏。因为STM32和nRF51822的内存足够,所以就用缓存数组的方法来显示图像(我也不知道术语是啥,反正就是在内存中建立一个128X64的二维数组,更新显示时将整个数组刷新到屏幕上),而且这两个OLED是串口的(还有一个128X32的OLED,一样串口的,连驱动时序和驱动函数都一样,两个都太小了,还那么贵......),四个IO口就能驱动(两个还是供电的VCC和GND),所以不像之前的那个mini 12864屏幕,它是8位并口的,带读写功能,而这个串口的只能写,不能读(那个Mini12864是5V的,我试着不加外加电路用STM32没驱动成功,可能是我水平不够,另外总共十多个引脚,全弄转换电路太复杂,而STM32的5V兼容当时我还不知道,就一直放着了,没在用STM32 试过,为了简单点使用12864,也为了做毕设,就又买了俩3.3V的),所以开辟一个缓存数组可以解决读屏幕内容这个问题。(以后看还能想着补上三种12864的照片吧)

  但是在刚开始写程序时就出了问题,就是对于二维数组的定义和引用出现了问题。现在解决了,顾总结如下(仅我知道的和刚刚解决的)。

  1:二维数组在函数定义时,要定义到列,其中列数要与要传递来的二维数组的列向量数一致。如:

      定义一个二维数组:

      unsigned char T_image[4][6]={      //就是一个俄罗斯方块的一个图形的四个方向变换的图形

              {0,1,0,1,1,1},

              { 1,0,1,1,1,0},

              {1,1,1,0,1,0},

              {0,1,1,1,0,1}};

  2:然后定义一个函数,此函数能够调用上面二维数组,但不限于上面一个,则定义为:void Position_change(struct POSITION pos,unsigned char ch[][6]);,注意定义中对数组的定义,就是定义到列向量,并且下标数值与即将引用的数组的列向量下标相等值,而行向量下标则不需要写(所以上面定义二维数组时最好行列向量下标值要统一)。使用时便可以直接传递一个定义了的二维数组,如在main中调用时写为:Position_change(pos,T_image); 就可以了。

  3:若在这个定义的函数中还调用了另一个函数Draw_position,这个函数要使用ch[][6]传递的函数,则在定义这个函数时和上面那个函数一样,定义到列向量:void Draw_position(unsigned char ch[][6]);然后在上面那个函数中被调用时写成 Draw_position(ch);就可以了,即二维数组变量作为传递函数时只需要写方括号前面的名称就好,不需要写方括号,也不需要精确到列向量,和上面那个函数在main函数中调用一样。即整体写为:

      void Position_change(struct POSITION pos,unsigned char ch[][6])

        {   Draw_position(ch);

          }

  4:若函数中还有对传递二维数组的for循环,则只需要对定义中的二维数组进行操作就行了:

    for(i=0;i<4;i++)

      for(n=0;n<6;n++)

        if(ch[i][n]==0).......    //ch就是指定义时的参数变量名称,定义为啥就写为啥好了,就能传递下来了

        else......

  好了,基本就写完了。其实这个很简单,只是当时学的时候没觉得这个重要,就简单而过了。

  以后要写点对nRF51822的应用体验,拟想从开箱开始(额,用了好久了,跳过吧,从怎么连接电脑设置kile5并用SWD下载开始吧),但是不知道人家允许么......

  本文水平有限,内容很多词语由于知识问题不严谨或很离谱,但主要作为记录作用,能理解就好了,希望以后的自己和路过的大神对必要的错误提出批评与指点,对可笑的错误不要嘲笑,指出来我会改正的。

转载于:https://www.cnblogs.com/zhinianzhizhan/p/5929765.html

nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战相关推荐

  1. JavaScript学习(九十一)—二维数组的基本操作

    JavaScript学习(九十一)-二维数组和多维数组总结 王同学的每天进步一点点系列!!! (一).二维数组的定义格式 var 数组名称=[[值1,值2,值3],[值1,值2,值3],[值1,值2, ...

  2. android数据存放map_go语言学习笔记(18)-二维数组和map

    二维数组 二维数组在声明/定义时有对应四种写法(类似一维数组) var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值...},{初值...}} var 数组名 [大小][大小]类型 ...

  3. cout 数组_C语言学习笔记(十)二维数组内存预设

    1 问题描述 二维数组存储数据数量根据其他方法间接获得: 为当前数据数量申请内存: 2 相关程序 #include --2020.11.23--

  4. C语言学习之利用指针输出二维数组任一行任一列元素的值

    利用指针输出二维数组任一行任一列元素的值. int main(){int a[3][4];int i,j,x,y;int (*p)[4];//指针变量p指向包含4个整型元素的一维数组printf(&q ...

  5. java学习(37):二维数组

    /4 利用嵌套循环完成以下二维数组的遍历,体会二维数组或多维数组元素的遍历方法及每个维数数组元素的下标特点./ import java.util.Scanner; public class test0 ...

  6. 200728学习日报二维数组和字符数组

    目录 一.学习的知识点 1.二维数组 2.字符数组 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 四.作业的思路.不会的地方 五.其他需要反馈的问题 六.心得体会 一.学习的知识点 1.二维 ...

  7. 深入理解C/C++二维数组

    深入理解C/C++二维数组 前言 本来以为自己对二维数组的理解还可以,没感觉有什么,但是今天小伙伴问了一个问题感觉迷惑了好久,于是决定细致的记录一下,一步一步的探究各种关于二维数组的问题,巩固基础. ...

  8. mysql二维数组vb_VBA链接MYSQL的帮助类

    本类模块是用于excel的VBA链接MYSQL的帮助类 在使用该类模块前请先安装mysql 8.0 数据库驱动 MySQL 8.0: Connector/ODBC 类模块代码 Dim strcn As ...

  9. php 二维数组去除一项,PHP二维数组提取函数----把不需要的数据剔除

    首先说明一些这个函数的应用场景,比如说你得到的数据是个二维数组,里面的很多成员其实是不必要的,比如说api调用后不必要给别人返回一些用不到的垃圾数据吧,如下是代码. /* * delMemberGet ...

最新文章

  1. 谈谈Boost网络编程(2)—— 新系统的设计
  2. Multisim 12.0 笔记
  3. 揭秘互联网人群层级,你属于第几级?
  4. 辅助驾驶等级_自动驾驶分为几级?我们离真正的自动驾驶还有多远?
  5. [java]键盘录入数值到数组-根据数值获取角标-找出数据中最大数值-反转数组
  6. 睡前必读 | 如何系统性地学习分布式系统?
  7. rnn 简要_注重文化的简要招聘指南
  8. Java 如何设置时间_如何在Java中设置尊重用户操作系统设置的日期和时间格式
  9. 【技术解读】大赛TOP团队方案技巧大揭秘!
  10. QT+OpenGL中glTexImage2D不生效问题
  11. 基于THUCNews数据的BERT分类
  12. 在JavaScript中生成特定范围内的随机整数?
  13. logistics 与最大熵模型原理及python代码实现
  14. C++ intptr_t类型
  15. 手把手教你打造全宇宙最强的专属 Firefox 浏览器
  16. vs下qt混合编译错误:MOC问题
  17. c语言2维数组每一行最小值,二维数组每一行最大值
  18. python批量计算cosine distance
  19. 错误处理(一)—— 被呼叫方拒绝接收呼叫。 (异常来自 HRESULT:0x80010001 (RPC_E_CALL_REJECTED))
  20. 【C语言进阶】⑤关于数组传参和指针传参辨析

热门文章

  1. c语言 如何读多种数据类型 非类,c语言程序设计教学大纲(非电气类)文档.doc
  2. docker mac python_Docker Python 例子
  3. eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法
  4. python修改文件内容_Python批量修改文本文件内容的方法详解
  5. java一个参数 多个值_Spring里有类似@RequestParam的办法去绑定一个多值参数吧
  6. php 输出任意一个数,php 生成任意范围的水仙花数
  7. Python、Matplot的subplot实现一行3列的子图绘制,并添加背景色
  8. LabVIEW图像增强算法(基础篇—5)
  9. 有源晶振和无源晶振的区别
  10. 优达学城《DeepLearning》大纲和学习愿景