pic 16f877 et ds18s20 +cablage sur ISIS

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Projets fin d'études, mini-projets et des réalisations electroniques -> Mini-projets
AuteurMessage
Cameroon.png aurelienkam
Newbie



Messages : 3
Inscrit(e) le: 30/03/2011
Posté le 30/03/2011 15:59  
1301493559.zip (38 Ko)
pic 16f877 et ds18s20 +cablage sur ISIS


Bonjour à tous je suis nouveau dans le site et je m'appelle aurelien Kameni. J’étudie cette année en licence le microcontrôleur PIC 16F877.
J’ai un Travail Pratique dans lequel j'ai beaucoup de d'incompréhensions et de difficultés à le résoudre.
En effet, c'est de concevoir sur ISIS et de programmer en C pour PIC 16F877 un système de détection de deux seuils de température équipé du détecteur de température DS18S20.
La sortie du détecteur de température doit être raccordée sur RA5. La température ambiante doit être affichée en continue sur un écran LCD 2x16 raccordé sur les bits RB0 à RB3.
Une LED placé sur RB5 s'allume si la température est >= 35°c puis s'éteint si elle descend en dessous de 20°c.
Merci d'avance

J’ai écrit un programme dans MikroC selon le problème que j'ai posé dernièrement et je rencontre beaucoup de difficulté lors de la compilation.
J’ai aussi des problèmes pour câbler dans ISIS.
SVP je voudrais un soutien par rapport a cela.
Voici mon programme et mon câblage :
Après compilation j'obtien toujours une temperature de 0°c sur l'afficheur

<code type="c">



/*
Titre : détection de deux seuils de température
Fichier : temperature.c
Auteur : Aurelien Kameni
But : détecter deux seuils de température grâce à un capteur DS18S20 et l'afficher sur un écran LCD 2x16.
Date de creation : 26 Mars 2011
dernière modification : 28 Mars 2011
Configuration :
- µc : PIC 16F877A
- Carte de developpement : EasyPIC6
- Quartz : 8 MHz (HS)
- Modules externes : Capteur DS18S20
LCD 2x16
-Software : MikroC v4.15.0.0
*/

sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB6_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;

int adc_temp;
char txt[15];
float res;

// Set TEMP_RESOLUTION to the corresponding resolution of your DS18x20 sensor:
unsigned temp,ct,dt,u; //ct pour centaine, dt pour dizaine et u pour unité
unsigned short j;


void main()
{
ADCON1 = 0x82; // Configure RA5 pin as digital I/O
trisb = 0xdf;
portb = 0;
// Initialize LCD on PORTB and prepare for output
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
ADC_Init();


do
{
portb=1;
delay_ms(400);
portb=0;
delay_ms(400);

//acquisition de la température sur RA5 (temp)
Ow_Reset(&PORTA, 5); // Onewire reset signal
Ow_Write(&PORTA, 5, 0x20); // Issue command SKIP_ROM
Ow_Write(&PORTA, 5, 0x30); // Issue command CONVERT_T
Delay_us(120);

Ow_Reset(&PORTA, 5);
Delay_us(120);
Ow_Write(&PORTA, 5, 0x20); // Issue command SKIP_ROM
Ow_Write(&PORTA, 5, 0xBE); // Issue command READ_SCRATCHPAD

adc_temp=ADC_GET_sample(2);
temp = Ow_Read(&PORTA, 5);
Ow_Reset(&PORTA, 5);
Delay_us(120);
res=adc_temp*temp;
floatToStr(res,txt);
Lcd_Out(1,1,txt);
delay_ms(100);
Lcd_Cmd(_LCD_CLEAR);

}while(res<=20);

}


</code>

Revenir en haut | Permalien
Tunisia.png salem
Member



Messages : 102
Inscrit(e) le: 09/01/2008
Posté le 31/03/2011 02:26  
RE : pic 16f877 et ds18s20 +cablage sur ISIS
/*
* Project name:
Onewire_Test (Interfacing the DS18x20 temperature sensor - all versions)
* Copyright:
(c) MikroElektronika, 2005-2008.
* Description:
After reset, PIC reads temperature from the sensor and prints it on the Lcd.
The display format of the temperature is 'xxx.xxxx°C'. To obtain correct
results, the 18x20's temperature resolution has to be adjusted (constant
TEMP_RESOLUTION)
* Test configuration:
MCU: PIC16F877A
Dev.Board: EasyPIC4
Oscillator: HS, 08.0000 MHz
Ext. Modules: DS18x20 connected to RE2 pin, LCD_2x16
SW: mikroC v8.0.0.0
* NOTES:
- Pull up and turning off diode on pin used for one wire bus may be required (in this example PORTE)
*/


// Set TEMP_RESOLUTION to the corresponding resolution of used DS18x20 sensor:
// 18S20: 9 (default setting; can be 9,10,11,or 12)
// 18B20: 12
const unsigned short TEMP_RESOLUTION = 9;

char *text = "000.0000";
unsigned temp;

void Display_Temperature(unsigned int temp2write)
{
const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
char temp_whole;
unsigned int temp_fraction;

// check if temperature is negative
if (temp2write & 0x8000)
{
text[0] = '-';
temp2write = ~temp2write + 1;
}

// extract temp_whole
temp_whole = temp2write >> RES_SHIFT ;

// convert temp_whole to characters
if (temp_whole/100)
text[0] = temp_whole/100 + 48;

text[1] = (temp_whole/10)%10 + 48; // extract tens digit
text[2] = temp_whole%10 + 48; // extract ones digit

// extract temp_fraction and convert it to unsigned int
temp_fraction = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x000F;
temp_fraction *= 625;

// convert temp_fraction to characters
text[4] = temp_fraction/1000 + 48; // extract thousands digit
text[5] = (temp_fraction/100)%10 + 48; // extract hundreds digit
text[6] = (temp_fraction/10)%10 + 48; // extract tens digit
text[7] = temp_fraction%10 + 48; // extract ones digit

// print temperature on LCD
Lcd_Out(2, 5, text);
}//~

void main()
{
ADCON1 = 7; // Configure AN pins as digital I/O
Lcd_Init(&PORTD); // Lcd_Init_EP4, see Autocomplete
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(1, 1, " Temperature: ");
// Print degree character, 'C' for Centigrades
Lcd_Chr(2,13,223);
Lcd_Chr(2,14,'C');

//--- main loop
while (1)
{
//--- perform temperature reading
Ow_Reset(&PORTE,2); // Onewire reset signal
Ow_Write(&PORTE,2,0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTE,2,0x44); // Issue command CONVERT_T
Delay_ms(750);

Ow_Reset(&PORTE,2);
Ow_Write(&PORTE,2,0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTE,2,0xBE); // Issue command READ_SCRATCHPAD

temp = Ow_Read(&PORTE,2);
temp = (Ow_Read(&PORTE,2) << + temp;

//--- Format and display result on Lcd
Display_Temperature(temp);

}
}

j espere que ca vous aide et cette dernier va etre ok avec 1820, 18b20 et 18s20

Revenir en haut | Permalien
Cameroon.png aurelienkam
Newbie



Messages : 3
Inscrit(e) le: 30/03/2011
Posté le 31/03/2011 16:50  
RE : pic 16f877 et ds18s20 +cablage sur ISIS
bonjour
merci Salem pour le code.j'avais fait des modifications dans mon programme et avec ce que vous m'avez fourni je compte faire des progressions.

Revenir en haut | Permalien

Haut de page

© 2024 Technologue pro, cours électricité électronique informatique · © 2007 - 2024 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos