วันอังคารที่ 25 กุมภาพันธ์ พ.ศ. 2563

งานหา micro 18


Interfacing LED 


#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);
}

งานหา micro 17


8 Channel Quiz Buzzer Circuit using Microcontroller


#include<reg51.h>

#define SEGMENT P2 // PORT2 to Segments of 7-Segment Display
#define SWITCH P1  // Input Switches (buttons) to PORT1

sbit buzz=P3^0; // Buzzer
sbit rst=P3^3; // Reset Switch (Reset the display) - not the microcontroller
sbit digit=P3^7; // 7-Segment Display Common Pin (to enable)


void delay (int); // Delay function

int x=0,y,z;
unsigned char ch[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; // Hexadecimal values from 0 to 9.

void delay (int d)
{
 unsigned char i;
 for(;d>0;d--)
 {
  for(i=250;i>0;i--);
  for(i=248;i>0;i--);
 }
}

void main()
{
 SWITCH=0xff;
 SEGMENT=0xff;
 digit=1;
 buzz=0;
 rst=1;
 
 while(1)
 {
  while(SWITCH==0xff); // wait until any button is pressed.
  
  while (SWITCH==0xfe) // Button 1 is pressed.
  {
   SEGMENT=ch[1];
   buzz=1;
   delay(1000); // Activate buzzer for 1 second.
   buzz=0;
   while(rst!=0); // display the digit until the reset is pressed.
  }
  
  while (SWITCH==0xfd) // Button 2 is pressed.
  {
   SEGMENT=ch[2];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  while (SWITCH==0xfb) // Button 3 is pressed.
  {
   SEGMENT=ch[3];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  while (SWITCH==0xf7) // Button 4 is pressed.
  {
   SEGMENT=ch[4];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  while (SWITCH==0xef) // Button 5 is pressed.
  {
   SEGMENT=ch[5];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  while (SWITCH==0xdf) // Button 6 is pressed.
  {
   SEGMENT=ch[6];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  while (SWITCH==0xbf) // Button 7 is pressed.
  {
   SEGMENT=ch[7];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  while (SWITCH==0x7f) // Button 8 is pressed.
  {
   SEGMENT=ch[8];
   buzz=1;
   delay(1000);
   buzz=0;
   while(rst!=0);
  }
  
  SEGMENT=0xff;
  rst=1;
  
}
}

งานหา micro 16


Bipolar LED Driver Circuit


#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)
 {
  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);
  }
 }
}

งานหา micro 15

Random Number Generator 


#include<reg51.h>
#define lcd P0

sbit rs=P2^0;
sbit e=P2^1;
sbit sw=P3^0;
sbit rst=P3^1;

unsigned int i=0;

void delay (int);
void display (unsigned char);
void cmd (unsigned char);
void string (char *);
void init (void);
void int_lcd(unsigned 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 cmd (unsigned char c)
{
 lcd=c;
 rs=0;
 e=1;
 delay(5);
 e=0;
}

void display (unsigned char c)
{
 lcd=c;
 rs=1;
 e=1;
 delay(5);
 e=0;
}
void string (char *p)
{
 while(*p)
 {
  display(*p++);
 }
}

void init (void)
{
 cmd(0x38);
 cmd(0x0c);
 cmd(0x01);
 cmd(0x80);
}

void int_lcd(unsigned int n)
{
 char a[4]={0},i=0;
   if(n==0)
  {
   display('0');
   return;
  }
 else
  {
   while(n>0)
    {
     a[i++]=(n%10)+48;
     n/=10;
    }
   for(--i;i>=0;i--)
    {
     display(a[i]);
    }
  }
}

void main()
{
 sw=1;
 rst=1;
 init();
 cmd(0x80);
 string(" Random Number  ");
 cmd(0xc0);
 string("   Generator    ");
 delay(2000);
 cmd(0x01);
 while(1)
 {
  cmd(0x80);
  string("Press the button");
  while(sw!=0)
   {
    i=++i;
    if(i==100)
     i=0;
   } 
  cmd(0x80);
  string("RAND NUM:       ");
  cmd(0x8a);
  int_lcd(i);
  while(rst!=0);
  //cmd(0x01);
 }
}

งานหา micro 14


Interfacing 16×2 LCD with 8051 Circuit Diagram


#include<reg51.h>
#define lcd P0

sbit rs=P2^0;
sbit e=P2^1;

void delay (int);
void cmd (char);
void display (char);
void custom (void);
void string (char *);
void init (void);

unsigned char custom_char[]= {0x00,0x04,0x0E,0x04,0x15,0x0E,0x04,0x00, 
                       0x00,0x04,0x0E,0x0E,0x0E,0x1F,0x04,0x00, 
                       0x00,0x0A,0x15,0x11,0x11,0x0A,0x04,0x00,
         0x0E,0x11,0x11,0x1F,0x1B,0x1B,0x1B,0x1F,
                       0x0E,0x11,0x10,0x1F,0x1B,0x1B,0x1B,0x1F,
         0x00,0x0E,0x15,0x1B,0x0E,0x0E,0x00,0x00,
                       };
                           
 
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 (char c)
{
 lcd=c;
 rs=0;
 e=1;
 delay(5);
 e=0;
}
void display (char c)
{
 lcd=c;
 rs=1;
 e=1;
 delay(5);
 e=0;
}
void custom (void)
{
 int k;
 cmd(0x40);
 for(k=0;k<48;k++)
 display(custom_char[k]);
 cmd(0x80);
}

void string (char *p)
{
 while(*p)
 {
  display(*p++);
 }
}
void init (void)
{
 cmd(0x38);
 cmd(0x0c);
 cmd(0x01);
 cmd(0x80);
}
void main()
{
 init();
 custom();
 string("Electronics Hub ");
 cmd(0xc0);
 string("    Presents    ");
 delay(2000);
 cmd(0x01);
 cmd(0x80);
 string("  Custom Chars  ");
 cmd(0xc0);
 string("  on 16x2 LCD   ");
 delay(2000);
 cmd(0x01);
 cmd(0x80);
 string("ABCDEFGHIJKLMNOP");
 cmd(0xc0);
 string("1234567890");
 cmd(0xca);
 display(0);
 display(1);
 display(2);
 display(3);
 display(4);
 display(5);
while(1);
}

งานหา micro 13


Voltmeter using 8051 Microcontroller


#include<reg51.h>
#define lcd P3
#define dat P2
sbit rs=P1^6;
sbit e=P1^7;


void delay (int);
void display (unsigned char);
void cmd (unsigned char);
void init (void);
void string (char *);
void intro (void);
char i=0;

 
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 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 *c)
{
 while(*c)
 {
  display(*c++);
 }
}
void init (void)
{
 cmd(0x38);
 cmd(0x01);
  cmd(0x0c);
 cmd(0x80);
}
void intro (void)
{
 string("  Electronics  ");
 cmd(0xc0);
 string("      Hub      ");
 delay(2000);
 cmd(0x01);
 string("    Digital    ");
 cmd(0xc0);
 string("   Voltmeter   ");
 delay(2000);
 cmd(0x01);
 cmd(0x80);
}

void main()
{
 unsigned int temp=0;
 unsigned int temp1=0;
 float val=0.0;
 
 init();
 intro();
 dat=0xff;
 while(1)
 {
  if(i==0)
  {
   string(" Volts - ");
   i++;
  }
  val=dat*0.02;  // 0.02 is resolution of adc
  val=val/0.2;   // 0.2 is nothing but (R2/(R1+R2)) resistor values in the voltage sensor
    cmd(0x89);
  if((val>=1.0) && (val<10.0))
  {
   display(' ');
    temp=val*1000;
    temp1=((temp/1000)+48);
    display(temp1);
   
   display('.');
  
    temp1=(((temp/100)%10)+48);
    display(temp1);
  }
  else if((val>=10.0) && (val<100.0))
  {
    temp=val*100;
    temp1=((temp/1000)+48);
    display(temp1);
  
   temp1=(((temp/100)%10)+48);
    display(temp1);
   
   display('.');
   
   temp1=(((temp/10)%10)+48);
    display(temp1);
  }
  else
  {
   display(' ');
   string("0.0");
  }
  delay(1000);
  }
 while(1);
}