บทความ

กำลังแสดงโพสต์จาก 2020

วงจรขับ LED สองขั้ว

รูปภาพ
Components Required 8051 Microcontroller (AT89C51 is used here) Programmer for 8051 Microcontroller 11.0592 MHz Crystal Capacitors – 2 X 33pF, 10µF Resistors – 150Ω, 10KΩ X 2 Push Buttons X 3 Bipolar LED (two leads) Connecting Wires Breadboard Power Supply Code #include<reg51.h> sbit red = P0^0; sbit green = P0^1; sbit red_switch = P0^6; sbit green_switch = P0^7; unsigned char i=0; void delay (int); void main() { red=0; green=0; while(1) { red=0; green=0; while(1) { if(red_switch==0) { green=0; red=1; while(red_switch==0); } else if(green_switch==0) { green=1; red=0; while(green_switch==0); } } }

อาทิตย์ติดตามแผงวงจรพลังงานแสงอาทิตย์

รูปภาพ
ส่วนประกอบสำคัญ Solar panel ATmega328 Micro Controller Light Dependent Resistor (LDR) x 2 10KΩ x 3 Servo Motor 16MHz Crystal 22pF Ceramic Capacitors x 2 Push Button Breadboard Cardboard Connecting Wires Code #include <Servo.h> Servo myservo;  int ldr1 = 4; int ldr2 = 5; int val1; int val2;  int pos=90; void setup() {   myservo.attach(11);   Serial.begin(9600);   myservo.write(pos);  }     void loop() {   val1 = analogRead(ldr1);              val2 = analogRead(ldr2);   val1 = map(val1, 0, 1023, 0, 180);      val2 = map(val2, 0, 1023, 0, 180);      if(val1 > (val2+50))   {        if(pos<180)      pos=pos+1;     myservo.write(pos);     Serial.println("backward");            delay(10);          }   else if(val2 > (val1+50))   {     if(pos>0)      pos=pos-1; myservo.write(pos);     Serial.println("forward");            delay(10);   }                     }

การควบคุมมอเตอร์โดยใช้ไมโครคอนโทรลเลอร์ 8051 & L293D

รูปภาพ
ส่วนประกอบที่จำเป็น AT89C51 (8051 Microcontroller) L293D Motor Driver 5V Bipolar Stepper Motor 16X2 LCD Diaplay 11.0592 MHz Quartz Crystal 10KΩ Resistors X 2 10KΩ POT 8x 1KΩ Resistor Pack 33pF Ceramic Capacitors X 2  10μF/16V Capacitor Push Buttons X 4 330Ω Resistor 5V Power Supply Code #include<reg51.h> #define lcd P0 sbit rs=P2^0; sbit e=P2^1; sbit sw1=P1^2; sbit sw2=P1^1; sbit sw3=P1^3; sbit sw4=P1^0; sbit forward = P3^0; sbit backward = P3^1; sbit stop = P3^2; void delay (int); void cmd (unsigned char); void display (unsigned char); void string (char *); void init (void); void delay (int d) { unsigned char i; for(;d>0;d--) { for(i=250;i>0;i--); for(i=248;i>0;i--); } } void cmd (unsigned char c) { lcd=c; rs=0; e=1; delay(10); e=0; } void display (unsigned char c) { lcd=c; rs=1; e=1; delay(10); e=0; } void string (char *p) { while(*p) { display(*p++); } } void init (void) {

แผนภาพวงจรของการควบคุมความเร็วมอเตอร์กระแสตรงแบบ PWM โดยใช้ไมโครคอนโทรลเลอร์

รูปภาพ
ส่วนประกอบวงจร 8051 ไมโครคอนโทรลเลอร์ 11.0592 MHz Crystal ตัวเก็บประจุ - 33pF x 2, 10µF ตัวต้านทาน - 1KΩ x 4, 10KΩ x 2 มอเตอร์ 12V DC L298N ขับมอเตอร์ กดปุ่ม x 5 1KΩ x 8 ตัวต้านทานแบบดึงขึ้น สายเคเบิลอนุกรม แบตเตอรี่หรืออะแดปเตอร์ 12V สายเชื่อมต่อ Code #include<reg51.h> sbit PWM_Pin = P0^0;   sbit low = P0^4; sbit medium = P0^5; sbit high = P0^6; sbit off = P0^7; void InitPWM_timer(void); unsigned char PWM = 0;   unsigned int temp = 0;    char a=1; int main(void) { low=1; medium=1; high=1; off=1; PWM_Pin=0; InitPWM_timer();                 while(1)                   {    if(low==0) { PWM=102; a=0; } else if(medium==0) { PWM=153; a=0; } else if(high==0) { PWM=255; a=0; } else if(off==0) { a=1; PWM_Pin=0; } } }

ไฟ LED เชื่อมต่อกับ 8051

