NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2946 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 4 1234 آخرینآخرین
نمایش نتایج: از 1 به 20 از 63

موضوع: راه اندازی lcd n96 در مد 8 بیتی

  1. #1
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض راه اندازی lcd n96 در مد 8 بیتی

    سلام
    من ماژول LCD N96 ECA رو خریدم و سعی کردم در مد 8 بیتی راش بندازم ولی تا حالا که موفق نشدم.
    یه هدر پیدا کردم که فکر کنم واسه Codvision AVR باشه :

    کد:
    // Remember that the LCD area goes from:
    //   X: 0-239
    //   Y: 0-319
    
    
    #define LCD PORTA  // Set the DB 0-7 to PORTA 0-7 (Pin 22-29)
    #define LCD_RS 30
    #define LCD_RS_LO digitalWrite(LCD_RS, LOW)
    #define LCD_RS_HI digitalWrite(LCD_RS, HIGH)
    #define LCD_CS 31
    #define LCD_CS_LO digitalWrite(LCD_CS, LOW)
    #define LCD_CS_HI digitalWrite(LCD_CS, HIGH)
    #define LCD_WR 32
    #define LCD_WR_LO digitalWrite(LCD_WR, LOW)
    #define LCD_WR_HI digitalWrite(LCD_WR, HIGH)
    #define LCD_RD 33
    #define LCD_RD_LO digitalWrite(LCD_RD, LOW)
    #define LCD_RD_HI digitalWrite(LCD_RD, HIGH)
    #define LCD_RESET 34
    #define LCD_RESET_LO digitalWrite(LCD_RESET, LOW)
    #define LCD_RESET_HI digitalWrite(LCD_RESET, HIGH)
    #define VERTICAL 0
    #define HORIZONTAL 1
    #define LCD_ALIGNMENT VERTICAL
    //#define LCD_ALIGNMENT HORIZONTAL  // Not finished yet!
    
    //LCDDRIVER VARIABLER
    //Color codes
    #define RED      0xf800
    #define GREEN    0x07e0
    #define BLUE     0x001f
    #define WHITE    0xffff
    #define BLACK    0x0000
    #define YELLOW   0xFFE0
    
    const byte Verdana_font_11[] = {
        0,   // format
        11,   // fontHeight
        9,   // ascent
        33,   // from
        95,   // count
        59,   // totalWidth/8
        0x00,0x01,0x00,0x04,0x00,0x0B,0x00,0x10,0x00,0x1A,0x00,0x21,0x00,0x22,0x00,0x25,0x00,0x28,0x00,0x2D,0x00,0x34,0x00,0x36,0x00,0x39,0x00,0x3A,0x00,0x3F,0x00,0x44,0x00,0x49,0x00,0x4E,0x00,0x53,0x00,0x59,0x00,0x5E,0x00,0x63,0x00,0x68,0x00,0x6D,0x00,0x72,0x00,0x73,0x00,0x75,0x00,0x7B,0x00,0x82,0x00,0x88,0x00,0x8C,0x00,0x94,0x00,0x9A,0x00,0xA0,0x00,0xA7,0x00,0xAE,0x00,0xB3,0x00,0xB8,0x00,0xBF,0x00,0xC5,0x00,0xC8,0x00,0xCC,0x00,0xD2,0x00,0xD7,0x00,0xDE,0x00,0xE4,0x00,0xEB,0x00,0xF0,0x00,0xF7,0x00,0xFD,0x01,0x03,0x01,0x0A,0x01,0x10,0x01,0x16,0x01,0x1F,0x01,0x25,0x01,0x2C,0x01,0x32,0x01,0x35,0x01,0x3A,0x01,0x3D,0x01,0x44,0x01,0x4B,0x01,0x4D,0x01,0x52,0x01,0x57,0x01,0x5C,0x01,0x61,0x01,0x66,0x01,0x6A,0x01,0x6F,0x01,0x74,0x01,0x75,0x01,0x78,0x01,0x7D,0x01,0x7E,0x01,0x87,0x01,0x8C,0x01,0x91,0x01,0x96,0x01,0x9B,0x01,0x9F,0x01,0xA3,0x01,0xA7,0x01,0xAC,0x01,0xB1,0x01,0xB8,0x01,0xBD,0x01,0xC2,0x01,0xC6,0x01,0xCB,0x01,0xCC,0x01,0xD1,0x01,0xD8,0x01,0xD8,    // Col ends
        0x50,0x04,0x00,0x00,0x4C,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x38,0x00,0x10,0x20,0x00,0x80,0xC1,0x09,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,    // Line 0
        0xD1,0x44,0x62,0x18,0x52,0xA8,0x00,0x02,0xE2,0x39,0xC1,0x7C,0xDF,0x73,0x80,0x00,0x00,0xE3,0xE3,0x3C,0x3D,0xF3,0xFF,0x3D,0x0F,0x78,0x61,0x8F,0x13,0x9E,0x39,0xE3,0xDF,0xE1,0x86,0x23,0x0C,0x1F,0xE4,0x08,0x80,0x08,0x20,0x00,0x81,0x01,0x00,0x84,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x92,0x00,    // Line 1
        0xD1,0x4F,0x92,0x24,0x52,0x70,0x80,0x05,0x1E,0x46,0x23,0x41,0x01,0x8C,0x40,0x00,0x00,0x14,0x13,0x22,0x43,0x0A,0x10,0x43,0x0A,0x18,0xA1,0x8F,0x14,0x51,0x45,0x14,0x22,0x21,0x86,0x23,0x0A,0x20,0x62,0x09,0x40,0x00,0x20,0x00,0x81,0x01,0x00,0x84,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x92,0x00,    // Line 2
        0x87,0xF4,0x94,0x24,0x21,0xA8,0x80,0x05,0x12,0x04,0x25,0x42,0x02,0x8C,0x68,0x60,0x30,0x19,0xD4,0xA2,0x81,0x06,0x10,0x81,0x0A,0x19,0x21,0x56,0x98,0x31,0x83,0x14,0x02,0x21,0x85,0x54,0x91,0x40,0xA2,0x0A,0x20,0x03,0xBC,0xE7,0xBB,0xDF,0xEB,0x8F,0xDD,0xE7,0x79,0xF6,0xFF,0x18,0xC9,0x8C,0x7C,0x92,0x00,    // Line 3
        0x82,0x94,0x64,0x19,0x21,0x20,0x80,0x09,0x12,0x08,0xC9,0x7B,0xC2,0x74,0x69,0x9F,0xCC,0x2A,0x54,0xBE,0x81,0x07,0xFE,0x81,0xFA,0x1A,0x21,0x56,0x98,0x31,0x83,0x13,0x02,0x21,0x49,0x54,0x60,0x81,0x21,0x0C,0x10,0x00,0x63,0x18,0xC5,0x23,0x19,0x96,0x23,0x18,0xC6,0x39,0x09,0x18,0xC9,0x52,0x84,0x92,0x31,    // Line 4
        0x82,0x8E,0x09,0xA5,0x21,0x07,0xF3,0x89,0x12,0x10,0x31,0x06,0x24,0x8B,0xC6,0x00,0x03,0x4A,0x54,0xA1,0x81,0x06,0x10,0x8F,0x0A,0x1E,0x21,0x26,0x58,0x3E,0x83,0xE0,0xC2,0x21,0x49,0x54,0x60,0x82,0x21,0x08,0x00,0x03,0xE3,0x08,0xFD,0x23,0x19,0xA6,0x23,0x18,0xC6,0x31,0x89,0x15,0x55,0x22,0x8B,0x11,0xC9,    // Line 5
        0x8F,0xC5,0x0A,0x62,0x21,0x00,0x80,0x11,0x12,0x20,0x3F,0x86,0x24,0x88,0x41,0x9F,0xCC,0x4A,0x5F,0xE1,0x81,0x06,0x10,0x83,0x0A,0x19,0x21,0x26,0x58,0x30,0x83,0x20,0x22,0x21,0x49,0x54,0x90,0x84,0x20,0x88,0x00,0x04,0x63,0x08,0xC1,0x23,0x19,0xE6,0x23,0x18,0xC6,0x30,0x69,0x15,0x55,0x22,0x90,0x92,0x46,    // Line 6
        0x05,0x05,0x12,0x63,0x21,0x00,0x84,0x51,0x12,0x42,0x21,0x46,0x28,0x88,0xA8,0x60,0x30,0x09,0xA8,0x61,0x43,0x0A,0x10,0x43,0x0A,0x18,0xA1,0x06,0x34,0x50,0x45,0x14,0x22,0x21,0x30,0x89,0x08,0x88,0x20,0x88,0x00,0x04,0x63,0x18,0xC5,0x23,0x19,0x96,0x23,0x18,0xC6,0x30,0x29,0x12,0x22,0x51,0x20,0x92,0x00,    // Line 7
        0x85,0x1E,0x11,0x9C,0x92,0x00,0x84,0x60,0xEF,0xFD,0xC1,0x39,0xC8,0x73,0x28,0x00,0x00,0x44,0x08,0x7E,0x3D,0xF3,0xF0,0x3D,0x0F,0xE8,0x7F,0x06,0x33,0x90,0x39,0x0B,0xC2,0x1E,0x30,0x89,0x08,0x8F,0xE0,0x48,0x00,0x03,0xFC,0xE7,0xB9,0x1F,0x19,0x8E,0x23,0x17,0x79,0xF1,0xC6,0xF2,0x22,0x89,0x3C,0x92,0x00,    // Line 8
        0x00,0x04,0x00,0x00,0x12,0x00,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x48,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x01,0x00,0x92,0x00,    // Line 9
        0x00,0x04,0x00,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x0F,0xE0,0x00,0x00,0x00,0x1C,0x06,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x02,0x00,0x7C,0x00,    // Line 10
    };
    
    #ifdef pgm_read_byte
    #define FNT(_x) pgm_read_byte(Verdana_font_11 + (_x))
    #else
    #define FNT(_x) Verdana_font_11[_x]
    #endif
    
    unsigned int current_color = BLUE;
    
    void setup()   { 
      LCD_Init();
      
      LCD_Clear(BLACK);
    
      LCD_HorLine(0,239,20,YELLOW);
      LCD_HorLine(0,239,30,RED);
      LCD_HorLine(0,239,40,YELLOW);  
     
      LCD_HorLine(0,239,280,YELLOW);
      LCD_HorLine(0,239,290,RED);
      LCD_HorLine(0,239,300,YELLOW); 
    
      LCD_Rectangle(70,130,180,190,GREEN);
      LCD_HorLine(70,180,130,RED);
      LCD_HorLine(70,180,190,RED);  
      LCD_VerLine(130,190,70,RED);  
      LCD_VerLine(130,190,180,RED);  
      LCD_DrawString("Hello World", 98, 155, BLACK);  
      
      delay(5000);
      LCD_Clear_ScrollUp(5, WHITE);
      
      LCD_HorLine(0,239,20,RED);
      LCD_HorLine(0,239,30,BLUE);
      LCD_HorLine(0,239,40,RED);  
     
      LCD_HorLine(0,239,280,RED);
      LCD_HorLine(0,239,290,BLUE);
      LCD_HorLine(0,239,300,RED); 
    
      LCD_Rectangle(70,130,180,190,YELLOW);
      LCD_HorLine(70,180,130,BLUE);
      LCD_HorLine(70,180,190,BLUE);  
      LCD_VerLine(130,190,70,BLUE);  
      LCD_VerLine(130,190,180,BLUE);  
      LCD_DrawString("Hello World", 98, 155, BLACK);
      
      delay(5000);
      LCD_Clear_ScrollDown(5, BLUE);
    }
    
    
    void loop()                     
    {
      current_color = current_color + 0x732;
      if (current_color+0x732 >= 0xFFFF) {
        current_color = (current_color+0x732) - 0xFFFF;
      }
      LCD_Clear(current_color);
    }
    
    void LCD_WriteIndex(byte index)
    {
      // Write Index
      LCD_RS_LO;
      LCD = 0;
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = index;
      LCD_WR_LO;
      LCD_WR_HI;
    }
    
    void LCD_WriteData(unsigned int data)
    {
      // Write Data
      LCD_RS_HI;
      LCD = highByte(data);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = lowByte(data);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = 0;
    }  
    
    void LCD_WriteReg(byte index, unsigned int data)
    {
      // Write Index
      LCD_WriteIndex(index);
      
      // Write Data
      LCD_WriteData(data);
    }  
    
    void LCD_Init()
    {
      pinMode(LCD_CS, OUTPUT);    // Set LCD CS pin As Output 
      LCD_CS_HI;                  // Disable LCD
      pinMode(LCD_RESET, OUTPUT); // Set reset pin As Output
      LCD_RESET_LO;               // Hold in reset
      pinMode(LCD_RS, OUTPUT);    // Set RS pin As Output
      LCD_RS_LO;  
      pinMode(LCD_RD, OUTPUT);    // Set RD pin As Output
      LCD_RD_HI;  
      pinMode(LCD_WR, OUTPUT);    // Set WR pin As Output
      LCD_WR_HI;  
      
      DDRA = B11111111; // Set Data BUS As Output
     
      // Reset controller
      LCD_RESET_LO;
      delay(2);
      LCD_RESET_HI;
      delay(2);
      
      /*** Setup display For ILI9320 driver IC ***/ 
      LCD_CS_LO; // Enable LCD
      LCD_WriteReg(0xe5, 0x8000); //start osc
      LCD_WriteReg(0x00, 0x0001);
      delay(10);
      LCD_WriteReg(0xa4, 0x0001); //calb
      LCD_WriteReg(0x07, 0x0000); //display control(1)
      delay(10);
      
      /*** Display Setting ***/
      LCD_WriteReg(0x01, 0x0100);    //Driver output control (1)
      LCD_WriteReg(0x02, 0x0700);    //LCD driving control
      
      // Check page 55 in the datasheet for more information about alignment
      #if LCD_ALIGNMENT == VERTICAL
        LCD_WriteReg(0x03, 0x1030);     //Entry mode
      #elif LCD_ALIGNMENT == HORIZONTAL 
        LCD_WriteReg(0x03, 0x1028);     //Entry mode
      #endif  
      
      LCD_WriteReg(0x04, 0x0000);    //Resize control
      LCD_WriteReg(0x08, 0x0202);    //Display control (2)
      LCD_WriteReg(0x09, 0x0000);    //Display control (3)
      
      /*** Power Control ***/
      LCD_WriteReg(0x07, 0x0101);    //power control 1 BT, AP
      LCD_WriteReg(0x17, 0x0001);
      LCD_WriteReg(0x10, 0x0000);
      LCD_WriteReg(0x11, 0x0007);    //power control 2 DC, VC
      LCD_WriteReg(0x12, 0x0000);    //power control 3 VRH
      LCD_WriteReg(0x12, 0x0000);    //power control 3 VRH
      LCD_WriteReg(0x13, 0x0000);    //power control 4 VCOM amplitude
      delay(20);
      
      LCD_WriteReg(0x10, 0x16B0);             //power control 1 BT,AP   
      LCD_WriteReg(0x11, 0x0037);             //power control 2 DC,VC
      delay(50);  
      LCD_WriteReg(0x12, 0x013E);             //power control 3 VRH
      delay(50);  
      LCD_WriteReg(0x13, 0x1A00);             //power control 4 vcom amplitude  
      LCD_WriteReg(0x29, 0x000F);             //power control 7 VCOMH
      delay(50);  
      LCD_WriteReg(0x20, 0x0000);              //Horizontal GRAM Address Set  
      LCD_WriteReg(0x21, 0x0000);              //Vertical GRAM Address Set  
    
      LCD_WriteReg(0x50, 0x0000);              //Horizontal Address Start Position  
      LCD_WriteReg(0x51, 0x00EF);              //Horizontal Address end Position (239)  
      LCD_WriteReg(0x52, 0x0000);              //Vertical Address Start Position  
      LCD_WriteReg(0x53, 0x013F);              //Vertical Address end Position (319) 
     
      
      LCD_WriteReg(0x60, 0x2700);              //Driver Output Control 2  
    //  LCD_WriteReg(0x61, 0x0001);              //Base Image Display Control  
      LCD_WriteReg(0x61, 0x0003);              //Base Image Display Control  
      LCD_WriteReg(0x6a, 0x0000);              //Base Image Display Control
      
      LCD_WriteReg(0x90, 0x0010);              //Panel Interface Control 1
      LCD_WriteReg(0x92, 0x0000);              //Panel Interface Control 2  
      LCD_WriteReg(0x93, 0x0000);              //Panel Interface Control 3
    
      /*** GAMMA Control ***/  
      LCD_WriteReg(0x30, 0x0007);
      LCD_WriteReg(0x31, 0x0403);    
      LCD_WriteReg(0x32, 0x0404);
      LCD_WriteReg(0x35, 0x0002); 
      LCD_WriteReg(0x36, 0x0707); 
      LCD_WriteReg(0x37, 0x0606); 
      LCD_WriteReg(0x38, 0x0106); 
      LCD_WriteReg(0x39, 0x0007); 
      LCD_WriteReg(0x3c, 0x0700);
      LCD_WriteReg(0x3d, 0x0707);  
      
      LCD_WriteReg(0x07, 0x0173);
     
      LCD_CS_HI;
      
      delay(30);
      LCD_CS_LO;   
    }
    
    void LCD_SetCursor(unsigned int x, unsigned int y)
    {
    if (x < 240 && y < 320) {
      #if LCD_ALIGNMENT == VERTICAL
        LCD_WriteReg(0x20, x);
        LCD_WriteReg(0x21, y);
      #elif LCD_ALIGNMENT == HORIZONTAL 
        LCD_WriteReg(0x20, 240-y);
        LCD_WriteReg(0x21, x);
      #endif  
    }  
    }
    
    void LCD_Clear(unsigned int color)
    {
      LCD_SetCursor(0,0);
      /*LCD_WriteIndex(0x22);
      for (long i=0; i <= 76799; i++){
        LCD_WriteData(color);
      }
      */
      LCD_SolidFill(76800, color);  // This is a faster method
    }
    
    void LCD_ResetWindow()
    {
      LCD_WriteReg(0x50, 0x0000);              //Horizontal Address Start Position  
      LCD_WriteReg(0x51, 0x00EF);              //Horizontal Address end Position (239)  
      LCD_WriteReg(0x52, 0x0000);              //Vertical Address Start Position  
      LCD_WriteReg(0x53, 0x013F);              //Vertical Address end Position (319) 
    }
    
    void LCD_PutPixel(byte x, unsigned int y, unsigned int color)
    {
      LCD_SetCursor(x,y);
      LCD_WriteIndex(0x22);
      LCD_WriteData(color);
    }  
    
    void LCD_HorLine(byte x1, byte x2, unsigned int y, unsigned int color)
    {
    if (x1 < 240 && x2 < 240 && y < 320) {
      LCD_SetCursor(x1,y);
      /*LCD_WriteIndex(0x22);
      for (byte i=x1; i < x2; i++){
        LCD_WriteData(color);
      }
      */
      LCD_SolidFill((x2-x1), color);  // This is a faster method
    }  
    }  
    
    void LCD_VerLine(unsigned int y1, unsigned int y2, byte x, unsigned int color)
    {
      LCD_SetCursor(x,y1);
      LCD_SetWindow(x,y1,x,y2);
      /*LCD_WriteIndex(0x22);
      for (byte i=x1; i < x2; i++){
        LCD_WriteData(color);
      }
      */
      LCD_SolidFill((y2-y1), color);  // This is a faster method
      LCD_ResetWindow();
    }  
    
    void LCD_HardwareScroll(int y)
    {
        while (y < 0)
            y += 320;
        while (y >= 320)
            y -= 320;
        LCD_WriteReg(0x6a,y);
    }    
    
    void LCD_Clear_ScrollUp(byte delay_between, unsigned int color)
    {
      for (int i=1; i <= 320; i++) {    
        LCD_HardwareScroll(i);
        LCD_HorLine(0,239,i-1,color);    
        delay(delay_between);
      }
      LCD_HardwareScroll(0);
    }  
    
    void LCD_Clear_ScrollDown(byte delay_between, unsigned int color)
    {
      for (int i=-1; i >= -320; i--) {    
        LCD_HorLine(0,239,320+i,color);  
        LCD_HardwareScroll(i);  
        delay(delay_between);    
      }
      LCD_HardwareScroll(0);  
    } 
    
    int LCD_DrawChar(byte xx, unsigned int yy, int c, unsigned int color)
    {
        //byte* f = Verdana_font_11;
        if (c == 32)
            return FNT(1)>>2;  // Space is 1/4 font height (yuk);
    
        int i = c - FNT(3);
        if (i < 0 || i >= FNT(4)) return 0;
    
        int ci = 6 + i * 2;
        int width = (FNT(ci) << 8) | FNT(ci + 1);   // simplify
        int height = FNT(1);
        int src = 0;
        if (i > 0)
        {
            src = (FNT(ci - 2) << 8) | FNT(ci - 1);
            width -= src;
        }
        
        //  clip?
        src += (6 + 2 * FNT(4)) * 8;    // start of pixels (roll into cols) 
        byte mask = 0x80 >> (src & 7);  // Mask at start of line
        int end = (src+width) >> 3;     // number of bytes read
        src >>= 3;
        int makeup = FNT(5) - (end + 1 - src);
        for (byte y = 0; y < (byte)height; y++)
        {
            byte p = FNT(src++);
            byte m = mask;
            for (byte x = 0; x < (byte)width; x++)
            {
                if (p & m)
                    LCD_PutPixel(x + xx, y + yy, color);
                m >>= 1;
                if (m == 0)
                {
                    p = FNT(src++);
                    if (p == 0 && (width-x) <= 8)   // early out
                        break;
                    m = 0x80;
                }
            }
            src += makeup;
        }
        return width;
    }
    
    void LCD_DrawString2(const char* s, int len, byte x, unsigned int y, unsigned int color)
    {
        for (int i = 0; i < len; i++)
            x += LCD_DrawChar(x,y,s[i], color) + 1;
    }
    
    void LCD_DrawString(const char* s, byte x, unsigned int y, unsigned int color)
    {
        LCD_DrawString2(s,strlen(s),x,y, color);
    }
    
    void LCD_SetWindow(byte x1, unsigned int y1, byte x2, unsigned int y2)
    {
      #if LCD_ALIGNMENT == VERTICAL  
        LCD_WriteReg(0x50, x1);           //Horizontal Address Start Position  
        LCD_WriteReg(0x51, x2); //Horizontal Address end Position (239)  
        LCD_WriteReg(0x52, y1);           //Vertical Address Start Position  
        LCD_WriteReg(0x53, y2);//Vertical Address end Position (319)                
      #elif LCD_ALIGNMENT == HORIZONTAL 
        #error "Windows Clearing in Horizontal mode is not possible yet!"
      #endif     
    }
    
    void LCD_Rectangle(byte x1, unsigned int y1, byte x2, unsigned int y2, int color)
    {      
        LCD_SetWindow(x1,y1,x2,y2);
        LCD_SetCursor(x1,y1);
        
        byte width = x2-x1+1;
        unsigned int height = y2-y1+1;
        LCD_SolidFill(width*height, color);
        LCD_ResetWindow();
    }
    
    void LCD_SolidFill(unsigned long count, unsigned int color)
    {
      // Write Index
      LCD_WriteIndex(0x22);
      
      // Write Data
      LCD_RS_HI;
      LCD = highByte(color);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = lowByte(color);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = 0;
      
      for (unsigned long i=0; i <= count-1; i++){
        // Write Data
        LCD = highByte(color);
        LCD_WR_LO;
        LCD_WR_HI;
        LCD = lowByte(color);
        LCD_WR_LO;
        LCD_WR_HI;
      }
    }
    با کمی تغییرات با MikroC PIC سازگارش کردم :

    کد:
    #include <built_in.h>
    
    #define LCD PORTB  // Set the DB 0-7 to PORTA 0-7 (Pin 22-29)
    
    #define LCD_RS     PORTA.F2
    #define LCD_CS     PORTA.F3
    #define LCD_WR     PORTA.F1
    #define LCD_RD     PORTA.F0
    #define LCD_RESET  PORTA.F4
    
    #define LCD_RS_LO LCD_RS = 0
    #define LCD_RS_HI LCD_RS = 1
    
    #define LCD_CS_LO LCD_CS = 0
    #define LCD_CS_HI LCD_CS = 1
    
    #define LCD_WR_LO LCD_WR = 0
    #define LCD_WR_HI LCD_WR = 1
    
    #define LCD_RD_LO LCD_RD = 0
    #define LCD_RD_HI LCD_RD = 1
    
    #define LCD_RESET_LO LCD_RESET = 0
    #define LCD_RESET_HI LCD_RESET = 1
    
    #define VERTICAL 0
    #define HORIZONTAL 1
    
    #define LCD_ALIGNMENT VERTICAL
    //#define LCD_ALIGNMENT HORIZONTAL
    
    //LCDDRIVER VARIABLER
    //Color codes
    #define RED          0xf800
    #define GREEN        0x07e0
    #define BLUE         0x001f
    #define WHITE        0xffff
    #define BLACK        0x0000
    #define YELLOW  0xFFE0
    
    const unsigned char Verdana_font_11[] = {
        0,   // format
        11,   // fontHeight
        9,   // ascent
        33,   // from
        95,   // count
        59,   // totalWidth/8
        0x00,0x01,0x00,0x04,0x00,0x0B,0x00,0x10,0x00,0x1A,0x00,0x21,0x00,0x22,0x00,0x25,0x00,0x28,0x00,0x2D,0x00,0x34,0x00,0x36,0x00,0x39,0x00,0x3A,0x00,0x3F,0x00,0x44,0x00,0x49,0x00,0x4E,0x00,0x53,0x00,0x59,0x00,0x5E,0x00,0x63,0x00,0x68,0x00,0x6D,0x00,0x72,0x00,0x73,0x00,0x75,0x00,0x7B,0x00,0x82,0x00,0x88,0x00,0x8C,0x00,0x94,0x00,0x9A,0x00,0xA0,0x00,0xA7,0x00,0xAE,0x00,0xB3,0x00,0xB8,0x00,0xBF,0x00,0xC5,0x00,0xC8,0x00,0xCC,0x00,0xD2,0x00,0xD7,0x00,0xDE,0x00,0xE4,0x00,0xEB,0x00,0xF0,0x00,0xF7,0x00,0xFD,0x01,0x03,0x01,0x0A,0x01,0x10,0x01,0x16,0x01,0x1F,0x01,0x25,0x01,0x2C,0x01,0x32,0x01,0x35,0x01,0x3A,0x01,0x3D,0x01,0x44,0x01,0x4B,0x01,0x4D,0x01,0x52,0x01,0x57,0x01,0x5C,0x01,0x61,0x01,0x66,0x01,0x6A,0x01,0x6F,0x01,0x74,0x01,0x75,0x01,0x78,0x01,0x7D,0x01,0x7E,0x01,0x87,0x01,0x8C,0x01,0x91,0x01,0x96,0x01,0x9B,0x01,0x9F,0x01,0xA3,0x01,0xA7,0x01,0xAC,0x01,0xB1,0x01,0xB8,0x01,0xBD,0x01,0xC2,0x01,0xC6,0x01,0xCB,0x01,0xCC,0x01,0xD1,0x01,0xD8,0x01,0xD8,    // Col ends
        0x50,0x04,0x00,0x00,0x4C,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x38,0x00,0x10,0x20,0x00,0x80,0xC1,0x09,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,    // Line 0
        0xD1,0x44,0x62,0x18,0x52,0xA8,0x00,0x02,0xE2,0x39,0xC1,0x7C,0xDF,0x73,0x80,0x00,0x00,0xE3,0xE3,0x3C,0x3D,0xF3,0xFF,0x3D,0x0F,0x78,0x61,0x8F,0x13,0x9E,0x39,0xE3,0xDF,0xE1,0x86,0x23,0x0C,0x1F,0xE4,0x08,0x80,0x08,0x20,0x00,0x81,0x01,0x00,0x84,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x92,0x00,    // Line 1
        0xD1,0x4F,0x92,0x24,0x52,0x70,0x80,0x05,0x1E,0x46,0x23,0x41,0x01,0x8C,0x40,0x00,0x00,0x14,0x13,0x22,0x43,0x0A,0x10,0x43,0x0A,0x18,0xA1,0x8F,0x14,0x51,0x45,0x14,0x22,0x21,0x86,0x23,0x0A,0x20,0x62,0x09,0x40,0x00,0x20,0x00,0x81,0x01,0x00,0x84,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x92,0x00,    // Line 2
        0x87,0xF4,0x94,0x24,0x21,0xA8,0x80,0x05,0x12,0x04,0x25,0x42,0x02,0x8C,0x68,0x60,0x30,0x19,0xD4,0xA2,0x81,0x06,0x10,0x81,0x0A,0x19,0x21,0x56,0x98,0x31,0x83,0x14,0x02,0x21,0x85,0x54,0x91,0x40,0xA2,0x0A,0x20,0x03,0xBC,0xE7,0xBB,0xDF,0xEB,0x8F,0xDD,0xE7,0x79,0xF6,0xFF,0x18,0xC9,0x8C,0x7C,0x92,0x00,    // Line 3
        0x82,0x94,0x64,0x19,0x21,0x20,0x80,0x09,0x12,0x08,0xC9,0x7B,0xC2,0x74,0x69,0x9F,0xCC,0x2A,0x54,0xBE,0x81,0x07,0xFE,0x81,0xFA,0x1A,0x21,0x56,0x98,0x31,0x83,0x13,0x02,0x21,0x49,0x54,0x60,0x81,0x21,0x0C,0x10,0x00,0x63,0x18,0xC5,0x23,0x19,0x96,0x23,0x18,0xC6,0x39,0x09,0x18,0xC9,0x52,0x84,0x92,0x31,    // Line 4
        0x82,0x8E,0x09,0xA5,0x21,0x07,0xF3,0x89,0x12,0x10,0x31,0x06,0x24,0x8B,0xC6,0x00,0x03,0x4A,0x54,0xA1,0x81,0x06,0x10,0x8F,0x0A,0x1E,0x21,0x26,0x58,0x3E,0x83,0xE0,0xC2,0x21,0x49,0x54,0x60,0x82,0x21,0x08,0x00,0x03,0xE3,0x08,0xFD,0x23,0x19,0xA6,0x23,0x18,0xC6,0x31,0x89,0x15,0x55,0x22,0x8B,0x11,0xC9,    // Line 5
        0x8F,0xC5,0x0A,0x62,0x21,0x00,0x80,0x11,0x12,0x20,0x3F,0x86,0x24,0x88,0x41,0x9F,0xCC,0x4A,0x5F,0xE1,0x81,0x06,0x10,0x83,0x0A,0x19,0x21,0x26,0x58,0x30,0x83,0x20,0x22,0x21,0x49,0x54,0x90,0x84,0x20,0x88,0x00,0x04,0x63,0x08,0xC1,0x23,0x19,0xE6,0x23,0x18,0xC6,0x30,0x69,0x15,0x55,0x22,0x90,0x92,0x46,    // Line 6
        0x05,0x05,0x12,0x63,0x21,0x00,0x84,0x51,0x12,0x42,0x21,0x46,0x28,0x88,0xA8,0x60,0x30,0x09,0xA8,0x61,0x43,0x0A,0x10,0x43,0x0A,0x18,0xA1,0x06,0x34,0x50,0x45,0x14,0x22,0x21,0x30,0x89,0x08,0x88,0x20,0x88,0x00,0x04,0x63,0x18,0xC5,0x23,0x19,0x96,0x23,0x18,0xC6,0x30,0x29,0x12,0x22,0x51,0x20,0x92,0x00,    // Line 7
        0x85,0x1E,0x11,0x9C,0x92,0x00,0x84,0x60,0xEF,0xFD,0xC1,0x39,0xC8,0x73,0x28,0x00,0x00,0x44,0x08,0x7E,0x3D,0xF3,0xF0,0x3D,0x0F,0xE8,0x7F,0x06,0x33,0x90,0x39,0x0B,0xC2,0x1E,0x30,0x89,0x08,0x8F,0xE0,0x48,0x00,0x03,0xFC,0xE7,0xB9,0x1F,0x19,0x8E,0x23,0x17,0x79,0xF1,0xC6,0xF2,0x22,0x89,0x3C,0x92,0x00,    // Line 8
        0x00,0x04,0x00,0x00,0x12,0x00,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x48,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x01,0x00,0x92,0x00,    // Line 9
        0x00,0x04,0x00,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x0F,0xE0,0x00,0x00,0x00,0x1C,0x06,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x02,0x00,0x7C,0x00,    // Line 10
    };
    
    #ifdef pgm_read_byte
    #define FNT(_x) pgm_read_byte(Verdana_font_11 + (_x))
    #else
    #define FNT(_x) Verdana_font_11[_x]
    #endif
    
    unsigned int current_color = BLUE;
    
    void LCD_WriteIndex(unsigned char TFT_Index) {
    
      LCD_RS_LO;
      LCD = 0;
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = TFT_Index;
      LCD_WR_LO;
      LCD_WR_HI;
    }
    
    void LCD_WriteData(unsigned int TFT_Data) {
    
      LCD_RS_HI;
      LCD = Lo(TFT_Data);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = Hi(TFT_Data);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = 0;
    }
    
    void LCD_WriteReg(unsigned char TFT_Index, unsigned int TFT_Data) {
    
      LCD_WriteIndex(TFT_Index);
      LCD_WriteData(TFT_Data);
    }
    
    void LCD_SetCursor(unsigned int TFT_X, unsigned int TFT_Y) {
    
      if (TFT_X < 240 && TFT_Y < 320) {
    
        #if LCD_ALIGNMENT == VERTICAL
          LCD_WriteReg(0x20, TFT_X);
          LCD_WriteReg(0x21, TFT_Y);
        #elif LCD_ALIGNMENT == HORIZONTAL
          LCD_WriteReg(0x20, 240-TFT_Y);
          LCD_WriteReg(0x21, TFT_X);
        #endif
      }
    }
    
    void LCD_SolidFill(unsigned long TFT_Count, unsigned int TFT_Color) {
    
        unsigned long TFT_Ring;
    
      LCD_WriteIndex(0x22);
    
      LCD_RS_HI;
      LCD = Hi(TFT_Color);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = Lo(TFT_Color);
      LCD_WR_LO;
      LCD_WR_HI;
      LCD = 0;
    
      for(TFT_Ring=0;TFT_Ring<TFT_Count;TFT_Ring++){
    
        LCD = Hi(TFT_Color);
        LCD_WR_LO;
        LCD_WR_HI;
        LCD = Lo(TFT_Color);
        LCD_WR_LO;
        LCD_WR_HI;
      }
    }
    
    void LCD_HorLine(unsigned char TFT_X1, unsigned char TFT_X2, unsigned int TFT_Y, unsigned int TFT_Color) {
    
      if (TFT_X1 < 240 && TFT_X2 < 240 && TFT_Y < 320) {
      
        LCD_SetCursor(TFT_X1,TFT_Y);
      /*LCD_WriteIndex(0x22);
      for (byte i=x1; i < x2; i++){
        LCD_WriteData(color);
      }
      */
        LCD_SolidFill((TFT_X2-TFT_X1),TFT_Color);  // This is a faster method
      }
    }
    
    void LCD_SetWindow(unsigned char TFT_X1, unsigned int TFT_Y1, unsigned char TFT_X2, unsigned int TFT_Y2) {
    
      #if LCD_ALIGNMENT == VERTICAL
        LCD_WriteReg(0x50, TFT_X1);           //Horizontal Address Start Position
        LCD_WriteReg(0x51, TFT_X2); //Horizontal Address end Position (239)
        LCD_WriteReg(0x52, TFT_Y1);           //Vertical Address Start Position
        LCD_WriteReg(0x53, TFT_Y2);//Vertical Address end Position (319)
      #elif LCD_ALIGNMENT == HORIZONTAL
        #error "Windows Clearing in Horizontal mode is not possible yet!"
      #endif
    }
    
    void LCD_ResetWindow() {
    
      LCD_WriteReg(0x50, 0x0000);              //Horizontal Address Start Position
      LCD_WriteReg(0x51, 0x00EF);              //Horizontal Address end Position (239)
      LCD_WriteReg(0x52, 0x0000);              //Vertical Address Start Position
      LCD_WriteReg(0x53, 0x013F);              //Vertical Address end Position (319)
    }
    
    void LCD_VerLine(unsigned int TFT_Y1, unsigned int TFT_Y2,unsigned char TFT_X, unsigned int TFT_Color) {
      LCD_SetCursor(TFT_X,TFT_Y1);
      LCD_SetWindow(TFT_X,TFT_Y1,TFT_X,TFT_Y2);
      /*LCD_WriteIndex(0x22);
      for (byte i=x1; i < x2; i++){
        LCD_WriteData(color);
      }
      */
      LCD_SolidFill((TFT_Y2-TFT_Y1),TFT_Color);  // This is a faster method
      LCD_ResetWindow();
    }
    
    void LCD_Clear(unsigned int TFT_Color) {
    
      LCD_SetCursor(0,0);
    
      /*LCD_WriteIndex(0x22);
      for (long i=0; i <= 76799; i++){
        LCD_WriteData(color);
      }
      */
      LCD_SolidFill(76800, TFT_Color);  // This is a faster method
    }
    
    void LCD_Rectangle(unsigned char TFT_X1, unsigned int TFT_Y1,unsigned char TFT_X2, unsigned int TFT_Y2,unsigned int TFT_Color) {
    
        unsigned char TFT_Width;
        unsigned int TFT_Height;
    
        TFT_Width = TFT_X2-TFT_X1+1;
        TFT_Height = TFT_Y2-TFT_Y1+1;
      
      LCD_SetWindow(TFT_X1,TFT_Y1,TFT_X2,TFT_Y2);
      LCD_SetCursor(TFT_X1,TFT_Y1);
    
      LCD_SolidFill(TFT_Width*TFT_Height, TFT_Color);
      LCD_ResetWindow();
    }
    
    void LCD_PutPixel(unsigned char TFT_X,unsigned int TFT_Y,unsigned int TFT_Color) {
    
      LCD_SetCursor(TFT_X,TFT_Y);
      LCD_WriteIndex(0x22);
      LCD_WriteData(TFT_Color);
    }
    
    void LCD_HardwareScroll(int y) {
    
      while (y < 0) y += 320;
      while (y >= 320) y -= 320;
      LCD_WriteReg(0x6a,y);
    }
    
    void LCD_Clear_ScrollUp(unsigned char TFT_Delay_Between,unsigned int TFT_Color) {
    
        int TFT_Ring;
    
      for (TFT_Ring=1;TFT_Ring<=320;TFT_Ring++) {
      
        LCD_HardwareScroll(TFT_Ring);
        LCD_HorLine(0,239,TFT_Ring-1,TFT_Color);
        
        vdelay_ms(TFT_Delay_Between);
      }
      LCD_HardwareScroll(0);
    }
    
    void loop() {
    
      current_color = current_color + 0x732;
      if (current_color+0x732 >= 0xFFFF) current_color = (current_color+0x732) - 0xFFFF;
      LCD_Clear(current_color);
    }
    
    void TFT_LCD_Init() {
    
      TRISB = 0x00;
    
      TRISA.F0 = 0;
      TRISA.F1 = 0;
      TRISA.F2 = 0;
      TRISA.F3 = 0;
      TRISA.F4 = 0;
    
      LCD_CS_HI;
      LCD_RESET_LO;
      LCD_RS_LO;
      LCD_RD_HI;
      LCD_WR_HI;
    
      // Reset controller
      LCD_RESET_LO;
      delay_ms(2);
      LCD_RESET_HI;
      delay_ms(2);
    
      /*** Setup display For ILI9320 driver IC ***/
      LCD_CS_LO; // Enable LCD
      LCD_WriteReg(0xe5, 0x8000); //start osc
      LCD_WriteReg(0x00, 0x0001);
      delay_ms(10);
      LCD_WriteReg(0xa4, 0x0001); //calb
      LCD_WriteReg(0x07, 0x0000); //display control(1)
      delay_ms(10);
    
      /*** Display Setting ***/
      LCD_WriteReg(0x01, 0x0100);        //Driver output control (1)
      LCD_WriteReg(0x02, 0x0700);        //LCD driving control
    
      // Check page 55 in the datasheet for more information about alignment
      #if LCD_ALIGNMENT == VERTICAL
        LCD_WriteReg(0x03, 0x1030);         //Entry mode
      #elif LCD_ALIGNMENT == HORIZONTAL
        LCD_WriteReg(0x03, 0x1028);         //Entry mode
      #endif
    
      LCD_WriteReg(0x04, 0x0000);        //Resize control
      LCD_WriteReg(0x08, 0x0202);        //Display control (2)
      LCD_WriteReg(0x09, 0x0000);        //Display control (3)
    
      /*** Power Control ***/
      LCD_WriteReg(0x07, 0x0101);        //power control 1 BT, AP
      LCD_WriteReg(0x17, 0x0001);
      LCD_WriteReg(0x10, 0x0000);
      LCD_WriteReg(0x11, 0x0007);        //power control 2 DC, VC
      LCD_WriteReg(0x12, 0x0000);        //power control 3 VRH
      LCD_WriteReg(0x12, 0x0000);        //power control 3 VRH
      LCD_WriteReg(0x13, 0x0000);        //power control 4 VCOM amplitude
      delay_ms(20);
    
      LCD_WriteReg(0x10, 0x16B0);             //power control 1 BT,AP
      LCD_WriteReg(0x11, 0x0037);             //power control 2 DC,VC
      delay_ms(50);
      LCD_WriteReg(0x12, 0x013E);             //power control 3 VRH
      delay_ms(50);
      LCD_WriteReg(0x13, 0x1A00);             //power control 4 vcom amplitude
      LCD_WriteReg(0x29, 0x000F);             //power control 7 VCOMH
      delay_ms(50);
      LCD_WriteReg(0x20, 0x0000);              //Horizontal GRAM Address Set
      LCD_WriteReg(0x21, 0x0000);              //Vertical GRAM Address Set
    
      LCD_WriteReg(0x50, 0x0000);              //Horizontal Address Start Position
      LCD_WriteReg(0x51, 0x00EF);              //Horizontal Address end Position (239)
      LCD_WriteReg(0x52, 0x0000);              //Vertical Address Start Position
      LCD_WriteReg(0x53, 0x013F);              //Vertical Address end Position (319)
    
    
      LCD_WriteReg(0x60, 0x2700);              //Driver Output Control 2
    //  LCD_WriteReg(0x61, 0x0001);              //Base Image Display Control
      LCD_WriteReg(0x61, 0x0003);              //Base Image Display Control
      LCD_WriteReg(0x6a, 0x0000);              //Base Image Display Control
    
      LCD_WriteReg(0x90, 0x0010);              //Panel Interface Control 1
      LCD_WriteReg(0x92, 0x0000);              //Panel Interface Control 2
      LCD_WriteReg(0x93, 0x0000);              //Panel Interface Control 3
    
      /*** GAMMA Control ***/
      LCD_WriteReg(0x30, 0x0007);
      LCD_WriteReg(0x31, 0x0403);
      LCD_WriteReg(0x32, 0x0404);
      LCD_WriteReg(0x35, 0x0002);
      LCD_WriteReg(0x36, 0x0707);
      LCD_WriteReg(0x37, 0x0606);
      LCD_WriteReg(0x38, 0x0106);
      LCD_WriteReg(0x39, 0x0007);
      LCD_WriteReg(0x3c, 0x0700);
      LCD_WriteReg(0x3d, 0x0707);
    
      LCD_WriteReg(0x07, 0x0173);
    
      LCD_CS_HI;
    
      delay_ms(30);
      LCD_CS_LO;
    }
    
    void LCD_Clear_ScrollDown(unsigned char TFT_Delay_Between,unsigned int TFT_Color) {
    
        signed int TFT_Ring;
    
      for (TFT_Ring=-1;TFT_Ring>=-320;TFT_Ring--) {
      
        LCD_HorLine(0,239,320+TFT_Ring,TFT_Color);
        LCD_HardwareScroll(TFT_Ring);
        vdelay_ms(TFT_Delay_Between);
      }
      LCD_HardwareScroll(0);
    }
    
    void main() {
    
      delay_ms(1000);
      TFT_LCD_Init();
    
      while(1) {
     
        delay_ms(100);
    
        LCD_PutPixel(100,100,2000);
        LCD_PutPixel(200,100,1000);
        LCD_PutPixel(100,200,200);
        LCD_PutPixel(50,50,20);
      }
    }
    اینم شماتیک :





    فکر نکنم مشکلی داشته باشه ولی کار نمی کنه
    کسی میدونه مشکل چیه؟کسی یه هدر واسه راه اندازی این LCD تو مد 8 بیتی داره؟
    فرقی نمی کنه واسه چه میکرویی باشه ولی حتما به زبون C باشه و خودتون راش انداخته باشین
    پیشا پیش از هر همه تون ممنونم
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Untitled-2.png
مشاهده: 490
حجم: 27.5 کیلو بایت  
    ویرایش توسط sajjad_AD : 13-04-2012 در ساعت 14:27

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    سلام مهندس . اتفاقا منم دنبال راه اندازی در مد 8 بیتی هستم . ولی تا حالا چیزی پیدا نکردم . فقط یه مثال اومده بود از یه لچ 573 استفاده کرده بود . یعنی سخت افزاری 8 رو به 16 تبدیل کرده بود .
    ضمنا مندس حواست باشه میکرویی که استفاده کردی 5 ولته و السیدی 3.3 و تا 4 ولت تحمل داره ! نسوزونی السیدی رو ! اگرم راه بیوفته با این میکرو سرعتش خنده داره !!

  4. تشکرها از این نوشته :


  5. #3
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    ضمنا مندس حواست باشه میکرویی که استفاده کردی 5 ولته و السیدی 3.3 و تا 4 ولت تحمل داره ! نسوزونی السیدی رو !
    سلام دوست من,ممنون از پاسخت,نه دیگه نسوزونی چیه؟!!!همه رو به 3.3 وصل کردم

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

    فقط یه مثال اومده بود از یه لچ 573 استفاده کرده بود . یعنی سخت افزاری 8 رو به 16 تبدیل کرده بود .
    از این پچل بازیا خوشم نمیاد

  6. #4
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    نه دیگه نسوزونی چیه؟!!!همه رو به 3.3 وصل کردم
    مهندس جان دست من و تو نیست که ! به 3.3 وصل کردم دیگه چیه ! میکرو 5 ولتیه با 3.3 کار نمی کنه . اگه میخوای بهش 3.3 بدی باید از سری l یعنی 16lf84a استفاده کنی که سری l پیک تو ایران نیست !!!!
    سری معمولی یا 5 ولت پیک از 4.2 ولت پایین تر بدی کار نمی کنه دیگه !!!

  7. تشکرها از این نوشته :


  8. #5
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    نه مهندس میکرو کار می کنه.
    امتحانش کردم که میگم...
    صفحه ی 3 دیتاشیتش هم که یه نگا بندازی رنج ولتاژ کاریشو از 2 تا 5.5 ولت درج کرده
    ویرایش توسط sajjad_AD : 13-04-2012 در ساعت 14:59

  9. #6
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    مهندس جان تمام pic ها تغذیشون از 2 تا 5.5 هست . منتها برای مدل های معمولی تا 4.2 کار میکنه و اگه بخوای از اون پایین تر بیای باید از حالت اسیلاتور توان پایین استفاده کنی . که فرکانسش در محدوده کیلو هرتره ! یا اینکه میکروت نوع L باشه . اینارو نگاه کن :


    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 1.jpg
