0% found this document useful (0 votes)
42 views17 pages

ES Programs-1

The document contains code for several microcontroller programs including: 1. A program that measures voltage from an analog pin and displays the reading on a 7-segment display. 2. A water level controller program that controls motors and LEDs based on sensor input readings. 3. A digital clock program that uses an RTC module to keep time and displays it on an LCD screen. The document provides microcontroller code examples for tasks like analog input, digital output, serial communication, LCD interfacing, and 7-segment display control.

Uploaded by

Sasi Dharan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views17 pages

ES Programs-1

The document contains code for several microcontroller programs including: 1. A program that measures voltage from an analog pin and displays the reading on a 7-segment display. 2. A water level controller program that controls motors and LEDs based on sensor input readings. 3. A digital clock program that uses an RTC module to keep time and displays it on an LCD screen. The document provides microcontroller code examples for tasks like analog input, digital output, serial communication, LCD interfacing, and 7-segment display control.

Uploaded by

Sasi Dharan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

PROGRAM – VOLTAGE MEASUREMENT

#include<16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#use I2C(master, sda=PIN_C4, scl=PIN_C3)
long int value;
int i=0;
unsigned char arr[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
Void write_seg (int x1,int x2)
{
unsigned char x=0;
x=(arr[x1]|0x80);
i2c_start ();
i2c_write (0x40);
i2c_write (arr[x1]|0x80);

i2c_stop ();
i2c_start ();
i2c_write (0x42);
i2c_write (arr[x2]);
i2c_stop ();
}
void main()
{
setup_adc_ports (RA0_ANALOG);
setup_adc (ADC_CLOCK_INTERNAL);
while(1)
{
set_adc_channel ( 0 );
value = read_adc();
i=((value*50)/255);
write_seg (i/10,i%10);
//printf(" %d.%d \n\r",i/10,i%10);
}
}
PROGRAM – WATER LEVEL CONTROLLER

#include<16f877a.h>
#include<stdio.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
volatile int a=0,b=0;
void main()
{
while(1)
{
a=input(PIN_D0);
b=input(PIN_D1);
printf("\n\r %d %d ",a,b);
b=a&b;
printf("%d",b);
if(b == 0)
{
output_high (PIN_D4); // MOT
output_high (PIN_D6); // LED:RED
output_low (PIN_D7); // LED:GREEN
}
else
{
output_low (PIN_D4); // MOT
output_low (PIN_D6); // LED:GREEN
output_high(PIN_D7); // LED:RED
}
if(a==0)
{
Output_ low (PIN_D6); // LED: GREEN
}
}
}
PROGRAM – DIGITAL CLOCK

#include <16F877A.H>
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#use I2C(master, sda=PIN_C4, scl=PIN_C3)
void set_rtc_time();
void get_rtc_time();
void lcd_init();
void delay(unsigned long del);
void lcd_cmd(unsigned char cmd);
void lcd_dat(unsigned char dat);
unsigned char time[]={0X56,0X38,0X10,0X01,0X01,0X11};
unsigned char readtime[0X06];
unsigned long int hour,second,minute,date,month,year;
unsigned int i;
unsigned char rtc[13];
unsigned char initi[5]={0x38,0x01,0x06,0x0C,0x80};
char x[]="REALTIME:";
void data_display(char x[])
{
output_high(pin_E0);
output_low(pin_E1);
output_low(pin_E2);
for(i=0;x[i]!='\0';i++)
{
output_D(x[i]);
output_high(pin_E2);
delay_us(500);
output_low(pin_E2);
}
}
void data_display1(unsigned char rtc[])
{
output_high(pin_E0);
output_low(pin_E1);
output_low(pin_E2);
for(i=0;x[i]!='\0';i++)
{
output_D(rtc[i]);
output_high(pin_E2);
delay_us(500);
output_low(pin_E2);
}
}
void main()
{
lcd_init();
data_display(x);
set_rtc_time();
while(1)
{
get_rtc_time();
printf("T: %x : %x : %x \t",hour,minute,second);
sprintf(rtc,"%02x:%02x:%02x ",hour,minute,second);
lcd_cmd(0xc0);
data_display1(rtc);
}
}
void set_rtc_time()
{
i2c_start();
i2c_write(0xa0);
i2c_write(0x02);
i2c_write(0x55);
i2c_write(0x15);
i2c_write(0x05);
i2c_stop();
}
void get_rtc_time()
{
i2c_start();
i2c_write(0xa0);
i2c_write(0x02);
i2c_stop();
i2c_start();
i2c_write(0xa1);
second = i2c_read(0);
i2c_stop();
i2c_start();
i2c_write(0xa0);
i2c_write(0x03);
i2c_stop();
i2c_start();
i2c_write(0xa1);
minute = i2c_read(0);
i2c_stop();
i2c_start();
i2c_write(0xa0);
i2c_write(0x04);
i2c_stop();
i2c_start();
i2c_write(0xa1);
hour = i2c_read(0);
i2c_stop();
}
void delay(unsigned long del)
{
while(del=del-1);
}
void lcd_cmd(unsigned char cmd)
{
output_low(pin_E0);
output_low(pin_E1);
delay(500);
output_d(cmd);
delay(500);
output_high(pin_E2);
delay(500);
output_low(pin_E2);
}
void lcd_init()
{
unsigned int k=0;
for(k=0;k<5;k++)
{
lcd_cmd(initi[k]);
}
}
PROGRAM – TEMPERATURE MEASUREMENT

#include<16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#use I2C(master, sda=PIN_C4, scl=PIN_C3)
float value;
unsigned int i=0;
unsigned char arr[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
void delay(unsigned long int del)
{
while(del--);
}
void write_seg(int x1,int x2)
{
i2c_start();
i2c_write(0x40);
i2c_write(arr[x1]);
i2c_stop();
i2c_start();
i2c_write(0x42);
i2c_write(arr[x2]);
i2c_stop();
}
void main()
{
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
while(1)
{
set_adc_channel( 2 );
value = read_adc();
value = value;
i=((int)(value));
i=(i*2);
printf(" Temperature in Cel %d \n\r",i);
if(i>=99){i=99;}
write_seg(i/10,i%10);
delay(48000);
}
}
PROGRAM – PC COMMUNICATION

#include<16f877a.h>
#include<stdio.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
void main()
{
while(1)
{
printf(" Vi Microsystems Pvt Ltd Chennai-95 \n");
}
}
PROGRAM – REMOTE CONTROL THROUGH FM LINK

#include<16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#use I2C(master, sda=PIN_C4, scl=PIN_C3)
float value;
unsigned int i=0;
unsigned char arr[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
void delay(unsigned long int del)
{
while(del--);
}
void write_seg(int x1,int x2)
{
i2c_start();
i2c_write(0x40);
i2c_write(arr[x1]);
i2c_stop();
i2c_start();
i2c_write(0x42);
i2c_write(arr[x2]);
i2c_stop();
}
void main()
{
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
while(1)
{
set_adc_channel( 2 );
value = read_adc();
value = value;
i=((int)(value));
i=(i*2);
printf(" Temperature in Cel %d \n\r",i);
if(i>=99){i=99;}
write_seg(i/10,i%10);
delay(48000);
}
}
PROGRAM – HOT CHAMBER CONTROLLER

#include<16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
float value;
unsigned int i=0;
void main()
{
while(1)
{
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel( 1 );
value = read_adc();
i=(int)(value*0.3);
printf(" %d \n\r",i);
if(i>40)
{
output_low(PIN_D0);
printf(" Above ");
}
else if(i<35)
{
output_high(PIN_D0);
printf(" Below ");
}
}
}
PROGRAM – OBSTACLE DETECTOR USING ULTRASONIC

#include<16f877a.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=GPS)
int i=0;int a1;char a[];
void delay(unsigned long del)
{
while(del--);
}
void lcd_cmd(unsigned char cmd)
{
output_low(pin_E0);
output_low(pin_E1);
delay(500);
output_D(cmd);
delay(500);
output_high(pin_E2);
delay(500);
output_low(pin_E2);
}
void lcd_dat(unsigned char dat)
{
output_high(pin_E0);
output_low(pin_E1);
delay(500);
output_D(dat);
delay(500);
output_high(pin_E2);
delay(500);
output_low(pin_E2);
}
void lcd_init(void)
{
lcd_cmd(0X38);
delay(500);
lcd_cmd(0X06);
delay(500);
lcd_cmd(0X0C);
delay(500);
lcd_cmd(0X01);
delay(500);
lcd_cmd(0X80);
delay(500);
}
void lcd_disp(unsigned char w[],unsigned char add)
{
unsigned char i=0;
for(i=0;w[i]!='\0';i++)
{
lcd_cmd(add+i);
lcd_dat(w[i]);
delay(500);
}
}
void lcd_con(unsigned int con)
{
lcd_dat(((con%1000)/100)+0x30);
lcd_dat(((con%100)/10)+0x30);
lcd_dat((con%10)+0x30);
}
void print()
{
unsigned char arr[]={"DISTANCE IN CMS"};
lcd_disp(arr,0x80);
}
void get()
{
do{;}while(getc()!='R');
a1=( (getc()-48)*100)+( (getc()-48)*10)+ (getc()-48);
}
void main()
{
lcd_init();
print();
while(1)
{
while(1)
{
get();
lcd_cmd(0xC0);
lcd_con(a1);
}
}
}
PROGRAM – SPRINKLER CONTROLLER

#include<16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
long int value;
int i=0;
void main()
{
while(1)
{
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel( 1 );
value = read_adc();
i=(int)(value/2);
printf("MOISTURE SENSOR: %3d \n",i);
if(i>50)
{
output_low(PIN_D0);
}
else
{
output_high(PIN_D0);
}
}
}
PROGRAM – LAMP CONTROLLER

#include<16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
long int value;
int i=0;
void main()
{
while(1)
{
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
set_adc_channel( 1 );
value = read_adc();
i=(int)(value/2);
printf("LDR SENSOR: %3d \n",i);
if(i>80)
{
output_low(PIN_D0);
}
Else
{
output_high(PIN_D0);
}
}
}

You might also like