date et l'affichage de l'heure sur l'écran LCD

V

vanvan00

Guest
Comment afficher le temps réel i et date avec PIC18F452 et le panneau LCD?N'importe qui peut m'aider avec le code?

 
Quel type de LCD.
manière d'exploiter est très différente entre les différents types.

 
Im en utilisant l'écran LCD 2x16.Y at-il des codes mikroC qui je peux demander à afficher la date ou le temps lui-même?

 
Salut,
Jetez un oeil à ce (utilise mikroC):
http://picnote.blogspot.com/2008/06/ds1307-pic16f877a.html
J'espère que cela a aidé.
Tahmid.

 
si ce n'est pas possible de faire si je n'ai pas la puce DS1307?

 
Il est, mais avec DS1307, il est plus précis.
J'avais codé un en mikroBASIC, nous espérons que vous pouvez le convertir.
Code:

code source du programmesymbole sélectionné = PORTA.0

Symbole HrChange = PORTA.1

Symbole MinChange = PORTA.2

Symbole SecChange = PORTA.3

Hr1224 symbole = PORTA.4

Symbole led1224 PORTA.5 =dim données7, NUM7 As Byte

dim temp As Byte

dim h, min, sec comme octets

dim hrten1224, hrone1224 As Byte

dim HRTEN, HRONE, Minten, MINONE, SECTEN, SECONE As Bytesous procédure d'interruption

temp = temp 1

PIR1.TMR1IF = 0

T1CON.TMR1ON = 0

TMR1H = 3C $

TMR1L = $ AF

T1CON.TMR1ON = 1

PORTA.3 = 1

End Subdelay1ms sous procédure

delay_ms (1)

End Subdelay50ms sous procédure

delay_ms (50)

End Subsous procédure send7 valeur dim (, sept dans le byte)

PORTC = 0

cas, sélectionnez la valeur

case 0 données7 = $ C0

Cas 1 données7 = $ F9

Cas 2 données7 = $ A4

cas n ° 3 données7 = $ B0

Cas 4 données7 = $ 99

Cas n ° 5 données7 = $ 92

Cas n ° 6 données7 = $ 82

Cas n ° 7 données7 = $ F8

Cas n ° 8 données7 = 80 $

Cas n ° 9 données7 = 90 $

sélectionnez Fin

PORTB = données7

choisir les sept cas

Cas 1 NUM7 = 1

Cas 2 NUM7 = 2

cas n ° 3 = 4 NUM7

Cas 4 NUM7 = 8

Cas n ° 5 NUM7 = 16

Cas n ° 6 NUM7 = 32

sélectionnez Fin

PORTC = NUM7

End Subprincipaux:TRISB = 0

PORTB = 0

TRISC = 0

PORTC = 0

ADCON1 = 7

TRISA = 1F $

T1CON = 0

TMR1H = 3C $

TMR1L = $ AF

PIR1.TMR1IF = 0

PIE1.TMR1IE = 1

INTCON.GIE = 1

INTCON.PEIE = 1

T1CON.TMR1ON = 1

while true

S'il est sélectionné, puis

T1CON.TMR1ON = 0

si Hr1224 puis

delay50ms

hrten1224 = 1

hrone1224 = 3

led1224 = 1

d'autre

hrten1224 = 0

hrone1224 = 1

led1224 = 0

End If

si HrChange puis

delay50ms

HRONE = HRONE 1

if (HRONE> 9), puis

HRONE = 1

HRTEN = HRTEN 1

End If

if (HRTEN> hrten1224) et (HRONE> hrone1224) puis

HRTEN = 0

HRONE = 0

End If

tout HrChange

Wend

End If

si MinChange puis

delay50ms

MINONE = MINONE 1

if (MINONE> 9), puis

MINONE = 0

Minten = Minten 1

End If

if (Minten> 5) puis

Minten = 0

MINONE = 0

End If

tout MinChange

Wend

End If

si SecChange puis

delay50ms

SECONE = SECONE 1

if (SECONE> 9), puis

SECONE = 0

SECTEN = SECTEN 1

End If

if (SECTEN> 5) puis

SECTEN = 0

SECONE = 0

End If

tout SecChange

Wend

End If

d'autre

T1CON.TMR1ON = 1

End If

if (temp = 20), alors

temp = 0

sec = sec 1

SECONE = SECONE 1

End If

if (SECONE> 9), puis