مشاهده: 423
حجم: 48.2 کیلو بایت  

  10. کاربران : 2 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  11. #7
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    ممنون از راه نمایی هاتون ولی میکرو داره کار میکنه!!! بازم واسه اطمینان خاطر از صحت عملکرد میزنم به 5v و خروجی هاشو با مقاومت 3.3 میکنم اینجوری خوبه؟
    ویرایش توسط sajjad_AD : 13-04-2012 در ساعت 15:44

  12. #8
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    از 18F452 استفاده کنم چی؟اخه تو دیتاشیتش محدوده ی ولتاژ رو نوشته ولی حداکثر فرکانسو طبق عکس ننوشته :



    اینم مال 16F84 :

    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 18F452.png
مشاهده: 420
حجم: 10.8 کیلو بایت   برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 16F84A.png
مشاهده: 445
حجم: 13.3 کیلو بایت  

  13. #9
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    ولی واسه اطمینان خاطر از صحت عملکرد میزنم به 5v و خروجی هاشو با مقاومت 3.3 میکنم اینجوری خوبه؟
    آره این راه درسته .

    از 18F452 استفاده کنم چی؟اخه تو دیتاشیتش محدوده ی ولتاژ رو نوشته ولی حداکثر فرکانسو طبق عکس ننوشته :
    همشون مثل همن . اگه میخوای حتما با pic کار کنی یه شماره میکرو بهت معرفی کنم که هم 3.3 ولته و هم طراحی جدیده و هم فضای کدش بالاست . قیمتشم 5500 هست .

  14. تشکرها از این نوشته :


  15. #10
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    چرا که نه سیفوی من خب بگو دیگه

  16. #11
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    نمیگم

    18f26k20 . میکروی توپپیه با وجود قیمتش . برو دیتاشیتشو ببین . جوان هم داره .

  17. تشکرها از این نوشته :


  18. #12
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    پس من چند روز دیگه نتیجه رو همینجا میگم

  19. تشکرها از این نوشته :


  20. #13
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    الان دارم روش با PIC18F452 به همون روشی که گفتم کار می کنم ولی هنوز جواب نگرفتم,کسی در مورد هدری که گذاشتم نظری نداره؟
    بازم از آقا سعید ممنونم و امیدوارم که منو بخاطر حرفایی که از روی بی سوادی زدم بخشیده باشی

  21. #14
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    مهندس این حرفا چیه
    یه نکته رو امروز یادم رفت بهت بگم راستی ... اگه از برد السیدی eca استفاده میکنی . حواست به پایه IM0 باشه . حتما در مورد السیدی اینو میدونی که برای کار در مد 8 بیتی باید پایه IM0 السیدی رو 1 کنی ! و نمی دونم درباره موضوع اون سه تا مقاومت روی السیدی و اینکه نعیین کننده نوع باس هستند چیزی شنیدی یا نه !
    این رو گفتم چون پایه IM0 رو برد eca مثل اینکه کار نمی کنه !!! و باید السیدی رو از برد جدا کنی و یه تغییرات کوچیک توش بدی تا این پایه تازه عملکردش فعال بشه ...

  22. تشکرها از این نوشته :


  23. #15
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    بیشتر توضیح بده ینی چی که کار نمی کنه من فکر می کردم که IM1 و IM2 رو جوری وصل کردن که کار راحت بشه و فقط با 1 و یا 0 کردن IM0,مد 8 یا 16 رو انتخاب کنیم

  24. #16
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    والا چی بگم . دیروز که تو مد 16 بیتی وصلش کردم گفتم بیام اینو تست کنم که اگه به پایه im0 یک بدم نباید کار کنه ( چون تو مد 8 بیت میره ) ولی همون طور که فکر می کردم . هیچ تغییری نکرد !!
    تو قسمت فروش این السیدی هم تو eca نوشته که تو حالت 16 بیت تنظیم شده و تغییر دادن این حالت به کاربر واگذار شده !!!
    من هرکاری کردم السیدی از جاش در نیومد . ترسیدم خراب بشه ! فعلا موندم چیکار کنم !

  25. تشکرها از این نوشته :


  26. #17
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

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

  27. تشکرها از این نوشته :


  28. #18
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

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

  29. #19
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    مهندس من این عکس رو گذاشتم ببین برای شما هم اینطوریه
    من یکی راه انداختم رو مد 16 بیتی که مقاومت رو روی R2 لحیم کردم
    اگه هم روی R1 لحیم شه باید قطعا رو مد 8 بیتی راه اندازی بشه


    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 20120416159.jpg
