سلام به همگی
من مدتی هست درگیر پروژه ساخت اسیلوسکوپ هستم و در این پروژه قراره از پوش باتن استفاده کنم.... قصد دارم با زدن پوش باتنها یک عبارت در glcd نمایش داده بشه و کانال ورودی ADC هم انتخاب بشه...
ولی نمیدونم چرا برنامه ام نه در پروتئوس و نه در روی بردبرد جواب نمیده...
این عکس پروتئوس...

برنامه اینه:
مشکل من با این تابع هست و بقیه برنامه هیچ مشکلی نداره...یعنی حدس میزنم مشکلی نداشته باشه...
اول فکر میکردم شاید در پروتئوس مشکلی وجود داشته باشه... لذا مدار رو در بردبرد پیاده کردم ولی دیدم مشکل کماکان پابرجاست و میکرو از پوش باتن فرمان نمیگیره...
اینهم کد برنامه و فایلهای پروتئوس:
http://uplod.ir/ijijsqtiwel0/osciloscope_program.rar.htm
چیکار باید بکنم...؟ یه کمکی بکنید لطفا....
ممنونم.
من مدتی هست درگیر پروژه ساخت اسیلوسکوپ هستم و در این پروژه قراره از پوش باتن استفاده کنم.... قصد دارم با زدن پوش باتنها یک عبارت در glcd نمایش داده بشه و کانال ورودی ADC هم انتخاب بشه...
ولی نمیدونم چرا برنامه ام نه در پروتئوس و نه در روی بردبرد جواب نمیده...
این عکس پروتئوس...

برنامه اینه:
کد:
#include <delay.h> #include <mega32.h> // Graphic LCD functions #include <glcd.h> // Font used for displaying text // on the graphic LCD #include <font5x7.h> GLCDINIT_t glcd_init_data; int i,j,p,a2d; int k=0; int data[128]; // ADC interrupt service routine interrupt [ADC_INT] void adc_isr(void) { if (k<128) { k++; data[k]=ADCW; glcd_setpixel (k,data[k]); ADCSRA|=1<<ADSC; } } void selectch(void); void main(void) { PORTB=0x00; DDRB=0x00; // Graphic LCD initialization // The KS0108 connections are specified in the // Project|Configure|C Compiler|Libraries|Graphic LCD menu: // DB0 - PORTC Bit 0 // DB1 - PORTC Bit 1 // DB2 - PORTC Bit 2 // DB3 - PORTC Bit 3 // DB4 - PORTC Bit 4 // DB5 - PORTC Bit 5 // DB6 - PORTC Bit 6 // DB7 - PORTC Bit 7 // E - PORTD Bit 0 // RD /WR - PORTB Bit 1 // RS - PORTB Bit 2 // /RST - PORTB Bit 3 // CS1 - PORTD Bit 4 // CS2 - PORTD Bit 5 // Specify the current font for displaying text glcd_init_data.font=font5x7; // No function is used for reading // image data from external memory glcd_init_data.readxmem=NULL; // No function is used for writing // image data to external memory glcd_init_data.writexmem=NULL; glcd_init(&glcd_init_data); while (1) { glcd_outtextxyf(0,0,"DIGITAL OSILLOSCOPE"); glcd_outtextxyf (0,22,"BY AVR MICOCTRL"); glcd_outtextxyf (0,45,"HAMID REZA RABET" ); delay_ms(80); glcd_clear(); for (i=0;i<128;i+=2){ glcd_setpixel (64,i); } for (j=0;j<128;j+=2){ glcd_setpixel (j,32); } glcd_putcharxy( 1, 56, 'v'); glcd_putcharxy( 66, 56, 't'); glcd_putcharxy( 6, 56, '='); glcd_putcharxy( 71, 56, '='); selectch(); ADCSRA = 0b11100111; ADMUX = 0b01100000; SFIOR = 0x00; a2d = ADCW; p = (1024 - (a2d))/16; for( i=0;i<1024;i++){ for(j=0;j<=a2d ; j++) glcd_setpixel (p,i); } /////////////////// namayesh noghat bedast amadeh az tabdil bar roye 128 pixel ofoghi. for (i=0;i<127;i++){ do{ i=0; glcd_setpixel(i,p); delay_us(100); i++; if(i==128) i=0; } while(1); } } } ///////////// defination of selechch. void selectch (void) { //// first key for first channel if(!PINB.0) { delay_ms(20); if(!PINB.0) { glcd_outtextxyf (2,5,"SEL CH1"); ADMUX = 0b01100000; delay_ms(300); while(!PINB.0); } } }
کد:
void selectch (void) { //// first key for first channel if(!PINB.0) { delay_ms(20); if(!PINB.0) { glcd_outtextxyf (2,5,"SEL CH1"); ADMUX = 0b01100000; delay_ms(300); while(!PINB.0); } } }
اینهم کد برنامه و فایلهای پروتئوس:
http://uplod.ir/ijijsqtiwel0/osciloscope_program.rar.htm
چیکار باید بکنم...؟ یه کمکی بکنید لطفا....
ممنونم.
دیدگاه