SECONE = 0

SECTEN = SECTEN 1

End If

if (SECTEN> 5) puis

SECTEN = 0

SECONE = 0

MINONE = MINONE 1

End If

if (MINONE> 9), puis

MINONE = 0

Minten = Minten 1

End If

if (Minten> 5) puis

Minten = 0

MINONE = 0

HRONE = HRONE 1

End If

if (HRONE> 9), puis

HRONE = 0

HRTEN = 1

End If

if (HRTEN> hrten1224) et (HRONE> hrone1224) puis

HRTEN = 0

HRONE = 0

Minten = 0

MINONE = 0

SECTEN = 0

SECONE = 0

End If

send7 (HRTEN, 1)

delay1ms

send7 (HRONE, 2)

delay1ms

send7 (Minten, 3)

delay1ms

send7 (MINONE, 4)

delay1ms

send7 (SECTEN, 5)

delay1ms

send7 (SECONE, 6)

delay1ms

Wend

fin.
 
Merci, mais im pas sûr comment convertir à la langue MikroC son ok diriez-vous de ne rien savoir u capteur de température LM35 avec PIC18F452?

 
Salut vanvan00,
Ouais, j'ai fait ce projet, mais que trop de mikroBASIC.Mais si vous me donnez quelque temps, je peux en code à un mikroC.Ajouté après 14 minutes:Code:

unsigned long ADCResult;

valeur unsigned int [3];

[Vstring char 3];void GlobInit (void) (

TRISB = 0;

PORTB = 0;

TRISA = 1;

ADCON1 = 0x4E;

LCD_Config (& PORTB, 4, 5, 6, 3, 2, 1, 0);

LCD_Cmd (LCD_CLEAR);

LCD_Cmd (LCD_CURSOR_OFF);

LCD_Out (1, 1, "Temp");

LCD_Out (1, 15, «C»);

)void main () (

GlobInit ();

while (1) (

ADCResult = (ADC_Read (0) * 500)>> 10;

valeur [0] = ADCResult / 100;

valeur [1] = (ADCResult / 10)% 10;

valeur [2] =% ADCResult 10;

vstring [0] valeur [= 0] 48;

vstring [1] valeur [= 1] 48;

vstring [2] valeur [= 2] 48;

LCD_Out (1, 10, vstring);

delay_ms (50);

)

)
 
J'ai pour afficher la température maximum et minimum de température sur le LCD quand je presse le bouton 1 connecté au port A de presse par exemple une fois montrer la température maximale et appuyez sur la 2e fois, il affichera la température minimale

 
Salut vanvan00,
Je n'ai pas obtenu ce que vous entendez par «température maximale d'affichage et la température minimale".

 
Citation:

J'ai pour afficher la température maximum et minimum de température sur le LCD
 
Ceci est mon code mais je pense qu'il manque de quelque chose qu'il n'avez travail à tous lesunsigned oldstate0;
unsigned oldstate1;
tmax non signé, tmin;

temp_value non signé;
char à [12], OUT2 [12]; / / déclare tableau de 12 caractères
dec_value float;

void loop1 () (

Lcd_Out (1,1, "Bienvenue à la CEE"); / / Imprime le texte sur l'écran LCD au 1er rang et 1ère colonne

Lcd_Chr (2,7, à [3]); / / Affiche sur l'écran LCD à la 2e rangée et 3e colonne
Lcd_Chr_Cp (sur [4]);
Lcd_Chr_Cp ('.'); / / Affiche le point décimal sur l'écran LCD
Lcd_Out (2,10, OUT2); / / rappel Imprime sur le LCD à la 2e rangée et 6e colonne
Lcd_Chr_Cp (223); / / symbole degré Imprime sur le LCD à la 2e rangée et 7e colonne
Lcd_Chr_Cp ('C'); / / Affiche Celsius symbole
delay_ms (3000); / / Exemple à 3 sec
)

