標題: 我想做一個數(shù)碼管顯示100~300之間的質(zhì)數(shù)的單片機程序 但是輸出數(shù)碼管顯示有問題 [打印本頁]

作者: 不雅    時間: 2018-12-15 19:29
標題: 我想做一個數(shù)碼管顯示100~300之間的質(zhì)數(shù)的單片機程序 但是輸出數(shù)碼管顯示有問題
#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit k3=P3^2;
sbit k4=P3^3;
static j;
static t;
int m;
m=0;
int o,b[50]={50,156,982,384,345,156,68};
o=100;
void dalay(int x)
{int i,j;
for(i=0;i<=x;i++)
  for(j=0;j<=30;j++);
}
void Timer0Init()
{
  TMOD|=0X01;
TH0=0XFC;
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void  Int1Init()
{
#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit k3=P3^2;
sbit k4=P3^3;
int o,b[50],m=0;
void dalay(int x)
{int i,j;
for(i=0;i<=x;i++)
  for(j=0;j<=30;j++);
}
void Timer0Init()
{
  TMOD|=0X01;
TH0=0XFC;
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void  Int1Init()
{
  IT1=1;
EX1=1;
EA=1;
}
void  Int0Init()
{
  IT0=1;
EX0=1;
EA=1;
}
void baojing()
{   
        if(o>=0&&o<=3)
    {  led4=~led4;
      dalay(10);}
}

void zhishu()
{ int t,k,i,j;
k=0;

for(i=100;i<=300;i++)
  {
  for(j=i-1;j>1;j--)
    {
     t=1;
  if(i%j==0)
    {
    t=0;break;
    }
    }  
    if(t==1)
   { b[k]=i;
     k++;}  
}
}
void xianshi()
{ int code a[10]={17,215,50,146,212,152,28,211,16,208};
    led4=0;
     Int1Init();
      Timer0Init();
      Int0Init();
    led1=1;led2=0;led3=0;
   P2=a[o%10];
   dalay(5);
   P2=a[0];
   led2=1;led1=0;led3=0;
   P2=a[o/10%10];
   dalay(5);
   P2=a[0];
   led2=0;led1=0;led3=1;
   P2=a[o/100];
   dalay(5);
   P2=a[0];
   
}

int main()
{   
Int1Init();
      Timer0Init();
      Int0Init();
while(1){xianshi();}
    return 0;

}
void Time0() interrupt 1
{  
static int i;
static m;
m=0;
TH0=0XFC;
TL0=0X18;
i++;
if(i==1000)
{i=0;
  o=b[m];
m++;}
  
}
void int1()  interrupt 2
{  
   dalay(50);
   if(k4==0)
  TR0=~TR0;
}
void int0()  interrupt 0
{  
   dalay(5);
    if(k3==0)
  { o++;led4=0;}
   
}



作者: xuyaqi    時間: 2018-12-15 21:34
數(shù)碼管顯示有問題不光跟軟件有關(guān),也和硬件有關(guān),硬件電路也要告訴大家。
作者: devcang    時間: 2018-12-15 22:03
問題也說說是怎樣的問題吧
~~~~~~~~
作者: 不雅    時間: 2018-12-16 00:37
謝謝老哥們 找到問題了
#include<reg52.h>
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
int o,b[50];
int m;
m=0;
void dalay(int x)
{int q,w;
for(q=0;q<=x;q++)
  for(w=0;w<=30;w++);
}
void Timer0Init()
{
  TMOD|=0X01;
        TH0=0XFC;
        TL0=0X18;
        ET0=1;
        EA=1;
        TR0=1;

}

void xianshi()
{ int code a[10]={17,215,50,146,212,152,28,211,16,208};
                                led4=0;
                    
        while(1)
                { Timer0Init();
           led1=1;led2=0;led3=0;
                 P2=a[o%10];
                 dalay(30);
     P2=a[0];
                 led2=1;led1=0;led3=0;
                 P2=a[o/10%10];
                 dalay(30);
                 P2=0;
                 P2=a[0];
                 led2=0;led1=0;led3=1;
                 P2=a[o/100];
                 dalay(30);
                 P2=a[0];
                 }
                 }
                 void zhishu()
                 {
                  int t,k,i,j;
k=0;

for(i=100;i<=300;i++)
  {
  for(j=i-1;j>1;j--)
    {
     t=1;
         if(i%j==0)
    {
    t=0;break;
    }
    }  
    if(t==1)
   { b[k]=i;
     k++;}  
}}
int main()
{    zhishu();
                xianshi();
           return 0;
       
}
void Time0() interrupt 1
{  
int h;
   TH0=0XFC;
   TL0=0X18;
h++;
if(h==1000)
{h=0;
  o=b[m];m++;}

  
}

作者: 不雅    時間: 2018-12-16 00:37
xuyaqi 發(fā)表于 2018-12-15 21:34
數(shù)碼管顯示有問題不光跟軟件有關(guān),也和硬件有關(guān),硬件電路也要告訴大家。

謝謝老哥 找到錯誤了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1