บทความ

กำลังแสดงโพสต์จาก มกราคม, 2020

การควบคุมสเต็ปเปอร์มอเตอร์โดยใช้ไมโครคอนโทรลเลอร์ 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];       } }

ใบงานที่ 1

รูปภาพ
ใบงานที่ 1 code void main() {      unsigned char dice[]={0x08,0x22,0x2A,0x55,0x5D,0x77};      unsigned char i;      TRISC=0;      TRISB=0x01;      PORTC=0;      while(1)      {             if(PORTB.F0==0)             {                     PORTC=dice[i];                     delay_ms(3000);                     PORTC=0;             }             i++;             if(i>5)i=0;      } }