久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1707|回復: 6
打印 上一主題 下一主題
收起左側

大神們,求指教ADC比較問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:321930 發(fā)表于 2020-1-19 21:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
想照貓畫虎做個追光系統(tǒng),ADC采集沒問題了,可是本人太菜不會做比較,我的意思是比較兩個ADC數(shù)值若差大于一定值舵機就增加一定脈沖。應該怎么寫,謝謝了

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

使用道具 舉報

沙發(fā)
ID:321930 發(fā)表于 2020-1-19 21:47 | 只看該作者
剛開始簡單寫成if(adc1-adc2>10){jiaodu++;}編譯通過不了,沒學過C
回復

使用道具 舉報

板凳
ID:592807 發(fā)表于 2020-1-20 11:56 | 只看該作者
這兩句沒錯,估計其他地方錯了,你要把錯誤提示發(fā)出來
回復

使用道具 舉報

地板
ID:679425 發(fā)表于 2020-1-20 13:36 | 只看該作者
編譯時的錯誤提示
回復

使用道具 舉報

5#
ID:553941 發(fā)表于 2020-1-20 14:10 | 只看該作者
你要提供錯誤信息和源碼呀,不然怎么知道你哪的錯
回復

使用道具 舉報

6#
ID:321930 發(fā)表于 2020-1-28 16:54 | 只看該作者



#include    "config.h"
#include    "adc.h"
#include    "delay.h"
//#include    "soft_uart.h"
#include    "pcf8574lcd.h"
unsigned int scale1;//占空比控制變量
unsigned int scale2;//占空比控制變量
sbit out1=P3^6;
sbit out2=P3^7;
sbit key1=P3^5;
sbit key2=P3^4;
sbit key3=P3^3;
sbit key4=P3^2;

unsigned int kf1=1;//按鍵用的標志位
unsigned int kt1=0;//按鍵用的標志位
unsigned int kf2=1;//按鍵用的標志位
unsigned int kt2=0;//按鍵用的標志位
unsigned int num1=50;
unsigned int num2=25;
unsigned int ADC1;//上
unsigned int ADC2;//下
unsigned int ADC3;//左
unsigned int ADC4;//右
unsigned int ADC5;//電壓
volatile uint8 data display_buffer1[16];    //顯示緩沖區(qū)1
volatile uint8 data display_buffer2[16];    //顯示緩沖區(qū)2
                             




void timer0() interrupt 1{//定時器0 0中斷服務程序
    static unsigned int tt1,tt2;//tt用來保存當前時間在一秒中的比例位置
    tt1++;
    tt2++;
     //每10微妙增加1
    if(tt1==150){//2.5毫秒的時鐘周期
        tt1=0;//使tt=0,開始新的PWM周期
        out1=0;
         
    }
    if(tt2==150){//2.5毫秒的時鐘周期
        tt2=0;//使tt=0,開始新的PWM周期
        out2=0;
         
    }
    if(scale1==tt1){//按照當前占空比鐵環(huán)輸出為高電平
out1=1;        
    }
    if(scale2==tt2){//按照當前占空比鐵環(huán)輸出為高電平
        
out2=1;
    }
}


void    ADC_config(void)
{
    ADC_InitTypeDef        ADC_InitStructure;                //結構定義
    ADC_InitStructure.ADC_Px        = ADC_P10 | ADC_P11 | ADC_P12 | ADC_P13 | ADC_P14 ;    //設置要做ADC的IO,    ADC_P10 ~ ADC_P17(或操作),ADC_P1_All
    ADC_InitStructure.ADC_Speed     = ADC_540T;            //ADC速度            ADC_90T,ADC_180T,ADC_360T,ADC_540T
    ADC_InitStructure.ADC_Power     = ENABLE;            //ADC功率允許/關閉    ENABLE,DISABLE
    ADC_InitStructure.ADC_AdjResult = ADC_RES_H8L2;        //ADC結果調整,    ADC_RES_H2L8,ADC_RES_H8L2
    ADC_InitStructure.ADC_Polity    = PolityLow;        //優(yōu)先級設置    PolityHigh,PolityLow
    ADC_InitStructure.ADC_Interrupt = DISABLE;            //中斷允許        ENABLE,DISABLE
    ADC_Inilize(&ADC_InitStructure);                    //初始化
    ADC_PowerControl(ENABLE);                            //單獨的ADC電源操作函數(shù), ENABLE或DISABLE
}




void ADC_zhuanhuan(void)
{
u8 a,b,c,d;
ADC1=Get_ADC10bitResult(0);//上下左右  電壓
ADC2=Get_ADC10bitResult(1);
ADC3=Get_ADC10bitResult(2);
ADC4=Get_ADC10bitResult(3);
ADC5=Get_ADC10bitResult(4);
a=ADC1/11;
b=ADC2/11;
c=ADC3/11;
d=ADC4/11;


}

