วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2561

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 10

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 10

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรม Micro  C    พร้อมอธิบายโปรแกรม

       void main()
{
     unsigned char Dec,d1,d2,d3;
     unsigned char Bin[8];
     unsigned char keypad[]={0,1,2,3,0,
                               4,5,6,0,
                               7,8,9,0,
                               0,0,0,0};
     unsigned int kp,i;
     TRISC=0;
     TRISD=0xFF;
     Lcd_Init(&PORTC);
     Keypad_Init(&PORTD);
     Lcd_Cmd(LCD_CURSOR_OFF);
     Return:Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,1,"Dec>Bin Bin>Dec");
     Lcd_Out(2,1,"   1       2   ");
     while(Keypad_Read()!=1&&Keypad_Read()!=2);
     if(Keypad_Read()==1)goto DectoBin;
     if(Keypad_Read()==2)goto BintoDec;
     DectoBin:while(Keypad_Read());
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,1,"Enter Dec");
     for(i=0;i<2;i++)
     {
            while(!Keypad_Read());
            kp=Keypad_Read();
            Dec=Dec*10*i+keypad[kp];
            Lcd_Chr(2,i+1,keypad[kp]+48);
            while(Keypad_Read());
     }
     Bin[0]=Dec%2;
     Bin[1]=(Dec/2)%2;
     Bin[2]=(Dec/4)%2;
     Bin[3]=(Dec/8)%2;
     Bin[4]=(Dec/16)%2;
     Bin[5]=(Dec/32)%2;
     Bin[6]=(Dec/64)%2;
     Bin[7]=(Dec/128)%2;
     while(Keypad_Read()!=15);
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,1,"Bin");
     for(i=0;i<8;i++)
     {
            Lcd_Chr(2,i+1,Bin[7-i]+48);
     }
     while(Keypad_Read());
     while(Keypad_Read()!=15);
     goto Return;
     BintoDec:while(Keypad_Read());
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,1,"Enter Bin");
     for(i=0;i<8;i++)
     {
            while(Keypad_Read()!=1&&Keypad_Read()!=14);
            kp=Keypad_Read();
            Bin[7-i]=keypad[kp];
            Lcd_Chr(2,i+1,Bin[7-i]+48);
            while(Keypad_Read());
     }
     Dec=Bin[0];
     Dec=Dec+Bin[1]*2;
     Dec=Dec+Bin[2]*4;
     Dec=Dec+Bin[3]*8;
     Dec=Dec+Bin[4]*16;
     Dec=Dec+Bin[5]*32;
     Dec=Dec+Bin[6]*64;
     Dec=Dec+Bin[7]*128;
     d1=Dec/100;
     d2=(Dec%100)/10;
     d3=Dec%10;
     while(Keypad_Read()!=15);
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,1,"Dec");
     Lcd_Chr(2,1,d1+48);
     Lcd_Chr(2,2,d2+48);
     Lcd_Chr(2,3,d3+48);
     while(Keypad_Read());
     while(Keypad_Read()!=15);
     goto Return;
}

       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus


   3. อธิบายการทำงานของโปรแกรม 

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 9

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 9

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรมMicro  C    พร้อมอธิบายโปรแกรม

     void main()
{
     unsigned int equ[4];
     unsigned char keypad[]={0,7,8,9,0,
                               4,5,6,0,
                               1,2,3,0,
                               0,0,0,0};
     unsigned char kp,i;
     unsigned char r[4];
     TRISC=0;
     TRISD=0xFF;
     Lcd_Init(&PORTC);
     Keypad_Init(&PORTD);
     Lcd_Cmd(LCD_CURSOR_OFF);
     RETURN:while(Keypad_Read());
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Chr(1,1,'0');
     for(i=0;i<2;i++)
     {
             while(!Keypad_Read());
             if(Keypad_Read()==16)
             {
                     equ[1]=10;
                     goto STEP2;
             }
             if(Keypad_Read()==8)
             {
                     equ[1]=11;
                     goto STEP2;
             }
             kp=Keypad_Read();
             Lcd_Chr(1,i+1,keypad[kp]+48);
             equ[0]=equ[0]*10*i+keypad[kp];
             while(Keypad_Read());
     }
     while(Keypad_Read()!=8&&Keypad_Read()!=16);
     if(Keypad_Read()==16)equ[1]=10;
     if(Keypad_Read()==8)equ[1]=11;
     STEP2:while(Keypad_Read());
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Chr(1,1,'0');
     for(i=0;i<2;i++)
     {
             while(!Keypad_Read());
             if(Keypad_Read()==15)goto STEP3;
             kp=Keypad_Read();
             Lcd_Chr(1,i+1,keypad[kp]+48);
             equ[2]=equ[2]*10*i+keypad[kp];
             while(Keypad_Read());
     }
     while(Keypad_Read()!=15);
     STEP3:if(equ[1]==10)equ[3]=equ[0]+equ[2];
     if(equ[1]==11)equ[3]=equ[0]*equ[2];
     r[3]=equ[3]/1000;
     r[2]=(equ[3]%1000)/100;
     r[1]=(equ[3]%100)/10;
     r[0]=equ[3]%10;
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Chr(1,1,'=');
     for(i=0;i<4;i++)
     {
             Lcd_Chr(1,i+2,r[3-i]+48);
     }
     while(Keypad_Read()!=13);
     goto RETURN;

}

       
       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus


   3. อธิบายการทำงานของโปรแกรม 

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 8

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 8

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรม Micro  C    พร้อมอธิบายโปรแกรมvoid main()
{
     unsigned char password[]={1,2,3,4};
     unsigned char input[4];
     unsigned char keypad[]={0,1,2,3,0,
                               4,5,6,0,
                               7,8,9,0,
                               0,0,0,0};
     unsigned int kp,i;
     TRISC=0;
     TRISD=0xFF;
     Lcd_Init(&PORTC);
     Keypad_Init(&PORTD);
     Lcd_Cmd(LCD_CURSOR_OFF);
     RETURN:Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,1,"ENTER PASSWORD");
     for(i=0;i<4;i++)
     {
             while(!Keypad_Read());
             kp=Keypad_Read();
             input[i]=keypad[kp];
             Lcd_Chr(2,i+1,input[i]+48);
             while(Keypad_Read());
     }
     while(Keypad_Read()!=15);
     if(input[0]==password[0]&&input[1]==password[1]&&input[2]==password[2]&&input[3]==password[3])
     {
             Lcd_Cmd(LCD_CLEAR);
             Lcd_Out(1,1,"CORRECT PASSWORD");
     }
     else
     {
             Lcd_Cmd(LCD_CLEAR);
             Lcd_Out(1,1,"WRONG PASSWORD");
             delay_ms(1000);
             goto RETURN;
     }
}
       
       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus



   3. อธิบายการทำงานของโปรแกรม 

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 7

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 7

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรม Micro  C    พร้อมอธิบายโปรแกรม
      
     void main()
{
     unsigned char clock[4];
     unsigned char sec;
     TRISC=0;
     Lcd_Init(&PORTC);
     Lcd_Cmd(LCD_CURSOR_OFF);
     Lcd_Cmd(LCD_CLEAR);
     T0CON=0x05;
     TMR0H=0xC2;
     TMR0L=0xF7;
     INTCON.TMR0IF=0;
     T0CON.TMR0ON=1;
     while(1)
     {
              Lcd_Chr(1,6,clock[0]+48);
              Lcd_Chr(1,7,clock[1]+48);
              Lcd_Chr(1,8,':');
              Lcd_Chr(1,9,clock[2]+48);
              Lcd_Chr(1,10,clock[3]+48);
              while(!INTCON.TMR0IF);
              T0CON.TMR0ON=0;
              sec++;
              if(sec>59)
              {
                        sec=0;
                        clock[3]++;
              }
              if(clock[3]>9)
              {
                        clock[3]=0;
                        clock[2]++;
              }
              if(clock[2]>5)
              {
                        clock[2]=0;
                        clock[1]++;
              }
              if(clock[1]>9)
              {
                        clock[1]=0;
                        clock[0]++;
              }
              if(clock[0]==2&&clock[1]>3)
              {
                        clock[0]=0;
                        clock[1]=0;
              }
              TMR0H=0xC2;
              TMR0L=0xF7;
              INTCON.TMR0IF=0;
              T0CON.TMR0ON=1;
              Lcd_Cmd(LCD_CLEAR);
     }

}

       
       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus



   3. อธิบายการทำงานของโปรแกรม 

