找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1434|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用光敏轉(zhuǎn)換AD 讀出的數(shù)值沒有成功控制舵機(jī)。應(yīng)該怎樣控制?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:515908 發(fā)表于 2019-6-1 17:40 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include <STC12C5A60S2.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ADC_POWER   0x80                     
#define ADC_START   0x08                     
#define ADC_FLAG    0x10                     
#define ADC_SPEEDLL 0x00
unsigned char count,jd1,jd2,m1,m2;
uint   code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint disp[4];
uint temp1,temp2,result;

sbit pwm=P1^6;                        

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

char jd;                     

void delay(unsigned int i)

{

        unsigned int j,k;

        for(j=i;j>0;j--)

                for(k=125;k>0;k--);

}

void Time0_init()  

{

        TMOD=0x01;
        IE=0x82;
        TH0=0xff;
        TL0=0x19;                          
        TR0=1;                           

}

void Time0_int() interrupt 1                  

{

        TH0=0xff;

        TL0=0x19;

        if(count<jd)

         pwm=1;

        else

        pwm=0;   

        count++;

        count=count%40;  

}

void keyscan()                              

{

        if(1015<temp1<1023)                           

        {

                delay(50);                  

                if(1015<temp1<1023)

                {

                        jd++;               

                        count=0;            

                        if(jd==50)

                              jd=6;                     

                              while(1015<temp1<1023);     

                }

        }

        if(1009<temp1<1015)                              

        {

                delay(10);

                if(1009<temp1<1015);

                {

                        jd--;                        

                        count=0;

                        if(jd==0)

                              jd=1;

                        while(1009<temp1<1015);

                }

        }

}


void InitADC1()
{
        P1ASF=0x01;                              
        ADC_RES=0;                              
        ADC_RESL=0;                              
        ADC_CONTR=ADC_POWER|ADC_SPEEDLL;
        delay(1);                              
}


uint Read(uchar CHA)                              
   {
        ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;
    _nop_();                        
    _nop_();
    _nop_();
    _nop_();
        while(!(ADC_CONTR & ADC_FLAG));        
        ADC_CONTR &=~ADC_FLAG;                       
        return(ADC_RES*4+ADC_RESL);               
}


void datapros()
{

        static uint i=0;
        if(++i>=1000)
        {
                     i=0;
                                        temp1=Read(0);
            disp[3]=smgduan[temp1/1000%10];
                disp[2]=smgduan[temp1/100%10];
                disp[1]=smgduan[temp1/10%10];
                disp[0]=smgduan[temp1%10];                     
        }
                        
                                      
}





void main()

{
        P1M0 = 0x00;
        P1M1 = 0x01;
        jd=1;

        count=0;

                InitADC1();

        while(1)

        {
                                 datapros();
                                       
                                        Time0_init();
                                       
                                        keyscan();
                                        delay(1);   


        }

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表