pic 16f84a avec LCD

< 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
Algeria.png valkiir
Newbie



Messages : 2
Inscrit(e) le: 11/02/2011
Posté le 31/01/2012 10:02  
1328000566.rar (95 Ko)
pic 16f84a avec LCD
SALUT TLM , je début dans la programmation des microcontroleurs et comme tout debutant je commence avec le B-A-B, 16f84a
j'ai realiser un mini programme sur mickropascal que j'ai simuler sur ISIS 7.7 SP2 et ca marche tres bien
quand je suis aller en pratique je n'arrive pas a le faire et le circuit ne fonction pas, si qlq pr m'aide
liste des composants :
le programme sur mickropascal :

program metreuse_rev2;

var imode, ch,i_moteur: byte;
b_moteur : boolean;
mt,mt_order: integer;

// Lcd module connections
var LCD_RS : sbit at RB0_bit;
var LCD_EN : sbit at RB1_bit;
var LCD_D4 : sbit at RB2_bit;
var LCD_D5 : sbit at RB3_bit;
var LCD_D6 : sbit at RB4_bit;
var LCD_D7 : sbit at RB5_bit;

var LCD_RS_Direction : sbit at TRISB0_bit;
var LCD_EN_Direction : sbit at TRISB1_bit;
var LCD_D4_Direction : sbit at TRISB2_bit;
var LCD_D5_Direction : sbit at TRISB3_bit;
var LCD_D6_Direction : sbit at TRISB4_bit;
var LCD_D7_Direction : sbit at TRISB5_bit;
// End Lcd module connections
//------------------------------------------------------------------------------
procedure main_init;
begin
TRISB:=0x00;
//TRISB.RB6:=1;
TRISB.RB7:=1;
TRISA:=0xff;
PORTB:=0X00;
PORTA:=0x00;
lcd_init;
lcd_cmd(_lcd_clear);
lcd_cmd(_lcd_cursor_off);
imode:=0;
b_moteur:=0;
mt:=0;
mt_order:=0;
end;
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
procedure compteur;
begin
lcd_out(2,7,'Mts');
lcd_out(2,6,'0');
lcd_out(2,4,',');
if button(porta,0,1,1) then inc(mt) else mt := mt;
//dispVal:= mt;
ch:=(mt div 1000) mod 10;
lcd_chr(2,1,48+ch);
ch:=(mt div 100) mod 10;
lcd_chr(2,2,48+ch);
ch:=(mt div 10) mod 10;
lcd_chr(2,3,48+ch);
ch:=(mt mod 10);
lcd_chr(2,5,48+ch);
end;
//------------------------------------------------------------------------------
procedure moteur;
begin
if button(porta,2,100,1) then inc(i_moteur);
if (i_moteur>1) then i_moteur:=0;
case i_moteur of
0: begin
b_moteur:=0;
portb.rb6:=0;
end;
1: begin
b_moteur:=1;
portb.rb6:=1;
end;
end;
end;
//------------------------------------------------------------------------------
procedure commande;
begin
begin
lcd_out(2,18,'Mts');
lcd_out(2,17,'0');
lcd_out(2,15,',');
if button(porta,3,100,1) then inc(mt_order) else mt_order:= mt_order;
if button(porta,4,100,1) then dec(mt_order) else mt_order:= mt_order;
//ch:=(mt_order div 1000) mod 10;
//lcd_chr(2,12,48+ch);
ch:=(mt_order div 100)mod 10;
lcd_chr(2,13,48+ch);
ch:=(mt_order div 10) mod 10;
lcd_chr(2,14,48+ch);
ch:=mt_order mod 10;
lcd_chr(2,16,48+ch);
if mt = mt_order then i_moteur:=0;
end;

end;
//------------------------------------------------------------------------------
procedure display_auto_man;
begin
if (b_moteur=1) then
begin
lcd_out(1,1,'RUN->');
end
else lcd_out(1,1,'STOP ');
end;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
procedure mode_man;
begin
lcd_out(1,17,'MAN');
display_auto_man;
end;
//------------------------------------------------------------------------------
procedure mode_auto;
begin
lcd_out(1,17,'AUT');
display_auto_man;
commande;
end;
//------------------------------------------------------------------------------
procedure get_main_mode;
begin
case imode of
0: mode_auto;
1: mode_man;
end;
end;
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
procedure display_main_mode;
begin
if button(porta,1,100,1) then
begin
lcd_cmd(_lcd_clear);
inc(imode);
end
else imode:= imode;
if imode>1 then imode:=0;
end;
//------------------------------------------------------------------------------

begin
main_init;
while true do
begin
lcd_out(1,12,'MODE:');
display_main_mode;
get_main_mode;
compteur;
moteur;
end;
end.







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