مشاهده: 1505
حجم: 141.9 کیلو بایت  
    *** اللّهم عجّل لولیک الفرج ***

  30. کاربران : 4 تشکر کرده اند از شما Doloop برای ارسال این پست سودمند:


  31. #20
    کاربر فعال sajjad_AD آواتار ها
    تاریخ عضویت
    Aug 2009
    نام
    سجاد
    نوشته ها
    307
    تشکر
    336
    تشکر شده 471 بار در 181 پست

    پیش فرض

    سلام آقا حسین عزیز دست شما درد نکنه حق با شماست این مقاومت یه سرش به IM0 وسر دیگش با توجه به جایی که وصل میشه Gnd یا Vcc میشه,درست شد از همه ممنونم
    ویرایش توسط sajjad_AD : 16-04-2012 در ساعت 09:36

  32. تشکرها از این نوشته :


صفحه 1 از 4 1234 آخرینآخرین

موضوعات مشابه

  1. دانلود psim 9 نسخه‌ی 64 بیتی و 32 بیتی با کرک
    توسط bato_990 در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 26
    آخرين نوشته: 24-01-2014, 17:52
  2. راه اندازی lcd 8بیتی با at91sam7s64
    توسط imported_pmf در انجمن AT91 series (ATMEL)
    پاسخ: 5
    آخرين نوشته: 21-05-2013, 23:47
  3. راه اندازی lcd n96 در حالت 8 بیتی
    توسط lord67 در انجمن مباحث کلی ARM
    پاسخ: 1
    آخرين نوشته: 21-02-2013, 15:56
  4. جمع کننده /8 بیتی
    توسط unknown7068 در انجمن الکترونیک
    پاسخ: 3
    آخرين نوشته: 17-01-2013, 18:27
  5. فایل هدر راه اندازی 4بیتی LCD کارکتری برای lpc
    توسط Aghaeifar در انجمن LPC series (NXP)
    پاسخ: 0
    آخرين نوشته: 23-04-2010, 13:26

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •