Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - anon1206

#1
ตอนนี้ผมมี EEPROM 24LC512 ต่ออยู่กับ ARM LPC1756 ไม่ทราบว่าจะเขียนโปรแกรม เขียนอ่าน ยังไงครับ มี Library ให้ใช้ไหมครับ (ใช้  Keil ครับ)

วงจรตามรูปครับ
SCL ต่อขา P0.1
SCD ต่อขา P0.0
#2
ผมจะส่งข้อมูลที่เป็น String จาก C# ผ่าน RS232 ไป ARM LPC1756 เขียนด้วย keil ยังไงครับ
ผมจะใช้ส่งไปให้ led display นะครับ

ตอนนี้ฝั่ง ARM LPC1756 ที่เขียนด้วย keil ผมส่ง String ไปแบบนี้คือ  char  String_font[] = {" สวัสดีครับ"};

ถ้าผมต้องการเขียนเป็น GUI ส่ง String จาก C# ไปให้ ARM LPC1756ผ่าน RS232  ต้องเริ่มจากตรงไหนครับ หรือมีลิ้งยังไงช่วยบอกหน่อยครับ
#3
ผมใช้ CCS C สร้าง array ทำไมมันอ่านได้แค่ 0 - 31 แถว สร้างเกินได้แต่มันก็จะวนอ่านแค่ 0-31

เช่นถ้าผมสร้าง array ขนาด [96][8]
ถ้าเรียกตั้งแต่ แถวที่ 0 ไปเรื่อย ๆ จนถึงแถวที่ 31 มันจะนำมาแสดงได้ตรง
แต่ถ้าเรียก ตั้งแต่แถวที่ 32 ไปเรื่อย ๆ มันก็จะนำข้อมูลในตำแหน่ง 0-31 มาแสดงใหม่ตามลำดับ

อยากทราบว่าเป็นเพราะอะไรครับ

ผมสร้าง array เพื่อนเก็บข้อมูลตัวอักษร เพื่อใช้ในป้ายอักษรวิ่งครับ จากสูตร 

index = ค่าตัวอักษร(ascii) // รับค่ามาจากชนิดข้อมูลแบบข้อความ string type
[index - 32 ][j]
#4
คือผมซื้อบอร์ดมา 4 บอร์ดต้องนำมาต่อกันแบบในรูปครับเพื่อจะให้ได้ขนาด 32*64 จะแยกขา Data กันคุมด้านบน คือ DATA_UP ด้านล่างคือ DATA_LOW
ลิ้งรูปครับ http://image.ohozaa.com/view2/wNohPiLiFMLIsHdy


code คุม Data เดียวครับ
void byte_out(char buffer)
{
  char loop;
  for(loop=0;loop<8;loop++){
      if((buffer&0x80)==0x80)
      {
         LPC_GPIO1->FIOCLR = DATA;
      }
      else {
         LPC_GPIO1->FIOSET = DATA;
      }
      buffer <<=1;
      LPC_GPIO1->FIOSET = CLOCK;
      LPC_GPIO1->FIOCLR = CLOCK; 
  }
}
void scandisplay2(void)
{   
int k,j,i,l;
   for (k=0; k<4; k++)
      {
         LPC_GPIO1->FIOSET = OE;
         select_138(k); 
         
         for (j=0; j<8; j++)   
        {     
            for (i=0; i<4; i++) 
            {
           byte_out( led_buffer[(3 - i) * 4 + k][7 - j]);               
            }
         }         
       LPC_GPIO1->FIOSET = LATCH;
       LPC_GPIO1->FIOCLR = LATCH;
       LPC_GPIO1->FIOCLR = OE;         
      }     
}


ขา Data อีกขา จะเขียน code แบบไหนครับ ต้องเพิ่มในฟังก์ชันแบบไหน ครับ  :)
#5
โค้ดนีี้เป็นฟังก์ชันการ scandisplay ครับ ต้องใส delay ไว้ก่อนเลือกแถวไหม่ถ้างั้น led จะไม่สว่างหรือไม่ก็สว่างแถวเดียวครับ
ยิ่งใส่ delay มาก led จะยิ่งสว่างครับ สาเหตุน่าจะมาจากอะไรครับ จะแก้จากส่วนไหนได้บ้างครับ
(ที่ไม่อยากใส่ delay เพราะมันจะ loop ช้าทำให้ภาพกระพริบนะครับ ^^)

void scandisplay(void)
{   
int k,j,i;
   for (k=0; k<4; k++)
      {         
         output_low(OE); // ปิดขา OE (LED ดับ)
         select_138(3);  // เลือกแถว
         
         for (j=0; j<8; j++) 
        {     
            for (i=0; i<4; i++) 
            {
             byte_out(led_buffer[(3 - i) * 4 + k][7 - j]);
            }
         }
        output_high(LT2);
       output_low(LT2);
       output_high(OE); // เปิดขา OE (led สว่าง)
       delay_us(300); // ตรงส่วนที่ต้อง delay ไว้ ก่อนวนไปเลือกแถวไหม่
      }     
}

ถ้าใส่ delay  http://image.ohozaa.com/view2/wN6zWqFJXCP86XHV

ถ้าไม่ใส่ delay  http://image.ohozaa.com/view2/wN6A9bUian8wnFLT

น่าจะเกิดจากอะไรและต้องแก้ตรงไหนรบกวนช่วยบอกหน่อยครับ  :'(
#6
ปุ่มย่อขยายฟังก์ชันย่อยใน keil uvision 4.13 ต้องตั้งตรงไหนครับ หาไม่เจอ

รูปตามลิ้งครับ



http://image.ohozaa.com/view2/wMlenb2UPKGE9kH8
#7
ต้องเขียนแบบไหนครับ
ผมเคยเขียนแต่ใน PIC เขียนแบบนี้ครับ ไม่ต้องเรียกใน main เรียกอัตโนมัติใน time Interrupt เลยครับ

#INT_TIMER1
void IntTimer1_isr()
   {
      scandisplay();  // ฟังก์ชันที่จะให้เรียกอัตโนมัติ
      set_timer1(65400);
   }
void main(void)
{

   set_tris_b(0x00);
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_TIMER1);   
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
   set_timer1(65451); //    interrupt 34uS


   while(true)
   { 

   }
}

ถ้าจะเขียนใน arm cortex m3 LPC1756 ต้องเขียนแบบไหนครับ  :'(
#8
ผมซื้อโมดูลเพื่อมาทำโปรเจคจบครับตามในรูปที่ให้มาครับ
ที่ผมรู้ตอนนี้คือ จะใช้ IC 74HC595 ควบคุมการติดดับของหลอด
ใช้ 74HC138 ควบคุมการเลือกแถวโดยคุมผ่าน AMP4953 อีกทีว่าจะให้แถวไหนติด
ที่ไม่เข้าใจคือการ scan 1/4 มันต้องคุมแบบไหนครับ
เคยเขียนคุมแต่ LED Dot matrix 8*8 มาเจอแบบนี้งงครับ
ตัวอย่างวงจรตามไฟล์ที่แนบมาครับ ช่วยนี้แนะหน่อยครับว่าหลักการคุมจะประมาณไหน(ถ้ามีตัวอย่างขอหน่อยครับ)
*****ขอบคุณครับ*****
ลิ้งรูปป้าย led P10 1/4 scan กับวงจรครับ
http://pic.free.in.th/id/7e7b77fa24d05a327c84bb28122bc6ed
http://image.ohozaa.com/view2/wHlrHh0xrPCHraRC