You are on page 1of 8

LABREPORT # 5

Submitted by: Muhammad Hamid Ashraf FA08-BCE-032

Submitted to: Mr. Abdul Samad

Subject: Real Time Embedded Systems

Due Date: March 29,2012

In Lab-Task 1
Problem Statement:
Take analog input from the potentiometer and display the measured voltage on respective LEDs.

Circuit Diagram:

Code:
void main() { TRISC=0; TRISD=0; PORTC=0;PORTD=0; ADCON1.PCFG3=1; ADCON1.PCFG2=1; ADCON1.PCFG1=1; ADCON1.PCFG0=0; ADCON1.ADFM=1; ADCON0.CHS2=0; ADCON0.CHS1=0;

ADCON0.CHS0=0; ADCON0.ADCS1=1; ADCON0.ADCS0=1; ADCON0.ADON=1; while(1) { delay_ms(5);

ADCON0.F2=1; while(ADCON0.F2==1); //unsigned char Result=ADRESL +(ADRESH *256); PORTD=ADRESL; PORTC=ADRESH; } }

Post Lab-Task 1
Problem Statement:
Make the following circuit in Proteus. Take analog input from the potentiometer and display the measured voltage on LCD.

Circuit Diagram:

Code:
void lcd_init1(); void command(unsigned char cmd); void Data(unsigned char dcmd); int Result; void main() { TRISB.F0=0; TRISC = 0x00; PORTC = 0x01; TRISD = 0x00; PORTD = 0x00; ADCON1.PCFG3=1; ADCON1.PCFG2=1; ADCON1.PCFG1=1; ADCON1.PCFG0=0; ADCON1.ADFM=1; ADCON0.CHS2=0; ADCON0.CHS1=0; ADCON0.CHS0=0; ADCON0.ADCS1=1; ADCON0.ADCS0=1; ADCON0.ADON=1; lcd_init1(); while(1) { ADRESL=0x00;ADRESH=0x00; delay_ms(5); ADCON0.F2=1; while(ADCON0.F2==1); Result=ADRESL +(ADRESH *256); command(0x01); command(0x02); if(Result<10) { unsigned char value=0x30 | Result; Data(value); } else if(Result>10 && Result<100) { int number1=Result/10; int number2=Result%10; unsigned char character1=0x30 | number1; unsigned char character2=0x30 | number2; Data(character1); Data(character2); } else if(Result>100 && Result <1000) { int number1=Result/100; int tempnumb=Result%100;

int number2=tempnumb/10; int number3=tempnumb%10; unsigned char character1=0x30 | number1; unsigned char character2=0x30 | number2; unsigned char character3=0x30 | number3; Data(character1); Data(character2); Data(character3); } else if(Result>1000) {

Data(character4); PORTB.F0=1; }

} }

void lcd_init1() { command(0x03);

int number1=Result/1000; int tempnumb1=Result%1000; int number2=tempnumb1/100; int tempnumb2=tempnumb1%100; int number3=tempnumb2/10; int number4=tempnumb2%10; unsigned char character1=0x30 | number1; unsigned char character2=0x30 | number2; unsigned char character3=0x30 | number3; unsigned char character4=0x30 | number4; Data(character1); Data(character2); Data(character3);

command(0x02); delay_ms(1000); //delay after power up //command(0x30); command(0x28); command(0x28); command(0x28); command(0x28); command(0x08); command(0x01); command(0x06); command(0x02); command(0x0F); command(0x80);

} } void Data(unsigned char dcmd) { void command(unsigned char cmd) { PORTC.F0 =0; PORTD = cmd; PORTC.F1 =1; delay_us(1); PORTC.F1 =0; delay_ms(5); PORTD = (cmd << 4); PORTC.F1 =1; delay_us(1); PORTC.F1 =0; delay_ms(5); PORTC.F0 =1; PORTD = dcmd; PORTC.F1 =1; delay_us(1); PORTC.F1 =0; delay_ms(5); PORTD = (dcmd<<4); PORTC.F1 =1; delay_us(1); PORTC.F1 =0; delay_ms(5); }

Post Lab-Task 2
Problem Statement:
Make the proteus circuit as shown below. Take analog voltage from potentiometer convert it into digital value using PIC ADC and reconvert it into analog voltage using R2R ladder network.

Circuit Diagram:

Code:
void main() { TRISC=0; TRISD=0; PORTC=0;PORTD=0; ADCON1.PCFG3=1; ADCON1.PCFG2=1; ADCON1.PCFG1=1; ADCON1.PCFG0=0; ADCON1.ADFM=1; ADCON0.CHS2=0; ADCON0.CHS1=0; ADCON0.CHS0=0; ADCON0.ADCS1=1; ADCON0.ADCS0=1; ADCON0.ADON=1; while(1) { delay_ms(5); ADCON0.F2=1;

while(ADCON0.F2==1); //unsigned char Result=ADRESL +(ADRESH *256); PORTD=ADRESL;

PORTC=ADRESH; } }

You might also like