标题: 如何在这段程序中加入一些程序,让他数码管显示数字是123 [打印本页]

作者: 那么远97    时间: 2018-12-23 18:30
标题: 如何在这段程序中加入一些程序,让他数码管显示数字是123
#include<at89x51.h>
#define uchar unsigned char
uchar code buff[ ] = {0xc0 ,0xf9 ,0xa4 ,0xb0 ,0x99 ,0x92 ,0x82 ,0xf8 ,0x80 ,0x90} ;
uchar numberl,number2,number3,display;
long number;
void main( void)
{
display =1;
TMOD = 0x01;
TH0=(65535- 50000)/256;
TL0=(65535- 50000)%256;
ET0=1;
EA=1;
TR0=1;
TMOD = TMOD|0x20;
TH1 = 0x73;
TL1 =0x73;
PCON =0;
TR1 =1;
SCON =0x00;
while(1 )
        {
    if(display==1)
     {
       numberl=number%10;
       number2=(number/10)%10;  
       number3=number/100;
       SBUF=buff[numberl];  
       while(TI==0);
       TI=0;  
       SBUF=(buff[number2]&0x7f);
       while(TI==0);  
       TI=0;
       SBUF=buff[number3];
       while(TI==0);
       TI=0;
       display =0;
     }
   }
}
void time0_int(void) interrupt 1
{
  static uchar time_nu=0;
  TR0=0;
  TH0=(65535-50000)/256;
  TL0=(65535-50000)%256;
  time_nu ++ ;
  if(time_nu==20)
    {
       display=1;
       time_nu=0;
       number++;
       if(number==1000)
       number=0;
    }
  TR0=1;
}

IMG_20181223_181747.jpg (892.61 KB, 下载次数: 24)

IMG_20181223_181747.jpg

作者: ssk7793    时间: 2018-12-23 21:43
看我的贴,一位数码管那个,你这个其实三个数码管可以共用一个595芯片的
作者: 那么远97    时间: 2018-12-24 09:33
ssk7793 发表于 2018-12-23 21:43
看我的贴,一位数码管那个,你这个其实三个数码管可以共用一个595芯片的

看不了你的贴
作者: zha    时间: 2018-12-24 11:16
http://www.51hei.com/bbs/dpj-146402-1.html可以参考我之前发的那个贴
作者: robinsonlin    时间: 2018-12-24 20:43
从你的程序来看,你是想实现一个秒表计时的功能,一秒钟数码管自动加一。 但是程序确实有好大问题哦。
1.就说说最大的问题吧,你这个程序,大部分时间都在中断。中断,中断,中断。先搞清楚什么是中断,如何使用。
2.你的板子没有做串口接口啊,但是你的程序中却有PCON、SCON的赋值,所以,寄存器,寄存器,寄存器。什么是寄存器,作用是什么,特别是要搞清楚控制寄存器的作用。
3.线路图都没有,怎么知道你IO口怎么定义的?累积了好久的Number值,最后赋值给了SBUF,给串口缓存又是几个意思?
总结:你这段代码不能叫程序,可以叫天书。
建议:没法改,你还是先熟悉一下基础教程。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1