รูปภาพ
ไฟ LED เชื่อมต่อกับ 8051 ส่วนประกอบที่จำเป็น AT89C51 (ไมโครคอนโทรลเลอร์ 8051) 8 LEDs 8 ตัวต้านทาน - 1KΩ Crystal oscillator - 11.0592MHz 2 ตัวเก็บประจุ - 33pF 2 ตัวต้านทาน - 10KΩ  1 ตัวเก็บประจุ - 10μF  1 ปุ่มกด  โปรแกรมเมอร์ 8051  แหล่งจ่ายไฟ 5V Code #include<reg51.h> #define led P0 unsigned char i=0; void delay (int); void delay (int d) { unsigned char i=0; for(;d>0;d--) { for(i=250;i>0;i--);                 for(i=248;i>0;i--); } } void main() { while(1)//// led blink  { led=0xff; delay(1000); led=0x00; delay(1000); ++i; if(i==7) { i=0; break; }   } while(1)//// binary equivalent representation of 1byte data { led=i++; if(i==256) { i=0; break; } delay(500); } while(1); }

ใบงานที่ 9

รูปภาพ
void main() {   int i=3;   int j;   TRISC=0;     do {        switch (i)          {           case 1:            PORTC.F3=1;            delay_ms(200);            PORTC.F3=0;            delay_ms(200);            break;           case 2:            PORTC.F0=0;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;           case 3:            PORTC.F0=1;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;           case 4:            PORTC.F0=0;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;          }            j++;       }     while(j<5)  }

ใบงานที่ 8

รูปภาพ
code void main() {   int i=3;   int j;   TRISC=0;     while(j<5)     {     switch (i)     {       case 1:            PORTC.F3=1;            delay_ms(200);            PORTC.F3=0;            delay_ms(200);            break;        case 2:            PORTC.F0=0;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;         case 3:            PORTC.F0=1;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;        case 4:            PORTC.F0=0;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;     }            j++;    }  }

ใบงานที่ 7

