
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D7 at RD2_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD4_bit;
sbit LCD_D4 at RD5_bit;
// Pin direction
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;
char alpha[10] = "LEARN";
void main() {
Lcd_Init(); Delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1, 1, "Hello!");
Lcd_Out(2, 1, "WORLD");
Lcd_Out(2, 7, alpha);
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RD1_bit;
sbit LCD_D6 at RD0_bit;
sbit LCD_D5 at RC3_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISC3_bit;
sbit LCD_D4_Direction at TRISC2_bit;
void main() {
LCD_init();
Delay_ms(500);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(100); Lcd_Cmd(_LCD_CLEAR);
Delay_ms(100);
while(1) {
Lcd_Out(1, 1, "LEARNING");
Delay_ms(2000);
Lcd_Out(2, 1, "MICROCONTROLLERS");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(100);
} }
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int count;
char count1[3];
void main() {
Lcd_Init();
Delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(10);
Lcd_Cmd(_LCD_CLEAR);
TRISB.F0 = 1; // add
PORTB.F0 = 0;
Delay_ms(100);
TRISB.F1 = 1; /// sub
PORTB.F1 = 0;
Delay_ms(100);
count = 0;
while(1)
{
if ( PORTB.F0 == 1 )
{
while(1)
{
if ( PORTB.F0 == 0 )
{
break;
}
}
count = count + 1;
}
else if ( PORTB.F1 == 1 )
{
while(1)
{
if ( PORTB.F1 == 0 )
{
break;
}
}
count = count - 1;
}
else
{
IntToStr(count, count1);
Lcd_Out(1, 1, count1);
Lcd_Out(1, 7, " ");
}
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int count;
char count1[3];
void main() {
Lcd_Init();
Delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(10);
Lcd_Cmd(_LCD_CLEAR);
TRISB.F0 = 1; // add
PORTB.F0 = 0;
Delay_ms(100);
TRISB.F1 = 1; /// sub
PORTB.F1 = 0;
Delay_ms(100);
count = 0;
while(1)
{
if ( PORTB.F0 == 1 )
{
while(1)
{
if ( PORTB.F0 == 0 )
{
break;
}
}
count = count + 1;
}
else if ( PORTB.F1 == 1 )
{
while(1)
{
if ( PORTB.F1 == 0 )
{
break;
}
}
count = count - 1;
}
else
{
IntToStr(count, count1);
Lcd_Out(1, 1, count1);
Lcd_Out(1, 7, " ");
}
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
void main() {
Lcd_Init();
Delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(10);
Lcd_Cmd(_LCD_CLEAR);
TRISB.F0 = 1; // shift right button
PORTB.F0 = 0;
Delay_ms(100);
TRISB.F1 = 1; // shift left button
PORTB.F1 = 0;
Delay_ms(100);
while(1)
{
if ( PORTB.F0 == 1 )
{
Delay_ms(50);
if ( PORTB.F0 == 1 )
{
Lcd_Cmd(_LCD_SHIFT_RIGHT);
}
}
else if ( PORTB.F1 == 1 )
{
Delay_ms(50);
if ( PORTB.F1 == 1 )
{
Lcd_Cmd(_LCD_SHIFT_LEFT);
}
}
Lcd_Out(1, 1, "LM");
Delay_ms(300);
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int inc = 0;
int dec = 100;
char inc1[10];
char dec1[10];
void main() {
Lcd_Init();
Delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(10);
Lcd_Cmd(_LCD_CLEAR);
while(1)
{
do
{
inc = inc + 1;
Delay_ms(20);
dec = dec - 1;
Delay_ms(20);
IntToStr(inc, inc1);
Delay_ms(20);
IntToStr(dec, dec1);
Delay_ms(20);
Lcd_Out(1, 4,inc1 );
Delay_ms(20);
Lcd_Out(2, 4,dec1 );
Delay_ms(200);
}while(inc < 100 );
inc = 0;
dec = 100;
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int inc;
char inc1[10];
void main() {
Lcd_Init();
Delay_ms(200);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(20);
inc = 0;
while(1)
{
do
{
IntToStr(inc, inc1);
Delay_ms(20);
Lcd_Out(1, 1,inc1 );
Delay_ms(160);
Lcd_Out(1, 8,inc1 );
Delay_ms(160);
Lcd_Out(2, 1,inc1 );
Delay_ms(160);
Lcd_Out(2, 8,inc1 );
Delay_ms(160);
inc = inc + 1;
Delay_ms(20);
}while(inc < 100 );
inc = 0;
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int inc;
char inc1[10];
void main() {
Lcd_Init();
Delay_ms(200);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(20);
inc = 0;
while(1)
{
do
{
IntToStr(inc, inc1);
Delay_ms(20);
Lcd_Cmd(_LCD_FIRST_ROW);
Lcd_Out_Cp(inc1);
Delay_ms(160);
Lcd_Out_Cp(inc1);
Delay_ms(160);
Lcd_Cmd(_LCD_SECOND_ROW);
Lcd_Out_Cp(inc1);
Delay_ms(160);
Lcd_Out_Cp(inc1);
Delay_ms(160);
inc = inc + 1;
Delay_ms(20);
}while(inc < 100 );
inc = 0;
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int inc;
int inc2;
int inc4;
int inc6;
char inc3[10];
char inc1[10];
char inc5[10];
char inc7[10];
void main() {
Lcd_Init();
Delay_ms(200);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(20);
inc = 0;
inc2 = 0;
inc4 = 0;
inc6 = 0;
while(1)
{
do
{
IntToStr(inc, inc1);
Delay_ms(20);
IntToStr(inc2, inc3);
Delay_ms(20);
IntToStr(inc4, inc5);
Delay_ms(20);
IntToStr(inc6, inc7);
Delay_ms(20);
Lcd_Cmd(_LCD_FIRST_ROW);
Lcd_Out_Cp(inc1);
Delay_ms(160);
Lcd_Out_Cp(inc3);
Delay_ms(160);
Lcd_Cmd(_LCD_SECOND_ROW);
Lcd_Out_Cp(inc5);
Delay_ms(160);
Lcd_Out_Cp(inc7);
Delay_ms(160);
inc = inc + 1;
Delay_ms(20);
inc2 = inc2 + 3;
Delay_ms(20);
inc4 = inc4 + 6;
Delay_ms(20);
inc6 = inc6 + 9;
Delay_ms(20);
}while(inc < 100 );
inc = 0;
inc2 = 0;
inc4 = 0;
inc6 = 0;
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int inc;
int inc2;
int inc4;
int inc6;
char inc3[10];
char inc1[10];
char inc5[10];
char inc7[10];
void main() {
Lcd_Init();
Delay_ms(200);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(20);
inc = 0;
inc2 = 0;
inc4 = 0;
inc6 = 0;
while(1)
{
do
{
IntToStr(inc, inc1);
Delay_ms(20);
IntToStr(inc2, inc3);
Delay_ms(20);
IntToStr(inc4, inc5);
Delay_ms(20);
IntToStr(inc6, inc7);
Delay_ms(20);
Lcd_Cmd(_LCD_FIRST_ROW);
Lcd_Out_Cp(inc1);
Delay_ms(160);
Lcd_Out_Cp(inc3);
Delay_ms(160);
Lcd_Cmd(_LCD_SECOND_ROW);
Lcd_Out_Cp(inc5);
Delay_ms(160);
Lcd_Out_Cp(inc7);
Delay_ms(160);
inc = inc + 1;
Delay_ms(20);
inc2 = inc2 + 3;
Delay_ms(20);
inc4 = inc4 + 6;
Delay_ms(20);
inc6 = inc6 + 9;
Delay_ms(20);
}while(inc < 100 );
inc = 0;
inc2 = 0;
inc4 = 0;
inc6 = 0;
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
int xx;
int yy;
int zz;
char x1[3];
char y1[3];
char z1[3];
void main() {
Lcd_Init();
Delay_ms(100);
ADC_Init();
Delay_ms(100);
TRISC.F3 = 0;
PORTC.F3 = 0;
Delay_ms(50);
TRISD.F0 = 0;
PORTD.F0 = 0;
Delay_ms(50);
TRISD.F1 = 0;
PORTD.F1 = 0;
Delay_ms(50);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
while(1)
{
xx = ADC_Read(0);
Delay_ms(30);
IntToStr(xx, x1);
Delay_ms(30);
Lcd_Out(1, 1, "x");
Lcd_Out(1, 2, x1);
Delay_ms(30);
yy = ADC_Read(1);
Delay_ms(30);
IntToStr(yy, y1);
Delay_ms(30);
Lcd_Out(1, 8, "y");
Lcd_Out(1, 9, y1);
Lcd_Out(1, 15, " ");
Delay_ms(30);
zz = ADC_Read(2);
Delay_ms(30);
IntToStr(zz, z1);
Delay_ms(30);
Lcd_Out(2, 1, "z");
Lcd_Out(2, 2, z1);
Lcd_Out(2, 10, " ");
Delay_ms(30);
if ( xx > 370 )
{
Lcd_Out(2, 12, "+X >");
PORTD.F1 = 1;
PORTD.F0 = 0;
PORTC.F3 = 0;
}
else if (xx < 300 )
{
Lcd_Out(2, 12, "-X <");
PORTC.F3 = 1;
PORTD.F0 = 0;
PORTD.F1 = 0;
}
else
{
Lcd_Out(2, 12, " ");
PORTD.F0 = 1;
PORTD.F1 = 0;
PORTC.F3 = 0;
}
}
}
MikroC for PIC code:
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RC4_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISC4_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
float tmp;
float tmpC;
float fH;
char tmpC1[4];
char fH1[4];
void main() {
Lcd_Init();
Delay_ms(100);
ADC_Init();
Delay_ms(100);
TRISD.F0 = 0;
PORTD.F0 = 0;
Delay_ms(20);
Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(20);
while(1)
{
tmp = ADC_Read(0);
Delay_ms(50);
tmpC = ( tmp * 5 ) / 10 ;
Delay_ms(10);
fH = ( tmpC * 1.8 ) + 32;
Delay_ms(10);
FloatToStr_FixLen(tmpC, tmpC1, 4);
Delay_ms(10);
FloatToStr_FixLen(fH, fH1, 4);
Delay_ms(10);
Lcd_Out(1, 1, "Temp C =");
Lcd_Out(1, 13, " ");
Lcd_Out(1, 9, tmpC1);
Lcd_Out(1, 13, " ");
Delay_ms(30);
Lcd_Out(2, 1, "Temp F =");
Lcd_Out(2, 13, " ");
Lcd_Out(2, 9, fH1);
Lcd_Out(2, 13, " ");
Delay_ms(30);
if( tmpC > 29 )
{
PORTD.F0 = 1;
}
else
{
PORTD.F0 = 0;
}
}
}
// Lcd pinout settings
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D7 at RD5_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD2_bit;
sbit LCD_D4 at RC2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D7_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD2_bit;
sbit LCD_D4_Direction at TRISC2_bit;
float tmp;
float tmpC;
float fH;
char tmpC1[4];
char fH1[4];
unsigned char spi_out_H;
unsigned char spi_out_L;
int spi_out;
unsigned char buffer;
unsigned char meas_temp[7];
void main() {
SPI1_Init();
Delay_ms(100);
Lcd_Init();
Delay_ms(100);
ADC_Init();
Delay_ms(100);
TRISD.F0 = 0;
PORTD.F0 = 0;
Delay_ms(20);
TRISD.F6 = 0;
PORTD.F6 = 1;
Delay_ms(20);
//Lcd_Cmd(_LCD_CURSOR_OFF);
Delay_ms(20);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(20);
while(1)
{
PORTD.F6 = 0;
spi_out_H = SPI_Read(buffer); // upper 8 bit from MAX6675
spi_out_L = SPI_Read(buffer); // lower 8 bit
PORTD.F6 = 1; // CS=1
Delay_ms(300);
//spi_out = spi_out_H*256+spi_out_L;
spi_out = spi_out_H<<8 + spi_out_L; // formatting the result
Delay_ms(30);
if (spi_out_L && 0x02){ // Is thermocouple broken?
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(300);
Lcd_Out(1,1,"FAIL");
Delay_ms(300);
Lcd_Cmd(_LCD_CLEAR);
}
else {
spi_out = spi_out >> 4; // formatting result
IntToStr(spi_out, meas_temp);
Lcd_Out (1,1, "Temp: ");
Lcd_Chr_CP (meas_temp[2]); // thousands
Lcd_Chr_CP (meas_temp[3]); // hundreds
Lcd_Chr_CP (meas_temp[4]); // tens
Lcd_Chr_CP (meas_temp[5]); // ones
Lcd_Chr_CP (223); // degree symbol
Lcd_Out_CP ("C");
Delay_ms(300); // at least 220ms, see datasheet
}
Delay_ms(250); // at least 220ms, see datasheet
}
}
Hello Guys,
Welcome to learning microcontrollers,
Course is divided into 3 sections. Section one gets you started with the PIC16F877A microcontroller from the start. Section 2 gets you the required softwares. Section 3 contains the lectures on LM016 16x2 LCD interface PIC16F877A based projects. Tutorials will allow you to go through the programming process in such away that you will be able to get the required skills to play with the LCD using MikroC for PIC compiler and to make complex projects in the future as well.
Here is the course outline:
Introduction to PIC16F877A.
Lecture 1: Why PIC16F877A ?
Lecture 2: Introduction to PIC16F877A.
Lecture 3: Pins and Ports in PIC16F877A microcontroller.
Lecture 4: How to use datasheet of PIC16F877A ?
Download and Install MikroC for PIC and PICKIT3 programmer tool.
Lecture 5: Download and Install MikroC for PIC latest version.
Lecture 6: Download and Install PICKIT3 programmer tool. Setup attached as downloadables.
PIC16F877A interface LM016 lectures.
Lecture 7: MikroC for PIC LCD library a basic introduction and how to use.
Lecture 8: Interfacing PIC16F877A microcontroller with LM016 LCD.
Lecture 9: Display 2 inputs received from 2 push buttons on LM016 16x2 LCD using PIC16F877A
Lecture 10: Increment/decerement counter using 2 push buttons on LM016 LCD using PIC16F877A.
Lecture 11: Shift text left/right on LM016 LCD using PIC16F877A.
Lecture 12: Running multiple counters on 16x2 LCD LM016 using PIC16F877A.
Lecture 13: LM016 16x2 LCD run 4 counters using 1 variable with PIC16F877A MCU. Method 1
Lecture 14: LM016 16x2 LCD run 4 counters using 1 variable with PIC16F877A mcu. ( Method 2 )
Lecture 15: LM016 16x2 LCD run 4 counters using 2 variable with PIC16F877A mcu. ( Method 2 )
Lecture 16: LM016 16x2 LCD run 4 counters using 4 different variable with PIC16F877A MCU.
Lecture 17: PIC16F877A interface GY-61 ADXL335 Accelerometer sensor.
Lecture 18: PIC16F877A interface LM35 temp sensor. Display output in Celsius and Fahrenheit
Lecture19 : PIC16F877A interface K-Type thermocouple using MAX 6675 module.