Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  ds1620
Language: C/C++
Code:




program Temp4DS1620;

// Commande d'un capteur de température type DS1620                               
// DQ -----> portc.0                                                              
// CLK -----> portc.1                                                             
// RST -----> portc.2                                                             
var i: byte; temp : string[5]; text : array[20] of char;  
puis : byte; tous : array[0..8] of byte; 
databyte : word;  res : byte;

procedure SORTIE(databyte : byte; bitsize : byte);
var bits : byte; 
begin
TRISC.1 := 0;
TRISC.0 := 0 ;
For bits := 0 to bitsize do
 begin
    PORTC.1 := 0 ;
    If databyte.bits = 0 Then PORTC.0 := 0  Else PORTC.0 := 1;
    delay_us(10);
    PORTC.1 := 1;
    delay_us(20);
  end;
end;

function power(x, n : byte) : byte;      // x^n = 2^n
var j : byte; 
begin
    if n = 0 then  puis := databyte ;
    if n > 0 then
    begin 
    res := databyte;
    for j := 1 to n do res := res*x;
    puis := puis + res;
    end;
end;
    
Function ENTREE(bitsize : byte): word;     
var 
    bits : byte;  
begin
    TRISC.1 := 0;
    TRISC.0 := 1;
    For bits := 0 to bitsize  do
        begin
              PORTC.1 := 0;            
              databyte := PORTC.0; 
              delay_us(10);
              tous[bits] :=  databyte; 
              PORTC.1 := 1;
              delay_us(20); 
              if   bits < bitsize then  power(2, bits);
         end;     
              if   databyte = 1 then
              begin
                For bits := 0 to bitsize -1  do
                 begin
                 if tous[bits] = 0 then  databyte := 1 else databyte := 0;
                 power(2, bits);
                 end;    
                 puis := puis + 2;        
              end;
end;
        
Procedure DS1620init;
begin
   PORTC.2 := 1;
   SORTIE($EE, 7);                   // Initialisation du DS1620
   PORTC.2 := 0;
End;

function DS1620_lecture : word ;
begin
   PORTC.2 := 1;
   SORTIE($AA, 7);                   // Lecture de la température par le DS1620
   ENTREE(8);                        // Lecture de la température par le PIC
   PORTC.2 := 0;
End;

Procedure Affichage;
begin
if tous[8] = 1 then  lcd_chr(2,5,'-') else lcd_chr(2,5,'+');
ByteToStr(i, temp);
lcd_out(2,6,temp);
lcd_chr(2,9,223);                 // 'degré' 
lcd_chr(2,10,'C');
End;

// Programme Pricipal
begin
text:= 'Temperature:';           
trisC.2 := 0;
Lcd_Config(PORTb,0,2,1,6,5,4,3);
Lcd_Cmd(Lcd_Cursor_Off);
Lcd_Cmd(Lcd_Clear);
Lcd_Out(1,3,text); 
DS1620init;
while true do
begin
DS1620_lecture;
i := puis/2; 
Affichage;
end;
end.



.
...














Votre réponse...
          
Comments: