output text on Seven-segment display, 4 digits, SPI, 74HC4094PW

Dependents:   Exam_TK Exam_TK

Files at this revision

API Documentation at this revision

Comitter:
docent
Date:
Thu Jun 13 16:25:50 2019 +0000
Commit message:
For my students 13.06.2019

Changed in this revision

QuadDisplay2.cpp Show annotated file Show diff for this revision Revisions of this file
QuadDisplay2.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QuadDisplay2.cpp	Thu Jun 13 16:25:50 2019 +0000
@@ -0,0 +1,103 @@
+#include "QuadDisplay2.h"
+#include "mbed.h"
+
+QuadDisplayMy::QuadDisplayMy(SPI *spi, PinName cs_pin) : 
+        _dev_spi(spi), _cs_pin(cs_pin)
+{
+    assert (spi);
+   _cs_pin = 0;  
+}
+
+void QuadDisplayMy::displayDigits(uint8_t *text)
+{
+    int i;
+     _dev_spi->lock();
+     _cs_pin = 0;  
+     for (i=0;i<4;i++)
+        _dev_spi->write(conv(text[i])); 
+     _cs_pin = 1;
+     _dev_spi->unlock(); 
+}
+
+uint8_t QuadDisplayMy::conv(uint8_t c)
+{
+    uint8_t a;
+    switch (c){
+       case char(0):
+          a=QD_NONE;
+          break; 
+       case char(1):
+          a=QD_DOT;
+          break; 
+       case char(2):
+          a=QD_MINUS;
+          break;           
+       case char(3):
+          a=QD_UNDERSCORE;
+          break; 
+       case char(4):
+          a=QD_DEGREE;
+          break; 
+       case char(5):
+          a=QD_UNDER_DEGREE;
+          break;         
+       case char(6):
+          a=QD_UPPERSCORE;
+          break; 
+       case char(7):
+          a=QD_COMMAS;
+          break; 
+       case char(8):
+          a=QD_UNDERCOMMAS;
+          break;                            
+       
+       case '-':     
+          a=QD_MINUS;  
+          break;                                              
+       case '0':
+          a=QD_0;
+          break;
+       case '1':
+          a=QD_1; 
+          break;
+       case '2':
+          a=QD_2; 
+          break;          
+       case '3':
+          a=QD_3;
+          break;
+       case '4':
+          a=QD_4;
+          break; 
+       case '5':
+          a=QD_5;
+          break;
+       case '6':
+          a=QD_6;
+          break; 
+       case '7':
+          a=QD_7;
+          break; 
+       case '8':
+          a=QD_8;
+          break;
+       case '9':
+          a=QD_9;
+          break;  
+       case 'd':
+       case 'D':         
+          a=QD_d;
+          break;            
+       case 'P':
+       case 'p':         
+          a=QD_P;
+          break;    
+       case 'H':
+       case 'h':         
+          a=QD_H;
+          break;                                
+       default:
+          a=QD_NONE;                                         
+    }  
+    return a^0xff;     
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QuadDisplay2.h	Thu Jun 13 16:25:50 2019 +0000
@@ -0,0 +1,95 @@
+#ifndef QUAD_DISPLAY
+#define QUAD_DISPLAY
+
+#include "mbed.h"
+#include <assert.h>
+/*
+original
+    ___7___
+   /       \
+  |         |
+ 2|         |6
+   \___1___/
+   /       \
+  |         |
+ 3|         |5
+   \___4___/
+               *0
+ ----my---------
+ 
+    ___1___
+   /       \
+  |         |
+ 6|         |2
+   \___7___/
+   /       \
+  |         |
+ 5|         |3
+   \___4___/
+               *0              
+               
+ */
+
+#define QD_NONE  0//my 0
+#define QD_DOT   1//my 1
+#define QD_MINUS 0b10000000//my 2
+
+#define QD_UNDERSCORE       0b00010000//my 3
+#define QD_DEGREE           0b11000110//my 4
+#define QD_UNDER_DEGREE     0b10111000//my 5
+#define QD_UPPERSCORE       0b00000010//my 6
+#define QD_COMMAS           0b00000100//my 7
+#define QD_UNDERCOMMAS      0b00001000//my 8
+             //76543210
+#define QD_0 0b01111110
+#define QD_1 0b00001100//my
+#define QD_2 0b10110110//my
+#define QD_3 0b10011110//my
+#define QD_4 0b11001100//my
+#define QD_5 0b11011010//my
+#define QD_6 0b11111010//my
+#define QD_7 0b00001110//my
+#define QD_8 0b11111110//my
+#define QD_9 0b11011110//my
+
+#define QD_A 0b00000000
+#define QD_a 0b00000000
+#define QD_b 0b00000000
+#define QD_C 0b01100000
+#define QD_c 0b00000000
+            //76543210
+#define QD_d 0b10111100//my
+#define QD_E 0b00000000
+#define QD_f 0b00000000
+#define QD_F QD_f
+#define QD_H 0b11101100 //my
+#define QD_h 0b00000000
+#define QD_I QD_1
+#define QD_J 0b00000000
+#define QD_K QD_H
+#define QD_L 0b00000000
+#define QD_n 0b00000000
+#define QD_o 0b00000000
+#define QD_O QD_0
+             //76543210
+#define QD_P 0b11100110//my
+#define QD_r 0b00000000
+#define QD_S 0b00000000
+#define QD_t 0b00000000
+#define QD_u 0b00000000
+#define QD_U 0b00000000
+#define QD_Y 0b00000000
+
+
+class QuadDisplayMy
+{
+private:
+    SPI    *_dev_spi; 
+    DigitalOut  _cs_pin; 
+     uint8_t conv(uint8_t c);   
+public:
+    QuadDisplayMy(SPI *spi, PinName cs_pin);
+    void displayDigits(uint8_t *text);
+};
+
+#endif