微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么才能让数码管动态显示1-100呢?

怎么才能让数码管动态显示1-100呢?

时间:10-02 整理:3721RD 点击:
单片机中如果我用138译码器来点亮数码管怎么才能让数码管动态显示1-100呢?求大神帮助,初学者,还请理解。

文不对题啊,什么原因

这个问题我貌似说过呀,发你个阉割版的源程序吧。
//数码管动态显示+1,显示范围0-100,定时时间1s
#include
sbit dula=P2^6;  //定义段选信号
sbit wela=P2^7; //定义位选信号
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void delay(uint z);    //延迟函数声明
void display(uchar bai,uchar shi,uchar ge);  //显示函数声明
void init();   //初始化函数声明
void main()
{
  init();  //调用初始化子函数
  while(1)
  {  
    if(aa==20)        //判断定时是否到达1s
    {
        aa=0;  
        temp++ ;  
        if(temp==100)        //限制temp变化的范围,使之不超过100
        {
           temp=0;
        }
    }
bai=temp/100;
shi=temp%100/10;
ge=temp%10;           //分离百位、十位和个位
display(bai,shi,ge); //调用显示子函数
  }
}
void delay(uint z)  //延迟子函数
{
         uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar bai,uchar shi,uchar ge)        //显示子函数
{
wela=1;         //位选通百位   
P0=0x01;
wela=0;
dula=1;
P0=table[bai];
dula=0;         //取百位的数字显示!
delay(2);
wela=1;
P0=0x02;
wela=0;          //选择第二个数码管显示
dula=1;
P0=table[shi];
dula=0;          //取十位的数字显示
delay(2);
wela=1;
P0=0x04;
wela=0;         //选择第三个数码管显示
dula=1;
P0=table[ge];
dula=0;          //取个位的数字显示
delay(2);
}
void init() //初始化子函数
{
dula=0;
wela=0;
temp=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1   //中断处理子函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;        //重载初值
aa++;
}

坛友请教个问题  这几天心血来潮搞了个51的32位的流水灯 可是程序下进去后 显示不正常  有2组灯常亮 也不变化   单片我都用的是STC89C51RC的   程序是从论坛下的   

论坛下载的,不一定是【完整版也就是我所说的阉割版】,一些个别人不知出于什么心态,或忘记或漏写一段代码,使得程序编译下载以后不能正确运行!

这个程序坛友有完整版的吗  请分享一下  谢谢

这个程序我有完整版,不过怎么发给你是个问题啊。

能否提供电路

晕车,代码电路都要,,,,,

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

网站地图

Top