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 - top

#1
     สวัสดีครับพี่ๆ ทุกท่าน

    คือผมต้องการตั้งเวลา 5 ช่วงเวลา  ( เหมือนนาฬิกาปลุกครับ )

แต่ผมต้องการให้มันแสดงค่าเวลา ที่จะปลุกในรอบทัดไปครับ

   เช่น   เวลาปัจจุบัน               2:50 
           เวลาปลุกในรอบทัดไป   6:00

แต่ปัญหาคือ เวลาที่ตั้งปลุกไม่ได้เรียงกันครับ

   เช่น    เวลาที่ 1      6:00
            เวลาที่ 2      5:40
            เวลาที่ 3      5:30
            เวลาที่ 4      21:00
            เวลาที่ 5      7:30

ผมจะลำดับค่าเวลา  ต้องทำอย่างไรดีครับ
นอกเหนือจากที่ นำค่าเวลามาบวกกัน
ใครพอมีวิธีที่ดึกว่านี้  ขอคำแนะนำด้วยครับ
ผมใช้ LCD ในการแสดงผลและ CCS Compiler 
   
     ขอบคุณมากครับ



#2
 สวัสดีครับพี่ๆ ทุกท่าน

คือผมต้องการที่จะเพิ่ม Ram ให้กับ 18f4550 โดยใช้ EEprom 24C512

จะต้องทำไงดี ขอคำแนะนำด้วยครับ

ผมใช้ CCS ครับ

    ขอบคุณครับ



           
#3

      ขายบอร์ด HY-Smart STM32 สภาพใหม่ครับ 

มีอุปกรณ์ ดังนี้

   - ตัวบอร์ด HY-Smart STM32
   - Adaptor
   - RS232 Cable
   - แผ่น CD Program

http://www.micro4you.net/product-HYSmartSTM32-147994-1.html

ผมใช้งานไม่กีครั้งเองครับ

เสนอราคาที่  1000 บาท ฟรีค่าส่งครับ

  สนใจติดต่อ 082-498-2516 > pat ครับ   

  pat56yit@hotmail.com

#4

สวัสดีครับพี่ๆทุกท่าน

คือผม ต้องการที่จะแสดงรูปภาพบนหน้าจอ GLCD128x64 ทำอย่างไรดีครับ

ควบคุมผ่าน IC 74HC595 ครับ

แต่ถ้าควบคุม I/O Port ธรรมดา สามารถแสดงรูปภาพได้ครับ

ขอคำแนะนำด้วยครับ

     ขอบคุณมากครับ

http://320volt.com/en/ccs-c-74hc595-cd4094-128x64-4x20-lcd-kullanimi/

ด้านล่าง คือ Code ที่สามารถแสดงรูปภาพได้ครับ

void printf_bmp(char select)
{
   unsigned int16 i,j;
   for(i=0;i<8;i++)//8
   {
         output_low(GLCD_DI);                        // Set for instruction
         glcd_writeByte(GLCD_LEFT, 0x40);    // Set horizontal address to 0
         glcd_writeByte(GLCD_RIGHT,0x40);
         glcd_writeByte(GLCD_LEFT, i | 0xb8);// Set page address
         glcd_writeByte(GLCD_RIGHT, i | 0xb8);
         output_high(GLCD_DI);   
         
         // Loop through the horizontal sections
         for(j=0;j<64;j++)
         {
            if(select==1)
            {
               glcd_writeByte(GLCD_LEFT,img[j+(i*128)]);      // Turn pixels on or off
            } 
         }
         for(j=64;j<128;j++)
         {
            if(select==1)
            {
               glcd_writeByte(GLCD_RIGHT,img[j+(i*128)]);      // Turn pixels on or off
            }
         }       
   }
}





#5
   
   สวัสดีปีใหม่ไทยครับ

  วันสงกรานต์ปีนี้ หลายๆคนก็ได้กลับบ้านไปหาครอบครัวกัน

  เล่นน้ำกันสนุกสนาน แต่ผมตรงข้ามครับไม่ได้กลับบ้าน ไม่ชอบเล่นน้ำ

นอนเล่นอยู่ที่ห้อง นั่งทดลองไป ว่างๆก็พาครอบครัวไปเทียวห้าง

วันสงกรานต์ในปีนี้ คุณได้สังเกตุเห็นอะไรบ้างครับ

ผมสังเกตุเห็น รอยยิ้มและเสียงหัวเราะ คนไทยมีความมากขึ้น

