Étape 3: Le code et le téléchargement à votre Conseil d’administration
Nous créons le code pour cette expérience,
J’ai utilisé AVR Studio pour elle et téléchargées avec USBASP, voir la photo
code complet :
#include < avr/io.h >
#include < util/delay.h >
structure pour permettre des opérations sur le terrain peu, nommez les conversions : PORTA.0 -> PORT_A.b0 PORTB.7 -> PORT_B.b7
typedef struct {uint8_t b0:1 ;
uint8_t b1:1 ;
uint8_t b2:1 ;
uint8_t b3:1 ;
uint8_t b4:1 ;
uint8_t b5:1 ;
uint8_t b6:1 ;
uint8_t b7:1 ; } bits ;
Décrivez tous les ports de votre microcontrôleur, ajouter plus de ports selon les ports disponibles mcu
#define PORT_D (* (volatiles bits *) & PORTD)
#define PIN_D (* (volatiles bits *) & PIND)
#define DDR_D (* (volatiles bits *) & DDDR)
#define PORT_G (* (volatiles bits *) & PORTG)
#define PIN_G (* (volatiles bits *) & PING)
#define DDR_G (* (volatiles bits *) & DDRG)
Fréquence d’horloge mention ici
#define _XTAL_FREQ 8000000
#define lcd_data_pin PORTA
#define fr PORT_D.b0
#define rs PORT_D.b1
#define rw PORT_D.b2
Sub lcd_init() ;
void lcd_data (unsigned char data1) ;
void lcd_cmd (unsigned char cmd) ;
void lcd_control (unsigned char cmdordata) ;
void lcd_string (unsigned char * str) ;
lcd_init() Sub {}
lcd_cmd(0x30) ;
_delay_ms(10) ;
lcd_cmd(0x38) ;
_delay_ms(10) ;
lcd_cmd(0x0F) ;
_delay_ms(10) ;
lcd_cmd(0x80) ;
_delay_ms(10) ;
}
void lcd_data (unsigned char data1)
{
lcd_data_pin = données1; / / & 0x0F ;
fr = 1 ;
RS = 1 ;
RW = 0 ;
_delay_ms(10) ;
fr = 0 ;
}
void lcd_cmd (unsigned char cmd) {}
lcd_data_pin = cmd ;
fr = 1 ;
RS = 0 ;
RW = 0 ;
_delay_ms(10) ;
fr = 0 ;
}
void lcd_string (unsigned char * str) {}
{while(*STR)}
lcd_data(*STR++) ;
}
}
int main() {}
DDR_D.B0 = 1 ;
DDR_D.B1 = 1 ;
DDR_D.B2 = 1 ;
DDRA = 0XFF ;
lcd_init() ;
{while(1)}
_delay_ms (10) ;
lcd_cmd (0 x 80); //put le curseur dans la première rangée
_delay_ms (10) ;
lcd_cmd (0 x 01); //Clear affichage
_delay_ms (10) ;
lcd_cmd (0xC0); //goto deuxième rangée
_delay_ms (10) ;
lcd_cmd(0x01) ; Affichage clair
lcd_cmd (0 x 80); //put le curseur dans la première rangée
_delay_ms (10) ;
lcd_cmd (0 x 01); //Clear affichage
_delay_ms (10) ;
lcd_string("message") ;
lcd_cmd (0xC0); //goto deuxième rangée
lcd_string("Flasher") ;
_delay_ms(1000) ;
écran suivant
lcd_cmd (0 x 80); //put le curseur dans la première rangée
_delay_ms (10) ;
lcd_cmd (0 x 01); //Clear affichage
_delay_ms (10) ;
lcd_string ("avec ATMEGA128") ;
lcd_cmd (0xC0); //goto deuxième rangée
lcd_string (« par Chris ») ;
_delay_ms(1000) ;
écran suivant
lcd_cmd (0 x 80); //put le curseur dans la première rangée
_delay_ms (10) ;
lcd_cmd (0 x 01); //Clear affichage
_delay_ms (10) ;
lcd_string ("publiée sur") ;
lcd_cmd (0xC0); //goto deuxième rangée
lcd_string("instructable.com") ;
_delay_ms(1000) ;
écran suivant
lcd_cmd (0 x 80); //put le curseur dans la première rangée
_delay_ms (10) ;
lcd_cmd (0 x 01); //Clear affichage
_delay_ms (10) ;
lcd_string ("Made in") ;
lcd_cmd (0xC0); //goto deuxième rangée
lcd_string("Australia") ;
_delay_ms(1000) ;
}
Return (0) ;
}