请问:怎么用51单片机(c语言)编程,使八位数码管显示不连续数字串。例如:35126457

 我来答
tdfzq
2012-02-25 · TA获得超过839个赞
知道小有建树答主
回答量:771
采纳率:75%
帮助的人:202万
展开全部
#include <reg51.h>
#include <intrins.h>

void delay(unsigned int i); //函数声名

char DelayCNT;//定义变量

//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制

//此表为8个数码管位选控制, 共阴数码管 1-8个 -
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制

/************主函数**********************/
main()
{
unsigned int i,LedNumVal=1 ; //变量定义
unsigned int LedOut[10]; //变量定义

DelayCNT=0;

while(1)
{
if(++DelayCNT>=20) //控制数字变化速度
{
DelayCNT=0; //20个扫描周期清零一次
++LedNumVal; //每隔20个扫描周期加一次
}

LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOut[3]=Disp_Tab[LedNumVal%10];

LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位
LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点
LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位
LedOut[7]=Disp_Tab[LedNumVal%10]; //个位

for( i=0; i<9; i++)
{
P0 = LedOut[i];
P1 = dispbit[i]; //使用查表法进行位选

/* switch(i) //使用switch 语句控制位选
{
case 0:P1 = 0x7F; break;
case 1:P1 = 0xbF; break;
case 2:P1 = 0xdF; break;
case 3:P1 = 0xeF; break;
case 4:P1 = 0xf7; break;
case 5:P1 = 0xfb; break;
case 6:P1 = 0xfd; break;
case 7:P1 = 0xfe; break;

} */

delay(150); //扫描间隔时间 太长会数码管会有闪烁感
}

}
}

void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
liqiu880905
2012-02-25 · 超过33用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:27.6万
展开全部
只要你的数组顺序是这个就可以了!!
追问
如果数组顺序是0-9呢?因为显示的数组不止一组。。。
追答
一个方法:多定义几组数值的顺序数组。第二种:调用时候分别分开送数!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llh0026
美妆达人

2012-02-25 · 致力于教你变美
知道大有可为答主
回答量:2.4万
采纳率:78%
帮助的人:4658万
展开全部
这个问题我感兴趣
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式