วันสงกรานต์เป็นวันรวมผลของเด็กเวร  ซิ่งรถยกล้อกันสนุก

เมื่อวานเห็น ซิ่งรถจนเกิดอุบัติเหตุ ก็เจ็บกันไป

วันหยุดยาวแบบนี้ ถนนหลายเส้นทาง รถไม่ค่อยมีดีจังเลยครับ

สุดท้ายนี้ขอให้ทุกคน มีความสุข ในวันสงกรานต์ปีนี้ ครับ

   เดินทาง โดยสวัสดิภาพ นะครับ



#6
Microchip PIC / Encoder 1000/r + PIC
January 30, 2014, 04:44:04 PM
   
          สวัสดีครับพี่ๆทุกท่าน
   
   ผมต้องการนับ Pulse จาก Encoder ที่มีความลเอียด 1000 P/r

ปัญหาคือ ในขณะที่หมุนรอบ Encoder เร็วๆ ( ใช้มือหมุน ) PIC ตรวจจับสัญญาณไม่ทัน จะแก้ไขปัญหายังดีครับ

ถ้ามีวิธีการตรวจจับสัญญาแบบที่ดีกว่านี้ ขอตัวอย่างด้วยนะครับ

ขอคำแนะนำด้วยครับ 

   coder


#include <16F877a.h>
#fuses  HS,NOLVP,NOWDT,NOPROTECT
//#fuses  HSPLL,PLL5,NOLVP,WDT,NOPROTECT
#use delay(clock=20000000)
//#fuses INTRC_IO,PUT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT     
#include <lcd420.c>

#define CHA1 PIN_C1
#define CHB1 PIN_C0

#define CHA2 PIN_B0
#define CHB2 PIN_B1

unsigned short canalA1,canalB1;
unsigned short canalA2,canalB2;
unsigned short B_libda1=0,B_libda2=0;
unsigned short A_libda1=0,A_libda2=0;
signed int16 qbe_puleoA1=0,qbe_puleoA2=0;
signed int16 angle1=0,angle2=0;

#zero_ram
void main(void)
{
  lcd_init();
  delay_ms(200);
 
  //angle1=0;
  //angle2=0;
  output_high(PIN_D0);
  output_low (PIN_D2);
 
  lcd_gotoxy(1,2);
  printf(lcd_putc,"  Test  Rotary  ");
  lcd_gotoxy(1,3);
  printf(lcd_putc,"     Encoder    ");
  //lcd_gotoxy(1,1);
// printf(lcd_putc,"............... ");
  delay_ms(1000);
 
  while(true)
  {
     canalA1=input_state(CHA1);
     canalB1=input_state(CHB1);
     
   //  canalA2=input_state(CHA2);
  //   canalB2=input_state(CHB2);
     
     if(canalA1==1)
     {
       if(A_libda1==0)
       {
          A_libda1=1;
         
          if(B_libda1==0)
             {
                   if(canalB1==1)
                   {
                     qbe_puleoA1=qbe_puleoA1+1;
                     B_libda1=1;
                   }
                   
                   if(canalB1==0)
                   {
                     qbe_puleoA1=qbe_puleoA1-1;
                     B_libda1=1;
                   }
               
             }
       }
     }else if(canalA1==0)
           {
               if(A_libda1==1)
               {
                  A_libda1=0;
               
                   if(B_libda1==1)
                      {
                            if(canalB1==1)
                            {
                               B_libda1=0;
                            }else if(canalB1==0)
                                     {
                                       B_libda1=0;
                                     }
                   
                     }
               }
     }
/*                     if(canalA2==1)
                       {
                           if(A_libda2==0)
                           {
                              A_libda2=1;
                           
                            if(B_libda2==0)
                               {
                                     if(canalB2==1)
                                     {
                                      qbe_puleoA2=qbe_puleoA2+1;
                                       B_libda2=1;
                                     }
                                     
                                     if(canalB2==0)
                                     {
                                       qbe_puleoA2=qbe_puleoA2-1;
                                       B_libda2=1;
                                     }
               
                               }
       }
     }
                       if(canalA1==0)
                          {
                              if(A_libda2==1)
                              {
                                 A_libda2=0;
                               
                               if(B_libda2==1)
                                  {
                                        if(canalB2==1)
                                        {
                                          B_libda2=0;
                                        }
                                       
                                        if(canalB2==0)
                                        {
                                          B_libda2=0;
                                        }
                                     
                                  }
                            }
                          }
*/                         
                                 angle1=qbe_puleoA1;
                                 angle2=qbe_puleoA2;
                                 
                  lcd_gotoxy(1,1);                 //
                  printf(lcd_putc," Rotary Encoder ");
                  lcd_gotoxy(1,2);
                  printf(lcd_putc,"----------------");
                  lcd_gotoxy(1,3);                 //
                  printf(lcd_putc,"Cha_1 =  %ld    ",angle1);
                  lcd_gotoxy(1,4);
                  printf(lcd_putc,"Cha_2 =  %ld    ",angle2);
  }//while
 
}//main

 



   
#7
 สวัสดีครับพี่่ๆทุกท่าน
   
       เครื่อง Program ที่ผมใช้อยู่ไม่มี IC 18f46k80 ทำไงดีครับ

