Accueil > > > PILOTE AFFICHAGE LCD 2X16 EN MODE PARALLÈLE 8 BITS
PILOTE AFFICHAGE LCD 2X16 EN MODE PARALLÈLE 8 BITS
Information sur la source
Description
Handicapé par la non connaissance de l'assembleur pour les PICs de chez Microchip, j'ai développé les drivers pour afficheur LCD 2x16 (compatible HITACHI). Après bien de vicissitudes avec les timings, voici le source d'un pilote pour "driver" en mode parallèle 8 bits en C. Je traville sous MBLAB IDE avec CCS C Compiler. Ce petit source doit être copié dans votre source. En effet, en passant par une directive de compilation "#iclude <LCD_8.c>, le compilateur a des difficultés de digestion et demande des déclarations de devices qui existent déjà dans le "main" ! Vous disposerez ainsi de toutes les commandes basiques et surtout de la séquence d'initialisation de l'afficheur. Si j'ai fait des bêtises, pardonnez et dites le : je débute en C et sur les microcontroleurs!!! Oui, les commentaires sont parfois en anglais, parfois en francais ! Merci à tout ceux qui ont eu la bonne idée de donner des informations sur le Net !! Les delays sont valables pour une horloge à 20MHz sur le PIC. Avec un quartz de 4MHz, ne vous attendez pas à une durée de cycle de 50ns !!! La durée basique est de T (en secondes) = 1 / F(en Hertz).
Source
- //
- //
- // Routines LCD en mode donnees 8 bits
- //
- //
- // Necessite #include <math.h>
- //
- //
- // PORTB bits 0-7 : lcd_b.data LCD pins 7-14 (Data)
- //
- // PORTD bit 0 : lcd_d.enable LCD pin 6 (LCD Enable)
- // PORTD bit 1 : lcd_d.rw LCD pin 5 (LCD Read Write)
- // PORTD bit 2 : lcd_d.rs LCD pin 4 (LCD Register Select)
- //
- // Masse : LCD pin 1
- // +5V : LCD pin 2
- // Contraste : LCD pin 3
- //
- // Write operations : RS = 0 except Write Data t0 CG or DD RAM - RW = 0
- // ****************
- // x = don't care
- // Clear Display : 00000001 (1.64ms)
- //
- // Home Cursor : 0000001x (40µs à 1.64ms)
- //
- // Entry Mode Set : 000001is (40µs) [00000110]
- // i = 0 decrement; i = 1 increment DD RAM address by 1 after each wrire or read
- // s = 0 no display scroll, s = 1 displays scroll in the direction specified by i
- //
- // On/Off Control : 00001dcb (40µs) [00001000 puis 00001110]
- // d = 0 display Off, d = 1 display on
- // c = 0 cursor off, c = 1 cursor on
- // b = 0 no blink character, b = 1 blink character at cursor position
- //
- // Cursor Shift : 0001srxx (40µs) [00010100]
- // s = 0 move cursor, s = 1 scroll display
- // r = 0 to left, r = 1 to right
- //
- // Function Set : 001dnfxx (40µs) [00111000]
- // d = 0 4 bits interface, d = 1 8 bits interface
- // n = 0 For 2 lines display : 1 line, n = 1 2 lines - else n = 0 1/8 or 1/11 duty, n = 1 1/16 duty
- // f = 0 5x8 dots, f = 1 5x11 dots
- //
- // Character Address RAM Set : 01aaaaaa (40µs)
- // aaaaaa = 6 bits CG RAM address to point
- //
- // Display RAM Address Set : 1aaaaaaa (40µs)
- // aaaaaaa = 7 bits DD RAM address to point
- //
- // Write Data t0 CG or DD RAM dddddddd with RS = 1
- // (40µs for display write DD RAM, 120µs for character generator ram write CG RAM)
- // dddddddd = 8 bits character code
- //
- // Timing :
- // valid data b0 to b7
- // delay 25ns
- // RS
- // delay 150ns
- // RW
- // delay 150ns
- // Enable = 1
- // delay 2µs
- // Enable = 0
- // Delay 150µs
- //
- //
- // Read operations : RS = specified - RW = 1
- // ***************
- //
- // Read Busy Flag : baaaaaaa RS = 0 (1 cycle)
- // Read status of busy flag and the value of the RAM address currently being pointed at.
- // b = 0 OK, b = 1 Busy
- // aaaaaaa = 7 bits current DD/CG RAM address counter
- //
- // Read Data From CG or DD RAM : zzzzzzzz RS = 1 (40µs for DD RAM read, 120µs for CG RAM read)
- // Data is read from current address position and the RAM address is automatically incremented/decremented
- // by 1 as determined by the "Entry Mode Set" command. The cursor is not shifted to.
- // zzzzzzzz 8 bits address RAM, a 8 bits character code will be read back from LCD RAM.
- //
- //
- // RAM Address :
- // DD RAM :128 - 255
- // CG RAM : 64 - 127
- // LCD Address :
- // line 1 : 00h to 0Fh
- // line 2 : 40h to 4Fh
- //
- // Initialisation 8 bits :
- // *********************
- // RS RW Data Delay
- // 15ms (after Vdd rises to 5V)
- // 0 0 0x30
- // 5ms
- // 0 0 0x30
- // 200µs
- // 0 0 0x30
- // 200µs
- // 0 0 Function Set : 0x38
- // 200µs
- // 0 0 Display OFF 0x08 Now Busy Flag may be tested
- // Busy Flag
- // 0 0 Clear Screen 0x01
- // Busy Flag
- // 0 0 Entry Mode Set 0x06
- // Busy Flag
- //
-
- struct lcd_b_pin_map
- {
- int data : 8; // bits 0 a 7
- }
- lcd_data;
-
- struct lcd_d_pin_map
- {
- BOOLEAN enable; // bit 0
- BOOLEAN rs; // bit 1
- BOOLEAN rw; // bit 2
- BOOLEAN unused : 5; // bit 3 à 7
- }
- lcd_cmd;
-
- #byte lcd_data = 6 // on to port B (at address 6)
- #byte lcd_cmd = 8 // on to port D (at address 8)
-
- #define set_tris_lcd_data(x) set_tris_b(x)
- #define set_tris_lcd_cmd(x) set_tris_d(x)
-
-
-
- #define Port_In 0xFF // All bits to high level
- #define Port_Out 0x00 // All bits to low level
- #define First 0x30 // Premier mot sequence initialisation LCD
- #define FunctionSet 0x38 // 8 bits, 2 lignes, 5x7
- #define DisplayOff 0x08 // Display Off, Cursor Off
- #define CursorShift 0x14 // Shift Cursor a droite
- #define DisplayOn 0x0C // Display On, Cursor Off
- #define ClearScreen 0x01 // Cursor 0,0 et clear afficheur
- #define Home 0x02 // Curseur 0,0
- #define EntryMode 0x06 // Increment RAM address & no shift display
-
- #define lcd_strobe delay_cycles(2);lcd.enable = 1;delay_cycles(2);lcd.enable=0;delay_cycles(2)
-
- //
- //
- /**********************************/
- /* Definition des utilitaires LCD */
- /**********************************/
- //
- //
-
- //
- // Lecture d'un octet
- //
- char lcd_read()
- {
- char Valeur;
-
- set_tris_lcd(Port_In); // Data en entree
- delay_cycles(1); // delay 50ns
-
- // Passage en lecture
- lcd.rs = 0;
- delay_cycles(1); // delay 50ns
- lcd.rw = 1;
-
- lcd_strobe;
- Valeur = lcd.data;
- delay_cycles(5); // delay 250ns
-
- set_tris_lcd(Port_Out); // Data en sortie
- delay_cycles(1);
-
- return (Valeur);
- }
-
- //
- // Test le bit BF jusqu'a ce que le LCD soit ok
- //
- void lcd_busy()
- {
- int tem;
-
- set_tris_lcd(Port_In); // Port data en entree
-
- do
- {
- tem = lcd_read() && 0x80;
- }
- while(tem != 0); // Boucle tant que BF=1
-
- set_tris_lcd(Port_Out); // Port data en sortie
- }
-
- //
- // Ecriture d'un octet dans le LCD
- //
- void lcd_write_cmd(char c)
- {
- // Port data en sortie
- set_tris_lcd(Port_Out);
- delay_cycles(1);
-
- // Passage en ecriture cmd
- lcd.rs = 0; // mode commande
- delay_cycles(1); // delay 50ns
- lcd.rw = 0; // mode ecriture
- delay_cycles(1); // delay 50ns
-
- // Ecriture
- lcd.data = c;
- delay_cycles(30); // delay 1.5µs
- lcd_strobe; // echantillonage MSB
- delay_cycles(30); // delay 1.5µs
- }
-
- //
- // Ecriture d'un octet dans le LCD
- //
- void lcd_write_char(char c)
- {
- // Port data en sortie
- set_tris_lcd(Port_Out);
- delay_cycles(2); // delay 100ns
-
- // Test LCD
- lcd_busy();
-
- // Passage en ecriture caractere
- lcd.rs = 1;
- delay_cycles(2); // delay 100ns
- lcd.rw = 0;
- delay_cycles(10); // delay 500ns
-
- // Traitement MSB
- lcd.data = c;
- delay_cycles(30); // delay 1.5µs
- lcd_strobe;
- delay_cycles(30); // delay 1.5µs
- }
-
-
- //
- // Ecriture d'une chaine de caracteres
- //
- void lcd_writestring(char *s)
- {
- while(*s)
- {
- lcd_write_char(*s++);
- }
- }
-
-
- //
- // Positionne le curseur ligne, position
- // la premiere ligne est la ligne 0
- //
- void lcd_pos(char ligne, char pos)
- {
- lcd_write_cmd(((ligne * 0x40) + pos) + 0x80);
- }
-
- //
- // Efface l'ecran et curseur home
- //
- void lcd_clear() // exe 1.64ms
- {
- lcd_write_cmd(ClearScreen);
- }
- //
- // Curseur Home
- //
- void lcd_home() // exe 1.64ms
- {
- lcd_write_cmd(Home);
- }
-
- //
- // Fait clignoter le caractere affiche
- //
-
- void lcd_clign_on() //
- {
- lcd_write_cmd(0x0D);
- }
-
- //
- // Arrete le clignotement
- //
- void lcd_clign_off()
- {
- lcd_write_cmd(0x0C);
- }
- //
- // Shift à droite du curseur
- //
- void lcd_CurShift()
- {
- lcd_write_cmd(CursorShift);
- }
-
- //
- // decalage a gauche
- //
- void lcd_decal_gauche()
- {
- lcd_write_cmd(0x4);
- }
- //
- // decalage a droite
- //
- void lcd_decal_droite()
- {
- lcd_write_cmd(0x6);
- }
-
- void lcd_on()
- {
- lcd_write_cmd(0x0E);
- }
-
- void lcd_off()
- {
- lcd_write_cmd(0x08);
- }
-
- //
- // initialise l'afficheur LCD en mode 8 bits
- //
- void lcd_init()
- {
- set_tris_lcd(Port_Out); // Port data en sortie
- Delay_ms(25);
-
- lcd_write_cmd(First); // 1
- Delay_ms(5);
-
- lcd_write_cmd(First); // 2
- Delay_us(200);
-
- lcd_write_cmd(First); // 3
- Delay_us(200);
-
- lcd_write_cmd(FunctionSet); // Function Set : 8 bits, 2 lignes, 5*8 (40µs)
- Delay_us(50);
-
- lcd_write_cmd(DisplayOff); // On/Off Control : Affichage & curseur off (40µs)
- Delay_us(50);
-
- lcd_write_cmd(DisplayOn); // On/Off Control : Affichage & curseur on (40µs)
- Delay_us(50);
-
- lcd_write_cmd(ClearScreen); // Clear Display : clear et home (1.64ms)
- Delay_ms(2);
-
- lcd_write_cmd(EntryMode); // Entry Mode Set : pas de decalage digits LCD (40µs)
- Delay_us(50);
- }
-
//
//
// Routines LCD en mode donnees 8 bits
//
//
// Necessite #include <math.h>
//
//
// PORTB bits 0-7 : lcd_b.data LCD pins 7-14 (Data)
//
// PORTD bit 0 : lcd_d.enable LCD pin 6 (LCD Enable)
// PORTD bit 1 : lcd_d.rw LCD pin 5 (LCD Read Write)
// PORTD bit 2 : lcd_d.rs LCD pin 4 (LCD Register Select)
//
// Masse : LCD pin 1
// +5V : LCD pin 2
// Contraste : LCD pin 3
//
// Write operations : RS = 0 except Write Data t0 CG or DD RAM - RW = 0
// ****************
// x = don't care
// Clear Display : 00000001 (1.64ms)
//
// Home Cursor : 0000001x (40µs à 1.64ms)
//
// Entry Mode Set : 000001is (40µs) [00000110]
// i = 0 decrement; i = 1 increment DD RAM address by 1 after each wrire or read
// s = 0 no display scroll, s = 1 displays scroll in the direction specified by i
//
// On/Off Control : 00001dcb (40µs) [00001000 puis 00001110]
// d = 0 display Off, d = 1 display on
// c = 0 cursor off, c = 1 cursor on
// b = 0 no blink character, b = 1 blink character at cursor position
//
// Cursor Shift : 0001srxx (40µs) [00010100]
// s = 0 move cursor, s = 1 scroll display
// r = 0 to left, r = 1 to right
//
// Function Set : 001dnfxx (40µs) [00111000]
// d = 0 4 bits interface, d = 1 8 bits interface
// n = 0 For 2 lines display : 1 line, n = 1 2 lines - else n = 0 1/8 or 1/11 duty, n = 1 1/16 duty
// f = 0 5x8 dots, f = 1 5x11 dots
//
// Character Address RAM Set : 01aaaaaa (40µs)
// aaaaaa = 6 bits CG RAM address to point
//
// Display RAM Address Set : 1aaaaaaa (40µs)
// aaaaaaa = 7 bits DD RAM address to point
//
// Write Data t0 CG or DD RAM dddddddd with RS = 1
// (40µs for display write DD RAM, 120µs for character generator ram write CG RAM)
// dddddddd = 8 bits character code
//
// Timing :
// valid data b0 to b7
// delay 25ns
// RS
// delay 150ns
// RW
// delay 150ns
// Enable = 1
// delay 2µs
// Enable = 0
// Delay 150µs
//
//
// Read operations : RS = specified - RW = 1
// ***************
//
// Read Busy Flag : baaaaaaa RS = 0 (1 cycle)
// Read status of busy flag and the value of the RAM address currently being pointed at.
// b = 0 OK, b = 1 Busy
// aaaaaaa = 7 bits current DD/CG RAM address counter
//
// Read Data From CG or DD RAM : zzzzzzzz RS = 1 (40µs for DD RAM read, 120µs for CG RAM read)
// Data is read from current address position and the RAM address is automatically incremented/decremented
// by 1 as determined by the "Entry Mode Set" command. The cursor is not shifted to.
// zzzzzzzz 8 bits address RAM, a 8 bits character code will be read back from LCD RAM.
//
//
// RAM Address :
// DD RAM :128 - 255
// CG RAM : 64 - 127
// LCD Address :
// line 1 : 00h to 0Fh
// line 2 : 40h to 4Fh
//
// Initialisation 8 bits :
// *********************
// RS RW Data Delay
// 15ms (after Vdd rises to 5V)
// 0 0 0x30
// 5ms
// 0 0 0x30
// 200µs
// 0 0 0x30
// 200µs
// 0 0 Function Set : 0x38
// 200µs
// 0 0 Display OFF 0x08 Now Busy Flag may be tested
// Busy Flag
// 0 0 Clear Screen 0x01
// Busy Flag
// 0 0 Entry Mode Set 0x06
// Busy Flag
//
struct lcd_b_pin_map
{
int data : 8; // bits 0 a 7
}
lcd_data;
struct lcd_d_pin_map
{
BOOLEAN enable; // bit 0
BOOLEAN rs; // bit 1
BOOLEAN rw; // bit 2
BOOLEAN unused : 5; // bit 3 à 7
}
lcd_cmd;
#byte lcd_data = 6 // on to port B (at address 6)
#byte lcd_cmd = 8 // on to port D (at address 8)
#define set_tris_lcd_data(x) set_tris_b(x)
#define set_tris_lcd_cmd(x) set_tris_d(x)
#define Port_In 0xFF // All bits to high level
#define Port_Out 0x00 // All bits to low level
#define First 0x30 // Premier mot sequence initialisation LCD
#define FunctionSet 0x38 // 8 bits, 2 lignes, 5x7
#define DisplayOff 0x08 // Display Off, Cursor Off
#define CursorShift 0x14 // Shift Cursor a droite
#define DisplayOn 0x0C // Display On, Cursor Off
#define ClearScreen 0x01 // Cursor 0,0 et clear afficheur
#define Home 0x02 // Curseur 0,0
#define EntryMode 0x06 // Increment RAM address & no shift display
#define lcd_strobe delay_cycles(2);lcd.enable = 1;delay_cycles(2);lcd.enable=0;delay_cycles(2)
//
//
/**********************************/
/* Definition des utilitaires LCD */
/**********************************/
//
//
//
// Lecture d'un octet
//
char lcd_read()
{
char Valeur;
set_tris_lcd(Port_In); // Data en entree
delay_cycles(1); // delay 50ns
// Passage en lecture
lcd.rs = 0;
delay_cycles(1); // delay 50ns
lcd.rw = 1;
lcd_strobe;
Valeur = lcd.data;
delay_cycles(5); // delay 250ns
set_tris_lcd(Port_Out); // Data en sortie
delay_cycles(1);
return (Valeur);
}
//
// Test le bit BF jusqu'a ce que le LCD soit ok
//
void lcd_busy()
{
int tem;
set_tris_lcd(Port_In); // Port data en entree
do
{
tem = lcd_read() && 0x80;
}
while(tem != 0); // Boucle tant que BF=1
set_tris_lcd(Port_Out); // Port data en sortie
}
//
// Ecriture d'un octet dans le LCD
//
void lcd_write_cmd(char c)
{
// Port data en sortie
set_tris_lcd(Port_Out);
delay_cycles(1);
// Passage en ecriture cmd
lcd.rs = 0; // mode commande
delay_cycles(1); // delay 50ns
lcd.rw = 0; // mode ecriture
delay_cycles(1); // delay 50ns
// Ecriture
lcd.data = c;
delay_cycles(30); // delay 1.5µs
lcd_strobe; // echantillonage MSB
delay_cycles(30); // delay 1.5µs
}
//
// Ecriture d'un octet dans le LCD
//
void lcd_write_char(char c)
{
// Port data en sortie
set_tris_lcd(Port_Out);
delay_cycles(2); // delay 100ns
// Test LCD
lcd_busy();
// Passage en ecriture caractere
lcd.rs = 1;
delay_cycles(2); // delay 100ns
lcd.rw = 0;
delay_cycles(10); // delay 500ns
// Traitement MSB
lcd.data = c;
delay_cycles(30); // delay 1.5µs
lcd_strobe;
delay_cycles(30); // delay 1.5µs
}
//
// Ecriture d'une chaine de caracteres
//
void lcd_writestring(char *s)
{
while(*s)
{
lcd_write_char(*s++);
}
}
//
// Positionne le curseur ligne, position
// la premiere ligne est la ligne 0
//
void lcd_pos(char ligne, char pos)
{
lcd_write_cmd(((ligne * 0x40) + pos) + 0x80);
}
//
// Efface l'ecran et curseur home
//
void lcd_clear() // exe 1.64ms
{
lcd_write_cmd(ClearScreen);
}
//
// Curseur Home
//
void lcd_home() // exe 1.64ms
{
lcd_write_cmd(Home);
}
//
// Fait clignoter le caractere affiche
//
void lcd_clign_on() //
{
lcd_write_cmd(0x0D);
}
//
// Arrete le clignotement
//
void lcd_clign_off()
{
lcd_write_cmd(0x0C);
}
//
// Shift à droite du curseur
//
void lcd_CurShift()
{
lcd_write_cmd(CursorShift);
}
//
// decalage a gauche
//
void lcd_decal_gauche()
{
lcd_write_cmd(0x4);
}
//
// decalage a droite
//
void lcd_decal_droite()
{
lcd_write_cmd(0x6);
}
void lcd_on()
{
lcd_write_cmd(0x0E);
}
void lcd_off()
{
lcd_write_cmd(0x08);
}
//
// initialise l'afficheur LCD en mode 8 bits
//
void lcd_init()
{
set_tris_lcd(Port_Out); // Port data en sortie
Delay_ms(25);
lcd_write_cmd(First); // 1
Delay_ms(5);
lcd_write_cmd(First); // 2
Delay_us(200);
lcd_write_cmd(First); // 3
Delay_us(200);
lcd_write_cmd(FunctionSet); // Function Set : 8 bits, 2 lignes, 5*8 (40µs)
Delay_us(50);
lcd_write_cmd(DisplayOff); // On/Off Control : Affichage & curseur off (40µs)
Delay_us(50);
lcd_write_cmd(DisplayOn); // On/Off Control : Affichage & curseur on (40µs)
Delay_us(50);
lcd_write_cmd(ClearScreen); // Clear Display : clear et home (1.64ms)
Delay_ms(2);
lcd_write_cmd(EntryMode); // Entry Mode Set : pas de decalage digits LCD (40µs)
Delay_us(50);
}
Historique
- 02 juillet 2005 12:39:23 :
- Ajout de précisions sur le durée d'un cycle d'horloge.
- 02 juillet 2005 14:47:42 :
- Quand on est sot !!!! J'avais place un source de mode 4 bits !!!
- 02 juillet 2005 18:30:36 :
- Remplacement de la routine lcd_strobe par la ligne #define lcd_strobe ......
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Liaison parallèle LPT [ par yovotsa ]
Bonjour a tous ! Je rencontre actuellement un problème, je dois établir une liaison parallèle (port LPT1) entre deux ordinateurs, donc je dois pouvoir
affichage lcd [ par leullier ]
bonjours a tous,je ne suis peut etre pas au bon endroit mes je pose ma question.je recherche le schemas d'un afficheur lcd a base de pic-pour une char
Affichage sur un LCD 2x16 a partirde la carte Stm32F100RB (Utilisation du GPIO) [ par BRIKCHA ]
Bonjour Code_source Je suis perturbé a comment faire la connexion entre un afficheur LCD 2X16 et une carte Stm32 F100RB a partir du protocole GPIO Je
Détection et affichage des ports USB et devices USB en C [ par stiki ]
Bonjour à tous, Je suis novice en C et je me retrouve bloqué sur la fonction d'affichage et détection des USB sur le PC. Le but de ma fonction est d
Help ! Affichage Matrice en C [ par MacScp ]
#include #include #define C 3 #define L 100 int main() { int i,j; float matrice [C][L] = { {3.84 ,6.6
PIC et LCD 2*16 [ par caela ]
Bonjour à tous svp est-ce que quequ'un peut me donner e nom de la librairie qu'il faut importer pour pouvoir gérer un LCD 2*16 en CPIC. MERCI
[BAR]pilote carte réseau [ par nyahso ]
Bonsoir, quelqu'un peut-il me dire comment trouver le pilote de la carte réseau de mon ordinateur DELL OPTIPLEX 380 après re-installation de mon systè
Affichage de données traités [ par rachid1245 ]
Bonjour à tousvoilà , je crée une boîte de dialogue par DialogBox comme fenêtre enfant d'une fenêtre principalevoici le code à peu près:<span lang="EN
programmation C dos affichage image mode VGA [ par COLLECTION ]
Bonjour quelqu'un pourrait-il me donner une astuce ou un morceau de codepour afficher un image de preference BMP ou autre avec le compilateur turbo c+
Affichage donnés port parallele sur HTML [ par truchot ]
Je recherche un logiciel capable de mofier une page HTML en fonction de données présentes ou non sur un port parallele sous XP.Le but est par exemple
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SALUT!SALUT! par khaoulagenie
Cliquez pour lire la suite par khaoulagenie
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|