一、变量的作用域

作用域:变量的有效范围。分为:局部变量和全局变量。

1.1局部变量

在函数内部声明的变量,只在本函数内部可以使用。

1.2全局变量

在函数外声明的变量就是全局变量。

二、变量的存储类别

变量的存储类别分为自动、静态、寄存器和外部四种。

局部变量如果不加static修饰都属于自动变量。关键词为auto,可以省略。

全局变量均为静态变量。

局部变量加 static 关键字也为静态局部变量。特点是,只赋一次初值,在之后使用中,可以保存前次的执行结果。

eg: static unsigned char i=0;

i 为静态局部变量,初始化 i=0 只执行一次。

三、点阵的初步认识

8*8点阵由64个LED小灯组成。通过控制行和列的电平来控制灯的亮灭。

点阵可以用来显示图形,需要用取模软件将点阵显示的图形数字化,将需要显示的的地方(亮)设置为0,将不显示的地方(暗)设置为1,这是因为译码器输出为低电平,此时一个格子为一位二进制数字,每一行为一个字节,例如0xff(全黑),0x00全亮从而达到显示图像的目的。

3.1点阵的纵向移动

横向移动时每一张图片都是和下一行连续的。

        switch(i){case 0:ADDR2=0;ADDR1=0;ADDR0=0;P0=LedChar[index+0];i++;break;   case 1:ADDR2=0;ADDR1=0;ADDR0=1;P0=LedChar[index+1];i++;break;   case 2:ADDR2=0;ADDR1=1;ADDR0=0;P0=LedChar[index+2];i++;break;case 3:ADDR2=0;ADDR1=1;ADDR0=1;P0=LedChar[index+3];i++;break;case 4:ADDR2=1;ADDR1=0;ADDR0=0;P0=LedChar[index+4];i++;break;case 5:ADDR2=1;ADDR1=0;ADDR0=1;P0=LedChar[index+5];i++;break;case 6:ADDR2=1;ADDR1=1;ADDR0=0;P0=LedChar[index+6];i++;break;case 7:ADDR2=1;ADDR1=1;ADDR0=1;P0=LedChar[index+7];i=0;break;default:break;}

LedChar里储存的是整幅图片的每个字节(每一行),用 index 代表每张图片的起始位置,每次从index起始向下数8行代表了当前的图片。每隔一段时间后,改变一张图片通过index++实现,则可实现不停地动态刷新,这样就形成了动画。当index代表最后一张图片时,对index清零。

3.2点阵的横向移动

方法1:把板子侧过来放,纵向取模就可以完成。

方法2:利用二维数组来实现,算法基本上和上下移动相同。

3.2.1二维数组初始化

二维数组的初始化分为两种情况 :

(1)数组元素的数量小于数组元素个数,没有赋值的会自动给0;

unsigned char a[2][3]={{1,2}{3,4}};

等价于 unsigned char[2][3]={1,2,0,3,4,0};

(2)数组元素等于数组个数时如下:

unsigned char a[2][3] ={{1,2,3},{4,5,6}};

等价于 unsigned char a[2][3]={1,2,3,4,5,6};

二维数组初始化时行数可以省略,编译系统会自动根据列数计算出行数,但是列数不能省略。

3.2.2二维数组实现点阵横向移动

横向移动时图片切换时的字模数据不是连续的。需要对每一帧的图像进行字模转换。

 switch(i){case 0:ADDR2=0;ADDR1=0;ADDR0=0;P0=image[index][0];i++;break;   case 1:ADDR2=0;ADDR1=0;ADDR0=1;P0=image[index][1];i++;break;   case 2:ADDR2=0;ADDR1=1;ADDR0=0;P0=image[index][2];i++;break;case 3:ADDR2=0;ADDR1=1;ADDR0=1;P0=image[index][3];i++;break;case 4:ADDR2=1;ADDR1=0;ADDR0=0;P0=image[index][4];i++;break;case 5:ADDR2=1;ADDR1=0;ADDR0=1;P0=image[index][5];i++;break;case 6:ADDR2=1;ADDR1=1;ADDR0=0;P0=image[index][6];i++;break;case 7:ADDR2=1;ADDR1=1;ADDR0=1;P0=image[index][7];i=0;break;default:break;}

image里储存的是每一帧的8个字节ndex代表当前帧数,0~7代表点阵的每一行。