ใช้เครื่อง Program ตัวนี้ครับ  http://www.etteam.com/product/pic/et-pic-isp-usb-v1.html

เราสามารถเพิ่มเบอร์ IC ได้มั้ย หรือมีวิธีอืนที่พอจะแก้ปัญหาตรงนี้ได้ครับ

ขอคำแนะนำด้วยครับ
#8
เข้าเรื่องเลยนะครับ
  ผมต้องการส่งค่า  ADC แบบไร้สายทำไงดีครับ

หมายถึง ตัวลูก 3 ตัว ส่งให้ตัวแม่อ่านค่า แล้วมาแสดงบน LCD ครับ

ตอนนี้ผมคิดไว้ว่าจะส่งผ่าน RF Module จะได้หรึอเปล่าครับ

มีวิธีอืนที่ดีกว่านี้ไหม ขอคำแนะนำด้วยครับ


ขอขอบคุณมาก ครับ
#9
สวัสดีครับ ชาว Electoday ทุกท่าน :D
   
  ตอนนี้ DS1307 ไม่สามารถจำค่าที่บันทึกไว้ได้ครับ เมื่อเราปิดเครื่องแล้วเปิดใหม่ค่าที่บันทึกไว้ก่อนจะไม่จำครับ =>เช่น  วัน,วันที่,เดือน,ปี

แต่ ชั้วโมง,นาที่,วินาที สามารถบันทึกและทำงานได้ตามปกติดีครับ

อยากให้ผู้รู้ชี้แนะด้วยครับ ขอขอบคุณมากครับ :-\


// main
//#include <18F452.h>

#include <16F877a.h>

#fuses  HS,NOLVP,NOWDT,NOPROTECT
#use   delay(clock=20000000)
//#use I2C(master,sda=pin_c4,scl=pin_c3)

#define Mode PIN_b0  //11
#define UP   PIN_b1  //14  74HC595
#define Down PIN_b2  //12
 
#include <ds1307.c>
#include <lcd.c>

int1 Set,ModeId,UpId,NextId,Blink,DownId;
int1 mov;
int8 rd,y,Mt,Dy,Dt,h,m,s,Next,b;
//int8 DigitId;
int16 mm,DL;

//int1 DemoId,delayId;
//int8 Dat0,Dat1,Dat2,Dat3,Dat4,DigitId,i,DotId;
//int8
//int8 Sec,Min,Sec0,Min0,Hour0,Sec1,Min1,Hour1;
//const char *M[]={"xxx","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
const char DayStr[8][4]={"xxx","Sun","Mon","Tue","Wen","The","Fri","Sat"};


void ShiftClock(void);
void SerialDataOut(int16 DataSend);
void LatchClock(void);
void save (void);


void save (void)
{

  ds1307_set_date_time(dy,Mt,y,dt,h,m,s);
}

