lundi 13 novembre 2017
TP 7-Commande d’un moteur DC
// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;
char a,b;
void main() {
Lcd_Init();
Lcd_cmd(_Lcd_cursor_off);
a=b=48;
TRISA=0x00;
TRISB.B6=1;
TRISB.B7=1;
for(;;)
{
while(PORTB.B6==0)
{
PORTA=0x01;Lcd_out(1,1,"DROIT");
delay_ms(200);a--;
if(a==47&&b==48){a=48;b==48;}
if(a==47&&b!=48){a=57;b--;}
Lcd_chr(1,10,a);
Lcd_chr(1,9,b);
}
while(PORTB.B7==0)
{
PORTA=0x02;Lcd_out(1,1,"GOUCH");
delay_ms(200);a++;
if(a==58){a=48;b++;}
Lcd_chr(1,10,a);
Lcd_chr(1,9,b);
}
Lcd_out(1,1,"STOPE");
PORTA=0x00;
}
}
TP 6-clock LCD
// Lcd pinout settings
sbit LCD_RS at RB1_bit;
sbit LCD_EN at RB2_bit;
sbit LCD_D7 at RB6_bit;
sbit LCD_D6 at RB5_bit;
sbit LCD_D5 at RB4_bit;
sbit LCD_D4 at RB3_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB1_bit;
sbit LCD_EN_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB6_bit;
sbit LCD_D6_Direction at TRISB5_bit;
sbit LCD_D5_Direction at TRISB4_bit;
sbit LCD_D4_Direction at TRISB3_bit;
char s1,s2,p,m1,m2,h1,h2;
int j;
void main() {
s1=s2=m1=m2=h1=h2=48;
p=58;
j=1;
Lcd_Init();
Lcd_cmd(_Lcd_cursor_off);
Lcd_chr(1,8,s1); Lcd_chr(1,7,s2);
Lcd_chr(1,6,p); Lcd_chr(1,5,m1);
Lcd_chr(1,4,m2);Lcd_chr(1,3,p);Lcd_chr(1,2,h1);Lcd_chr(1,1,h2);Lcd_out(1,10,"LUN");
for(;;)
{
delay_ms(1000);
s1++;
if(s1==58) {s1=48;s2++ ;}
if(s2==54) {s1=48;s2=48;m1++ ;}
if(m1==58) {s1=48;s2=48;m1=48;m2++ ;}
if(m2==54) {s1=48;s2=48;m1=48;m2=48;h1++ ;}
if(h1==58) {s1=48;s2=48;m1=48;m2=48;h1=48 ;h2++;}
if(h2==50&&h1==52) {s1=48;s2=48;m1=48;m2=48;h1=48 ;h2=48;j++;}
Lcd_chr(1,8,s1); Lcd_chr(1,7,s2);
Lcd_chr(1,5,m1);
Lcd_chr(1,4,m2);Lcd_chr(1,2,h1);Lcd_chr(1,1,h2);
if(j==1) Lcd_out(1,10,"LUN");
if(j==2) Lcd_out(1,10,"MAR");
if(j==3) Lcd_out(1,10,"MER");
if(j==4) Lcd_out(1,10,"JEU");
if(j==5) Lcd_out(1,10,"VEN");
if(j==6) Lcd_out(1,10,"SAM");
if(j==7) Lcd_out(1,10,"DIM");
if (j==8) j=1;
} }
TP5-Afficheur LCD
Les afficheurs à cristaux liquides,
autrement appelés afficheurs LCD (Liquid Crystal Display), sont des modules
compacts intelligents et nécessitent peu de composants externes pour un bon
fonctionnement. Ils consomment relativement peu (de 1 à 5 mA), sont
relativement bons marchés et s'utilisent avec beaucoup de facilité.
Plusieurs afficheurs sont
disponibles sur le marché et diffèrent les uns des autres, non seulement par
leurs dimensions, (de 1 à 4 lignes de 6 à 80 caractères), mais aussi par leurs
caractéristiques techniques et leur tension de service. Certains sont dotés
d'un rétroéclairage de l'affichage. Cette fonction fait appel à des LED montées
derrière l'écran du module, cependant, cet éclairage est gourmand en intensité
(de 80 à 250 mA).
Programme 1
// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;
void main() {
Lcd_Init();
Lcd_cmd(_Lcd_cursor_off);
while(1)
{
Lcd_Out(1, 1, "Merci");
delay_ms(1000);
Lcd_cmd(_Lcd_clear);
delay_ms(1000);
} }
Programme 2
// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;
void main() {
Lcd_Init();
Lcd_cmd(_Lcd_cursor_off);
Lcd_Out_cp( "MOV A");
Lcd_Out_cp( ",B");
}
Programme 3
// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;
char i;
void main() {
Lcd_Init();
Lcd_cmd(_Lcd_cursor_off);
i=5;
Lcd_chr(1,1,i+48);
}
Programme 4
// Lcd pinout settings
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB2_bit;
// Pin direction
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB2_bit;
void main() {
Lcd_Init();
Lcd_cmd(_Lcd_cursor_off);
for(;;)
{
while(porta.b0= =0) {Lcd_out(1,1,"March"); }
while(porta.b1= =0) {Lcd_out(1,1,"Stop"); }
Lcd_cmd(_lcd_clear);
} }
TP 4-Afficheurs 7 segments
Les afficheurs 7 segments sont un type d'afficheur très présent sur les calculatrices et les montres à affichage numérique : les caractères (des chiffres, bien que quelques lettres soient utilisées pour l'affichage hexadécimal) s'écrivent en allumant ou en éteignant des segments, au nombre de
sept. Quand les 7 segments sont allumés, on obtient le chiffre 8.
Programme 1
void
main()
{
TRISB=0x00;
loop:
PORTB=0x3F; delay_ms(1000);
PORTB=0x06; delay_ms(1000);
PORTB=0x5B; delay_ms(1000);
PORTB=0x4F; delay_ms(1000);
PORTB=0x66; delay_ms(1000);
PORTB=0x6D; delay_ms(1000);
PORTB=0x7D; delay_ms(1000);
PORTB=0x07; delay_ms(1000);
PORTB=0x7F; delay_ms(1000);
PORTB=0x6F;delay_ms(1000);
goto
loop; }
Programme 2
void
main()
{
TRISB=0x00;
for(;;)
{
PORTB=0; delay_ms(1000);
PORTB=1; delay_ms(1000);
PORTB=2; delay_ms(1000);
PORTB=3; delay_ms(1000);
PORTB=4; delay_ms(1000);
PORTB=5; delay_ms(1000);
PORTB=6; delay_ms(1000);
PORTB=7;
delay_ms(1000);
PORTB=8; delay_ms(1000);
PORTB=9; delay_ms(1000);
}}
Programme 3
void
main()
{
int x;
TRISB=0x00;
PORTB=0;
delay_ms(1000);
for(x=0;x<9;x++)
{
PORTB++;delay_ms(1000);
}}
Programme 4
void main()
{
int x;
TRISB=0x00;
PORTB=9; delay_ms(1000);
for(x=0;x<9;x++)
{
PORTB--; delay_ms(1000);
}}
Programme 5
void
main()
{
TRISB=0x00;
PORTB=0;
delay_ms(1000);
for(;;)
{
PORTB++;
delay_ms(1000);
if
(PORTB==9)
{
PORTB=0;
}}}
Inscription à :
Articles (Atom)