Multiple Sevensegment Display Driving using rs485

Dependents:   Multiple_7SegDisplays

Fork of OSL10564_74HC595 by Kenji Arai

Committer:
shivanandgowdakr
Date:
Tue Aug 21 10:21:31 2018 +0000
Revision:
1:a8e603686790
Parent:
0:3373357a49f4
No changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:3373357a49f4 1 /*
kenjiArai 0:3373357a49f4 2 * Mbed Library / Akizuki 7-segment LED driver [OSL10564-74HC595-x]
kenjiArai 0:3373357a49f4 3 * http://akizukidenshi.com/catalog/g/gM-12643/
kenjiArai 0:3373357a49f4 4 *
kenjiArai 0:3373357a49f4 5 * Copyright (c) 2018 Kenji Arai / JH1PJL
kenjiArai 0:3373357a49f4 6 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:3373357a49f4 7 * http://mbed.org/users/kenjiArai/
kenjiArai 0:3373357a49f4 8 * Created: January 7th, 2018
kenjiArai 0:3373357a49f4 9 * Revised: January 22nd, 2018
kenjiArai 0:3373357a49f4 10 */
kenjiArai 0:3373357a49f4 11
kenjiArai 0:3373357a49f4 12 #ifndef SEVENSEG_LED_DRVR_H
kenjiArai 0:3373357a49f4 13 #define SEVENSEG_LED_DRVR_H
kenjiArai 0:3373357a49f4 14
kenjiArai 0:3373357a49f4 15 #include "mbed.h"
kenjiArai 0:3373357a49f4 16
kenjiArai 0:3373357a49f4 17 #define BUFFER_SIZE 32
kenjiArai 0:3373357a49f4 18
kenjiArai 0:3373357a49f4 19 //extern Serial pc; // only for dubug
kenjiArai 0:3373357a49f4 20
kenjiArai 0:3373357a49f4 21 /**
kenjiArai 0:3373357a49f4 22 * @code
kenjiArai 0:3373357a49f4 23 * #include "mbed.h"
kenjiArai 0:3373357a49f4 24 * #include "7segLed_HC595.h"
kenjiArai 0:3373357a49f4 25 *
kenjiArai 0:3373357a49f4 26 * // case for Nucleo-F446RE, F411RE, F401RE
kenjiArai 0:3373357a49f4 27 * // SPI MOSI, SCLK,port/out,PWM, num of digits
kenjiArai 0:3373357a49f4 28 * SevenSegLed led_7segs(D4, D3, D5, D2, 6);
kenjiArai 0:3373357a49f4 29 *
kenjiArai 0:3373357a49f4 30 * int main() {
kenjiArai 0:3373357a49f4 31 * int32_t count = 123456U;
kenjiArai 0:3373357a49f4 32 * while(true) {
kenjiArai 0:3373357a49f4 33 * led_7segs = count++;
kenjiArai 0:3373357a49f4 34 * wait(0.1f);
kenjiArai 0:3373357a49f4 35 * }
kenjiArai 0:3373357a49f4 36 * }
kenjiArai 0:3373357a49f4 37 * @endcode
kenjiArai 0:3373357a49f4 38 */
kenjiArai 0:3373357a49f4 39
kenjiArai 0:3373357a49f4 40 class SevenSegLed
kenjiArai 0:3373357a49f4 41 {
kenjiArai 0:3373357a49f4 42 public:
kenjiArai 0:3373357a49f4 43 /** 7segments LED driver with 74HC595 (SER, SRCLK, RCLK, /OE)
kenjiArai 0:3373357a49f4 44 * @param sdo (->SER), sclk (->SRCLK), latch (->RCLK), bright (->/OE)
kenjiArai 0:3373357a49f4 45 * @param sdo must be SPI MOSI and sclk must be same SPI SCLK
kenjiArai 0:3373357a49f4 46 * @param latch is any output port
kenjiArai 0:3373357a49f4 47 * @param bright must be PwmOut port
kenjiArai 0:3373357a49f4 48 * @param num_of_digit -> # of 7seg LED's
kenjiArai 0:3373357a49f4 49 */
kenjiArai 0:3373357a49f4 50 SevenSegLed(PinName sdo, PinName sclk, PinName latch, PinName bright,
kenjiArai 0:3373357a49f4 51 uint8_t num_of_digit);
kenjiArai 0:3373357a49f4 52
kenjiArai 0:3373357a49f4 53 /** Set data into 7seg LED's
kenjiArai 0:3373357a49f4 54 * @param unsigned data (overflow may occur depend on number of LEDs)
kenjiArai 0:3373357a49f4 55 * @return none
kenjiArai 0:3373357a49f4 56 */
kenjiArai 0:3373357a49f4 57 void put_num(int32_t dt);
kenjiArai 0:3373357a49f4 58
kenjiArai 0:3373357a49f4 59 SevenSegLed& operator= (int value) {
kenjiArai 0:3373357a49f4 60 put_num(value);
kenjiArai 0:3373357a49f4 61 return *this;
kenjiArai 0:3373357a49f4 62 }
kenjiArai 0:3373357a49f4 63
kenjiArai 0:3373357a49f4 64 /** Set ascii number into 7seg LED's
kenjiArai 0:3373357a49f4 65 * @param ASCII data
kenjiArai 0:3373357a49f4 66 * @return none
kenjiArai 0:3373357a49f4 67 */
kenjiArai 0:3373357a49f4 68 void put_ascii(const char *data);
kenjiArai 0:3373357a49f4 69
kenjiArai 0:3373357a49f4 70 /** Set ascii character strings into 7seg LED's
kenjiArai 0:3373357a49f4 71 * @param all ASCII character
kenjiArai 0:3373357a49f4 72 * @return none
kenjiArai 0:3373357a49f4 73 */
kenjiArai 0:3373357a49f4 74 void put_strings(const char *data);
kenjiArai 0:3373357a49f4 75
kenjiArai 0:3373357a49f4 76 /** Set raw data into 7seg LED's
kenjiArai 0:3373357a49f4 77 * @param Raw data (Segment element)
kenjiArai 0:3373357a49f4 78 * @return none
kenjiArai 0:3373357a49f4 79 */
kenjiArai 0:3373357a49f4 80 void put_raw(uint8_t *data);
kenjiArai 0:3373357a49f4 81
kenjiArai 0:3373357a49f4 82 /** Set dot into 7seg LED's
kenjiArai 0:3373357a49f4 83 * @param position (1= LSB, 2=2nd, 4=3rd, 8=4th, 16, 32, 64 ----)
kenjiArai 0:3373357a49f4 84 * @return none
kenjiArai 0:3373357a49f4 85 */
kenjiArai 0:3373357a49f4 86 void put_dot(uint16_t position);
kenjiArai 0:3373357a49f4 87 void clear_all_dot(void);
kenjiArai 0:3373357a49f4 88
kenjiArai 0:3373357a49f4 89 /** Set Brightness
kenjiArai 0:3373357a49f4 90 * @param britness max(1.0f) and min = all LED off(0.0f)
kenjiArai 0:3373357a49f4 91 * @return none
kenjiArai 0:3373357a49f4 92 */
kenjiArai 0:3373357a49f4 93 void brightness(float bright);
kenjiArai 0:3373357a49f4 94
kenjiArai 0:3373357a49f4 95 /** Set Zero Suppress (defalt OFF)
kenjiArai 0:3373357a49f4 96 * @param mode=true -> zero suppress ON, mode = false -> OFF
kenjiArai 0:3373357a49f4 97 * @return none
kenjiArai 0:3373357a49f4 98 */
kenjiArai 0:3373357a49f4 99 void zero_suppress(bool mode);
kenjiArai 0:3373357a49f4 100
kenjiArai 0:3373357a49f4 101 /** Set clock frequency
kenjiArai 0:3373357a49f4 102 * @param clock frequency (default 1000000Hz(1MHz))
kenjiArai 0:3373357a49f4 103 * @return none
kenjiArai 0:3373357a49f4 104 */
kenjiArai 0:3373357a49f4 105 void frequency(int32_t freq);
kenjiArai 0:3373357a49f4 106
kenjiArai 0:3373357a49f4 107 protected:
kenjiArai 0:3373357a49f4 108 SPI spi_;
kenjiArai 0:3373357a49f4 109 DigitalOut latch_;
kenjiArai 0:3373357a49f4 110 PwmOut pwm_;
kenjiArai 0:3373357a49f4 111
kenjiArai 0:3373357a49f4 112 uint8_t buf[BUFFER_SIZE];
kenjiArai 0:3373357a49f4 113 uint8_t seg[BUFFER_SIZE];
kenjiArai 0:3373357a49f4 114 uint8_t num;
kenjiArai 0:3373357a49f4 115 uint16_t dot_inf;
kenjiArai 0:3373357a49f4 116 uint32_t wrk;
kenjiArai 0:3373357a49f4 117 bool zerosuppress;
kenjiArai 0:3373357a49f4 118 bool num_mode;
kenjiArai 0:3373357a49f4 119 float bright_data;
kenjiArai 0:3373357a49f4 120
kenjiArai 0:3373357a49f4 121 void seven_seg_n_digt(void);
kenjiArai 0:3373357a49f4 122 void set_dot(void);
kenjiArai 0:3373357a49f4 123 void spi_out(void);
kenjiArai 0:3373357a49f4 124
kenjiArai 0:3373357a49f4 125 };
kenjiArai 0:3373357a49f4 126
kenjiArai 0:3373357a49f4 127 #endif // SEVENSEG_LED_DRVR_H