1.任务及要求
任务:设计一个程序,实现让最右边两个数码管显示“22”。
要求:掌握共阴极LED数码管的静态显示的基本原理和方法。
2.实验接线
两个数码管显示参考接线见图2.2.3。
图2.2.3 两个数码管显示参考接线
注意:本电路图为了突出数码管的接线,未画出振荡电路和复位电路,但在实际硬件电路中是有的。
3.程序流程图及参考程序
(1)程序流程图
略。
(2)参考程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//数码管的段码编码(www.xing528.com)
4.思考题
线路连接不变,编程实现让数码管显示“88”。
知识补充 数组
数组就是同一类型变量的有序集合。可以这样形象地去理解,就像一个学校的学生在操场上排队,每一个年级代表一个数据类型,每一个班级为一个数组,每一个学生就是数组中的一个数据。数组中的每个数据都可以用唯一的下标来确定其位置,下标可以是一维或多维的。如在学校的方队中要找一个学生,这个学生在I年级H班X组Y号,那么可以把这个学生看作在I类型的H数组中(X,Y)下标位置中。数组和普通变量一样,要求先定义了才可以使用,下面是定义一维或多维数组的方式:
一维 数据类型 数组名[常量表达式];
多维 数据类型 数组名[常量表达式1]……[,常量表达式N];
“数据类型”是指数组中的各数据单元的类型,每个数组中的数据单元只能是同一数据类型。“数组名”是整个数组的标识,命名方法和变量命名方法是一样的。在编译时系统会根据数组大小和类型为变量分配空间,数组名就是所分配空间的首地址的标识。“常量表达式”表示数组的长度和维数,它必须用“[]”括起,括号里的数不能是变量只能是常量。如
unsigned int table1[10]; //定义无符号整形数组table1,有10个数据单元
unsigned char table2[5]; //定义无符号字符形数组table2,有5个数据单元
在C语言中数组的下标是从0开始的而不是从1开始,如一个具有10个数据单元的一维数组table,它的下标就是从table[0]到table[9],引用单个元素就是数组名加下标,如table[1]就是引用table数组中的第2个元素,如果错用了table[10]就会有错误出现了。还有一点要注意的就是在程序中只能逐个引用数组中的元素,不能一次引用整个数组,但是字符型的数组就可以一次引用整个数组。
数组也是可以赋初值的。在上面介绍的定义方式只适用于定义在内存DATA存储器使用的内存,有的时候我们需要把一些数据表存放在数组中,通常这些数据是不用在程序中改变数值的,这时就要把这些数据在程序编写时就赋给数组变量。因为51芯片的片内RAM很有限,通常会把RAM分给参与运算的变量或数组,而那些在程序中不变的数据则应存放在片内的CODE存储区,以节省宝贵的RAM。赋初值的方式如下:
数据类型 [存储器类型] 数组名[常量表达式]={常量表达式};
数据类型 [存储器类型] 数组名[常量表达式1]…[,常量表达式N]={{常量表达式1}…{,常量表达式N}};
在定义并为数组赋初值时,初学者往往会搞错初值个数和数组长度的关系,而致使编译出错。初值个数必须小于或等于数组长度,不指定数组长度则会在编译时由实际的初值个数自动设置。如:
unsigned char table[2]={12,35}; //定义无符号字符型一维数组table,含有两个元素,并赋初值
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。