標題: 模擬光柵測速裝置的程序 [打印本頁]

作者: 飛奔的蝸牛    時間: 2017-5-2 11:06
標題: 模擬光柵測速裝置的程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint temp,tt,qian,bai,shi,ge;       
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit deng1=P1^3;
sbit deng2=P1^4;
sbit guang=P1^5;
sbit beepIO=P1^6;
int t1=(65536-10000)/256;
int        t2=(65536-10000)%256;
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void keyscan();
void display();
void init();
void delay(uint z);
void shengyin();

/**************************************************************
                Ö÷oˉêy
******************************************************************/
void main()
{       
        init();//3õê¼»ˉ×ó3ìDò
        while(1)
        {
                if(tt==1)
                  {
                        tt=0;
                        if(++temp>=9999)
                           {
                                        ET0=0;
                                        shengyin ();   //μ÷óÃéùòô
                           }
                        qian=temp/1000;
                        bai=temp%1000/100;
                        shi=temp%100/10;
                        ge=temp%10;
                  }
                 keyscan();
                display();       
        }
}
/*********************************************************************
                                shengyin
***********************************************************************/
void shengyin()
{
uchar i,j;
for(j=5;j>0;j--)
{                          
for(i=0;i<50;i++)
{
beepIO=~beepIO;
delay(2);
}
}
}
/*********************************************************************
                                °′¼ü¿ØÖÆ
***********************************************************************/
void keyscan()
{
        if(key2==0||guang==1)         //ÔYí£¼Æê±
        {
        deng1=1;
        deng2=0;
        TR0=0;
        }
        if(key3==0||guang==0)         //¿aê¼¼Æê±
        {
        deng2=1;         
        deng1=0;
        TR0=1;
        }  
}

/*********************************************************************
                                ÏÔê¾
***********************************************************************/
void display()
{
      P2=0x08;
          P0=table[qian];
          delay(1);
          P2=0x04;
          P0=table[bai]+0x80;
          delay(1);
          P2=0x02;
          P0=table[shi];
          delay(1);
      P2=0x01;
          P0=table[ge];
          delay(1);
}
/*********************************************************************
                                Ñóê±
***********************************************************************/
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
/*********************************************************************
                        3õê¼»ˉ
***********************************************************************/
void init()
{       

    P2=0x00;
        P0=0xc0;
        temp=0;
        TMOD=0x01;
        TH0=t1;
        TL0=t2;
        EA=1;
        ET0=1;
        TR0=1;       
}
/*********************************************************************
                        ÖD¶Ï
***********************************************************************/
void t0() interrupt 1
{
        TH0=t1;
        TL0=t2;
        tt++;       
}






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