اطلاعیه

Collapse
No announcement yet.

توابع خاص برای lcd N96

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

    توابع خاص برای lcd N96

    سلام به همگی.
    در این تاپیک قصد داریم تا با معرفی و قرار دادن کد توابع خاص و کاربردی برای lcd N96 کار با این lcd را راحت تر و بهینه تر کنیم.
    لذا از تمامی دوستان که برای این lcd تابع خاص و کاربردی نوشته اند،تقاضا همکاری میشود.
    برای شروع:
    patern


    کاربرد:
    این تابع که خروجی بالا رو داره میتونه برای انتخاب رنگ استفاده شود.
    فرض میکنیم که به وسیله تاچ نقطه ای توسط کاربر لمس شده حال با خواندن رنگ پیکسل مورد نظر از lcd میتوان رنگ نقطه لمس شده را تشخیص داد و از آن استفاده کرد.
    این هم کد تابع.
    کد:
    void patern(void){
    	int a,R,G,B,counter;
    	tftlcd_write_index_register(TS_INS_GRAM_ADY);
    	tftlcd_write_wdr(0);
    	tftlcd_write_index_register(TS_INS_START_ADY);
    	tftlcd_write_wdr(0);
    	tftlcd_write_index_register(TS_INS_END_ADY);
    	tftlcd_write_wdr(319);
    	tftlcd_write_index_register(TS_INS_GRAM_ADX);
    	tftlcd_write_wdr(239);
    	tftlcd_write_index_register(TS_INS_START_ADX);
    	tftlcd_write_wdr(0);
    	tftlcd_write_index_register(TS_INS_END_ADX);
    	tftlcd_write_wdr(239);
    	tftlcd_write_index_register(TS_INS_RW_GRAM);
    	for(counter = 0;counter <76800;counter++){
    		R=B=G=0;
    		a=counter/240;
    		if(a>=0  & a<=63 ) {R=(counter-(a*240))/8;G=(counter-(a*240))*a/240;}
    		if(a>=64 & a<=127) {G=(counter-(a*240))/4;R=(counter-(a*240))*(127-a)/480;}
    		if(a>=128 & a<=191) {G=(counter-(a*240))/4;B=(counter-(a*240))*(a-128)/480;}
    		if(a>=192 & a<=255) {B=(counter-(a*240))/8;G=(counter-(a*240))*(255-a)/240;}
    		if(a>255) {R=B=31;G=63;}
    	  tftlcd_write_wdr((B<<11)|(G<<5)|(R));
    	}
    }
    در ادامه توابع دیگری نیز معرفی میشوند که کاربردی ترند.
    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

    #2
    پاسخ : توابع خاص برای lcd N96

    این هم یه تابع دیگه.
    که با استفاده ازش میتونید button هایی را در مکان های دلخواه از lcd ایجاد کرده و کلمه ای را به عنوان عملکرد کلید در آن قرار دهید.
    که این متن به صورت وسط نویس در کادر کلید قرار میگیرد.
    آرگومان های ورودی این تابع به این صورت میباشد:
    کد:
    void tftlcd_draw_button(int x0,int y0,int x1,int y1,int font_color,char *string){
    x0 و y0 مختصات ابتدای کلید و x1 و y1 مختصات انتهای کلید.
    font_color رنگ کلمه نوشته شده روی button میباشد.
    و string متن مورد نظر برای نمایش.
    این هم یک نمونه:


    تصویر بالا به ازای این کد ها ایجاد شده است.

    کد:
    	tftlcd_draw_button(50,200,110,230,RED,"Start");
    	tftlcd_draw_button(130,200,190,230,RED,"Finish");
    	tftlcd_draw_button(50,240,190,270,BLUE,"Done");
    و این هم کل تابع که میتونید ازش استفاده کنید.

    کد:
    void tftlcd_draw_button(int x0,int y0,int x1,int y1,int font_color,char *string){
    
    	tftlcd_draw_rectangle(x0,y0,x1,y0+(y1-y0)/2,1,28|28<<11|55<<5);
    	tftlcd_draw_rectangle(x0,y0+(y1-y0)/2,x1,y1,1,23|23<<11|48<<5);
    	tftlcd_draw_rectangle(x0-1,y0-1,x1+1,y1+1,0,0);
    	tftlcd_draw_rectangle(x0,y0,x1,y1,0,3|18<<11|16<<5);
    	tftlcd_draw_rectangle(x0+1,y0+1,x1-1,y1-1,0,7|27<<11|46<<5);
    
    	int character_segment_data,width_counter,length_counter,xx=0;
    	char character,s=0;
    	character=string[0];
    	while(character){
    		character=string[s];
    		s++;}
    	while(*string){
    		character=*string++;
    	  for(length_counter=0;length_counter<16;length_counter++){
    
    	    character_segment_data=font8x16[character-0x20][length_counter];
    	    for(width_counter=0;width_counter<8;width_counter++)
    	      {
    	      if(character_segment_data & (0x80>>width_counter))
    	       tftlcd_write_pixel(width_counter+xx+x0+4+((x1-x0)-(s*8))/2,length_counter+y0+((y1-y0)/2)-6,font_color);
    
    				}
    	    }
    	xx+=8;}
    }

    دوستان اگر نظری در مورد توابع جدید هم دارید بفرمایید تا با هم یک کتابخانه کامل برای این lcd ایجاد کنیم.
    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

    دیدگاه


      #3
      پاسخ : توابع خاص برای lcd N96

      با سلام و خسته نباشید

      عالی است لطفا ادامه دهید

      دیدگاه

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