找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请哪位老师帮我指点一下程序,

[复制链接]
跳转到指定楼层
楼主
ID:77608 发表于 2015-8-16 10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用595数码管做了显示程序,总是不正常,哪位老师能帮我指点一上程序好下:
#include<reg52.h>
unsigned int date;   
unsigned char n0,n1,n2,n3,n4,n5,n7,s,sec;
unsigned char step1; unsigned  int num,t0,start;
unsigned char step2,step3,step0,nn,step4,step5;
unsigned char code table[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code table[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90sbit x1=P0^1;
sbit x2=P0^2;
sbit x3=P0^3;
sbit x4=P0^4;
sbit x5=P0^5;
sbit x6=P0^6;
sbit x7=P0^7;
sbit x0=P0^0;
sbit y0=P1^3;
sbit out1=P1^1;
sbit out2=P1^2;
sbit LOAD=P2^7;
sbit SCLK=P2^6;         //时钟
sbit SDK=P2^5;           //数据
void display();
void hc595(unsigned char word);
void main ()
{     t0=123;
      date=5;
          display();
     TMOD=0x01;                          
     TH0=0x3c;  
     TL0=0xb0;
     EA=1;
     TR0=1;
     ET0=1;
         step0=1;
         
         while(1)
         {P0=0xff;
         if(x0==0)
         {for(nn=0;nn>1000;nn++);
          if(x0==0)
          n0=1;
          }
          else n0=0;
         if(x1==0)
         {for(nn=0;nn>1000;nn++);
          if(x1==0)
          n1=1;
          else n1=0;}
          
         if(x2==0)
         {for(nn=0;nn>1000;nn++);
          if(x2==0)
           n2=1;
          else n2=0;
           }
           if(x3==0)
         {for(nn=0;nn>1000;nn++);
          if(x3==0)
                n3=1;   
        }
                else
                n3=0;
        if(x4==0)
         {for(nn=0;nn>1000;nn++);
          if(x4==0)
             n4=1;}
                else n4=0;
        if(x7==0)
         {for(nn=0;nn>1000;nn++);
          if(x7==0)
          n7=1;
          else n7=0;}
          if (step0==1)
{ display();
                }
          if(((step0&n0)|step1)&!n7)//起动时
          {step1=1;step0=0;y0=0;sec=0;}
          else step1=0;
          if (((step1&n1)|step2)&!step5) //下到位
               {step2=1;step1=0;   //横进
                     out1=0;
                         y0=1;}
                if(((step2&&n2)|step3)&&!step4)         //横进到位       
          {step3=1;
                    if(date==0)
                            y0=1;
                            else
                                y0=0;
                     if(date<num)
                        date++;
                                else
                                {y0=1;
                                 out1=1;
                                 step5=1;
                                 }
                         if(step5&!n5==1)
                          {out2=1;
                           if(n5==1)
                            {out2=0;
                                 step0=1;
                                 }
                           }
          }

    if((step3|step4)&n0&step1)
     { step4=1;
     if(n5==1)
      out1=0;
           }
      }
         }
void timer() interrupt 1
  {TH0=0x3c;
  TL0=0xb0;
  s++;
  if(s>1)
   {s=0;
   if(step1==1)
    {sec++;
      display();
    if(sec>t0)
          {out2=0;
          sec=0; }
            }
        if((n3==1)&&(t0<999) )
                 { t0++;
              }
        if((t0>1)&(n4==1))
         {t0--;
             }
      display();
          }
         }


       
  //*串行输出一个字节子函数
void hc595(unsigned char out_data)
  {unsigned char i,temp;
        for(i=0;i<8;i++)
          {   SCLK=0;        // //先拉低,为后面的上升沿做准备
             temp=out_data&0x80;//按位与
             if(temp==0x80)     //如果数据等于080
        SDK=1;           //SDK高电平
        else SDK=0;       //否则低电平
             out_data=out_data<<1;//数据左移一位
             SCLK=1;//CLK高电平
        }
}

//**显示子函数**//
void display()
{ LOAD=1;
  LOAD=0;
hc595(table[date]);
hc595(table[t0/100]);
hc595(table[(t0%10)/10]);
hc595(table[t0%100]);
LOAD=1;          
;
LOAD=0;
}

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

使用道具 举报

沙发
ID:88438 发表于 2015-8-16 18:42 | 只看该作者
你这个程序做的有点小问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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