اطلاعیه

Collapse
No announcement yet.

اسیلوسکوپ با AT mega32

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

    اسیلوسکوپ با AT mega32

    این یه اسیلوسکوپ مگا 32 هستش خیلی خیلی خوبه من که رازی هستم :mrgreen:

    عکس مدار

    مدار چاپی

    دودمانم بر باد رفت

    #2
    پاسخ : اسیلوسکوپ با AT mega32

    کدAVR_oscilloscope.c
    کد:
    #include <avr/io.h>		// include I/O definitions (port names, pin names, etc)
    #include <avr/interrupt.h>
    #include "glcd.c"
    
    void USART_Init(unsigned int baudrate);
    void timePause(unsigned long count);
    void ADC_init (void);
    void initTimer (void);
    
    /* define CPU frequency in Mhz here if not defined in Makefile */
    #ifndef F_CPU
    #define F_CPU 16000000UL
    #endif
    
    #define msUp				1
    #define msDwn				4   
    #define YposUp				0
    #define YposDwn				3
    #define freeze				2
    
    #define AC 					0
    #define DC 					1
    #define SQUARE				2
    #define TRUE				0
    #define FALSE				1
    
    unsigned int counter = 0;
    unsigned int dataCounter = 0;
    unsigned int timeDiv = 52; 
    unsigned int analogInput = 0;
    unsigned char trigger = 2;
    unsigned char cnt = 0;
    unsigned char empty = 0;
    unsigned int out = 0;
    unsigned char findZero = 0;
    unsigned char pressedButton = 0;
    unsigned char upLimit = 0;
    unsigned char dnLimit = 255;
    unsigned char limitBkup = 0;
    unsigned char voltageType = AC;
    unsigned char complete = TRUE;
    
    signed char Ypos  = 0; 
    signed char Ypos2  = 0;
    signed char position = 0;
    
    int main (void)
    {
    	DDRC = 0b00000000; 
    	PORTC = 0b11111111;
    
    	DDRA = 0b00000000; 
    
    	unsigned char temp1;
    	unsigned int temp2;
    	unsigned char i;
    
    	glcdInit();
    	ADC_init();
    	createWelcomeScreen();
    	showTheWave();
    	timePause(10000000);
    
    	for(;;)
    	{
    	//---------
    
    
    			if (pressedButton == 0)
    			{
    	    	if (~PINC & (1<<msUp) && (timeDiv <= 1000))
    				{
    					if(timeDiv == 0)
    						timeDiv = 52;
    					else
    	      		timeDiv += 145;
    					pressedButton = 1;
    				}
    				
    				if (~PINC & (1<<msDwn) && (timeDiv >= 52))
    				{
    					if(timeDiv <= 145)
    						timeDiv = 0;
    					else
    						timeDiv -= 145;
    					pressedButton = 1;
    				}
    			
    				if (~PINC & (1<<YposUp) && (Ypos2 <= 60))
    	      	Ypos2++;
    				
    				if (~PINC & (1<<YposDwn) && (Ypos2 >= -60))
    					Ypos2--;
    
    				if (~PINC & (1<<freeze))
    					while (~PINC & (1<<freeze)); // It freezes the display to watch the wave.
    				
    			}
    			else
    			{
    				temp1 = PINC;
    				if (temp1 == 255)
    					pressedButton = 0;
    			}
    			
    //--------v
    // This routine makes the trigger. 
    
    			dataCounter = 0;
    			findZero = 0;
    			upLimit = 0;
    			dnLimit = 255;
    
    
    		for (i=99; i>0; i--)
    		{
    			ADCSRA |= (1 << ADSC); // Enable ADC
    			loop_until_bit_is_set(ADCSRA, ADIF);		// wait until conversion complete.
    			temp1 = ADCL;
    			temp2 = ADCH;
    			timePause(timeDiv); //(7);
    
    			if (upLimit < temp2) // find the higher voltage level of the input waveform.
    				upLimit = temp2;
    			if (dnLimit > temp2) // find the lower voltage level of the input waveform.
    				dnLimit = temp2;
    
    			if (temp2 > 0)
    			{
    				temp2 += 5;
    				temp2 /= 5;
    				temp2 += 2;
    			}else temp2 = 2; 
    			
    			position = temp2 + Ypos2 +5; 
    			if (position <= 63 && position >= 0) // Adjust Up-Down the wave.
    				fillDataLcdBuffer(i,position);
    			else
    				fillDataLcdBuffer(i,0);
    
    		}
    		if(upLimit != dnLimit)
    			trigger = (((upLimit - dnLimit)/2)+ dnLimit); // find the middle of the wave, to be used it as a trigger.
    //--------^
    
    
    		createRaster();
    		createWave();
    		showTheWave();
    
    				
    				dataCounter = 0;
    				do 
    				{
    					limitBkup = temp2;
    
    					ADCSRA |= (1 << ADSC); // Enable ADC
    					loop_until_bit_is_set(ADCSRA, ADIF);
    					temp1 = ADCL;
    					temp2 = ADCH;
    					//timerPause(timeDiv); 
    
    					if(limitBkup == temp2) 
    					{
    						dataCounter++;
    						if(dataCounter >= 500)
    							voltageType = DC;
    						else
    							voltageType = AC;
    					}
    
    					if((voltageType == AC) && ((temp2 == trigger) && (limitBkup < temp2)))
    						complete = TRUE;
    					else
    					if((voltageType == DC) && (limitBkup == temp2) && (upLimit != dnLimit))
    					{
    						dataCounter = 0;
    						do
    						{
    							ADCSRA |= (1 << ADSC); // Enable ADC
    							loop_until_bit_is_set(ADCSRA, ADIF);
    							temp1 = ADCL;
    							temp2 = ADCH;
    							complete = TRUE;
    							dataCounter++;
    						}while ((temp2 > trigger) && (dataCounter <1000));
    					
    						dataCounter = 0;
    						do
    						{
    							ADCSRA |= (1 << ADSC); // Enable ADC
    							loop_until_bit_is_set(ADCSRA, ADIF);
    							temp1 = ADCL;
    							temp2 = ADCH;
    							complete = TRUE;
    							dataCounter++;
    						}while ((temp2 < trigger) && (dataCounter <1000));
    					}
    					else
    					if((voltageType == DC) && (limitBkup == temp2))
    						complete = TRUE;
    					else
    						complete = FALSE;
    										
    
    				} while(complete == FALSE);
    
    	}	
    }
    
    //===============================================================================
    //
    //===============================================================================
    
    void ADC_init (void)
    {
    	ADMUX = 0b01100000; // PA0 -> ADC0, ADLAR=1 (8bit)
    	ADCSRA = 0b11000100; // ADC prescaler at 16
    }
    
    
    //===============================================================================
    //
    //===============================================================================
    void timePause(unsigned long count) 
    {
      while(count--);
    }
    
    //===============================================================================
    //
    //===============================================================================
    دودمانم بر باد رفت

    دیدگاه


      #3
      پاسخ : اسیلوسکوپ با AT mega32

      کدglcd.c
      کد:
      #include "glcd.h"
      
      void glcdInit (void)
      {		 
      		data_port_pins = 0;		//DATA Port Low
      		data_port_ddr = 0xff;	//Make DATA port output
      
      		ctrl_port = 0;			//CONTROL Port Low
      		ctrl_port_ddr = 0xff;	//Make CONTROL port outputs
      
      		ctrl_port |= (1<<lcdrst);
      		ctrl_port |= (1<<lcdcs1);		 //Enable the CS1 of the display 
          ctrl_port |= (1<<lcdcs2);		 //Enable the CS2 of the display
          ctrl_port &= ~(1<<lcdrs);    //Clear RS \_
          ctrl_port &= ~(1<<lcdrw);    //Clear RW / Command mode
      
      		delayTime(10000);
      		data_port = 0b11000000;		 //Display start line = 0 (0-63)
          eStrobe();
      	 
      
      		delayTime(10000);
          data_port = 0b01000000;		 //Set address = 0 (0-63)
          eStrobe();
      
      		delayTime(10000);
          data_port = 0b10111000;		 //Set page = 0 (0-7)
          eStrobe();
      
      		delayTime(10000);
          data_port = 0b00111111;		 //Display ON 
          eStrobe();
      
          ctrl_port &= ~(1<<lcdcs1);	 //Disable the CS1 of display 
          ctrl_port &= ~(1<<lcdcs2);	 //Disable the CS2 of display
      
      		createRaster(); // Äçìéïýñãçóå ôï raster...
      		showTheWave();	// êáé åìöÜíéóÝ ôï óôçí LCD.
         
      }
      
      //====================================================================
      // create "welcome" screen
      //====================================================================
      void createWelcomeScreen (void)
      {	
      	unsigned int size;
      	lcdAddress = 0;
      	flashAddress =0;
      	const char *data = welcomeScreen;
      
      	for (size = 0; size<1024; size++)
      		lcdBuffer[lcdAddress++] = pgm_read_byte(data++);
      
      }
      //====================================================================
      // ÁíôéãñáöÞ ôùí 1024 bytes áðï ôçí flash óôç RAM.
      // Copy the 1024 bytes from flash to RAM.
      //====================================================================
      void createRaster (void)
      {	
      	unsigned int size;
      	lcdAddress = 0;
      	flashAddress =0;
      	const char *data = LcdRaster;
      
      	for (size = 0; size<1024; size++)
      		lcdBuffer[lcdAddress++] = pgm_read_byte(data++);
      
      }
      //====================================================================
      //
      //====================================================================
      void changeLine (unsigned char lineData)
      {
      		ctrl_port |= (1<<lcdcs1);	//Enable the CS1 of the display 
          ctrl_port |= (1<<lcdcs2);	//Enable the CS2 of the display
          ctrl_port &= ~(1<<lcdrs);  //Clear RS. Command mode
      		ctrl_port &= ~(1<<lcdrw);  //Clear RW. Command mode
      
      		lineData += 0b10111000; 
          data_port = lineData;		//Set page = 0 (0-7)
          eStrobe();
      
          data_port = 0b01000000;		//Set address = 0 (0-63)
          eStrobe();
      		
      		ctrl_port |= (1<<lcdrs);	//Set RS. Data mode
      
      }
      
      //====================================================================
      //
      //====================================================================
      
      void fillDataLcdBuffer (unsigned char address, unsigned char data)
      {
      	
      	dataLcdBuffer[address] = data;
      }
      
      //====================================================================
      //
      //====================================================================
      void showTheWave (void)
      {
      	for(lcdAddress = 0; lcdAddress < 1024 ;lcdAddress++)
      	{
      
      		if	(line == 8)
      			line = 0;
      
      		if (column == 128)
      		{
      			column = 0;
      			line++;
      			if (line == 8)
      				line = 0;
      			changeLine(line);
      		} 
      
      		if (column <= 63)
      			enable_cs1();
      
      		if (column == 64)
      			enable_cs2();
      
      		delayTime(10);
      		ctrl_port |= (1<<lcdrs);	// "DATA SEND" mode
      		ctrl_port &= ~(1<<lcdrw);	
      		data_port = lcdBuffer[lcdAddress];
      		eStrobe();
      
      		column++;					// increase column (maximum 128).
      	}
      
      }
      
      //====================================================================
      // Ãñáøå ôá äåäïìÝíá ãéá ìéá êõìáôïìïñöÞ óôïí buffer dataLcdBuffer.
      // Write the data for 1 waveform to the buffer dataLcdBuffer.
      //====================================================================
      void createWave (void)
      {
      	unsigned char data;
      	unsigned char byte;
      	unsigned char i = 0;
      
      	for (i=0; i<128; i++)
      	{
      		byte = 0b10000000;
      		lcdAddress = 996; //996 åßíáé ôï ôåëåõôáßï pixel ìÝóá óôï ñÜóôåñ ôïõ ðáëìïãñÜöïõ.
      						 //996 is the final pixel of the oscilloscope's raster.
      		if(i<100) // Íá ìçí åìöáíßæïíôáé ôá pixels åêôüò ôïõ ñÜóôåñ ôçò äÝóìçò (ð÷ "AVR SCOPE...).
      				 // Do not show pixels out of the beam's raster (exlude area with text "AVR SCOPE...").
      		{
      			data = dataLcdBuffer[i];
      			for (; data>7; data-=8)
      				lcdAddress -= 128;
      		
      			lcdAddress -= i;
      		
      			for(; data>0; data--)
      				byte >>= 1;	
      			lcdBuffer[lcdAddress] |= byte;
      		}
      	}
      }
      
      //====================================================================
      //
      //====================================================================
      void enable_cs1 (void)
      {
      	ctrl_port |= (1<<lcdcs1);		 //Enable the CS1 of the display 
      	ctrl_port &= ~(1<<lcdcs2);		 //Disable the CS2 of the display
      }
      
      //====================================================================
      //
      //====================================================================
      void enable_cs2 (void)
      {
      	ctrl_port |= (1<<lcdcs2);		 //Enable the CS2 of the display 
      	ctrl_port &= ~(1<<lcdcs1);		 //Disable the CS1 of the display
      }
      
      //====================================================================
      //		Wait for graphics LCD to be unbusy
      //====================================================================
      void glcdWait (void)
      {
      	unsigned char dataIn;
      		
      	data_port_ddr = 0;			//Make portB all inputs
      	ctrl_port |= (1<<lcdrw);	//Set r/w pin to read
      	ctrl_port &= ~(1<<lcdrs);	//Set register select to command
      
      	do
      	{	
      		eStrobe();
      		dataIn = data_port_pins;	//Read busy flag
      	}while bit_is_set(dataIn, 7);	// loop until bit7 of 'dataIn' will be cleared.
      
      	data_port_ddr = 0xff;		//Make portB all outputs
      	ctrl_port &= ~(1<<lcdrw);	//Set r/w pin to write
      	ctrl_port |= (1<<lcdrs);	//Set register select to data
      
      
      }
      //====================================================================
      //
      //====================================================================
      void eStrobe (void)
      {
          ctrl_port |= (1<<lcde);		 //lcd 'E' pin high
      		delayTime(10);
          ctrl_port &= ~(1<<lcde);	 //lcd 'E' pin low
      		delayTime(10);
      }
      
      //====================================================================
      //
      //====================================================================
      void delayTime (unsigned long counter)
      {
      	while (counter--);
      }
      دودمانم بر باد رفت

      دیدگاه


        #4
        پاسخ : اسیلوسکوپ با AT mega32

        کدglcd.h
        کد:
        #include <avr/io.h>
        #include <avr/pgmspace.h>
        
        #define	lcdrs	0 		// LCD's RS pin is connected to Pin0 of AVR
        #define	lcdrw	1 		// LCD's r/w pin is connected to Pin1 of AVR
        #define	lcde	2    // LCD's e pin is connected to Pin2 of AVR
        #define	lcdcs1	5    // LCD's CS1 pin is connected to Pin5 of AVR
        #define	lcdcs2	4    // LCD's CS2 pin is connected to Pin4 of AVR
        #define	lcdrst	3    // LCD's RST pin is connected to Pin3 of AVR
        
        #define	ctrl_port	 	PORTB
        #define	ctrl_port_ddr	DDRB
        #define	ctrl_port_pins	PINB
        
        #define	data_port		PORTD
        #define	data_port_ddr	DDRD
        #define	data_port_pins	PIND
        
        
        void glcdInit (void);
        void createWelcomeScreen (void);
        void createRaster (void);
        void delayTime (unsigned long counter);
        void glcdWait (void);
        void eStrobe (void);
        void enable_cs1 (void);
        void enable_cs2 (void);
        void showTheWave (void);
        void changeLine (unsigned char data);
        void createWave (void);
        void fillDataLcdBuffer (unsigned char address, unsigned char data);
        
        unsigned char column = 0;
        unsigned char line = 0;
        unsigned char lcdBuffer[1024];
        unsigned int lcdAddress = 0;
        unsigned int flashAddress = 0;
        static unsigned char dataLcdBuffer[128];
        unsigned int backupLcdAddress = 0;
        
        const char LcdRaster[] __attribute__ ((progmem)) = {
        255,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,
        1,1,1,3,1,1,1,1,1,1,1,1,1,3,1,1,
        1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,
        1,171,1,1,1,1,1,1,1,1,1,3,1,1,1,1,
        1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,3,
        1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,
        1,1,1,1,255,0,0,0,0,0,224,80,72,80,224,0,
        248,0,0,0,248,0,248,72,200,72,48,0,0,0,0,0,
        255,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,
        0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0,
        0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,
        8,170,8,0,0,0,0,0,0,0,0,8,0,0,0,0,
        0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,8,
        0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,
        0,0,0,8,255,0,0,192,32,32,35,0,192,32,35,32,
        0,193,34,33,192,0,227,32,32,193,2,224,32,32,32,0,
        255,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,
        0,0,0,32,0,0,0,0,0,0,0,0,0,32,0,0,
        0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,
        32,170,32,0,0,0,0,0,0,0,0,32,0,0,0,0,
        0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,32,
        0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,
        0,0,0,32,255,0,0,72,73,73,70,64,71,72,72,72,
        64,71,72,72,71,64,79,65,65,64,64,79,73,73,9,0,
        255,128,0,128,0,128,0,128,0,192,0,128,0,128,0,128,
        0,128,0,192,0,128,0,128,0,128,0,128,0,192,0,128,
        0,128,0,128,0,128,0,192,0,128,0,128,0,128,0,128,
        128,234,128,128,0,128,0,128,0,128,0,192,0,128,0,128,
        0,128,0,128,0,192,0,128,0,128,0,128,0,128,0,192,
        0,128,0,128,0,128,0,128,0,192,0,128,0,128,0,128,
        0,128,0,128,255,0,0,152,164,160,152,132,164,152,0,0,
        48,72,64,48,8,72,48,0,0,0,0,0,0,0,0,0,
        255,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
        0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,
        0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
        0,171,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
        0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,
        0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
        0,0,0,0,255,0,0,92,82,82,82,82,82,92,0,0,
        161,161,161,161,161,161,189,0,0,224,32,64,128,0,0,0,
        255,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
        0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,
        0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
        2,170,2,0,0,0,0,0,0,0,0,2,0,0,0,0,
        0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,
        0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
        0,0,0,2,255,0,0,198,41,40,230,33,41,38,0,0,
        140,82,16,140,66,82,140,0,0,25,164,164,164,165,165,25,
        255,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,
        0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0,
        0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,
        8,170,8,0,0,0,0,0,0,0,0,8,0,0,0,0,
        0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,8,
        0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,
        0,0,0,8,255,0,0,56,165,37,57,37,165,37,0,0,
        49,74,74,121,72,74,73,0,0,99,148,20,36,68,132,243,
        255,128,128,128,128,128,128,128,128,160,128,128,128,128,128,128,
        128,128,128,160,128,128,128,128,128,128,128,128,128,160,128,128,
        128,128,128,128,128,128,128,160,128,128,128,128,128,128,128,128,
        160,170,160,128,128,128,128,128,128,128,128,160,128,128,128,128,
        128,128,128,128,128,160,128,128,128,128,128,128,128,128,128,160,
        128,128,128,128,128,128,128,128,128,160,128,128,128,128,128,128,
        128,128,128,128,255,0,0,99,148,132,103,20,148,99,0,0,
        17,17,17,17,17,10,4,0,0,60,66,90,82,90,66,60};
        
        
        const char welcomeScreen[] __attribute__ ((progmem)) = {
        255,1,1,1,1,225,33,33,33,33,33,33,33,33,33,33
        ,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33
        ,33,33,33,33,33,33,225,1,1,1,1,1,1,1,1,1
        ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        ,1,1,1,1,1,1,193,225,49,25,25,49,225,193,1,1
        ,249,249,1,1,1,1,249,249,1,1,249,249,25,25,25,57
        ,241,225,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255
        ,255,0,0,0,0,255,0,0,0,17,0,0,0,17,0,0
        ,0,17,0,0,0,0,85,0,0,0,17,0,0,0,17,0
        ,0,0,17,0,0,0,255,0,0,0,0,0,0,0,0,0
        ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        ,0,0,0,0,0,0,127,127,12,12,12,12,127,127,0,0
        ,15,31,48,96,96,48,31,15,0,0,127,127,6,6,6,15
        ,123,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255
        ,255,0,0,0,0,255,0,8,0,73,0,8,0,73,0,8
        ,0,73,0,8,0,8,93,8,0,8,65,8,0,8,65,8
        ,0,8,65,8,0,8,255,0,0,0,0,0,0,0,0,0
        ,252,254,2,254,252,0,156,190,34,238,204,0,252,254,2,14
        ,12,0,0,2,254,254,2,0,254,254,0,0,0,0,254,254
        ,0,0,0,0,252,254,2,254,252,0,156,190,34,238,204,0
        ,252,254,2,14,12,0,252,254,2,254,252,0,254,254,34,62
        ,28,0,254,254,34,34,34,0,0,0,0,0,0,0,0,255
        ,255,0,0,0,0,255,0,0,0,68,0,0,0,68,0,0
        ,0,68,0,0,0,0,85,0,0,0,68,0,0,0,68,0
        ,0,0,68,0,0,0,255,0,0,0,0,0,0,0,0,0
        ,1,3,2,3,193,32,1,3,2,3,129,128,129,3,2,3
        ,33,192,0,2,3,3,2,0,3,3,2,66,34,32,35,195
        ,2,194,34,32,161,195,2,195,33,32,161,195,2,35,33,32
        ,161,99,2,3,1,0,1,3,2,227,33,32,35,195,0,128
        ,0,0,131,3,2,2,2,0,0,0,0,0,0,0,0,255
        ,255,0,0,0,0,3,2,2,2,2,130,130,130,2,2,130
        ,130,130,130,130,2,130,131,130,130,2,2,2,130,130,130,2
        ,2,2,130,130,130,2,3,0,128,128,128,0,0,128,128,128
        ,128,0,0,0,135,136,128,0,0,7,136,136,136,5,0,0
        ,8,7,0,0,0,128,0,0,0,128,0,12,138,137,137,8
        ,0,7,138,137,136,7,0,7,138,137,136,7,0,0,142,129
        ,128,0,0,128,0,0,0,0,0,15,137,137,137,6,0,19
        ,148,140,135,0,0,0,0,0,0,0,0,0,0,0,0,255
        ,255,0,0,0,0,0,0,0,0,19,36,36,36,25,0,63
        ,36,36,36,32,0,63,4,4,12,51,0,63,8,8,8,63
        ,0,19,36,36,36,25,0,0,32,63,32,0,0,63,32,32
        ,32,31,0,0,32,63,32,0,0,19,36,36,36,25,0,0
        ,0,0,0,0,0,15,16,32,16,15,0,63,8,8,8,63
        ,0,19,36,36,36,25,0,19,36,36,36,25,0,0,32,63
        ,32,0,0,63,32,32,32,32,0,0,32,63,32,0,0,19
        ,36,36,36,25,0,0,0,0,0,0,0,0,0,0,0,255
        ,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        ,0,0,0,0,0,0,0,0,0,252,36,36,36,4,0,0
        ,0,244,0,0,0,16,224,16,16,32,0,240,16,96,16,224
        ,0,240,128,192,128,240,0,128,80,80,80,224,0,16,224,16
        ,16,32,0,224,80,80,80,32,0,0,176,176,0,0,0,0
        ,0,0,0,0,0,0,8,252,0,0,0,0,128,128,0,0
        ,0,248,68,36,20,248,0,0,0,0,0,0,0,0,0,0
        ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255
        ,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128
        ,128,128,128,128,128,128,128,128,128,129,128,128,128,128,128,128
        ,128,129,129,128,128,129,129,129,128,128,128,129,128,128,128,129
        ,128,128,129,128,129,128,128,128,129,129,129,129,128,129,129,129
        ,128,128,128,128,129,129,129,128,128,128,129,129,128,128,128,128
        ,128,128,128,128,128,128,129,129,129,128,128,128,129,129,128,128
        ,128,128,129,129,129,128,128,128,128,128,128,128,128,128,128,128
        ,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255};
        دودمانم بر باد رفت

        دیدگاه


          #5
          پاسخ : اسیلوسکوپ با AT mega32

          اینم کد hex هستش برای سهولت در پروگرم کردن
          http://www.4shared.com/file/nbs_71pz/AVR_oscilloscope.html
          دودمانم بر باد رفت

          دیدگاه


            #6
            پاسخ : اسیلوسکوپ با AT mega32

            با اجازتون من منبع مدار را هم اعلام میکنم

            http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope.htm
            نوفن پردازش هوشمند

            دیدگاه


              #7
              پاسخ : اسیلوسکوپ با AT mega32

              پشه جان لینکت کار نمی کنه !
              در ضمن ، یک سوالی داشتم ، یه اسیلوسکوپ با avr تا چند مگاهرتز میتونه ساپورت بکنه ؟
              همین مدار تا چه اندازه ای فرکانس رونشون میده ؟

              دیدگاه


                #8
                پاسخ : اسیلوسکوپ با AT mega32

                مگا هرتز ؟؟؟؟
                بیخیال. این مدار بیشتر از 100 کیلو نمیتونه. حتی بیشتر از 50 کیلو هم نمیتونه. درسته دوستان ؟

                دیدگاه


                  #9
                  پاسخ : اسیلوسکوپ با AT mega32

                  نوشته اصلی توسط kasper
                  بیخیال. این مدار بیشتر از 100 کیلو نمیتونه. حتی بیشتر از 50 کیلو هم نمیتونه. درسته دوستان ؟
                  50 کیلوهرتز!!! یکدهم این مقدار درسته . واقعا پول حروم کردنه .
                  فقط به درد دیدن فرکانس برق شهر میخوره .

                  Frequency measurement up to 5 kHz - square wave

                  توانا بود هر که دارا بود ز ثروت دل پیر برنا بود

                  دیدگاه


                    #10
                    پاسخ : اسیلوسکوپ با AT mega32

                    پس این اسیلوسکوپ هایی که به کامپیوتر وصل میشند ، چقدری هستند ؟
                    اونا هم یه همچین مدرای دارند دیگه !
                    بصورت کلی کسی یه اطلاعاتی داره از اینا بده ؟

                    دیدگاه


                      #11
                      پاسخ : اسیلوسکوپ با AT mega32

                      سلام. والا من یک اسکوپ 20 مگاهرتزی tnm را باز کردم . یک دونه FPGA و یک 8051 توش بود اگه درست یتدم مونده باشه
                      نوفن پردازش هوشمند

                      دیدگاه


                        #12
                        پاسخ : اسیلوسکوپ با AT mega32

                        gt جان شما فرمودید از عملکرد این مدار راضی هستید میشه بگید تا چه فرکانسی نتیجه گرفتید؟
                        It's nice to be important but it's important to be nice!

                        از اینکه نمی رسم جواب دوستان را بدم معذرت می خوام.

                        دیدگاه

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