اطلاعیه

Collapse
No announcement yet.

سوالاتی ساده در مورد کدویژن

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوالاتی ساده در مورد کدویژن

    سلام.من تازگی کدویژن رو شروع کردم و چند سوال در این زمینه داشتم:
    1-چه جوری می تونم adc رو راه انداری کنم؟خیلی سرچ کردم اما چیزی پیدا نشد.لطفا دستورات رو بگید.
    2- این به چه معناست:0x40
    3-این دستور به چه معناست:ADCSRA|=0x10;
    ممنون :rolleyes: :rolleyes:
    همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

    #2
    پاسخ : سوالاتی ساده در مورد کدویژن

    سلام
    ۱-توی کدویزارد تب adc رو انتخاب کن و بعد از تنظیم واحد adc کدی ایجاد میکنه که توسط تابع ایجاد شده میتونی از adc بخونی. read_adc()
    ۲-0x اول هر عدد به معنی اینه که اون عدد در مبنای ۱۶ است. پس 0x40=64=0b00100000 و همچنین 0b یعنی مبنای دو دویی یا همون باینری
    ۳-این دستور خلاصه شده عبارت زیر است:
    ADCSRA=ADCSRA | 0x10
    کارکتر "|" به معنی or هست. کد بالا معنیش اینه که بیت شماره ۴ رجیستر ADCSRA یک شود بدون اینکه بیتهای دیگه تغییر کنه.
    موفق باشید
    Work with what you have .Never limit yourself by things you could have had

    دیدگاه


      #3
      پاسخ : سوالاتی ساده در مورد کدویژن

      سلام.ممنون از جوابت.آیا تابعی در کدویژن وجود داره که عدد رو به رشته تبدیل کنه؟مثلا 123 رو به "123" تبدیل کنه.
      همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

      دیدگاه


        #4
        پاسخ : سوالاتی ساده در مورد کدویژن

        سلام دادا.
        با دستور ftoa میتونی یک عدد رو رشته کنی.
        مثال:

        کد:
        include <mega16.h>
        include <stdio.h>
        include <stdlib.h>
        
        void main(void)
        {
        char str[10], lcd[10];
        int a=100;
        
        
        while (1)
        {
        ftoa (a,1,str);
        sprintf(lcd, %s, str);
        lcd_puts(lcd);
        };
        
        }
        تشکر لازم نیست!

        دیدگاه


          #5
          پاسخ : سوالاتی ساده در مورد کدویژن

          سلام.ممنون از جوابت.اما هر کاری کردم برنامه این تابع رو نشناخت.برنامه رو میزارم .اشکالش از کجاست؟این برنامه یک دماسنجه.
          http://www.4shared.com/file/MoWraiW4/temperature.html
          همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

          دیدگاه


            #6
            پاسخ : سوالاتی ساده در مورد کدویژن

            سلام دادا.
            معلومه اصلاً به اون چیزی که گفتم توجه نکردی. شما کتابخونه مربوطه رو فراخونی نکردی و .....
            این صحیح شدشه اما بازم این برنامه یه دماسنج نیست:

            کد:
            #include <stdio.h>  
            #include <stdlib.h>
            #include <mega16.h>
            #include <lcd.h>
            #asm
            .equ __lcd_port=0x18
            #endasm
            #define ADC_VREF_TYPE 0xC0
            unsigned int read_adc(unsigned char adc_input)
            {
            ADMUX=adc_input|ADC_VREF_TYPE;
            ADCSRA|=0x40;
            while ((ADCSRA & 0x10)==0);
            ADCSRA|=0x10;
            return ADCW;
            } 
            
            void main(void)
            {
            char a;
            char b[10];
            
            while(1)
            {
            lcd_init(16);
            lcd_clear();
            lcd_gotoxy(0,0);
            a=read_adc(1);
            ftoa(a,1,b);
            lcd_puts(b);
            }
            }
            تشکر لازم نیست!

            دیدگاه


              #7
              پاسخ : سوالاتی ساده در مورد کدویژن

              مشکلش از کجاست؟لطفا کمک کنید.ممنون
              همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

              دیدگاه


                #8
                پاسخ : سوالاتی ساده در مورد کدویژن

                مشکلش از کجاست؟
                منظورت رو نمیفهمم. مشکلت کجاست؟
                تشکر لازم نیست!

                دیدگاه


                  #9
                  پاسخ : سوالاتی ساده در مورد کدویژن

                  سلام.ممنون از راهنماییتون مشکلم حل شد!!!
                  همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

                  دیدگاه


                    #10
                    پاسخ : سوالاتی ساده در مورد کدویژن

                    سلام.برا راه اندازی آی ساعت آیا میشه از کدویزارد استفاده کرد؟اگه میشه راهنمایی کنید.ممنون
                    همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

                    دیدگاه


                      #11
                      پاسخ : سوالاتی ساده در مورد کدویژن

                      نوشته اصلی توسط ali-electoronic
                      سلام.برا راه اندازی آی ساعت آیا میشه از کدویزارد استفاده کرد؟اگه میشه راهنمایی کنید.ممنون
                      PCF8583وpcf8563 و ds1307 رو توی ویزاردش داره.توابع کاری کتابخونه رو هم تو هلپش داره.اسم هرکدوم رو سرچ کنید تو هلپش همه چیزو میگه.
                      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                      دیدگاه


                        #12
                        پاسخ : سوالاتی ساده در مورد کدویژن

                        سلام.ممنون اگه میشه یک مثال بگذارید.
                        همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

                        دیدگاه


                          #13
                          پاسخ : سوالاتی ساده در مورد کدویژن

                          کد:
                          #include <mega8.h>
                          #include <stdio.h>
                          #include <delay.h>
                          
                          #asm
                            .equ __lcd_port=0x12
                          #endasm
                          #include <lcd.h>
                          
                          
                          #asm
                            .equ __i2c_port=0x15 
                            .equ __sda_bit=4
                            .equ __scl_bit=5
                          #endasm
                          #include <i2c.h>
                          
                          #include <pcf8583.h>
                                                                  
                          void scan_key(void);
                          void showlcd(char *strline1,char a,char b,char c);
                          void blink(char x,char y);
                          void seting_time(char i,char key);
                          void seting_date(char i,char key);
                          void seting_time_alarm(char i,char key);
                          void seting_date_alarm(char i,char key);
                          
                          char buffer[50]; 
                          char str1[]="Seting(Time)";
                          char str2[]="Seting(Date)";
                          char str3[]="Seting(Alarm Time)";
                          char str4[]="Seting(Alarm Date)";
                          unsigned char second,minute,hours,hsecond;
                          unsigned char year,month,day; 
                          unsigned char day_alarm,month_alarm;
                          unsigned char hours_alarm,minute_alarm,second_alarm,hsecond_alarm;
                          void main(void)
                          {           
                                               
                           	PORTC=0x03;
                           	DDRC=0xFC;               
                          	lcd_init(20);	   
                          	i2c_init(); 
                          	rtc_init(0,0);
                          	rtc_alarm_on(0);    
                          	while (1)
                            {
                             	rtc_get_time(0,&hours,&minute,&second,&hsecond);
                             rtc_get_date(0,&year,&month,&day);	 
                             rtc_get_alarm_time(0,&hours_alarm,&minute_alarm,&second_alarm,&hsecond_alarm);
                          	  rtc_get_alarm_date(0,&day_alarm,&month_alarm);	  
                           		lcd_clear();
                           		lcd_gotoxy(0,0);
                             sprintf(buffer,"Time= %02d:%02d:%02d",hours,minute,second);
                            	lcd_puts(buffer);
                           	 	lcd_gotoxy(0,1);
                             sprintf(buffer,"Date= 20%02d:%02d:%02d",year,month,day);
                           	  lcd_puts(buffer);
                           	 	scan_key();
                           	  delay_ms(100); 
                            };
                          }
                            
                          //---------------------------------
                          void scan_key(void)
                          {     
                          	char key,b,i;
                           	key=PINC & 0x03; 
                            if(key==0x01){
                           		i=0;  
                           		b=0;
                           	 	while(i<=12){ 
                           	 		key=PINC & 0x03 ;
                           	 		if(key==0x01){
                           	 		 	i++;
                           	 	  	b++;     
                           	 		} 	 					   		
                           	 		if(b>3)b=1;
                           	 		blink(9-3*b,1);          	 		
                          			if(4>i && i>0)				
                          				seting_time(i,key);
                          	   if(7>i && i>3)					     
                          				seting_date(i,key);	 	
                          			if(10>i && i>6)				
                          				seting_time_alarm(i,key);
                          	   if(13>i && i>9)				
                          				seting_date_alarm(i,key);       		
                            	}
                            }
                          } 
                          //--------------------------
                          void seting_time(char i,char key)
                          {          
                            if(i==1 && key==0x02){          
                           		second++;
                           	 	if(second>59)second=0; 	 					
                           	}
                           	if(i==2 && key==0x02){          
                           		minute++;
                           	 	if(minute>59)minute=0; 	 		
                           	}
                           	if(i==3 && key==0x02){
                           		hours++;
                           		if(hours>23)hours=0;       
                           	} 
                          	rtc_set_time(0,hours,minute,second,0); 	   	 	
                           	showlcd(str1,hours,minute,second);
                          }
                           //--------------------------
                          void seting_date(char i,char key)
                          {
                            if(i==4 && key==0x02){
                           		day++;
                           		if(day>31)day=1;       
                           	} 
                            if(i==6 && key==0x02){          
                           		year++;
                           	 	if(year>99)year=0; 	 					
                           	}
                           	if(i==5 && key==0x02){          
                           		month++;
                           	 	if(month>12)month=1; 	 		
                           	}  
                          	rtc_set_date(0,year,month,day);
                           	showlcd(str2,year,month,day);
                          }
                          //--------------------------
                          void seting_time_alarm(char i,char key)
                          {          
                            if(i==7 && key==0x02){          
                           		second_alarm++;
                           	 	if(second_alarm>59)second_alarm=0; 	 					
                           	}
                           	if(i==8 && key==0x02){          
                           		minute_alarm++;
                           	 	if(minute_alarm>59)minute_alarm=0; 	 		
                           	}
                           	if(i==9 && key==0x02){
                           		hours_alarm++;
                           		if(hours_alarm>23)hours_alarm=0;       
                           	} 
                          	rtc_set_alarm_time(0,hours_alarm,minute_alarm,second_alarm,0);
                           	showlcd(str3,hours_alarm,minute_alarm,second_alarm);                         	
                          }
                           //--------------------------
                          void seting_date_alarm(char i,char key)
                          {
                           	if(i==11 && key==0x02){
                           		day_alarm++;
                           		if(day_alarm>24)day_alarm=0;       
                           	}
                           	if(i==10 && key==0x02){          
                           		month_alarm++;
                           	 	if(month_alarm>12)month_alarm=0; 	 		
                           	} 	 
                            rtc_set_alarm_date(0,day_alarm,month_alarm);
                           	showlcd(str4,year,day_alarm,month_alarm);
                          }
                          
                          //--------------------------
                          void showlcd(char *strline1,char a,char b,char c)
                          {
                            lcd_clear();
                            lcd_gotoxy(0,0);
                           	 lcd_puts (strline1); 	 
                           	 lcd_gotoxy(0,1);
                            sprintf(buffer,"%02d:%02d:%02d",a,b,c);
                           	 lcd_puts(buffer);
                          }
                          //------------------------
                          void blink(char x,char y)
                          {
                           	delay_ms(110); 
                           	lcd_gotoxy(x,y); 	 		
                           	lcd_putchar(' ');
                           	lcd_gotoxy(x+1,y); 	 		
                           	lcd_putchar(' '); 	
                            delay_ms(110); 		  
                           
                           
                          }
                          [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                          دیدگاه

                          لطفا صبر کنید...
                          X