[51单片机]for循环中,数组数据提取

学习代码,数码管动态显示。

案例说明:第一个数码管显示1,时间为0.5s,然后关闭它,立即让第二个数码管显示2,时间为0.5s,再关闭它……一直到最后一个数码管显示6,时间同样为0.5s,关闭它后再回来显示第一个数码管,一直循环下去。

案例中给出的是非循环的代码, 这里我需改成了for循环的形式。最开始将i=1放在了for循环的括号内部,总是报错。由于初学不是很了解具体的原因,特此记录。

全部代码:

#include<reg52.h>           //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;     //申明U1锁存器的锁存端
sbit wela=P2^7;     //申明U2锁存器的锁存端

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

uchar code table2[]={
0xfe,0xfd,0xfb,0xff,0xef,0xdf};


void delayms(uint);

void main()
{
    while(1)
    {   
        int i=1;
        for(i;i<7;i++) 
        {
            dula=1;
            P0=table[i];        //送段选数据
            dula=0;
            P0=0xff;            //送位选数据前关闭所有显示,防止打开位选锁存器时, 
            wela=1;            //原来的段选位数据通过位选锁存器造成混乱送位选数据
            P0=table2[i];
            wela=0;
            delayms(500);      //延时          
        }


    }
}

void delayms(uint xms){
    uint i,j;
    for(i=xms;i>0;i--)      //i=xms即延时约xms毫秒
    {
        for(j=110;j>0;j--);

    
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,126评论 25 709
  • 微博第三方登录## 微博第三方登录,在这里记录一下笔记,获取到授权,切获取到头像名字等个人信息首先在微博开发者平台...
    不识水的鱼阅读 1,479评论 0 12
  • 不为未来担忧,过好现在才最踏实!
    等冬阅读 136评论 0 0
  • 刚进家里,看到这熟悉有陌生的一切,自己变得惶恐,我是活在记忆里的人,始终无法摆脱过去,看到玲子送我的拖鞋,被老爸穿...
    云游大师阅读 276评论 0 0
  • 本文参考内容来自作者feifei 内部存储 外部存储
    Cloverss阅读 186评论 0 0