/**************************************************************
更新顯示緩沖區(qū)
***************************************************************/
void updata_buffer(void)
{
//顯示日期
    u8 a,b,c,d;

   display_buffer1[0] = 'S';
   display_buffer1[1] = ':';
    display_buffer1[2] = a/10+0x30;        //年
    display_buffer1[3] = a%10+0x30;
   display_buffer1[4] = ' ';
   display_buffer1[5] = 'X';
   display_buffer1[6] = ':';
    display_buffer1[7] = b/10+0x30;        //年
    display_buffer1[8] = b%10+0x30;
   display_buffer1[9] = ' ';
   display_buffer1[10] = ' ';
   display_buffer1[11] = ' ';
   display_buffer1[12] = ' ';
   display_buffer1[13] = ' ';
   display_buffer1[14] = num1/10+0x30;
   display_buffer1[15] = num1%10+0x30;

   display_buffer2[0] = 'Z';
   display_buffer2[1] = ':';
    display_buffer2[2] = c/10+0x30;        //年
    display_buffer2[3] = c%10+0x30;
   display_buffer2[4] = ' ';
   display_buffer2[5] = 'Y';
   display_buffer2[6] = ':';
    display_buffer2[7] = d/10+0x30;        //年
    display_buffer2[8] = d%10+0x30;
   display_buffer2[9] = ' ';
   display_buffer2[10] = ' ';
   display_buffer2[11] = ' ';
   display_buffer2[12] = ' ';
   display_buffer2[13] = ' ';
   display_buffer2[14] = num2/10+0x30;
   display_buffer2[15] = num2%10+0x30;

  
   

   

}
/******************************************************************
顯示緩沖區(qū)內容
*******************************************************************/
void display_buffer(void)
{
    uint8 i ;
    send_command(0x80) ;    //顯示第一行
    for(i=0;i<16;i++)
    send_data(display_buffer1[i]);
    send_command(0xc0) ;   //顯示第二行
    for(i=0;i<16;i++)
    send_data(display_buffer2[i]);
}

/*****************************************************/
/**********************************************/
void main(void)
{
    u8 a,b,c,d;
  
TMOD=0x02;//定時器0,工作模式2(0000,0010),8位定時模式
    TL0 = 0xec;        //設置定時初值   20微妙
    TH0 = 0xec;        //設置定時重載值
    TR0=1;//啟動定時器
    ET0=1;//允許定時器0中斷
    EA=1;//允許總中斷


lcd_open();   
init_lcd() ;   
   
    while (1)
    {
    updata_buffer();

    display_buffer();
      ADC_zhuanhuan();
/**********************************************/
   


    if(a-b>=10){
      num1++;
   
        if(num1>99)
           {
             num1=99;
                  }
                  }
/**********************************************/
/**********************************************/
      
    if(b-a>=10){
      num1--;
   
        if(num1<50)
           {
             num1=50;
                  }
                  }
/**********************************************/
/**********************************************/
      
    if(c-d>=10){
      num2++;
   
        if(num2>99)
           {
             num2=99;
                  }
                  }
/**********************************************/
/**********************************************/
      
    if(d-c>=10){
      num2--;

        if(num2<25)
           {
             num2=25;
                  }
                  }
/**********************************************/
           if(key1==0){
                num1=50;
                scale1=25;            
             }
        if(key2==0){//當按鍵1按下
            if(kf1){//當標志位kf0=1的時候進行
                    kf1=0;//標志位kf0=0
                    kt1=1;//標志位kt0=0
                    num1++;
              }
        }else{//當按鍵松開
           if(kt1){//當標志位kt0=1的時候進行
                kf1=1;//標志位kf0=1
                kt1=0;//標志位kt0=0
           }
        }//按鍵1結束
          if(key3==0){//當按鍵1按下
            if(kf2){//當標志位kf0=1的時候進行
                    kf2=0;//標志位kf0=0
                    kt2=1;//標志位kt0=0
                    num1--;
              }
        }else{//當按鍵松開
           if(kt2){//當標志位kt0=1的時候進行
                kf2=1;//標志位kf0=1
                kt2=0;//標志位kt0=0
           }
        }//按鍵1結束
        if(key4==0){
                num1=99;
            
        }
         
        scale1=num1+25;        
        scale2=num2+25;
    //           ADC_soft_uart();
     }
}
大神們過年好,程序是這樣的,無法通過作比較使得程序中的角度進行加減,num1和num2的值一直保持不變,按鍵是正常的,程序可以通過編譯了


IMG_20200128_164624.jpg (3.06 MB, 下載次數(shù): 28)

IMG_20200128_164624.jpg
回復

使用道具 舉報

7#
ID:321930 發(fā)表于 2020-1-28 17:09 | 只看該作者
SXZY分別代表上下左右,右側兩個值就是角度
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品在线观看一区二区三区 | 精品小视频 | 久久久久久久久久久久久9999 | 欧美日韩精品专区 | 久久精品国产亚洲夜色av网站 | 日韩av成人在线观看 | 午夜精品久久久久久久久久久久 | 国产精品美女久久久久aⅴ国产馆 | 日韩中文字幕网 | 久久精品| 国产精品久久久久久久久久久久久 | 亚洲永久入口 | 欧美日韩国产在线观看 | 一区二区成人在线 | 欧美偷偷操 | 91视频播放 | 亚洲一区二区在线视频 | 高清国产午夜精品久久久久久 | 国产免费观看一级国产 | 国产成人精品久久二区二区 | 懂色中文一区二区三区在线视频 | 亚洲毛片 | 欧美日韩在线电影 | 欧美片网站免费 | av片免费观看| 国产成人综合av | 久久久精品网 | 免费九九视频 | 一级片免费网站 | 中文字幕亚洲视频 | 亚洲精品乱码久久久久久按摩 | 亚洲九九色 | 韩国理论电影在线 | 欧美精品乱码久久久久久按摩 | 日本一本在线 | 亚洲精品一区在线观看 | 成人国产精品久久久 | 欧美性生活一区二区三区 | 国产精品高清在线 | 日日夜夜天天 | 免费在线观看成人 |