วันพฤหัสบดีที่ 20 ธันวาคม พ.ศ. 2561

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 6

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 6

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรมMicro  C   พร้อมอธิบายโปรแกรม
      
     void main()
{
     TRISB=0xFF;
     TRISC=0;
     Lcd_Init(&PORTC);
     Lcd_Cmd(LCD_CURSOR_OFF);
     Lcd_Cmd(LCD_CLEAR);
     Lcd_Out(1,2,"                SMART LEARNING");
     Lcd_Out(2,1,"                ADVANCE PIC BY C");
     while(1)
     {
             RETURN:if(PORTB.F0==0)
             {
                      Lcd_Cmd(LCD_SHIFT_RIGHT);
                      while(PORTB.F0==0);
             }
             if(PORTB.F1==0)
             {
                      Lcd_Cmd(LCD_SHIFT_LEFT);
                      while(PORTB.F1==0);
             }
             if(PORTB.F2==0)
             {
                      while(1)
                      {
                              Lcd_Cmd(LCD_SHIFT_RIGHT);
                              delay_ms(100);
                              if(PORTB.F0==0||PORTB.F1==0)goto RETURN;
                      }
             }
      }

}
       
       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus



   3. อธิบายการทำงานของโปรแกรม 

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 5

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 5

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรม Micro  C    พร้อมอธิบายโปรแกรม
      unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
     unsigned char i1,i2,i3,i4,i5,i6;

     void interrupt()
{
     i6++;
     if(i6>9)
     {
             i6=0;
             i5++;
     }
     if(i5>9)
     {
             i5=0;
             i4++;
     }
     if(i4>9)
     {
             i4=0;
             i3++;
     }
     if(i3>9)
     {
             i3=0;
             i2++;
     }
     if(i2>9)
     {
             i2=0;
             i1++;
     }
     if(i1>9)i1=0;
     INTCON.INT0IF=0;
}
   
     void main()
{
     TRISB=0xFF;
     TRISC=0;
     TRISD=0;
     INTCON.INT0IE=1;
     INTCON.INT0IF=0;
     INTCON2.INTEDG0=0;
     INTCON.GIE=1;
     while(1)
     {
             PORTD=0xDF;
             PORTC=segment[i1];
             delay_ms(10);
             PORTD=0xEF;
             PORTC=segment[i2];
             delay_ms(10);
             PORTD=0xF7;
             PORTC=segment[i3];
             delay_ms(10);
             PORTD=0xFB;
             PORTC=segment[i4];
             delay_ms(10);
             PORTD=0xFD;
             PORTC=segment[i5];
             delay_ms(10);
             PORTD=0xFE;
             PORTC=segment[i6];
             delay_ms(10);
      }

}
       
       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus

   3. อธิบายการทำงานของโปรแกรม 

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 4