#zero_ram
void main(void)
{
  BYTE sec;
  BYTE min;
  BYTE hrs;
  BYTE day;
  BYTE month;
  BYTE yr;
  BYTE dow;
  set_tris_b(0x0f);
  set_tris_d(0x00);
  ds1307_init();
 
  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55
//  ds1307_set_date_time(10,9,13,3,hrs,min,sec);
  lcd_init();
   output_high(PIN_D0);
   output_low (PIN_D2);
  while(true)
  {
  //  delay_ms(100);
   
    switch(rd)
    {
      case 0:
      rd=1;
      ds1307_get_date(day,month,yr,dow);
      break;
      case 1:
      rd=0;
      ds1307_get_time(hrs,min,sec);
      break;
    }
    // segment ();
    // Sec  = I2C_Read_RTC (Write_Clock ,0x00,Read_Clock);

  // Hour = I2C_Read_RTC (Write_Clock ,0x02,Read_Clock);
         //  Hour0=Hour&0x0f; //0x59  9
          // Hour1=(Hour&0xf0)>>4; //5
          // Hour=Hour1*10+Hour0;
    if(input(Mode)==0&&ModeId==0)
    {
       mm++;                                 
      if(mm==100)                       
      {                                       
         Set=1;
         DL=0;
      }
       if(NextId==0)
        {
        Blink=0;
         NextId=1;
         Next++;
         if(Next>7)
         {
           Next=1;
         }
      }
       if(mm>=500)                                               
        { 
        if(input(Down)==0)
        {
           lcd_gotoxy(11,2);
           printf(lcd_putc,"Save ");
            delay_ms(500);
           save(); 
           Set=0;
           ModeId=1;
           Next=0;
        }else if(input(Down)==1)
          {
           Set=0;
           ModeId=1;
           Next=0;
          }
        }
     
    }else if(input(Mode)==1)
       {
         ModeId=0;
         mm=0;
         NextId=0;
       }
     if(!Set)
     {
       lcd_gotoxy(0,1);
       printf(lcd_putc,"%02d\/%02d\/%02d > %s",day,month,yr,DayStr[dow]);
       lcd_gotoxy(0,2);
       printf(lcd_putc,"\%02d:\%02d:\%02d        ", hrs,min,sec);
       mov=0;
     }else
        {
          if(++DL>10000)
          {
            Set=0;
            Next=0;
            DL=0;
          }
         if(mov==0)
         {
           dy=day;
           mt=month;
           y=yr;
           dt=dow;
           h=hrs;
           m=min;
           s=sec;
           mov=1;
         }
         
         if(++b>220)
         {
         b=0;
         Blink=~Blink;
         }
         
         switch(Next)
         {
           case 1://sec
          lcd_gotoxy(0,1);//"                "
          printf(lcd_putc,"%02d\/%02d\/%02d > %s",dy,month,yr,DayStr[dt]);
          lcd_gotoxy(0,2);
           if(Blink)printf(lcd_putc,"\%02d:\%02d:\%02d       ", h,m,s);
           else printf(lcd_putc,"\%02d:\%02d:          ", h,m,);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++s>59)
            {
              s=0;
            }
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
             if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--s<=0)
               {
                 s=59;
               }
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
           
           case 2://Min
           // lcd_gotoxy(0,1);//"                "
         // printf(lcd_putc,"     Set Min     ");
           lcd_gotoxy(0,2);
           if(Blink)printf(lcd_putc,"\%02d:\%02d:\%02d      ", h,m,s);
           else printf(lcd_putc,"\%02d:  :\%02d       ",h,s);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++m>59)
            {
              m=0;
            }
            DL=0;
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
                   if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--m<=0)
               {
                 m=59;
               }
               DL=0;
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
           
           case 3://Hr
