Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

C coding help in MPLAB C18

Status
Not open for further replies.

engr.waqas

Full Member level 3
Joined
Jul 21, 2009
Messages
174
Helped
13
Reputation
26
Reaction score
10
Trophy points
1,298
Location
karachi,Pakistan
Activity points
2,357
mplab c18 lcd

I am putting analog input from 0 to 5 v in PIC 18.
Now the A/D result is saved in a register "result" type int.
Now i want to convert the values stored in "result" to ASCII and then to display on LCD.
I have Vref of A/D as 5 volt and using in 10 bit mode.
I want LCD to show fractional values too like 4.5 etc
can anyone give me its coding??
 

nikhil_damle

Advanced Member level 4
Joined
Dec 15, 2005
Messages
117
Helped
5
Reputation
10
Reaction score
2
Trophy points
1,298
Activity points
1,936
double to ascii c18

please go through the data sheet of the of the target processor and see the equation for the analog to digital conversation. the result in the ADC resister can be converted to the voltage and displayed on the LCD depending on the LCd the diaplay code will change
 

btbass

Advanced Member level 5
Joined
Jul 20, 2001
Messages
1,897
Helped
438
Reputation
880
Reaction score
287
Trophy points
1,363
Location
Oberon
Activity points
12,861
mplab c18 code

Code:
#include <stdio.h>

char buffer[8];

void convert(void)
  {
  int result;
  double voltage;

  voltage = (double)(result * 5.0 / 1024.0);
  sprintf(buffer, "%0.1f", voltage);
  }
 

engr.waqas

Full Member level 3
Joined
Jul 21, 2009
Messages
174
Helped
13
Reputation
26
Reaction score
10
Trophy points
1,298
Location
karachi,Pakistan
Activity points
2,357
double to int mplab

Dear Btbass
thanks a lot for your response but now i have problem that LCD data lines are connected to port D(D0 to D7).Now when i use the following code to send data stored in buffer[] i get syntax error.
PORTD=buffer[];
so how can i send the value stored in buffer[] to PORT D.
 

btbass

Advanced Member level 5
Joined
Jul 20, 2001
Messages
1,897
Helped
438
Reputation
880
Reaction score
287
Trophy points
1,363
Location
Oberon
Activity points
12,861
c18 lcd için printf

buffer is an array of char.
If you just want one decimal place, try

PORTD = buffer[0];
PORTD = buffer[1];
PORTD = buffer[2];
PORTD = buffer[3]; /* Will contain NULL */

or you could do it in a loop.
 

Prabakaran

Full Member level 3
Joined
Jan 22, 2007
Messages
168
Helped
9
Reputation
18
Reaction score
3
Trophy points
1,298
Location
Chennai(India)
Activity points
2,273
mplab c18 lcd printf

Dear engr.waqas

Use the following code to convert the ADC Count to get the Exact voltage Levels

Value = ReadADC(Channel Number)

value = (value * 5.00)/1024;

u get the value in decimal absoultue value. If u want in floating variables

Declare value as float

use this step
value = Readadc(channel number)
value = (value * 5)/1024;
printf("%f",value);

U get the value in floating point.
Check out this. If u need more i help u

Regards
Prabakaran
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top