(学习笔记)手把手教你学51单片机:变量进阶与点阵LED相关推荐

  1. 手把手教你学51单片机-变量进阶与点阵LED

    变量的作用域 所谓的作用域就是指变量起作用的范围,也是变量的有效范围.变量按他的作用域可以 分为局部变量和全局变量. 局部变量 在一个函数内部声明的变量是内部变量,它只在本函数内有效,在本函数以外是不 ...

  2. 手把手教你学51单片机——函数进阶与按键

    目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...

  3. 手把手教你学51单片机-点亮你的LED

    单片机内部资源 Flash--程序存储空间.对于单片机来说 Flash 最大的意义是断电后数据 不丢失. RAM--数据存储空间.RAM 是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数 ...

  4. 第11章 UART 串口通信(手把手教你学51单片机pdf部分)

    手把手教你学51单片机-C语言版.pdf  

  5. c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...

  6. 【手把手教你学51单片机】中断的优先级

    注:本文章转载自<手把手教你学习51单片机>!因转载需要原文链接,故无法选择转载! 如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小 ...

  7. 手把手教你学51单片机-c语言版期末考试,手把手从零教你学51单片机

    课程简介: 51单片机的教程及开发板真的很多,我曾经也从零学单片机,看过的视频教程及玩过的开发板也比较多,但很多都是为了卖发板而做视频教程.从头到尾的就每个模块做些例子,或者就送些例子,而例子中所涉及 ...

  8. 数码管动态显示c语言,《手把手教你学51单片机-C语言》之六 中断与数码管动态显示...

    中断是单片机系统重点中的重点,因为有了中断,单片机就具备了快速协调多模块工作的能力,可以完成复杂的任务.本章将首先带领大家学习一些必要的C语言基础知识,然后讲解数码管动态显示的原理,并最终借助于中断系 ...

  9. 《手把手教你学51单片机》之十三------1602液晶与串口的应用实例

    第13章 1602液晶与串口的应用实例 理论上的内容要想逐步消化掌握,必须得通过大量的实践进行巩固,否则时间一长,极容易忘掉.尤其是一些编程相关的技巧,就是靠不停的写程序,不停的参考别人的程序慢慢积累 ...

  10. (学习笔记)手把手教你学51单片机:C语言基础以及流水灯的实现

    一.进制 二进制:0和1 前缀0b       十六进制:四个二进制为一位,0-9加上A-F(或a-f)  前缀0x 二.C语言变量类型和范围 字符型.整型.长整型.浮点型.每一种又分为有符号/无符号 ...

最新文章

  1. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6
  2. mysql 5.5 type=innodb_mysql5.5.23TYPE=InnoDB语法错误_MySQL
  3. 框架:springboot组合spring、springmvc、mybatis的一个小demo
  4. 在虚拟机中安装LINUX
  5. linux安装tf-gpu注意事项
  6. Java异常处理教程
  7. java之父_java之父:被下载达7000万次的编程视频教程,你还没有看过?
  8. 解析器 java_Java高性能解析器实现思路及方法学习
  9. ubuntu安装rpm的方法
  10. 向 iOS 设备发送推送通知
  11. java easyui样式_[EasyUI美化换肤]更换EasyUi图标
  12. 编译ffmpeg安卓库(clang篇),含armeabi-v7a , arm64-v8a, x86, x86_64
  13. mysql 性别以女生升序_MySql练习题
  14. 第04篇:手写JavaRPC框架之搞定网络通信
  15. android美团点餐界面,Android 仿美团点餐页面布局介绍
  16. 中国天气网 城市代号
  17. Ubuntu18.04设置开机启动脚本__NVIDIA Jetson xavier NX设置开机启动脚本
  18. springboot接收excel数据文件去重
  19. Eclipse增加代码虚线对齐
  20. Python识别平台登录验证码

热门文章

  1. 意法半导体(ST)加入RT-Thread会员计划,正式成为金牌会员
  2. 除了安防场景联动,人称小HomeKit 怎么搭建什么场景呢?
  3. 市发改委带领“十四五规划”调研组莅临蜂云软件
  4. angular的service服务使用
  5. 实验9 windows程序设计
  6. Spring源码编译测试
  7. Matlab 实现HTTP请求
  8. 【Matlab】如何使用Filter Design设计低通、高通、带阻滤波器
  9. ArcGIS API for JavaScript 如何下载最新版
  10. ssm获取session中验证码值为null问题