//!            lcd_gotoxy(0,1);//"                "
//!          printf(lcd_putc,"     Set Horn     ");
           lcd_gotoxy(0,2);
         //  printf(lcd_putc," \%02d:\%02d:\%02d", h,m,s);
           if(Blink)printf(lcd_putc,"\%02d:\%02d:\%02d       ", h,m,s);
           else printf(lcd_putc,"  :\%02d:\%02d        ", m,s);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++h>23)
            {
              h=0;
            }
            DL=0;
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
              if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--h<=0)
               {
                 h=23;
               }
               DL=0;
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
           
           case 4://Day
           lcd_gotoxy(0,1);
           if(Blink) printf(lcd_putc,"%02d\/%02d\/%02d > %s ",dy,mt,yr,DayStr[dt]);
           else printf(lcd_putc,"%02d\/%02d\/%02d >    ",dy,mt,yr);
            lcd_gotoxy(0,2);
            printf(lcd_putc,"\%02d:\%02d:\%02d       ", h,m,s);
           //else printf(lcd_putc,"   :\%02d:\%02d        ", m,s);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++Dt>7)
            {
              Dt=1;
            }
            DL=0;
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
                 if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--Dt<=0)
               {
                 Dt=7;
               }
               DL=0;
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
           
           case 5://Year
           lcd_gotoxy(0,1);
           if(Blink) printf(lcd_putc,"%02d\/%02d\/%02d > %s ",dy,mt,y,DayStr[dt]);
           else printf(lcd_putc,"%02d\/%02d\/   > %s   ",dy,mt,DayStr[Dt]);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++y>99)
            {
              y=0;
            }
            DL=0;
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
                 if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--y<=0)
               {
                 y=99;
               }
               DL=0;
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
           case 6://Manth
            lcd_gotoxy(0,1);
           if(Blink) printf(lcd_putc,"%02d\/%02d\/%02d > %s ",dy,mt,y,DayStr[dt]);
           else printf(lcd_putc,"%02d\/  \/%02d > %s ",dy,y,DayStr[Dt]);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++mt>12)
            {
              mt=1;
            }
            DL=0;
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
                     if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--mt<1)
               {
                 mt=12;
               }
               DL=0;
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
           case 7://Date
            lcd_gotoxy(0,1);
           if(Blink) printf(lcd_putc,"%02d\/%02d\/%02d > %s ",dy,mt,y,DayStr[dt]);
           else printf(lcd_putc,"  \/%02d\/%02d > %s ",mt,y,DayStr[Dt]);
              if(input(UP)==0&&UpId==0)
          {
            UpId=1;
            if(++dy>31)
            {
              dy=1;
            }
            DL=0;
          }else if(input(UP)==1)
                {
                  UpId=0;
                }
                         if(input(Down)==0&&DownId==0&&input(Mode)==1)
             {
               DownId=1;
                if(--dy<1)
               {
                 dy=31;
               }
               DL=0;
             }else if(input(Down)==1)
                   {
                     DownId=0;
                   }
           break;
         
         }
         
         
        }
  }
}


//......................................................DS1307.c


  ////////////////////////////////////////////////////////////////////////////////
///                               DS1307.C                                   ///
///                     Driver for Real Time Clock                           ///
///                                                                          ///
/// ds1307_init() - Enable oscillator without clearing the seconds register -///
///                 used when PIC loses power and DS1307 run from 3V BAT     ///
///               - Disable squarewave output                                ///
///                                                                          ///
/// ds1307_set_date_time(day,mth,year,dow,hour,min,sec)  Set the date/time   ///
///                                                                          ///
/// ds1307_get_date(day,mth,year,dow)               Get the date             ///
///                                                                          ///
/// ds1307_get_time(hr,min,sec)                     Get the time             ///
///                                                                          ///
////////////////////////////////////////////////////////////////////////////////

#define RTC_SDA  PIN_C0
#define RTC_SCL  PIN_C1

#use i2c(master, sda=RTC_SDA, scl=RTC_SCL)

BYTE bin2bcd(BYTE binary_value);
BYTE bcd2bin(BYTE bcd_value);

void ds1307_init(void)
{
   BYTE seconds = 0;

   i2c_start();
   i2c_write(0xD0);      // WR to RTC
   i2c_write(0x00);      // REG 0
   i2c_start();
   i2c_write(0xD1);      // RD from RTC
   seconds = bcd2bin(i2c_read(0)); // Read current "seconds" in DS1307
   i2c_stop();
   seconds &= 0x7F;

   delay_us(3);

   i2c_start();
   i2c_write(0xD0);      // WR to RTC
   i2c_write(0x00);      // REG 0
   i2c_write(bin2bcd(seconds));     // Start oscillator with current "seconds value
   i2c_start();
   i2c_write(0xD0);      // WR to RTC
   i2c_write(0x07);      // Control Register
   i2c_write(0x00);     // Disable squarewave output pin //0x80
   i2c_stop();

}
#define BIT_VAL(x) (1 << x)
void ds1307_set_date_time(BYTE day, BYTE mth, BYTE year, BYTE dow, BYTE hr, BYTE min, BYTE sec,)
{
  sec &= 0x7F;
  hr &= 0x3F;
//  ap &= 0x3F;

  i2c_start();
  i2c_write(0xD0);              // I2C write address
  i2c_write(0x00);              // Start at REG 0 - Seconds
  i2c_write(bin2bcd(sec));      // REG 0
  i2c_write(bin2bcd(min));      // REG 1
  i2c_write(bin2bcd(hr));      // REG 1 Final
  i2c_write(bin2bcd(hr) |= BIT_VAL(6));         // REG 2
  i2c_write(bin2bcd(dow));      // REG 3
  i2c_write(bin2bcd(day));      // REG 4
  i2c_write(bin2bcd(mth));      // REG 5
  i2c_write(bin2bcd(year));     // REG 6
  i2c_write(0x80);              // REG 7 - Disable squarewave output pin
  i2c_stop();


void ds1307_get_date(BYTE &day, BYTE &mth, BYTE &year, BYTE &dow)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x03);            // Start at REG 3 - Day of week
  i2c_start();
  i2c_write(0xD1);
  dow  = bcd2bin(i2c_read() & 0x7f);   // REG 3
  day  = bcd2bin(i2c_read() & 0x3f);   // REG 4
  mth  = bcd2bin(i2c_read() & 0x1f);   // REG 5
  year = bcd2bin(i2c_read(0));            // REG 6
  i2c_stop();
}