รูปภาพ
code void main() {   int i=3; //   i = 1,2,3,4   TRISC=0;     while(1)     {     switch (i)     {       case 1:           //   i = 1            PORTC.F3=1;            delay_ms(200);            PORTC.F3=0;            delay_ms(200);            break;        case 2:            PORTC.F0=0;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;         case 3:        //   i = 3            PORTC.F0=1;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;        case 4:            PORTC.F0=0;            delay_ms(200);            PORTC.F0=0;            delay_ms(200);            break;     }   } }

ใบงานที่ 6

รูปภาพ
code void main() {   int i;   TRISC=0;        for (i = 0;i<5; i++)     {        PORTC.F0=1;         delay_ms(200);        PORTC.F0=0;            delay_ms(200);     }    for (i = 0;i<10; i++)     {        PORTC.F7=1;         delay_ms(200);        PORTC.F7=0;            delay_ms(200);     } }

การควบคุมสเต็ปเปอร์มอเตอร์โดยใช้ไมโครคอนโทรลเลอร์ 8051

รูปภาพ
ส่วนประกอบที่จำเป็น   AT89C51 (ไมโครคอนโทรลเลอร์ 8051)  L293D ไดรเวอร์มอเตอร์  5V Bipolar Stepper Motor  จอแอลซีดี 16X2 Diaplay  11.0592 MHz ผลึกคริสตัล  10KΩตัวต้านทาน X 2  10KΩ POT  แพ็คตัวต้านทาน 8x 1KΩ  33pF ตัวเก็บประจุเซรามิก X 2   ตัวเก็บประจุ10μF / 16V  กดปุ่ม X 4  ตัวต้านทาน330Ω  แหล่งจ่ายไฟ 5V code #include<reg51.h>  #define lcd P0 sbit rs=P2^0; sbit e=P2^1; sbit sw1=P1^2; sbit sw2=P1^1; sbit sw3=P1^3; sbit sw4=P1^0; sbit forward = P3^0; sbit backward = P3^1; sbit stop = P3^2; void delay (int); void cmd (unsigned char); void display (unsigned char); void string (char *); void init (void); void delay (int d) { unsigned char i; for(;d>0;d--) { for(i=250;i>0;i--); for(i=248;i>0;i--); } } void cmd (unsigned char c) { lcd=c; rs=0; e=1; delay(10); e=0; } void display (unsigned char c) { lcd=c; rs=1; e=1; delay(10); e=0; } void string

การควบคุมความเร็วมอเตอร์กระแสตรงแบบ PWM โดยใช้ไมโครคอนโทรลเลอร์

รูปภาพ
ส่วนประกอบวงจร 8051 ไมโครคอนโทรลเลอร์ 11.0592 MHz Crystal ตัวเก็บประจุ - 33pF x 2, 10µF ตัวต้านทาน - 1KΩ x 4, 10KΩ x 2 มอเตอร์ 12V DC L298N ขับมอเตอร์ กดปุ่ม x 5 1KΩ x 8 ตัวต้านทานแบบดึงขึ้น สายเคเบิลอนุกรม แบตเตอรี่หรืออะแดปเตอร์ 12V สายเชื่อมต่อ code #include<reg51.h> sbit PWM_Pin = P0^0;     sbit low = P0^4; sbit medium = P0^5; sbit high = P0^6; sbit off = P0^7; void InitPWM_timer(void); unsigned char PWM = 0;    unsigned int temp = 0;     char a=1; int main(void) { low=1; medium=1; high=1; off=1; PWM_Pin=0; InitPWM_timer();                       while(1)                    {    if(low==0) { PWM=102; a=0; } else if(medium==0) { PWM=153; a=0; } else if(high==0) { PWM=255; a=0; } else if(off==0) { a=1; PWM_Pin=0; } } } void InitPWM_timer (void) { TMOD &= 0xF0;   

ไฟ LED เชื่อมต่อกับ 8051

รูปภาพ
ส่วนประกอบที่จำเป็น AT89C51 (ไมโครคอนโทรลเลอร์ 8051) 8 LEDs 8 ตัวต้านทาน - 1KΩ Crystal oscillator - 11.0592MHz 2 ตัวเก็บประจุ - 33pF 2 ตัวต้านทาน - 10KΩ  1 ตัวเก็บประจุ - 10μF  1 ปุ่มกด  โปรแกรมเมอร์ 8051  แหล่งจ่ายไฟ 5V code #include<reg51.h> #define led P0 unsigned char i=0; void delay (int); void delay (int d) { unsigned char i=0; for(;d>0;d--) { for(i=250;i>0;i--);                 for(i=248;i>0;i--); } } void main() { while(1)//// led blink  { led=0xff; delay(1000); led=0x00; delay(1000); ++i; if(i==7) { i=0; break; }   } while(1)//// binary equivalent representation of 1byte data { led=i++; if(i==256) { i=0; break; } delay(500); } while(1); }

การเชื่อมต่อมอเตอร์ DC กับไมโครคอนโทรลเลอร์ 8051

รูปภาพ
ส่วนประกอบที่จำเป็น AT89C51 (ไมโครคอนโทรลเลอร์ 8051) โปรแกรมเมอร์ 8051 สายเคเบิลโปรแกรม แบตเตอรี่ 12V DC หรืออะแดปเตอร์ L293D ขับมอเตอร์ มอเตอร์กระแสตรง ตัวเก็บประจุด้วยไฟฟ้า - 10uF 2 ตัวเก็บประจุเซรามิก - 33pF ตัวต้านทาน 10k (1/4 วัตต์) - 4 ปุ่มกด - 3 สายเชื่อมต่อ CODE #include<reg51.h> sbit switch1=P2^0; sbit switch2=P2^1; sbit clk=P3^0; sbit anticlk=P3^1; void main() { switch1=switch2=1; //making P2.0 and P2.1 as inputs switch1=switch2=0; clk=anticlk=0; while(1) { if((switch1)) clk=1; else if((switch2)) anticlk=1; else P3=0x00; } }

ใบงานที่ 5

รูปภาพ
code #define sw1 PORTB.F2 #define sw2 PORTB.F6 #define LED_YELLOW PORTC.F0 #define LED_GREEN PORTC.F1 void main() {      TRISB=0xFF;      TRISC=0;      PORTC=0;      while(1)      {              if(sw1==0)              {                     LED_YELLOW=1;                     if(sw2==0)LED_GREEN=1;                     else LED_GREEN=0;              }              else if(sw2==0)LED_GREEN=1;              else              {                     LED_YELLOW=0;                     LED_GREEN=0;              }      } }

ใบงานที่ 4

รูปภาพ
ใบงานที่  4  code #define digit1 PORTB.F6 #define digit2 PORTB.F7 void main() {      TRISB=0;      TRISC=0;      while(1)      {              digit1=1;              digit2=0;              PORTC=~0x06;              delay_ms(50);              digit1=0;              digit2=1;              PORTC=~0x07;              delay_ms(50);       } }

ใบงานที่ 2

รูปภาพ
ใบงานที่ 2   code #define digit1 PORTB.F5 #define digit2 PORTB.F6 #define digit3 PORTB.F7 unsigned char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char i,j; void interrupt() {      if(INTCON.INT0IF==1)      {             i++;             if(i>9)i=0;             INTCON.INT0IF=0;      }      if(INTCON3.INT1IF==1)      {             j++;             if(j>9)j=0;             INTCON3.INT1IF=0;      } } void main() {    TRISB=0x03;    TRISC=0;    INTCON.INT0IE=1;    INTCON.INT0IF=0;    INTCON2.INTEDG0=0;    INTCON3.INT1IE=1;    INTCON3.INT1IF=0;    INTCON2.INTEDG1=0;    INTCON.GIE=1;    while(1)    {            digit1=0;digit2=1;digit3=1;            PORTC=segment[i];            delay_ms(25);            digit1=1;digit2=0;digit3=1;            PORTC=~0x3F;            delay_ms(25);            digit1=1;digit2=1;digit3=0;            PORTC=segment[j];            delay_ms(25);     } }

ใบงานที่ 3

รูปภาพ
ใบงานที่ 3 code void main() {       char segment[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};       int i=0;       TRISC=0;       PORTC=segment[0];       while(1)       {          delay_ms(500);          i=i+1;          if(i==10)i=0;          PORTC=segment[i];       } }