ส่วนประกอบงานวิชา ไมโครคอนโทรนเลอร์ ครั้งที่ 4

ใบรายงานผลการปฏิบัติงาน

     1. Code Program ที่เขียนขึ้น ด้วยโปรแกรมMicro  C    พร้อมอธิบายโปรแกรม#define digit1 PORTB.F6
     #define digit2 PORTB.F7

     unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
      int i=6,j=0;

     void interrupt()
{
     j--;
     if(j<0)
     {
            j=9;
            i--;
     }
     if(i==0&&j==0)
     {
            T0CON.TMR0ON=0;
            PORTB.F5=1;
     }
     TMR0H=0xC2;
     TMR0L=0xF7;
     INTCON.TMR0IF=0;
}
   
     void main()
{
     TRISB=0x01;
     TRISC=0;
     PORTB.F5=0;
     T0CON=0x05;
     TMR0H=0xC2;
     TMR0L=0xF7;
     INTCON.TMR0IE=1;
     INTCON.TMR0IF=0;
     INTCON.GIE=1;
     while(1)
     {
             if(PORTB.F0==0)T0CON.TMR0ON=1;
             digit1=0;digit2=1;
             PORTC=segment[i];
             delay_ms(50);
             digit1=1;digit2=0;
             PORTC=segment[j];
             delay_ms(50);
     }
}


       
       2. ภาพจำลองการทำงานด้วยโปรแกรม Proteus



   3. อธิบายการทำงานของโปรแกรม