Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos X_NUCLEO_IHM02A1
Display.cpp
00001 #include "SETUP.h" 00002 00003 00004 DigitalOut RS(DISP_RS); 00005 DigitalOut RW(DISP_RW); 00006 DigitalOut E(DISP_E); 00007 DigitalOut bit0(DISP_B0); 00008 DigitalOut bit1(DISP_B1); 00009 DigitalOut bit2(DISP_B2); 00010 DigitalOut bit3(DISP_B3); 00011 DigitalOut bit4(DISP_B4); 00012 DigitalOut bit5(DISP_B5); 00013 DigitalOut bit6(DISP_B6); 00014 DigitalOut bit7(DISP_B7); 00015 00016 /************************************************************** 00017 Sendebefehls-Funktion für das Display MIDAS 00018 E=Enable, RS= Register Select Signal, RW= Data Read/Wirte 00019 Siehe MIDAS Datasheet 6.3.1 Write Mode Timing Diagramm 00020 **************************************************************/ 00021 void DisplaySendeBefehl(unsigned char befehl) 00022 { 00023 RW=0; 00024 E=0; 00025 RS=0; 00026 wait_us(1); //delay>0 00027 E=1; 00028 wait_ms(1); 00029 bit0= (befehl>>0)&0x01; 00030 bit1= (befehl>>1)&0x01; 00031 bit2= (befehl>>2)&0x01; 00032 bit3= (befehl>>3)&0x01; 00033 bit4= (befehl>>4)&0x01; 00034 bit5= (befehl>>5)&0x01; 00035 bit6= (befehl>>6)&0x01; 00036 bit7= (befehl>>7)&0x01; 00037 wait_ms(1); 00038 E=0; 00039 wait_ms(1); 00040 RS=0; 00041 RW=0; 00042 bit0=0; 00043 bit1=0; 00044 bit2=0; 00045 bit3=0; 00046 bit4=0; 00047 bit5=0; 00048 bit6=0; 00049 bit7=0; 00050 wait_ms(1); 00051 /* 00052 PORTB= PORTB & 0b11111000; // RW=0,E=0,RS=0 00053 _delay_ms(1); // delay>40ns tAS 00054 PORTB= PORTB | 0b00000100; // E=1, Rest wie bis anhin 00055 _delay_ms(1); // delay>460ns tpw 00056 PORTA = Befehl; // Daten für Befehl 00057 _delay_ms(1); // delay>80ns tsp2 00058 PORTB= PORTB & 0b11111011; // E=0, Rest wie bis anhin 00059 _delay_ms(1); // delay>10ns thd1 &(5ns thd2) 00060 PORTB= PORTB & 0b11111100; // RW=0,RS=0 00061 PORTA= 0; // Port A löschen (gesendete Daten) 00062 _delay_ms(1); // alle delays ab E=1 >500ns tc 00063 00064 */ 00065 } 00066 /************************************************************** 00067 Sende-Zeichen-Funktion für das Display Midas 00068 Es können ASCI basierende Zeichen gesendet werden wie 'A' etc. 00069 **************************************************************/ 00070 void DisplaySendeZeichen(unsigned char Zeichen) 00071 { 00072 RW=0; 00073 E=0; 00074 RS=0; 00075 RS=1; 00076 wait_ms(1); 00077 E=1; 00078 wait_ms(1); 00079 bit0= (Zeichen>>0)&0x01; 00080 bit1= (Zeichen>>1)&0x01; 00081 bit2= (Zeichen>>2)&0x01; 00082 bit3= (Zeichen>>3)&0x01; 00083 bit4= (Zeichen>>4)&0x01; 00084 bit5= (Zeichen>>5)&0x01; 00085 bit6= (Zeichen>>6)&0x01; 00086 bit7= (Zeichen>>7)&0x01; 00087 wait_ms(1); 00088 E=0; 00089 wait_ms(1); 00090 RS=0; 00091 RW=0; 00092 bit0=0; 00093 bit1=0; 00094 bit2=0; 00095 bit3=0; 00096 bit4=0; 00097 bit5=0; 00098 bit6=0; 00099 bit7=0; 00100 wait_ms(1); 00101 00102 00103 /*PORTB= PORTB & 0b11111000; // RW=0,E=0,RS=0 00104 PORTB= PORTB | 0b00000001; // RS=1 00105 _delay_ms(1); // delay>40ns tsp1 00106 PORTB= PORTB | 0b00000100; // E=1, Rest wie bis anhin 00107 _delay_ms(1); // delay>230ns tpw 00108 PORTA = Zeichen; // Daten für Zeichen 00109 _delay_ms(1); // delay>80ns tsp2 00110 PORTB= PORTB & 0b11111011; // E=0, Rest wie bis anhin 00111 _delay_ms(1); // delay>10ns thd1 &(5ns thd2) 00112 PORTB= PORTB & 0b11111100; // RW=0,RS=0 00113 PORTA= 0; // Port A löschen (gesendete Daten) 00114 _delay_ms(1); // alle delays ab E=1 >500ns tc*/ 00115 00116 } 00117 00118 /************************************************************** 00119 Sende-String-Funktion für das Display Midas 00120 Es können ASCI basierende Strings gesendet werden wie "ABC" etc. 00121 Der Sendestring ist auf 20 Zeichen beschränkt, da eine Display- 00122 Lein ebenfalls nur 20 Felder besitzt. 00123 **************************************************************/ 00124 void DisplaySendeString(char *String) 00125 { 00126 int x; 00127 for(x = 0; (x < 20) && (*String != 0); x++) // solange ein Zeichen=0 ist 00128 { 00129 DisplaySendeZeichen(*String); // Zeichen durch Pointer 00130 String++; // Pointer auf nächstes Zeichen 00131 } 00132 } 00133 00134 /************************************************************** 00135 Midas Display Initalisierungs-Fuktion 00136 **************************************************************/ 00137 void DisplayInit() 00138 { 00139 wait_ms(40); 00140 DisplaySendeBefehl(0b00111100); // 00141 wait_ms(1); 00142 DisplaySendeBefehl(0b00111100); 00143 wait_ms(1); 00144 DisplaySendeBefehl(0b00001000); 00145 wait_ms(1); 00146 DisplaySendeBefehl(0b00000001); 00147 wait_ms(3); 00148 DisplaySendeBefehl(0b00000110); 00149 00150 00151 00152 00153 00154 00155 /*_delay_ms(20); // delay>15ms 00156 DisplaySendeBefehl(0b00110000); // Instruktion 00157 _delay_ms(5); // delay>4.1ms 00158 DisplaySendeBefehl(0b00110000); // Instruktion 00159 _delay_ms(5); // delay>100us 00160 DisplaySendeBefehl(0b00110000); // Instruktion 00161 DisplaySendeBefehl(0b00111100); // 8bit-,2line-,5x11dots mode 00162 DisplaySendeBefehl(0b00001000); // Display off 00163 DisplaySendeBefehl(0b00000001); // Display clear 00164 DisplaySendeBefehl(0b00000110); // Entry mode set*/ 00165 } 00166 00167 /************************************************************** 00168 Gehe zu X, Y -Funktion für das Display. 00169 X ist die Horizontale, Y die Vertikale 00170 X muss 20<=x>0 sein / Y muss 4<=y>0 sein 00171 00172 Zeilen des Displays wie folgt: 00173 y 00174 1. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x 00175 3. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x 00176 2. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x 00177 4. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x 00178 **************************************************************/ 00179 void gotoxy(unsigned char x, unsigned char y) 00180 { 00181 unsigned char data = 0; 00182 00183 switch (y) 00184 { 00185 case 1: 00186 data = 0b10000000 | (0x00+x-1); // +0 (0x00) 00187 break; 00188 00189 case 2: // 00190 data = 0b10000000 | (0x14+x-1); // +20 (0x14) 00191 break; 00192 00193 case 3: 00194 data = 0b10000000 | (0x40+x-1); // +64 (0x40) 00195 break; 00196 00197 case 4: 00198 data = 0b10000000 | (0x54+x-1); // +84 (0x54) 00199 break; 00200 00201 } 00202 DisplaySendeBefehl(data); // Berechneter Übergabeparameter data 00203 } 00204 00205 00206
Generated on Fri Jul 15 2022 00:06:57 by
1.7.2