ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2008/03/03
    10
    0

    خواندن از دو کانال ADC

    سلام به مهندسای عزیز

    آقا یه سوال تخصصی دارم:
    یه برنامه نوشتم که از سنسور بخونم و رو ال سی دی کاراکتری نشون بدم ولی حالا میخوام تو همین برنامه از یه ADC دیگه هم بخونم ینی یه سنسور دیگه هم وصل کنم و یه بار ازین بخونم و یه بار از اولیه. ولی نمیدونم چجوری یه ADC دیگه رو باید تنظیماتشو انجام بدم و ازش بخونم.
    ممنون میشم راهنمایی کنید.
    اگه فایل برنامه نیازه پلود میکنم.
    کد برناممم اینه:
    کد:
    #include "LPC17xx.h"
    #include <stdio.h>
    //DB4=PORT0.4	 DB5=PORT0.5	DB6=PORT0.6	 DB7=PORT0.7
    
    #define RS (1<<9) //PORT0.9
    #define E  (1<<8) //PORT0.8
    #define RW (1<<10) //PORT0.10 
    
    #define d1 300
    #define d2 50000
    
    void delay(int delay){
       long int i;
       for(i=0;i<=delay;i++) ;
    }
    
    	
    void Delay (uint32_t Time)
    {
      uint32_t i;
      
      i = 0;
      while (Time--) {
        for (i = 0; i < 5000; i++);
      }
    }
     
    //-----------------------------
    void lcd_init_4bit(void){
      LPC_GPIO0->FIOCLR = RS; // for command
    	 LPC_GPIO0->FIOCLR = RW;
    	//////////////////////////
    	 LPC_GPIO0->FIOSET = (0x03)<< 4; //0x03
    	 LPC_GPIO0->FIOSET = E;
    	 delay(d1);
    	 LPC_GPIO1->FIOCLR = E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4;  //0x03
    
    	 LPC_GPIO0->FIOSET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4;  //0x03
    	 LPC_GPIO0->FIOSET = E;
    	 delay(d1);
    	 LPC_GPIO0->FIOCLR = E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x03
    
    	 LPC_GPIO0->FIOSET = ((0<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x02
    	 LPC_GPIO0->FIOSET = E;
    	 delay(d1);
    	 LPC_GPIO0->FIOCLR = E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR = ((0<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x02
       /////////////////////////////
      LPC_GPIO1->FIOSET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x03
    	 LPC_GPIO1->FIOSET = E;
    	 delay(d1);
    	 LPC_GPIO0->FIOCLR = E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x03
    
    	 LPC_GPIO0->FIOSET = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x03
    	 LPC_GPIO0->FIOSET = E;
    	 delay(d1);
    	 LPC_GPIO1->FIOCLR = E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR = ((1<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x03
    
    	 LPC_GPIO0->FIOSET = ((0<<0)|(1<<1)|(0<<2)|(0<<3))<< 4; //0x02
    	 LPC_GPIO0->FIOSET = E;
    	 delay(d1);
    	 LPC_GPIO0->FIOCLR = E;
    	 delay(d2);
      LPC_GPIO0->FIOCLR = ((1<<0)|(1<<1)|(1<<2)|(1<<3))<< 4; //0x02
    }
    //-----------------------------
    void lcd_putchar( char CHAR){
    
       LPC_GPIO0->FIOSET=RS; // for character
       LPC_GPIO0->FIOCLR=RW;
       LPC_GPIO0->FIOSET= ((CHAR&0XF0)>>4)<< 4 ;
       LPC_GPIO0->FIOSET=E;
       delay(d1);
       LPC_GPIO0->FIOCLR=E;
       delay(d2);
       LPC_GPIO0->FIOCLR = ((CHAR&0XF0)>>4)<< 4 ;
    
       LPC_GPIO0->FIOSET = (CHAR&0X0F)<< 4 ;
       LPC_GPIO0->FIOSET=E;
       delay(d1);
       LPC_GPIO0->FIOCLR=E;
       delay(d2);
       LPC_GPIO0->FIOCLR= (CHAR&0X0F)<< 4 ;
    }
    //-----------------------------
    void command(unsigned char CHAR){
    
      LPC_GPIO0->FIOCLR=RS; // for command
    	 LPC_GPIO0->FIOCLR=RW;
    	 LPC_GPIO0->FIOSET= ((CHAR&0XF0)>>4)<< 4 ;
    	 LPC_GPIO0->FIOSET=E;
    	 delay(d1);
    	 LPC_GPIO0->FIOCLR=E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR= ((CHAR&0XF0)>>4)<< 4 ;
    
    	 LPC_GPIO0->FIOSET= (CHAR&0X0F)<< 4 ;
    	 LPC_GPIO0->FIOSET=E;
    	 delay(d1);
    	 LPC_GPIO0->FIOCLR=E;
    	 delay(d2);
    	 LPC_GPIO0->FIOCLR= (CHAR&0X0F)<< 4 ;
    }
    //-----------------------------
    void lcd_putsf( char *data){
       long int i;
    	 for(i=0;data[i];i++) lcd_putchar(data[i]);
    }
    
    unsigned short ADC_Read(void)
    {
     unsigned int i;
     //-----------------------------
     LPC_PINCON->PINSEL1 = 0x00010000; // p0.24 select as ADC0.0
     //LPC_PINCON->PINSEL1 = 1<< 16; // p0.24 select as ADC0.0
    	
     LPC_SC->PCONP |= (1 << 12); // Enable power to AD block 
     LPC_ADC->ADCR |= 0x02;    //select AD0.1 
     LPC_ADC->ADCR |= 0x0100;   // 	ADCLK is 12.5 MHz
     //LPC_ADC->ADCR |= 0x10000;  // BURST bit  1 << 16
     LPC_ADC->ADCR |= 0x200000;  //Power up,  1 << 21
     //LPC_ADC->ADCR |= 0x08000000; //Start conversion on a falling edge on the selected CAP/MAT signal.
    	              // 1 << 27
     //-----------------------------
     LPC_ADC->ADCR |= 0x01000000; // Start A/D Conversion , When the BURST bit is 0 
     
     do {
      i = LPC_ADC->ADDR1; // Read A/D Data Register
     }while ((LPC_ADC->ADGDR & 0x80000000) == 0); // Wait for end of A/D Conversion
     return (i >> 4) & 0x0FFF; // bit 4:15 is 10 bit AD value
    }
    
    int main (void) {
     
    	 unsigned short current_value;
    	 unsigned int s = 0;
    	 unsigned char p[100];
      unsigned int n;
    	LPC_GPIO0->FIODIR = ((1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)|(1<<10));
    	LPC_GPIO0->FIOMASK = 0;
    	LPC_GPIO0->FIOCLR = ((1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)|(1<<10));
    	
    	//LCD_4 BIT MODE
    	lcd_init_4bit();
    	SystemInit();
    lcd_putsf(" Nava Behdash 2 ");
      Delay(10000);
    	while(1){
    for(n=0;n<=10;n++)
    {
    	   Delay(1000);
        current_value = ADC_Read();
    		    current_value = (4000-current_value)/2;
    
    		s=s+current_value;
    }		
    	s=s/10;
    	sprintf(p," %i",s);
      command(0x0C);
    		command(0x01);    //LCD CLEAR
        lcd_putsf(" ADC Valu=");
    		
      		lcd_putsf(p);
    				delay(1000000);
      }
    }
  2. #2
    2007/08/04
    اصفهان
    577
    5

    پاسخ : خواندن از دو کانال ADC

    سلام
    چقدر این برنامه آشناست :biggrin:
    برای تغیر کلنال بایستی شناره کانال در تنظیمات عوض بشه و تنظیملت پایه مربوطه
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...
  3. #3
    2008/03/03
    10
    0

    پاسخ : خواندن از دو کانال ADC

    اول یه تشکر ویژه از شما مهندس زرکوب عزیز آقا عاشق عکس پروفایلتم(نوستالوژی شده تقریبا برام )
    بعد این که تو فیلمتم هر چی دقت کردم متوجه نشدم آخه اگه دو تا کانال ADC رو کانفیگ کنیم با چه دستوری از کدوم بخونیم؟ میشه لطف کنی کدشو بنویسی؟
    آقا ما نووبیم دیگه :-"
  4. #4
    2007/08/04
    اصفهان
    577
    5

    پاسخ : خواندن از دو کانال ADC

    دو تا کانال را با هم تنظیم بکنید باید از مد burst استفاده کنید که پشت هم بخونه
    یک بار با یه تابعی مثلا read_adc0 یکی بخونید و بعد با تابعی مثل read_adc1 یکی دیگه. هر کدوم هم تنظیمات کانال خودش توشه
    برای فیلم هم تاپیک مخصوص داره دیگه در فروم
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...
نمایش نتایج: از 1 به 4 از 4

موضوعات مشابه

  1. میکسر 2 کانال ورودی 4 کانال خروجی
    توسط بهزاد000 در انجمن مدارات صوتي
    پاسخ: 12
    آخرين نوشته: 2016/12/11, 02:58
  2. 10 کانال pwm
    توسط mecameca در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2015/08/20, 16:08
  3. فرق انتقال سيگنال بين کانال انالوگ و کانال ديجيتال در چيست
    توسط alijafaree در انجمن سیستمهای مخابراتی
    پاسخ: 5
    آخرين نوشته: 2015/07/12, 12:02
  4. خواندن کانال هاي تفاضلي در ADC
    توسط massoud681 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2014/11/20, 18:07
  5. راه اندازی 4 کانال pwm
    توسط tofan8 در انجمن میکروکنترلرهای AVR
    پاسخ: 13
    آخرين نوشته: 2014/04/27, 20:26

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •