Preview 50% of the Answer Below
Answer Preview
Please find attachment. Read this well and use it to enhance as well as develop your understanding and knowledge about the given assignment. If you have any queries feel free to send me a message. Thanks
BEST OF LUCK :)
regards,
Dr. Charles Kennedy (expertsolution)
LM35 Based Digital Thermometer Circuit diagram :
This circuit diagram shows the connection between the LM35 temperature sensor, PIC16F877A microcontroller, and 4-digit seven-segment display. You should make connections according to this schematXX and if you want to XXXXXX pins, you should also make changes in XXX XXXX. XXX XX it XXXX XX you XXXXX understand XXX XXXXXXXXXXX XXXXXXX XXX XXXXXXX.
MikroC Code :
This XXXX XX XXXXXXX using XXXXXX XXX Pic compiler. XXXXXX a new XXXXXXX with XXXXXX XXXXXXXX by selecting PIC16F877A XXXXXXXXXXXXXXX XXX XXX frequency to 8MHz.
// define name XX each
XXXXXXX signal XXX 7-segment
sbit digit1 XX XXXXX.XX;
XXXX digit2 at PORTB.B1;
sbit digit3 at XXXXX.XX;
sbit digit4 at PORTB.B3;
// This XXXXX XXXXXX XXXXXX XXX XXXXXXX that will XX XXXX XX PORTD
unsigned charb binary_pattern[]={0x3F,0x06,0x5B,XXXX,XXXX,0x6D,XXXX,0x07,0x7F,XXXX};
// XXXXXXX Dp turn
XXXXXXXX XXXX XXXXXXXX[XX]= {XXXX,XXXX,0xDB,XXXX,0xE6,0xED,0xFD,XXXX,0xFF,0xE7};
// XXXX XX turn XX
// XXXXXXXXX XX XXXXX XXXXXX, XXXXXXX value XXX XXXXXX XXXXXXX
unsigned XXX XX,XX,XX,a4; // XXXXXXXXX XXXXXXXXX to store XXXX XX ad
int adc_value; //store output value XXXX XXXXXX XXXX functoio
unsigned XXX XXXXXX;
long tlong;
unsigned int voltage;
// XXXX XXXXXXXX retrive XXXX digita that XXXX XXXXXXXXX on XXXXXX
void XXXXXXXXXX(
XX = XXXXXXX / XXXXX; // holds 1000's digit
XX = ((XXXXXXX/XXXX)%10u); // XXXXX 100's XXXXX
XX = ((voltage/10u)%10u); // XXXXX 10th XXXXX
XX = (XXXXXXX%XXX); // holds unit digit XXXXX
}
// this function XXXXXXXX XXXXXXXX voltage XX XXXXX-segments
void XXXXXXXXXXXXXXX( )
{
XXXXX = XXXXXXXXXXXXXX[a2]; // XXXX 1000's XXXXX XXXX XX XXXXXX digit
XXXXXX = X; // XXXX XX forth display XXXX
delay_ms(3)
XXXXXX = X; // XXXX XXX XXXXX display unit
PORTD = display1[a3]; // send 100's XXXXX data XX 3rd digit
digit2 = X; // turn XX 3rd XXXXXXX XXXX
XXXXXXXX(X)
digit2 = 1; // turn off XXX XXXXXXX unit
PORTD = binary_pattern[XX]; // send XXXX XXXXX data XX XXX digit
XXXXXX = 0; // turn on XXX XXXXXXX XXXX
XXXXXXXX(3)
digit3 = X; // turn off XXX display XXXX
PORTD=XXXXXXXXXXXXXX[XX]; // send unit place XXXX to XXX digit
digit4 = 0; // turn on XXX display XXXX
XXXXXXXX(X)
XXXXXX = X; // turn off XXX XXXXXXX unit
XXXX XXXXXXXXX( )
get_digits(); // XXXX XXXXXXXX XX XXXXX XXXX
XXXXXXXXXXXXXXX(); //call XXXXXXXXXXXX() XXXXXXXX XX XXXXXX XXXXX XX seven XXXXXXX
T0IF_bit = X; // clear source of timer0 XXXXXXXXX
XXXX main(void)
TMR0 = 0; // timer0 reset bit
XXXXXXXXXX = XXXX; // XXXXXX prescalar value X:XX for timer0
XXXXXX = 0xA0; // turn on global interrupt and timer0 overflow interrupt
XXXXX = XXXX; //define PORTD XX a output pin
PORTD=XXXX; // XXXXXXXXXX XXXXX pins XX active
low
TRISB=0x00;// XXX XXXXX XX a XXXXXX XXXX
// XXX control pins pins initially active XXXX
digit1 = X;
XXXXXX = X;
XXXXXX = X;
digit4 = 1;
XXXXX(X)
{
adc_value = ADC_Read(X); // XXXX data XXXX channel 0
tlong = (float)XXXXXXXXX*4.XXXXXXXX;
//converts voltage XXXX temperature
voltage = tlong;
}
}