找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3366|回复: 0
收起左侧

数码管显示函数

[复制链接]
ID:65608 发表于 2014-9-12 01:51 | 显示全部楼层 |阅读模式

好不容易写完一点程序,结果单片机学习板跟我玩傲娇,代码烧不进去,苍天啊!!!!!!!!!51单片机小车制作 <wbr>STEP2.2 <wbr>数码管显示函数
这些程序运行出来的结果应该是从10显示到99.
#include

#define uchar unsigned char
#define uint  unsigned int
#define OUTDATE P1          //定义数据输出端口
sbit we=P2^5;               //位锁存
sbit duan=P2^6;             //段锁存

unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};    //显示段码值0~F
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};     //分别对应相应的数码管点亮,即位码

Pow(uint Bnumber,uint Exp)
{
uint t,power=1;
for(t=0;t
{
power=power*Bnumber;
}
return power;
}

void delay(uint tim)
{
uint i,j;
for(i=0;i<110;i++)
for(j=0;j
}


void Display(uint num,uint first,uint dis)
{
  static uint i=0;
uint p=0,l=0;
uint per[]=0;
duan=1;                 //清屏
OUTDATE=0;
duan=0;
if(num>=2)             //把多位数化成单个的数字并存入数组per[]中
{
for(l=1;l
{
per[0]=dis;
per[l]=dis/Pow(10,l);
}
}
else per[0]=dis;
we=1;
OUTDATE=WeiMa[first+i];
we=0;

duan=1;
OUTDATE=DuanMa[per[num-1-i]];
duan=0;

delay(5000);

i++;
if(i==num)
i=0;
}

void main()
{
  uint cs;
while(1)
{
for(cs=10;cs<=99;cs++)
Display(2,0,cs);
delay(10000);
}
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表