微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助一个程序问题,关于数码管的,有个地方不懂

求助一个程序问题,关于数码管的,有个地方不懂

时间:10-02 整理:3721RD 点击:

10   8 只数码管滚动显示数字串

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

//段码表

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//下面数组看作环形队列,显示从某个数开始的 8 个数(10 表示黑屏)

uchar Num[]={10,10,10,10,10,10,10,10,2,9,8};

//延时

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t<120;t++);

}

//主程序

void main()

{

uchar i,j,k=0,m=0x80;

while(1)

{     //刷新若干次,保持一段时间的稳定显示

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

{

for(j=0;j<8;j++)

{     //发送段码,采用环形取法,从第 k 个开始取第 j 个

P0=0xff; P0=DSY_CODE[Num[(k+j)%11]]; m=_crol_(m,1);

P2=m;      //发送位码

DelayMS(2);

}

}

k=(k+1)%11;  //环形队列首支针 k 递增,Num 下标范围 0~10,故对 11 取余

}

}

如上,红色部分为看不懂的,主要两点:1,为什么对11取余,取余之后的操作举个例子;2.为什么i循环终值选15,是延时作用吗;

另外,求大神带我起飞。目标熟练掌握单片机编程

刚刚发现这块福地,真心想在这里学习进步

求知道的人抽空告我一声,子玉在这谢谢各位了

求长期师傅

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top