3. c51有哪几种数据存储类型?对应单片机的哪些存储空间_我在职高教单片机——04零基础学51单片机数码管(2)...

做单片机毕业设计的学生需要帮助的可以咨询。

大家好,我是老王,职高老师一枚,一直从事单片机、计算机、电子技术基础等课程的教学。对于职高的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助头条平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学设计分享出来,如果您正是一名单片机爱好者或是一名同行,或者做毕业设计的学生不会的可以咨询。欢迎点赞+关注,各位的支持是本人持续输出的动力,多谢多谢#毕业设计##大学生##单片机#

下面介绍一种编码方法,在数码管显示数字时通常都要用到这种编码方法,刚才显示的数字是8,我们给 U1送入的数据是 0x7f,这是我们根据实际电路图自己给出的编码,不同的电路,编码可能不同,共阳极的编码与共阴极的编码也是不同的,因此大家一定要掌握编码原理,也就是要明白数码管显示的原理。根据本课程电路图,我们将 0~F 如表 3.2.1 所示进行编码。

c393ee4fbc230e94a85f0349bbc344a9.png

在用 C语言编程时,编码定义方法如下∶

unsigned char code table[]={  0x3f,0x06,0x5b,0x4f,   0x66,0x6d,0x7d,0x07,   0x7f,0x6f,0x77,0x7c,  0x39,0x5e,0x79,0x71};

编码定义方法与C语言中的数组定义方法非常相似,不同的地方就是在数组类型后面多了一个 code 关键字,code 即表示编码的意思。需要注意的是,单片机C语言中定义数组时是占用内存空间的,而定义编码时是直接分配到程序空间中,编译后编码占用的是程序存储空间,而非内存空间。

上面 unsigned char 是数组类型,也就是数组中元素变量类型,table 是数组名,我们可以自由定义它,但是不要和关键字重名;table 后面必须加中括号【】,中括号内部要注明当前数第 3 章 数码管显示原理及应用实现组内的元素个数,也可不注明,C51编译器在编编译时能够自动计算出来,通常我们不注明。等号右边用一个大括号包含所有元素,大括号后面加一个分号,大括号内部元素与元素之间用逗号隔开,注意,最后一个元素后面不要加逗号。

调用数组方法如下∶

PO=table[3];

即将 table 这个数组中的第 4 个元素直接赋给 P0 口,即

PO=0x66;

需要注意的是,在调用数组时,table后面中括号里的数字是从0开始的,对应后面大括号里的第1个元素。有了这种编码方法,我们在写数码管显示程序时就会方便很多。

【例3.2.2】下面我们结合前一章讲过的延时程序,实现这样一个功能,让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5s,循环下去。新建文件 part2.1_2.c,程序代码如下∶

#include#define uchar  unsigned char#define uint  unsigned intsbit dula P2^6;sbit dula P2^7;uchar num;uchar code table[]={  0x3f,0x06,0x5b,0x4f,   0x66,0x6d,0x7d,0x07,   0x7f,0x6f,0x77,0x7c,  0x39,0x5e,0x79,0x71};void main(){                  wela=1;                P0=0xc0;                wela=0;                while()                {                  for(num=0;num<16;num++)                    dula=1;                  P0=table[num];                  dula=0;                  delay(500);                  }}void delayms(uint xms){                uint i,j;              for(i=xms;i>0;i--)                for(j=110;j>0;j--)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值