void ds1307_get_time(BYTE &hr, BYTE &min, BYTE &sec)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x00);            // Start at REG 0 - Seconds
  i2c_start();
  i2c_write(0xD1);
  sec = bcd2bin(i2c_read() & 0x7f);
  min = bcd2bin(i2c_read() & 0x7f);
  hr  = bcd2bin(i2c_read(0) & 0x3f);
  i2c_stop();

}

BYTE bin2bcd(BYTE binary_value)
{
  BYTE temp;
  BYTE retval;

  temp = binary_value;
  retval = 0;

  while(true)
  {
    // Get the tens digit by doing multiple subtraction
    // of 10 from the binary value.
    if(temp >= 10)
    {
      temp -= 10;
      retval += 0x10;
    }
    else // Get the ones digit by adding the remainder.
    {
      retval += temp;
      break;
    }
  }

  return(retval);
}


// Input range - 00 to 99.
BYTE bcd2bin(BYTE bcd_value)
{
  BYTE temp;

  temp = bcd_value;
  // Shifting upper digit right by 1 is same as multiplying by 8.
  temp >>= 1;
  // Isolate the bits for the upper digit.
  temp &= 0x78;

  // Now return: (Tens * 8) + (Tens * 2) + Ones

  return(temp + (temp >> 2) + (bcd_value & 0x0f));
}
#10
ขาย  1800  รวมค่าส่ง EMS

อุปกรณ์ครบชุดครับ รายละเอียดตาม link นี้ครับ

http://www.quickembed.com/Tools/Shop/ARM/201005/109.html

สนใจติดต่อ คุณ Pat  082-498-2516

Mail : pat56yit@hotmail.com
#11
    ผมอยากทราบว่า Power inverter ที่ใช้ไฟเลี้ยง 12Vdc  กับ ไฟเลี้ยง 24Vdc ถ้า KW เท่ากัน Inverter แบบไหนใช้ดีกว่ากันครับ

ขอทราบข้อมูลดังนี้ครับ :-\

- การประหยัด Batt

- ประสิทธิภาพในการจ่ายไฟ

- ความร้อนขณะทำงาน

- อื่นๆ

   ขอขอบคุณมากครับ :)

#12
 :)    สวัดดีครับพี่ๆทุกท่าน  เขาเรื่องเลยนะครับ

ผมจำเป็นต้องใช้งาน Program electronic เช่น   Keil V4.6 , Proteus V7.10 , Protell DXP , CCS V4.120 ,CodeVisionAVR และ Driver สายโหลดต่างๆ

windows 8  ( 64 Bit ) สามารถใช้งาน ได้หรึอเปล่าครับ พอดีมีแผนจะซื้อคอมตัวใหม่ครับ

ขอข้อมูลด้วยน่ะครับ
ขอบคุณมากครับ สวัดดีครับ :)
#13
 โปรแกรมตัวอย่างครับ

void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue)
{
  /* Write 16-bit Index, then Write Reg */
  LCD->LCD_REG = LCD_Reg;
  /* Write 16-bit Reg */
  LCD->LCD_RAM = LCD_RegValue;
}
//......................................................................//

คำสั่งในโปรแกรมนี้มีหลักการทำงานอย่างไรครับ

1. LCD->LCD_REG = LCD_Reg;  // คำสั่ง  -> 
2. GPIOE->ODR = c;
3. val = GPIOE->IDR;

  ผมไม่เข้าใจถึงการทำงานมันครับ
คำสั่ง  ->   ไม่เคยใช้
ขอคำแนะนำด้วยครับ

ขอบคุณมากครับ