找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1955|回复: 4
打印 上一主题 下一主题
收起左侧

我想做一个数码管显示100~300之间的质数的单片机程序 但是输出数码管显示有问题

[复制链接]
跳转到指定楼层
楼主
ID:446906 发表于 2018-12-15 19:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;}
   
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2018-12-15 21:34 | 只看该作者
数码管显示有问题不光跟软件有关,也和硬件有关,硬件电路也要告诉大家。
回复

使用道具 举报

板凳
ID:277550 发表于 2018-12-15 22:03 | 只看该作者
问题也说说是怎样的问题吧
~~~~~~~~
回复

使用道具 举报

地板
ID:446906 发表于 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++;}

  
}
回复

使用道具 举报

5#
ID:446906 发表于 2018-12-16 00:37 | 只看该作者
xuyaqi 发表于 2018-12-15 21:34
数码管显示有问题不光跟软件有关,也和硬件有关,硬件电路也要告诉大家。

谢谢老哥 找到错误了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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