La Red de Conocimientos Pedagógicos - Currículum vitae - información lcd1602

información lcd1602

/***************subrutina ds18b20*************************** ***/

/**********subfunción de retardo ds18b20 (oscilador de cristal 12MHz)**********/

#include

sbit DQ=P1^2;

#define uchar unsigned char

void delay_18B20(unsigned int i)

{

while(i--);

}

/************función de inicialización ds18b20** ********** **********/

void Init_DS18B20(void)

{

carácter sin firmar x=0;

DQ = 1; //Reinicio de DQ

delay_18B20(8); //Ligero retraso

DQ = 0; tira DQ bajo

delay_18B20(80); //El retraso exacto es mayor que 480us

DQ = 1 //Sube el autobús

delay_18B20( 4);

x =DQ; //Después de un ligero retraso, si x=0, la inicialización es exitosa y si x=1, la inicialización falla

delay_18B20(20) ;

}

/****************ds18b20Leer un byte************** **/

unsigned char ReadOneChar(void)

{

uchar i=0;

uchar dat = 0;

for (i=8;i>0;i--)

{

DQ = 0; // Da señal de pulso

dat>>=1;

DQ = 1; // Da señal de pulso

if(DQ)

dat|=0x80;

retraso_18B20(4);

}

retorno(dat);

}

/******* *********ds18b20 escribe un byte*********** ******/

void WriteOneChar(uchar dat)

{

carácter sin firmar i=0;

para (i=8; i>0; i--)

{

DQ=0;

DQ=dat&0x01;

delay_18B20 (5);

DQ=1;

dat>> =1;

}

}

/***************Leer la temperatura actual de ds18b20*** *********/

ReadTemp(void)

{ float val;

uchar temp_value,value

carácter sin firmar a=0;

canal sin firmar

ar b=0;

unsigned char t=0;

Init_DS18B20();

WriteOneChar(0xCC); // Saltar lectura del número de secuencia y la columna operación número

WriteOneChar(0x44); // Iniciar conversión de temperatura

delay_18B20(100); // este mensaje es muy importante

Init_DS18B20();< / p>

WriteOneChar(0xCC); //Omitir la operación de lectura del número de serie

WriteOneChar(0xBE); //Leer el registro de temperatura, etc. (***9 registros pueden ser leer) Anterior Las dos son temperaturas

delay_18B20(100);

a=ReadOneChar() //Leer el bit bajo del valor de temperatura

b =ReadOneChar(); / /Lee el bit alto del valor de temperatura

temp_value=b<<4;

temp_value+=(a&0xf0)>>4;

value=a&0x0f;

val=temp_value+value;

return(val);

}

Lo anterior es el Controlador para DS18B20. Luego simplemente llame a la función directamente en el programa principal.

Las anteriores son llamadas en el programa principal, solo mira la de temperatura.

#include "reg51.h"

#include "18b20.h"

#define uchar unsigned char

#define uint unsigned int

uchar code table[]="Bienvenido a" ;//Fecha de inicialización y día de la semana

uchar code table1[]="¡Nuestro sistema!";// Tiempo de inicialización

uchar code table2[]="La temperatura es:";//Tiempo de inicialización

//Los siguientes tres pines definen la pantalla LCD

sbit lcden = P2^2;

sbit lcdwrite=P2^1

sbit lcdrs=P2^0;

char wendu;

//Programa de retraso

void delay(uint z)

{ uint x,y

for(x=z;x>0;x-- )

for(y=110;y>0;y--);

}

//Comando de escritura LCD

void write_com(uchar com)

{

lcdrs=0

lcden=0

P0=com; >

p>

retraso(5);

lcden=1

retraso(5);

lcden=0;

}

//LCD escribir datos

void write_data(uchar da)

{ lcdrs=1;

lcden=0 ;

P0=da;

retraso(5);

lcden=1;

retraso(5);

lcden=0;

}

//Inicialización

void init()

{

uchar num;

lcdwrite=0;

lcden=0;

write_com(0x38); //16*2 pantalla, 5 *Matriz de 7 puntos, datos de 8 bits

write_com(0x0c); //Mostrar cursor encendido y apagado

write_com(0x06); //Mover cursor

write_com(0x01 );//Borrar el contenido de la pantalla LCD

write_com(0x80);

for (num=0;num<10;num++)

{

p>

write_data(tabla[núm]);

retraso(5

}

write_com); (0x80x40);

for (num=0;num<11;num++)

{

write_data(table1[num]);

demora(5)

}

}

void write_wendu(uchar add, char da)

{

ucha

r shi,ge;

shi=da/10;

ge=da%10;

write_com(0x80x4add);

write_data(0x3shi);

write_data(0x3ge

}

//Función principal

void main ()

{

uchar num;

init();

retardo(2000);

delay(2000);

delay(2000);

write_com(0x01);//Borrar el contenido de la pantalla LCD

while(1)

{

write_com(0x80);

for (num=0;num<15;num++)

{

write_data(table2[num]);

retraso(5);

}

wendu = ReadTemp(

<); p> escribir_wendu(2,wendu);

}

}