valkiir
Newbie
Messages : 2 Inscrit(e) le: 11/02/2011
|
Posté le 31/01/2012 09: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.
|
|
|