output text on Seven-segment display, 4 digits, SPI, 74HC4094PW
Revision 0:f8d176816ac2, committed 2019-06-13
- 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