mit Buttons/PWM als einzelne cpp und init in main

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Wed Apr 24 21:08:27 2019 +0000
Revision:
34:0dee9a606869
Parent:
33:de144094bdd1
asdf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hagenrap 33:de144094bdd1 1 #include "SETUP.h"
hagenrap 33:de144094bdd1 2
scherfa2 30:e464b2bb2376 3
hagenrap 33:de144094bdd1 4 DigitalOut RS(DISP_RS);
hagenrap 33:de144094bdd1 5 DigitalOut RW(DISP_RW);
hagenrap 33:de144094bdd1 6 DigitalOut E(DISP_E);
hagenrap 33:de144094bdd1 7 DigitalOut bit0(DISP_B0);
hagenrap 33:de144094bdd1 8 DigitalOut bit1(DISP_B1);
hagenrap 33:de144094bdd1 9 DigitalOut bit2(DISP_B2);
hagenrap 33:de144094bdd1 10 DigitalOut bit3(DISP_B3);
hagenrap 33:de144094bdd1 11 DigitalOut bit4(DISP_B4);
hagenrap 33:de144094bdd1 12 DigitalOut bit5(DISP_B5);
hagenrap 33:de144094bdd1 13 DigitalOut bit6(DISP_B6);
hagenrap 33:de144094bdd1 14 DigitalOut bit7(DISP_B7);
scherfa2 30:e464b2bb2376 15
scherfa2 30:e464b2bb2376 16 /**************************************************************
scherfa2 30:e464b2bb2376 17 Sendebefehls-Funktion für das Display MIDAS
scherfa2 30:e464b2bb2376 18 E=Enable, RS= Register Select Signal, RW= Data Read/Wirte
scherfa2 30:e464b2bb2376 19 Siehe MIDAS Datasheet 6.3.1 Write Mode Timing Diagramm
scherfa2 30:e464b2bb2376 20 **************************************************************/
scherfa2 30:e464b2bb2376 21 void DisplaySendeBefehl(unsigned char befehl)
scherfa2 30:e464b2bb2376 22 {
scherfa2 30:e464b2bb2376 23 RW=0;
scherfa2 30:e464b2bb2376 24 E=0;
scherfa2 30:e464b2bb2376 25 RS=0;
scherfa2 30:e464b2bb2376 26 wait_us(1); //delay>0
scherfa2 30:e464b2bb2376 27 E=1;
scherfa2 30:e464b2bb2376 28 wait_ms(1);
scherfa2 30:e464b2bb2376 29 bit0= (befehl>>0)&0x01;
scherfa2 30:e464b2bb2376 30 bit1= (befehl>>1)&0x01;
scherfa2 30:e464b2bb2376 31 bit2= (befehl>>2)&0x01;
scherfa2 30:e464b2bb2376 32 bit3= (befehl>>3)&0x01;
scherfa2 30:e464b2bb2376 33 bit4= (befehl>>4)&0x01;
scherfa2 30:e464b2bb2376 34 bit5= (befehl>>5)&0x01;
scherfa2 30:e464b2bb2376 35 bit6= (befehl>>6)&0x01;
scherfa2 30:e464b2bb2376 36 bit7= (befehl>>7)&0x01;
scherfa2 30:e464b2bb2376 37 wait_ms(1);
scherfa2 30:e464b2bb2376 38 E=0;
scherfa2 30:e464b2bb2376 39 wait_ms(1);
scherfa2 30:e464b2bb2376 40 RS=0;
scherfa2 30:e464b2bb2376 41 RW=0;
scherfa2 30:e464b2bb2376 42 bit0=0;
scherfa2 30:e464b2bb2376 43 bit1=0;
scherfa2 30:e464b2bb2376 44 bit2=0;
scherfa2 30:e464b2bb2376 45 bit3=0;
scherfa2 30:e464b2bb2376 46 bit4=0;
scherfa2 30:e464b2bb2376 47 bit5=0;
scherfa2 30:e464b2bb2376 48 bit6=0;
scherfa2 30:e464b2bb2376 49 bit7=0;
scherfa2 30:e464b2bb2376 50 wait_ms(1);
scherfa2 30:e464b2bb2376 51 /*
scherfa2 30:e464b2bb2376 52 PORTB= PORTB & 0b11111000; // RW=0,E=0,RS=0
scherfa2 30:e464b2bb2376 53 _delay_ms(1); // delay>40ns tAS
scherfa2 30:e464b2bb2376 54 PORTB= PORTB | 0b00000100; // E=1, Rest wie bis anhin
scherfa2 30:e464b2bb2376 55 _delay_ms(1); // delay>460ns tpw
scherfa2 30:e464b2bb2376 56 PORTA = Befehl; // Daten für Befehl
scherfa2 30:e464b2bb2376 57 _delay_ms(1); // delay>80ns tsp2
scherfa2 30:e464b2bb2376 58 PORTB= PORTB & 0b11111011; // E=0, Rest wie bis anhin
scherfa2 30:e464b2bb2376 59 _delay_ms(1); // delay>10ns thd1 &(5ns thd2)
scherfa2 30:e464b2bb2376 60 PORTB= PORTB & 0b11111100; // RW=0,RS=0
scherfa2 30:e464b2bb2376 61 PORTA= 0; // Port A löschen (gesendete Daten)
scherfa2 30:e464b2bb2376 62 _delay_ms(1); // alle delays ab E=1 >500ns tc
scherfa2 30:e464b2bb2376 63
scherfa2 30:e464b2bb2376 64 */
scherfa2 30:e464b2bb2376 65 }
scherfa2 30:e464b2bb2376 66 /**************************************************************
scherfa2 30:e464b2bb2376 67 Sende-Zeichen-Funktion für das Display Midas
scherfa2 30:e464b2bb2376 68 Es können ASCI basierende Zeichen gesendet werden wie 'A' etc.
scherfa2 30:e464b2bb2376 69 **************************************************************/
scherfa2 30:e464b2bb2376 70 void DisplaySendeZeichen(unsigned char Zeichen)
scherfa2 30:e464b2bb2376 71 {
scherfa2 30:e464b2bb2376 72 RW=0;
scherfa2 30:e464b2bb2376 73 E=0;
scherfa2 30:e464b2bb2376 74 RS=0;
scherfa2 30:e464b2bb2376 75 RS=1;
scherfa2 30:e464b2bb2376 76 wait_ms(1);
scherfa2 30:e464b2bb2376 77 E=1;
scherfa2 30:e464b2bb2376 78 wait_ms(1);
scherfa2 30:e464b2bb2376 79 bit0= (Zeichen>>0)&0x01;
scherfa2 30:e464b2bb2376 80 bit1= (Zeichen>>1)&0x01;
scherfa2 30:e464b2bb2376 81 bit2= (Zeichen>>2)&0x01;
scherfa2 30:e464b2bb2376 82 bit3= (Zeichen>>3)&0x01;
scherfa2 30:e464b2bb2376 83 bit4= (Zeichen>>4)&0x01;
scherfa2 30:e464b2bb2376 84 bit5= (Zeichen>>5)&0x01;
scherfa2 30:e464b2bb2376 85 bit6= (Zeichen>>6)&0x01;
scherfa2 30:e464b2bb2376 86 bit7= (Zeichen>>7)&0x01;
scherfa2 30:e464b2bb2376 87 wait_ms(1);
scherfa2 30:e464b2bb2376 88 E=0;
scherfa2 30:e464b2bb2376 89 wait_ms(1);
scherfa2 30:e464b2bb2376 90 RS=0;
scherfa2 30:e464b2bb2376 91 RW=0;
scherfa2 30:e464b2bb2376 92 bit0=0;
scherfa2 30:e464b2bb2376 93 bit1=0;
scherfa2 30:e464b2bb2376 94 bit2=0;
scherfa2 30:e464b2bb2376 95 bit3=0;
scherfa2 30:e464b2bb2376 96 bit4=0;
scherfa2 30:e464b2bb2376 97 bit5=0;
scherfa2 30:e464b2bb2376 98 bit6=0;
scherfa2 30:e464b2bb2376 99 bit7=0;
scherfa2 30:e464b2bb2376 100 wait_ms(1);
scherfa2 30:e464b2bb2376 101
scherfa2 30:e464b2bb2376 102
scherfa2 30:e464b2bb2376 103 /*PORTB= PORTB & 0b11111000; // RW=0,E=0,RS=0
scherfa2 30:e464b2bb2376 104 PORTB= PORTB | 0b00000001; // RS=1
scherfa2 30:e464b2bb2376 105 _delay_ms(1); // delay>40ns tsp1
scherfa2 30:e464b2bb2376 106 PORTB= PORTB | 0b00000100; // E=1, Rest wie bis anhin
scherfa2 30:e464b2bb2376 107 _delay_ms(1); // delay>230ns tpw
scherfa2 30:e464b2bb2376 108 PORTA = Zeichen; // Daten für Zeichen
scherfa2 30:e464b2bb2376 109 _delay_ms(1); // delay>80ns tsp2
scherfa2 30:e464b2bb2376 110 PORTB= PORTB & 0b11111011; // E=0, Rest wie bis anhin
scherfa2 30:e464b2bb2376 111 _delay_ms(1); // delay>10ns thd1 &(5ns thd2)
scherfa2 30:e464b2bb2376 112 PORTB= PORTB & 0b11111100; // RW=0,RS=0
scherfa2 30:e464b2bb2376 113 PORTA= 0; // Port A löschen (gesendete Daten)
scherfa2 30:e464b2bb2376 114 _delay_ms(1); // alle delays ab E=1 >500ns tc*/
scherfa2 30:e464b2bb2376 115
scherfa2 30:e464b2bb2376 116 }
scherfa2 30:e464b2bb2376 117
scherfa2 30:e464b2bb2376 118 /**************************************************************
scherfa2 30:e464b2bb2376 119 Sende-String-Funktion für das Display Midas
scherfa2 30:e464b2bb2376 120 Es können ASCI basierende Strings gesendet werden wie "ABC" etc.
scherfa2 30:e464b2bb2376 121 Der Sendestring ist auf 20 Zeichen beschränkt, da eine Display-
scherfa2 30:e464b2bb2376 122 Lein ebenfalls nur 20 Felder besitzt.
scherfa2 30:e464b2bb2376 123 **************************************************************/
scherfa2 30:e464b2bb2376 124 void DisplaySendeString(char *String)
scherfa2 30:e464b2bb2376 125 {
scherfa2 30:e464b2bb2376 126 int x;
scherfa2 30:e464b2bb2376 127 for(x = 0; (x < 20) && (*String != 0); x++) // solange ein Zeichen=0 ist
scherfa2 30:e464b2bb2376 128 {
scherfa2 30:e464b2bb2376 129 DisplaySendeZeichen(*String); // Zeichen durch Pointer
scherfa2 30:e464b2bb2376 130 String++; // Pointer auf nächstes Zeichen
scherfa2 30:e464b2bb2376 131 }
scherfa2 30:e464b2bb2376 132 }
scherfa2 30:e464b2bb2376 133
scherfa2 30:e464b2bb2376 134 /**************************************************************
scherfa2 30:e464b2bb2376 135 Midas Display Initalisierungs-Fuktion
scherfa2 30:e464b2bb2376 136 **************************************************************/
scherfa2 30:e464b2bb2376 137 void DisplayInit()
scherfa2 30:e464b2bb2376 138 {
scherfa2 30:e464b2bb2376 139 wait_ms(40);
scherfa2 30:e464b2bb2376 140 DisplaySendeBefehl(0b00111100); //
scherfa2 30:e464b2bb2376 141 wait_ms(1);
scherfa2 30:e464b2bb2376 142 DisplaySendeBefehl(0b00111100);
scherfa2 30:e464b2bb2376 143 wait_ms(1);
scherfa2 30:e464b2bb2376 144 DisplaySendeBefehl(0b00001000);
scherfa2 30:e464b2bb2376 145 wait_ms(1);
scherfa2 30:e464b2bb2376 146 DisplaySendeBefehl(0b00000001);
scherfa2 30:e464b2bb2376 147 wait_ms(3);
scherfa2 30:e464b2bb2376 148 DisplaySendeBefehl(0b00000110);
scherfa2 30:e464b2bb2376 149
scherfa2 30:e464b2bb2376 150
scherfa2 30:e464b2bb2376 151
scherfa2 30:e464b2bb2376 152
scherfa2 30:e464b2bb2376 153
scherfa2 30:e464b2bb2376 154
scherfa2 30:e464b2bb2376 155 /*_delay_ms(20); // delay>15ms
scherfa2 30:e464b2bb2376 156 DisplaySendeBefehl(0b00110000); // Instruktion
scherfa2 30:e464b2bb2376 157 _delay_ms(5); // delay>4.1ms
scherfa2 30:e464b2bb2376 158 DisplaySendeBefehl(0b00110000); // Instruktion
scherfa2 30:e464b2bb2376 159 _delay_ms(5); // delay>100us
scherfa2 30:e464b2bb2376 160 DisplaySendeBefehl(0b00110000); // Instruktion
scherfa2 30:e464b2bb2376 161 DisplaySendeBefehl(0b00111100); // 8bit-,2line-,5x11dots mode
scherfa2 30:e464b2bb2376 162 DisplaySendeBefehl(0b00001000); // Display off
scherfa2 30:e464b2bb2376 163 DisplaySendeBefehl(0b00000001); // Display clear
scherfa2 30:e464b2bb2376 164 DisplaySendeBefehl(0b00000110); // Entry mode set*/
scherfa2 30:e464b2bb2376 165 }
scherfa2 30:e464b2bb2376 166
scherfa2 30:e464b2bb2376 167 /**************************************************************
scherfa2 30:e464b2bb2376 168 Gehe zu X, Y -Funktion für das Display.
scherfa2 30:e464b2bb2376 169 X ist die Horizontale, Y die Vertikale
scherfa2 30:e464b2bb2376 170 X muss 20<=x>0 sein / Y muss 4<=y>0 sein
scherfa2 30:e464b2bb2376 171
scherfa2 30:e464b2bb2376 172 Zeilen des Displays wie folgt:
scherfa2 30:e464b2bb2376 173 y
scherfa2 30:e464b2bb2376 174 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 175 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 176 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 177 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 178 **************************************************************/
scherfa2 30:e464b2bb2376 179 void gotoxy(unsigned char x, unsigned char y)
scherfa2 30:e464b2bb2376 180 {
scherfa2 30:e464b2bb2376 181 unsigned char data = 0;
scherfa2 30:e464b2bb2376 182
scherfa2 30:e464b2bb2376 183 switch (y)
scherfa2 30:e464b2bb2376 184 {
scherfa2 30:e464b2bb2376 185 case 1:
scherfa2 30:e464b2bb2376 186 data = 0b10000000 | (0x00+x-1); // +0 (0x00)
scherfa2 30:e464b2bb2376 187 break;
scherfa2 30:e464b2bb2376 188
scherfa2 30:e464b2bb2376 189 case 2: //
scherfa2 30:e464b2bb2376 190 data = 0b10000000 | (0x14+x-1); // +20 (0x14)
scherfa2 30:e464b2bb2376 191 break;
scherfa2 30:e464b2bb2376 192
scherfa2 30:e464b2bb2376 193 case 3:
scherfa2 30:e464b2bb2376 194 data = 0b10000000 | (0x40+x-1); // +64 (0x40)
scherfa2 30:e464b2bb2376 195 break;
scherfa2 30:e464b2bb2376 196
scherfa2 30:e464b2bb2376 197 case 4:
scherfa2 30:e464b2bb2376 198 data = 0b10000000 | (0x54+x-1); // +84 (0x54)
scherfa2 30:e464b2bb2376 199 break;
scherfa2 30:e464b2bb2376 200
scherfa2 30:e464b2bb2376 201 }
scherfa2 30:e464b2bb2376 202 DisplaySendeBefehl(data); // Berechneter Übergabeparameter data
scherfa2 30:e464b2bb2376 203 }
scherfa2 30:e464b2bb2376 204
scherfa2 30:e464b2bb2376 205
scherfa2 30:e464b2bb2376 206