Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Thu Apr 11 15:20:05 2019 +0000
Revision:
30:e464b2bb2376
Child:
31:4bb6d2cedad2
Child:
33:de144094bdd1
mit Display;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
scherfa2 30:e464b2bb2376 1 #include "mbed.h"
scherfa2 30:e464b2bb2376 2 #include "Display.h"
scherfa2 30:e464b2bb2376 3 #include "main.h"
scherfa2 30:e464b2bb2376 4
scherfa2 30:e464b2bb2376 5 /*************************************************************
scherfa2 30:e464b2bb2376 6 * PA10 (D2) (Select Steppmotor Treiber2)
scherfa2 30:e464b2bb2376 7 * PA7 (D11) (mosi Steppmotor Treiber1)
scherfa2 30:e464b2bb2376 8 * PA6 (D12) (miso Steppmotor Treiber1)
scherfa2 30:e464b2bb2376 9 * PA4 (A2) (Select Steppmotor Treiber1)
scherfa2 30:e464b2bb2376 10 *
scherfa2 30:e464b2bb2376 11 * PB15 (mosi Steppmotor Treiber2)
scherfa2 30:e464b2bb2376 12 * PB14 (miso Steppmotor Treiber2)
scherfa2 30:e464b2bb2376 13 * PB13 (slk Steppmotor Treiber2)
scherfa2 30:e464b2bb2376 14 * PB6 (D10)(pwm_io)(CN5-3)
scherfa2 30:e464b2bb2376 15 * PB5 (D4)(Standby_reset Steppmotor)
scherfa2 30:e464b2bb2376 16 * PB4 (D5)(pwm_io2)(CN9-6)
scherfa2 30:e464b2bb2376 17 * PB3 (D3)(Select Steppmotor Treiber1)
scherfa2 30:e464b2bb2376 18
scherfa2 30:e464b2bb2376 19 * PC1 (A4)(Flag_irq Steppmotor)
scherfa2 30:e464b2bb2376 20 * PC0 (A5)(Busy_irq Steppmotor)
scherfa2 30:e464b2bb2376 21
scherfa2 30:e464b2bb2376 22 PA0 (RS)
scherfa2 30:e464b2bb2376 23 PA1 (RW)
scherfa2 30:e464b2bb2376 24 PA8 (E)
scherfa2 30:e464b2bb2376 25 PB6 (Data0)
scherfa2 30:e464b2bb2376 26 PA5 (Data1)
scherfa2 30:e464b2bb2376 27 PA9 (Data2)
scherfa2 30:e464b2bb2376 28 PB10 (Data3)
scherfa2 30:e464b2bb2376 29 PB0 (Data4)
scherfa2 30:e464b2bb2376 30 PB7 (Data5)
scherfa2 30:e464b2bb2376 31 PB8 (Data6)
scherfa2 30:e464b2bb2376 32 PB9 (Data7)
scherfa2 30:e464b2bb2376 33 **************************************************************/
scherfa2 30:e464b2bb2376 34
scherfa2 30:e464b2bb2376 35 DigitalOut RS(PA_0);
scherfa2 30:e464b2bb2376 36 DigitalOut RW(PA_1);
scherfa2 30:e464b2bb2376 37 DigitalOut E(PA_8);
scherfa2 30:e464b2bb2376 38 DigitalOut bit0(PB_6);
scherfa2 30:e464b2bb2376 39 DigitalOut bit1(PA_5);
scherfa2 30:e464b2bb2376 40 DigitalOut bit2(PA_9);
scherfa2 30:e464b2bb2376 41 DigitalOut bit3(PB_10);
scherfa2 30:e464b2bb2376 42 DigitalOut bit4(PB_0);
scherfa2 30:e464b2bb2376 43 DigitalOut bit5(PC_7);
scherfa2 30:e464b2bb2376 44 DigitalOut bit6(PB_8);
scherfa2 30:e464b2bb2376 45 DigitalOut bit7(PB_9);
scherfa2 30:e464b2bb2376 46
scherfa2 30:e464b2bb2376 47 /**************************************************************
scherfa2 30:e464b2bb2376 48 Sendebefehls-Funktion für das Display MIDAS
scherfa2 30:e464b2bb2376 49 E=Enable, RS= Register Select Signal, RW= Data Read/Wirte
scherfa2 30:e464b2bb2376 50 Siehe MIDAS Datasheet 6.3.1 Write Mode Timing Diagramm
scherfa2 30:e464b2bb2376 51 **************************************************************/
scherfa2 30:e464b2bb2376 52 void DisplaySendeBefehl(unsigned char befehl)
scherfa2 30:e464b2bb2376 53 {
scherfa2 30:e464b2bb2376 54 RW=0;
scherfa2 30:e464b2bb2376 55 E=0;
scherfa2 30:e464b2bb2376 56 RS=0;
scherfa2 30:e464b2bb2376 57 wait_us(1); //delay>0
scherfa2 30:e464b2bb2376 58 E=1;
scherfa2 30:e464b2bb2376 59 wait_ms(1);
scherfa2 30:e464b2bb2376 60 bit0= (befehl>>0)&0x01;
scherfa2 30:e464b2bb2376 61 bit1= (befehl>>1)&0x01;
scherfa2 30:e464b2bb2376 62 bit2= (befehl>>2)&0x01;
scherfa2 30:e464b2bb2376 63 bit3= (befehl>>3)&0x01;
scherfa2 30:e464b2bb2376 64 bit4= (befehl>>4)&0x01;
scherfa2 30:e464b2bb2376 65 bit5= (befehl>>5)&0x01;
scherfa2 30:e464b2bb2376 66 bit6= (befehl>>6)&0x01;
scherfa2 30:e464b2bb2376 67 bit7= (befehl>>7)&0x01;
scherfa2 30:e464b2bb2376 68 wait_ms(1);
scherfa2 30:e464b2bb2376 69 E=0;
scherfa2 30:e464b2bb2376 70 wait_ms(1);
scherfa2 30:e464b2bb2376 71 RS=0;
scherfa2 30:e464b2bb2376 72 RW=0;
scherfa2 30:e464b2bb2376 73 bit0=0;
scherfa2 30:e464b2bb2376 74 bit1=0;
scherfa2 30:e464b2bb2376 75 bit2=0;
scherfa2 30:e464b2bb2376 76 bit3=0;
scherfa2 30:e464b2bb2376 77 bit4=0;
scherfa2 30:e464b2bb2376 78 bit5=0;
scherfa2 30:e464b2bb2376 79 bit6=0;
scherfa2 30:e464b2bb2376 80 bit7=0;
scherfa2 30:e464b2bb2376 81 wait_ms(1);
scherfa2 30:e464b2bb2376 82 /*
scherfa2 30:e464b2bb2376 83 PORTB= PORTB & 0b11111000; // RW=0,E=0,RS=0
scherfa2 30:e464b2bb2376 84 _delay_ms(1); // delay>40ns tAS
scherfa2 30:e464b2bb2376 85 PORTB= PORTB | 0b00000100; // E=1, Rest wie bis anhin
scherfa2 30:e464b2bb2376 86 _delay_ms(1); // delay>460ns tpw
scherfa2 30:e464b2bb2376 87 PORTA = Befehl; // Daten für Befehl
scherfa2 30:e464b2bb2376 88 _delay_ms(1); // delay>80ns tsp2
scherfa2 30:e464b2bb2376 89 PORTB= PORTB & 0b11111011; // E=0, Rest wie bis anhin
scherfa2 30:e464b2bb2376 90 _delay_ms(1); // delay>10ns thd1 &(5ns thd2)
scherfa2 30:e464b2bb2376 91 PORTB= PORTB & 0b11111100; // RW=0,RS=0
scherfa2 30:e464b2bb2376 92 PORTA= 0; // Port A löschen (gesendete Daten)
scherfa2 30:e464b2bb2376 93 _delay_ms(1); // alle delays ab E=1 >500ns tc
scherfa2 30:e464b2bb2376 94
scherfa2 30:e464b2bb2376 95 */
scherfa2 30:e464b2bb2376 96 }
scherfa2 30:e464b2bb2376 97 /**************************************************************
scherfa2 30:e464b2bb2376 98 Sende-Zeichen-Funktion für das Display Midas
scherfa2 30:e464b2bb2376 99 Es können ASCI basierende Zeichen gesendet werden wie 'A' etc.
scherfa2 30:e464b2bb2376 100 **************************************************************/
scherfa2 30:e464b2bb2376 101 void DisplaySendeZeichen(unsigned char Zeichen)
scherfa2 30:e464b2bb2376 102 {
scherfa2 30:e464b2bb2376 103 RW=0;
scherfa2 30:e464b2bb2376 104 E=0;
scherfa2 30:e464b2bb2376 105 RS=0;
scherfa2 30:e464b2bb2376 106 RS=1;
scherfa2 30:e464b2bb2376 107 wait_ms(1);
scherfa2 30:e464b2bb2376 108 E=1;
scherfa2 30:e464b2bb2376 109 wait_ms(1);
scherfa2 30:e464b2bb2376 110 bit0= (Zeichen>>0)&0x01;
scherfa2 30:e464b2bb2376 111 bit1= (Zeichen>>1)&0x01;
scherfa2 30:e464b2bb2376 112 bit2= (Zeichen>>2)&0x01;
scherfa2 30:e464b2bb2376 113 bit3= (Zeichen>>3)&0x01;
scherfa2 30:e464b2bb2376 114 bit4= (Zeichen>>4)&0x01;
scherfa2 30:e464b2bb2376 115 bit5= (Zeichen>>5)&0x01;
scherfa2 30:e464b2bb2376 116 bit6= (Zeichen>>6)&0x01;
scherfa2 30:e464b2bb2376 117 bit7= (Zeichen>>7)&0x01;
scherfa2 30:e464b2bb2376 118 wait_ms(1);
scherfa2 30:e464b2bb2376 119 E=0;
scherfa2 30:e464b2bb2376 120 wait_ms(1);
scherfa2 30:e464b2bb2376 121 RS=0;
scherfa2 30:e464b2bb2376 122 RW=0;
scherfa2 30:e464b2bb2376 123 bit0=0;
scherfa2 30:e464b2bb2376 124 bit1=0;
scherfa2 30:e464b2bb2376 125 bit2=0;
scherfa2 30:e464b2bb2376 126 bit3=0;
scherfa2 30:e464b2bb2376 127 bit4=0;
scherfa2 30:e464b2bb2376 128 bit5=0;
scherfa2 30:e464b2bb2376 129 bit6=0;
scherfa2 30:e464b2bb2376 130 bit7=0;
scherfa2 30:e464b2bb2376 131 wait_ms(1);
scherfa2 30:e464b2bb2376 132
scherfa2 30:e464b2bb2376 133
scherfa2 30:e464b2bb2376 134 /*PORTB= PORTB & 0b11111000; // RW=0,E=0,RS=0
scherfa2 30:e464b2bb2376 135 PORTB= PORTB | 0b00000001; // RS=1
scherfa2 30:e464b2bb2376 136 _delay_ms(1); // delay>40ns tsp1
scherfa2 30:e464b2bb2376 137 PORTB= PORTB | 0b00000100; // E=1, Rest wie bis anhin
scherfa2 30:e464b2bb2376 138 _delay_ms(1); // delay>230ns tpw
scherfa2 30:e464b2bb2376 139 PORTA = Zeichen; // Daten für Zeichen
scherfa2 30:e464b2bb2376 140 _delay_ms(1); // delay>80ns tsp2
scherfa2 30:e464b2bb2376 141 PORTB= PORTB & 0b11111011; // E=0, Rest wie bis anhin
scherfa2 30:e464b2bb2376 142 _delay_ms(1); // delay>10ns thd1 &(5ns thd2)
scherfa2 30:e464b2bb2376 143 PORTB= PORTB & 0b11111100; // RW=0,RS=0
scherfa2 30:e464b2bb2376 144 PORTA= 0; // Port A löschen (gesendete Daten)
scherfa2 30:e464b2bb2376 145 _delay_ms(1); // alle delays ab E=1 >500ns tc*/
scherfa2 30:e464b2bb2376 146
scherfa2 30:e464b2bb2376 147 }
scherfa2 30:e464b2bb2376 148
scherfa2 30:e464b2bb2376 149 /**************************************************************
scherfa2 30:e464b2bb2376 150 Sende-String-Funktion für das Display Midas
scherfa2 30:e464b2bb2376 151 Es können ASCI basierende Strings gesendet werden wie "ABC" etc.
scherfa2 30:e464b2bb2376 152 Der Sendestring ist auf 20 Zeichen beschränkt, da eine Display-
scherfa2 30:e464b2bb2376 153 Lein ebenfalls nur 20 Felder besitzt.
scherfa2 30:e464b2bb2376 154 **************************************************************/
scherfa2 30:e464b2bb2376 155 void DisplaySendeString(char *String)
scherfa2 30:e464b2bb2376 156 {
scherfa2 30:e464b2bb2376 157 int x;
scherfa2 30:e464b2bb2376 158 for(x = 0; (x < 20) && (*String != 0); x++) // solange ein Zeichen=0 ist
scherfa2 30:e464b2bb2376 159 {
scherfa2 30:e464b2bb2376 160 DisplaySendeZeichen(*String); // Zeichen durch Pointer
scherfa2 30:e464b2bb2376 161 String++; // Pointer auf nächstes Zeichen
scherfa2 30:e464b2bb2376 162 }
scherfa2 30:e464b2bb2376 163 }
scherfa2 30:e464b2bb2376 164
scherfa2 30:e464b2bb2376 165 /**************************************************************
scherfa2 30:e464b2bb2376 166 Midas Display Initalisierungs-Fuktion
scherfa2 30:e464b2bb2376 167 **************************************************************/
scherfa2 30:e464b2bb2376 168 void DisplayInit()
scherfa2 30:e464b2bb2376 169 {
scherfa2 30:e464b2bb2376 170 wait_ms(40);
scherfa2 30:e464b2bb2376 171 DisplaySendeBefehl(0b00111100); //
scherfa2 30:e464b2bb2376 172 wait_ms(1);
scherfa2 30:e464b2bb2376 173 DisplaySendeBefehl(0b00111100);
scherfa2 30:e464b2bb2376 174 wait_ms(1);
scherfa2 30:e464b2bb2376 175 DisplaySendeBefehl(0b00001000);
scherfa2 30:e464b2bb2376 176 wait_ms(1);
scherfa2 30:e464b2bb2376 177 DisplaySendeBefehl(0b00000001);
scherfa2 30:e464b2bb2376 178 wait_ms(3);
scherfa2 30:e464b2bb2376 179 DisplaySendeBefehl(0b00000110);
scherfa2 30:e464b2bb2376 180
scherfa2 30:e464b2bb2376 181
scherfa2 30:e464b2bb2376 182
scherfa2 30:e464b2bb2376 183
scherfa2 30:e464b2bb2376 184
scherfa2 30:e464b2bb2376 185
scherfa2 30:e464b2bb2376 186 /*_delay_ms(20); // delay>15ms
scherfa2 30:e464b2bb2376 187 DisplaySendeBefehl(0b00110000); // Instruktion
scherfa2 30:e464b2bb2376 188 _delay_ms(5); // delay>4.1ms
scherfa2 30:e464b2bb2376 189 DisplaySendeBefehl(0b00110000); // Instruktion
scherfa2 30:e464b2bb2376 190 _delay_ms(5); // delay>100us
scherfa2 30:e464b2bb2376 191 DisplaySendeBefehl(0b00110000); // Instruktion
scherfa2 30:e464b2bb2376 192 DisplaySendeBefehl(0b00111100); // 8bit-,2line-,5x11dots mode
scherfa2 30:e464b2bb2376 193 DisplaySendeBefehl(0b00001000); // Display off
scherfa2 30:e464b2bb2376 194 DisplaySendeBefehl(0b00000001); // Display clear
scherfa2 30:e464b2bb2376 195 DisplaySendeBefehl(0b00000110); // Entry mode set*/
scherfa2 30:e464b2bb2376 196 }
scherfa2 30:e464b2bb2376 197
scherfa2 30:e464b2bb2376 198 /**************************************************************
scherfa2 30:e464b2bb2376 199 Gehe zu X, Y -Funktion für das Display.
scherfa2 30:e464b2bb2376 200 X ist die Horizontale, Y die Vertikale
scherfa2 30:e464b2bb2376 201 X muss 20<=x>0 sein / Y muss 4<=y>0 sein
scherfa2 30:e464b2bb2376 202
scherfa2 30:e464b2bb2376 203 Zeilen des Displays wie folgt:
scherfa2 30:e464b2bb2376 204 y
scherfa2 30:e464b2bb2376 205 1. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x
scherfa2 30:e464b2bb2376 206 3. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x
scherfa2 30:e464b2bb2376 207 2. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x
scherfa2 30:e464b2bb2376 208 4. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 x
scherfa2 30:e464b2bb2376 209 **************************************************************/
scherfa2 30:e464b2bb2376 210 void gotoxy(unsigned char x, unsigned char y)
scherfa2 30:e464b2bb2376 211 {
scherfa2 30:e464b2bb2376 212 unsigned char data = 0;
scherfa2 30:e464b2bb2376 213
scherfa2 30:e464b2bb2376 214 switch (y)
scherfa2 30:e464b2bb2376 215 {
scherfa2 30:e464b2bb2376 216 case 1:
scherfa2 30:e464b2bb2376 217 data = 0b10000000 | (0x00+x-1); // +0 (0x00)
scherfa2 30:e464b2bb2376 218 break;
scherfa2 30:e464b2bb2376 219
scherfa2 30:e464b2bb2376 220 case 2: //
scherfa2 30:e464b2bb2376 221 data = 0b10000000 | (0x14+x-1); // +20 (0x14)
scherfa2 30:e464b2bb2376 222 break;
scherfa2 30:e464b2bb2376 223
scherfa2 30:e464b2bb2376 224 case 3:
scherfa2 30:e464b2bb2376 225 data = 0b10000000 | (0x40+x-1); // +64 (0x40)
scherfa2 30:e464b2bb2376 226 break;
scherfa2 30:e464b2bb2376 227
scherfa2 30:e464b2bb2376 228 case 4:
scherfa2 30:e464b2bb2376 229 data = 0b10000000 | (0x54+x-1); // +84 (0x54)
scherfa2 30:e464b2bb2376 230 break;
scherfa2 30:e464b2bb2376 231
scherfa2 30:e464b2bb2376 232 }
scherfa2 30:e464b2bb2376 233 DisplaySendeBefehl(data); // Berechneter Übergabeparameter data
scherfa2 30:e464b2bb2376 234 }
scherfa2 30:e464b2bb2376 235
scherfa2 30:e464b2bb2376 236
scherfa2 30:e464b2bb2376 237