void main () (
ADCON1 = 0x80; / / entrée analogique Configurer
TRISA = 0xFF; / / PORTA en entrée
TRISB = 0x00; / / PORTB que ouput
Lcd_Init (& PORTB); / / Initialiser LCD avec port B
Lcd_Cmd (LCD_CLEAR); / / Clear LCD
Lcd_Cmd (LCD_CURSOR_OFF);

do (

temp_value = (Adc_Read (0) / 2); / lecture / d'entrée analogique
WordToStr (temp_value, out); / / convertir hexagonale à la chaîne
dec_value = (adc_read (0)% 10); / / récupère le reste de sorte qu'il peut afficher le décimale de 1 jusqu'à
FloatToStr (dec_value, OUT2); / / / / supprimer les espaces vides

if (temp_value tmax>) (
tmax = temp_value;
)
if (temp_value <Tmin) (
tmin = temp_value;
)

if (Button (& PORTA, 0,10,1)) oldstate0 = 1;
if (oldstate0 & & Touche (& PORTA, 1,10,0)) (

Lcd_Init (& PORTB);
Lcd_Out (2,1, "Max");
loop1 ();
)

if (Button (& PORTA, 0,10,1)) oldstate1 = 1;
if (oldstate1 & & Touche (& PORTA, 0,10,0)) (
(
Lcd_Init (& PORTB);
Lcd_Out (2,1, "Min");
loop1 ();
)
)
) While (1);
)

 
tahmid Salut!

Je suis intéressé par votre code.Ce que j'essaie de faire est de suivre mes cours pendant 24 heures pendant 30 jours, alors, j'ai besoin d'une horloge.Jusqu'ici, j'ai utilisé orifices A, B et D pour mon clavier, écran LCD et le programme ADC.J'ai encore à l'interface du PIC avec un modem GSM.

Alors, Comment programmer l'horloge avec heure et date et l'afficher sur l'écran LCD?Je n'ai que des ports C et E à gauche.

J'utilise 16F877A et MikroBasic.

S'il vous plaît aider ...

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triste" border="0" />Merci ..

Cordialement,

Heina

 
Heina Salut,

Si vous avez besoin d'une horloge précise (que vous êtes l'interface de votre PIC avec modem GSM), vous devriez envisager de Telit GM862 module GPS.

Lorsque vous initialisez votre système, vous devez vérifier périodiquement pour serrure GPS valide, et quand vous en obtenir un, vous aurez des informations d'horloge (UTC).Pas plus d'horloge / heure / date en utilisant les routines de TMRx

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />A partir de là, tout est à vous et à vos compétences en programmation.

HTH

 
.. .. Wow GPS sons cool ..sons cher .. hahaha

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

hmm ..nous avons un budget serré .. euh lol, je sais pas i nous serons en mesure de se le permettre.= /

si je savais que chose GPS serait utile, j'aurais acheté un modem GSM / GPRS au lieu ..De toute façon, ce qui est fait est fait ..J'ai un modem GSM plaine.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

Je figure quelque chose d'ici ..

euh ..do u avez des suggestions zasto autres?
Je pourrais utiliser une partie ...

Merci ..

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />Cordialement,

Heina

 
Heina,

Pour précision, un ou PCF8583 RTC DS1307 puce devrait être suffisant.Interface présente au microcontrôleur.Si votre épingles I2C/TWI sont occupés, utiliser des logiciels I2C/TWI.

Hope this helps.
Tahmid.

 
Heina Salut,

que Tahnid écrit, vous pouvez utiliser DS ou PCF CCF à puce, mais vous devez considérer que vous aurez besoin d'une batterie externe pour la sauvegarde du CCF, et doit régler l'horloge à un certain moment lors de l'initialisation ou à un certain moment pendant l'exécution (SMS arrive à mon esprit

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />

)

Vous n'avez pas écrit ce qui modem GSM vous prévoyez d'utiliser.

HTH
ZASto

 
J'utilise un modem GSM Benq M23.Je ne sais pas si vous êtes familier avec elle, mais c'est ce que nous utilisent couramment pour les projets ici aux Philippines.

@ Et @ Tahmid zasto: euh, comment puis-je l'interface du DS1307 ou PCF8583 avec le PIC 16F877A?Pourriez-vous m'aider avec le code coz je n'ai aucune idée de l'utiliser?btw, je suis en utilisant Mikrobasic ..

Merci beaucoup pour la réponse.Très appréciée.<3Cordialement,

Heina

 
Heina Salut,

Commencez par télécharger la fiche technique du DS1307.Regardez les registres.Utilisez la bibliothèque I2C en mikroBASIC.

J'ai un code fait avec ATMEGA88.Donnez-moi quelque temps.Je vais le convertir PIC16F877A.

Tahmid.

 

Welcome to EDABoard.com

Sponsor

Back
Top