اطلاعیه

Collapse
No announcement yet.

تولید موج سینوسی و کلاک با نرم افزار keil

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

    تولید موج سینوسی و کلاک با نرم افزار keil

    سلام دوستان
    کسی از بچه می دونه یک دستور ساده برای تولید موج سینوسی و کلاک برای lpc1768 با نرم افزار keil را چطور باید نوشت؟
    برای (tft lcd 3.2 )
    مرسی

    #2
    پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

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

    دیدگاه


      #3
      پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

      سلام
      روی tft lcd 3.2

      دیدگاه


        #4
        پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

        به عنوان مثال این جوری:
        کد:
        for(a=0;a<360;a+=2){
        LCD_PutPixel((int)(sin(a)*100),a);
        }
        تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

        دیدگاه


          #5
          پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

          سلام
          مرسی - راستش کار نمی کنه درست و حسابی و به صورت نقطه روی تصویر می یاد - نقاط می مونن و پاک نمی شن - من یک متغیر از نوع a برای میکرو تعریف کردم و دو سوئیچ که این سوئیچ ها وظیفه اوفزایش و کاهش این متغییر رو بر عهداه دارن - دو مشکل هست و اون اینه که به مانند اسیلوسکوپ این متغییر رو نشون بده و مشکل دوم که خیلی حاد هستش اینه که وقتی متغییر رو تا بالای 100 افزایش می دم و موقعی که شروع می کنم این متغییر رو می یارم پایین عدد دهگان و صدگان اون روی ال سی دی می مونه و پاک نمی شه. برای حل این مشکلات چکار باید کرد . این هم برنامه: مرسی
          int a;
          int x;

          if (LPC_GPIO1->FIOPIN & 0x00000001) if(a<255)a++;delay(4);
          if (LPC_GPIO1->FIOPIN & 0x00000002) if(a>0)a--;delay(4);
          POINT_COLOR = RED ;
          LCD_ShowNum(65,140,a,6,16);

          دیدگاه


            #6
            پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

            ما که نفهمیدیم شما آخرش میخواهی چه کار کنی؟
            راستش کار نمی کنه درست و حسابی و به صورت نقطه روی تصویر می یاد
            برای این که سیگنال به صورت خطوط به هم پیوسته به نمایش در بیاد شما باید مختصات فعلی و مختصات قبلی رو داشته باشی و بین این دو نقطه یه خط رسم کنی.
            نقاط می مونن و پاک نمی شن
            خودشون که علم غیب ندارن که باید پاک بشن.
            شما باید lcd رو clear کنید.
            تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

            دیدگاه


              #7
              پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

              من با کد ویژن و lcd16*2 انجام دادم قبلا مشکلی پیش نمی یومد - من اگر از دستور پاک کردن در حلقه تکرار استفاده کنم که مهندس این متغییر روی ال سی دی مرتب چشمک می زنه که اصلا خوب نیست - این کاری رو که شما می گید کردم اصلا چیز جالبی در نمی یاد مرتب چشمک زدن متغییر رو روی ال سی دی می بینی - باید متغییر ثابت باشه

              دیدگاه


                #8
                پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                دقیق تشریح کن ببینم میخواهی چه کار کنی.

                من اصلا متوجه نمیشم که هدف شما چیه.

                حالا اگه مشکل فقط اینه که کاراکتر ها روی lcd چشمک میزنه شما میتونید همون قسمتی که موج سینوسی رو رسم میکنید یه مستطیل بار نگ دلخواه بکشید تا قسمت مربوط با کاراکتر ها پاک نشه.
                تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

                دیدگاه


                  #9
                  پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                  این کل برنامه :

                  #include <lpc17xx.h>
                  #include <lpc17xx.h>
                  #define family_lpc17xx
                  #define TFTLCD_DATA_MSB_Nibble_Port_0
                  #define LCD_MSB_Nibble_OFFSET 15
                  #define TFTLCD_DATA_LSB_Nibble_Port_0
                  #define LCD_LSB_Nibble_OFFSET 4
                  #define TFTLCD_CONTROLPORT_0
                  #define TFTLCD_CS 0
                  #define TFTLCD_RS 1
                  #define TFTLCD_WR 2
                  #define TFTLCD_RD 3
                  #define TFTLCD_RST 23
                  #include "lcd.h"
                  #include "Font_24x16.h"
                  #include "img.h"

                  int x;
                  void Delay(void){
                  int i;
                  for(i=0;i<30000000;i++);
                  }



                  main(){

                  LPC_GPIO0 -> FIODIR = 0x00000003;
                  LPC_PINCON->PINMODE4= (15<<12);
                  LPC_PINCON->PINSEL4=0x555; /* enable power clock */
                  LPC_PWM1->MR0=4095; /* set cycle rate to 4095 */
                  LPC_PWM1->PCR=0x7E00; /* Pwm1 single edge,output enable */
                  LPC_PWM1->MCR=2; /* Configuration INTERUPT */
                  LPC_PWM1->TCR=9; /* ENABLE COUNTER AND PRESCALER - FOR RESET USE NUM=2 */




                  LCD_Init();
                  SystemInit();
                  LCD_write_pic_fast(img);
                  Delay();

                  LCD_Clear(White);
                  POINT_COLOR = Purple;
                  LCD_ShowString(60,150,"MEHDI RAVANBOD"
                  Delay();
                  LCD_Clear(White);
                  POINT_COLOR=Blue;


                  for (x=0;x<4;x++)
                  {
                  LCD_DrawLine(x,0,x,319); // y origin line
                  LCD_DrawLine(0,x,219,x); // x origin line
                  }
                  for (x=1;x<7;x++){
                  LCD_DrawLine(x*40,0,x*40,319); // y line
                  LCD_DrawLine(0,x*53,239,x*53); //x line
                  }


                  while(1){

                  int a;
                  int x;


                  for (x=0;x<320;x++)
                  {
                  if (a<250)
                  {
                  LCD_PutPixel(150-a,x);
                  }
                  }



                  if (LPC_GPIO1->FIOPIN & 0x00000001) if(a<255)a++;delay(4);
                  if (LPC_GPIO1->FIOPIN & 0x00000002) if(a>0)a--;delay(4);
                  POINT_COLOR = RED ;
                  LCD_ShowNum(65,140,a,6,16);
                  for(x=0;x<360;x+=2){
                  LCD_PutPixel((sin(x)*100),x);}


                  LPC_GPIO2->FIOPIN = a;
                  LPC_PWM1->MR1=a; /* pwm1*/
                  LPC_PWM1->MR2=a; /* pwm2*/
                  LPC_PWM1->MR3=a; /* pwm3*/
                  LPC_PWM1->MR4=a; /* pwm4*/
                  LPC_PWM1->MR5=a; /* pwm5*/
                  LPC_PWM1->MR6=a; /* pwm6*/
                  LPC_PWM1->LER=0x7E; //ENABLE SHADOW LATCH FOR MATCH 0,1


                  }
                  }

                  این پروژه pwm هستش که بچه ها با یک پتاسیومتر میزان دیوتی سیکل اون رو تنظیم می کردن - من اومدم اون رو تبدیل کردم که با دو سوئیچ این کار انجام بشه این قسمت مربوط به رسم خانه های چهار خانه است در ال سی دی 3.2 مثل یک اسیلوسکوپ :
                  LCD_DrawLine(x,0,x,319); // y origin line
                  LCD_DrawLine(0,x,219,x); // x origin line
                  }
                  for (x=1;x<7;x++){
                  LCD_DrawLine(x*40,0,x*40,319); // y line
                  LCD_DrawLine(0,x*53,239,x*53); //x line
                  }
                  ------------------------------------------------------------------------
                  بقیه برنامه هم که قبلا گفتم و مشخصه -
                  حالا من می خوام میزان دیوتی سیکل رو در pwm با دوسوئیچ تغییر بدم و این مقدار رو هم به صورت عددی نشون بده و هم به صورت شکل موج کلاک حالا مشکل من اینه که می خوام همه متغییری که روی ال سی دی بالا و پایین بشه مقدار واقعی رو نشون بده و عدد دهگان و صدگانش نباشه و هم یک شکل موج کلاک نرمال داشته باشیم
                  این کل پروژه هستش که گذاشتم اگر بتونی این ایراد ها رو بر طرف کنی ممنون می شم .
                  پروژه اسیلوسکوپ سایت رو هم نگاه کردم ولی کمکی نکرد

                  متوجه شدی مهندس؟

                  دیدگاه


                    #10
                    پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                    شما قسمت پایین lcd رو بذار واسه نمایش عدد و اون رو مدرج نکن.
                    قسمت بالا رو مدرج کن و شکل موج رو نشون بده.هر وقت هم که مجدد خواستی شکل موج رو پاک کنی و یکی دیگه بکشی یه مستطیل سفید بکش جای همون قسمتی که شکل موج رو نشون میدی.و دوباره صفحه رو مدرج کن و شکل موج رو رسم کن.
                    برای مدرج کردن صفحه هم میتونی از این تابع استفاده کنی.
                    این تابع با سرعت زیادی صفحه رو مدرج میکنه.
                    با تغییر یکی دو تا عدد میتونی قسمت پایین صفحه رو خالی نگه داری.
                    کد:
                    void LCD_Grid (int background_color,int grid_color) 
                    {
                     unsigned int  i,color,H=0,V=0,counter;;
                    
                     LCD_WindowMax();
                    
                     LCD_SetCursor(0,0);
                     LCD_CS(0)			 
                     wr_cmd(0x22);
                     wr_dat_start();
                     for(i = 0; i < (WIDTH*HEIGHT); i++){
                      wr_dat_only(color);
                    	color=background_color;
                      if((counter>H & counter<(H+240))){
                      	color=grid_color;
                    		if(counter==(H+239)) H+=7200-240;
                    	}
                      if(counter==V){color=grid_color;V+=30;}
                      wr_dat_only(color);
                    	}
                     wr_dat_stop();
                    }
                    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

                    دیدگاه


                      #11
                      پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                      مهندس این تابع اصلا تو نرم افزار keil جواب نمی ده چون کتابخانه lcd این توابع رو نداره :sad:
                      کتابخانه رو می تونی توی این پروژه ای که لینکش رو گذاشتم ببینی :
                      http://www.eca.ir/forum2/index.php?topic=75452.0

                      دیدگاه


                        #12
                        پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

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

                        دیدگاه


                          #13
                          پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                          والله این فرمت براش ناشناخته بود و حتی رو color هم در کامپایل کردن خطا می داد این کل پروژه من هست
                          خودت بذار ببینم جواب می گیری یا نه ( keil نرم افزار)
                          http://www.4shared.com/rar/utU-lXJB/TFT_PWM_BUTTON.html

                          دیدگاه


                            #14
                            پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                            نوشته اصلی توسط mehdiravanbod
                            والله این فرمت براش ناشناخته بود و حتی رو color هم در کامپایل کردن خطا می داد این کل پروژه من هست
                            خودت بذار ببینم جواب می گیری یا نه ( keil نرم افزار)
                            http://www.4shared.com/rar/utU-lXJB/TFT_PWM_BUTTON.html
                            به راحتی کمپایل شد.
                            شما این تابع رو چه جوری و کجا اضافه میکنی؟
                            تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

                            دیدگاه


                              #15
                              پاسخ : تولید موج سینوسی و کلاک با نرم افزار keil

                              این رو من در داخل حلقه نوشتم و کامپایل کردم

                              دیدگاه

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