บทความ

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

รูปภาพ
แผนภาพวงจรของการควบคุมความเร็วมอเตอร์กระแสตรงแบบ 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)  {...

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

รูปภาพ
ไฟ 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); }

ใบงานที่12

รูปภาพ
ใบงานที่12 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;            d...

ใบงานที่13

รูปภาพ
ใบงานที่13 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; ...

ใบงานที่11

รูปภาพ
ใบงานที่11 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;          ...

ใบงานที่10

รูปภาพ
ใบงานที่10 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);     } }

ใบงานที่2

รูปภาพ
ใบงานที่2 #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)...