Showing posts with label 8051. Show all posts
Showing posts with label 8051. Show all posts

Sunday, 7 December 2014

Embedded C code for UART serial communication

#include<reg51.h>
//#include"delay.h"
//#include"74hc595.h"

#ifndef _74hc595_h_
#define _74hc595_h_
sbit ds=P3^0;	//connect to serial input pin of 74hc595
sbit clk=P3^1;	//connect to clock input
sbit _mr=P3^2;	//connect to reset input
#define rst_74hc595_mr=0;_mr=1;	//to reset a device
//routine to convert 8bit parellel to 1bit serial msb first
void write_74hc595(unsigned char dat)
{
unsigned char i;
	for(i=0;i<=7;i++)
	{
		clk=0;
		ds=(dat&(0x80>>1))?1:0;
		clk=1;
	}
//extra clock for moving from shift register to storage register
	clk=0;
	clk=1;
//rst_74hc595 //reset shift register(optional)
}



void main()
{
unsigned int i;
for(i=0;i<=255;i++)
{
write_74hc595(i);
//delay_ms(500);
}
while(1);
}
Read More

Saturday, 6 December 2014

#include<reg51.h>
code char str[]="welcome to vector";
data char t[20] _at_ 0x40;
xdata char t1[20] _at_ 0x1000;
main()
{
unsigned char i;
for(i=0;str[i];i++)
{
t[i]=t1[i]=str[i];
}
while(1);
}
Read More

Embedded C code for switching of LED

#include<reg51.h>
//sfr P2=0x0a0;
sbit sw1=P2^0;
sbit sw2=P2^1;
sbit sw3=P2^2;
sbit sw4=P2^3;
sbit led1=P2^4;
sbit led2=P2^5;
sbit led3=P2^6;
sbit led4=P2^7;

main()
{
while(1)
{
led1=sw1;
led2=sw2;
led3=sw3;
led4=sw4;
}
Read More

Embedded C code for LCD display


#include<reg51.h>
//#include"lcd8.h"

#define lcd_data P0
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;

void write_lcd(unsigned char dat)
{
lcd_data=dat;
RW=0;
EN=1;
EN=0;
//delay_ms(2);
}

void cmd_lcd(unsigned char cmd)
{
RS=0;
write_lcd(cmd);
}

void disp_lcd(unsigned char c)
{
RS=1;
write_lcd(c);
}

void init_lcd(void)
{
cmd_lcd(0x01);
cmd_lcd(0x02);
cmd_lcd(0x06);
cmd_lcd(0x0e);
cmd_lcd(0x38);
cmd_lcd(0x80);
}

void str_lcd(char *s)
{
while(*s)
disp_lcd(*s++);
}

void int_lcd(unsigned int n)
{
char a[5]={0},i=0;
if(n==0)
{
disp_lcd('0');
return;
}

else
{
while(n>0)
{
a[i++]=((n%10)+48);
n=n/10;
}
for(--i;i>=0;i--)
{
disp_lcd(a[i]);
}
}
}

void float_lcd(float f)
{
int i;
unsigned char j;
i=f;
int_lcd(i);
disp_lcd('.');
for(j=0;j<3;j++)
{
f=(f-i)*10;
i=f;
int_lcd(i);
}
}


main()
{
init_lcd();
disp_lcd('v');
str_lcd("hello");
cmd_lcd(0xc0);
int_lcd(1234);
float_lcd(56.34);
while(1);
{
}
}
Read More

Embedded C code for 3x3 keypad matrix

#ifdef _keypad_h_
#define _keypad_h_
sbit r0=p3^0;sbit c0=p3^4;
sbit r1=p3^1;sbit c1=p3^5;
sbit r2=p3^2;sbit c2=p3^6;
sbit r3=p3^3;sbit c3=p3^7;
code unsigned char keypad_lut[4][4]=
{
1,2,3,4,
5,6,7,8,
9,10,11,12,
13,143,15,16
};
bit colscan()
{
return(c0&c1&c2&c3);
}
unsigned char keyscan()
{
unsigned char row,col;
c0=c1=c2=c3=1;
r0=r1=r2=r3=0;
while(colscan());
r0=0;
r1=r2=r3=1;
if(!colscan())
{
row=0;goto colcheck;
}

r1=0;
r0=r2=r3=1;
if(!colscan())
{
row=1; goto colcheck;
}

r2=0;
r0=r2=r3=1;
if(!colscan())
{
row=2; goto colcheck;
}

r3=0;
r0=r1=r3=1;
if(!colscan())
{
row=3; goto colcheck;
}

colcheck:
if(c0==0)
col=0;
else if(c1==0)
col=1;
else if(c2==0)
col=2;
else if(c3==0)
col=3;
return keypad_lut[row][col];
}
#endif
Read More
sbit scl=P3^0;
sbit sda=P3^1;
void i2c_start(void);
void i2c_write(unsigned char dat);
void i2c_ack(void);
void i2c_stop(void);
unsigned char i2c_read(void);
void i2c_noack(void);
void i2c_device_write(unsigned char sa, unsigned char addr,unsigned char dat);
unsigned char i2c_device_read(unsigned char sa,unsigned char dat);
///////////////////////////////////////////////////////
void i2c_start(void)
{
scl=1;
sda=1;
sda=0;
}

void i2c_write(unsigned char dat)
{
unsigned char i;
	for(i=0;i<=7;i++)
	{
	scl=0;
	sda=(dat&(0x80>>i))?1:0;
	scl=1;
	}
}

void i2c_ack(void)
{
scl=0;
sda=1;
scl=1;
scl=0;
}

void i2c_stop(void)
{
scl=0;
sda=0;
scl=1;
sda=1;
}

void i2c_device_write(unsigned char sa,unsigned char addr,unsigned char dat)
{
i2c_start();
i2c_write(sa);
i2c_ack();
i2c_write(addr);
i2c_ack();
i2c_write(dat);
i2c_ack();
i2c_stop();
//delay_ms(9);
}

unsigned char i2c_read(void)
{
unsigned char buff=0x00,i;
sda=1;
	for(i=0;i<=7;i++)
	{
	scl=1;
	if(sda)
	buff=buff|(0x80>>i);
	scl=0;
	}
	return buff;
}

void i2c_noack()
{
scl=0;
sda=1;
scl=1;
}

unsigned char i2c_device_read(unsigned char sa,unsigned char addr)
{
unsigned char buff;
i2c_start();
i2c_write(sa);
i2c_ack();
i2c_write(addr);
i2c_ack();
i2c_start();
i2c_write(sa|1);
i2c_ack();
buff=i2c_read();
i2c_noack();
i2c_stop();
return buff;
}

i2cdriver.c
#include<reg51.h>
#include"i2c.h"
char t _at_ 0x30;
main()
{
i2c_device_write(0xa0,0x00,'U');
t=i2c_device_read(0xa0,0x00);
while(1);
}
Read More