標(biāo)題: 光電傳感器計(jì)數(shù)程序源代碼 [打印本頁]

作者: wssjdzh    時(shí)間: 2017-3-4 15:24
標(biāo)題: 光電傳感器計(jì)數(shù)程序源代碼
#include < reg51.h >         // 實(shí)現(xiàn)光電門計(jì)數(shù)  
#include <intrins.h>

sbit LS138A=P2^2;  
sbit LS138B=P2^3;
sbit LS138C=P2^4;

unsigned int LedNumVal = -1 ,LedOut[8];
unsigned char code Disp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x80,0x7c,0x39,0x5e,0x79,0x71,0x00};

void display()
{  
        unsigned char i;
    unsigned int j;
        unsigned int v;
               
        v = LedNumVa;
       
        if (v>=1000) LedOut[4]=Disp_Tab[v%10000/1000];          
        if (v>=100)  LedOut[5]=Disp_Tab[v%1000/100];
        if (v>=10)   LedOut[6]=Disp_Tab[v%100/10];
        if (v>=0)    LedOut[7]=Disp_Tab[v%10];

        for( i=0; i<8; i++)
        {
               
                switch(i)                                          
                {            
                        case 0:LS138A=0; LS138B=0; LS138C=0; break;         
                        case 1:LS138A=1; LS138B=0; LS138C=0; break;                    
                        case 2:LS138A=0; LS138B=1; LS138C=0; break;
                        case 3:LS138A=1; LS138B=1; LS138C=0; break;
                        case 4:LS138A=0; LS138B=0; LS138C=1; break;
                        case 5:LS138A=1; LS138B=0; LS138C=1; break;
                        case 6:LS138A=0; LS138B=1; LS138C=1; break;
                        case 7:LS138A=1; LS138B=1; LS138C=1; break;
                }
                P0 = LedOut[i];                  //發(fā)送段碼
                j=10;                                                 //掃描間隔時(shí)間設(shè)定
                while(j--);       
                P0 = 0x00;  //消隱
        }

}


void main(void)
{  
        P0=0xff;
        P1=0xff;
        P2=0xff;   
       
        // IT0=0;       //低電平觸發(fā)
        IT0=1;       //下降沿觸發(fā)
        EA=1;
        EX0=1;

        while(1)
        {  
             
           display();
          
        }
}
/********************************************************
* INT0中斷函數(shù)                                          *
********************************************************/
void  counter(void) interrupt 0
{
        //   unsigned char  x;
        EX0=0;
        LedNumVal++;     //中斷計(jì)數(shù)  
        EX0=1;
}
/********************************************************/





作者: 964061090    時(shí)間: 2021-6-8 14:16
v = LedNumVa;應(yīng)該為v = LedNumVal;
不然運(yùn)行有一處錯(cuò)誤




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