1 // license:BSD-3-Clause 2 // copyright-holders:Joakim Larsson Edstrom 3 /********************************************************************** 4 5 Siemens SDA5708 8 character 7x5 dot matrix LED display 6 7 **********************************************************************/ 8 9 #ifndef MAME_VIDEO_SDA5708_H 10 #define MAME_VIDEO_SDA5708_H 11 12 #pragma once 13 14 /* Misc info 15 * --------- 16 * http://www.sbprojects.com/knowledge/footprints/sda5708/index.php 17 * http://arduinotehniq.blogspot.se/2015/07/sda5708-display-8-character-7x5-dot.html 18 * 19 * Display front - LEDs 20 * -------------------- 21 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 22 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 23 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 24 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 25 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 26 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 27 * xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx 28 * Dig0 Dig1 Dig2 Dig3 Dig4 Dig5 Dig6 Dig7 29 * 30 * Display rear - Pinout 31 * --------------------- 32 * +--------------------------------------------------------+ 33 * | O O | 34 * | +----------------------------------------------+ | 35 * | | o o o o o o | | 36 * | | Pin:6 5 4 3 2 1 | | 37 * | | | | 38 * | +----------------------------------------------+ | 39 * +--------------------------------------------------------+ 40 * 6:GND 5:_RESET 4:SDCLK 3:Data 2:_Load 1:Vcc 41 * 42 */ 43 44 45 ///************************************************************************* 46 // TYPE DEFINITIONS 47 ///************************************************************************* 48 49 // ======================> sda5708_device 50 51 class sda5708_device : public device_t 52 { 53 public: 54 // construction/destruction 55 sda5708_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 56 57 DECLARE_WRITE_LINE_MEMBER( load_w ); 58 DECLARE_WRITE_LINE_MEMBER( data_w ); 59 DECLARE_WRITE_LINE_MEMBER( sdclk_w ); 60 DECLARE_WRITE_LINE_MEMBER( reset_w ); 61 62 protected: 63 // device-level overrides 64 virtual void device_start() override; 65 virtual void device_reset() override; 66 67 void update_display(); 68 69 private: 70 enum { 71 SDA5708_REG_MASK = 0xE0, 72 73 SDA5708_CNTR_COMMAND = 0xE0, 74 SDA5708_CNTR_BRIGHT_MAS= 0x1F, 75 SDA5708_CNTR_BRIGHT_100= 0x00, 76 SDA5708_CNTR_BRIGHT_53 = 0x01, 77 SDA5708_CNTR_BRIGHT_40 = 0x02, 78 SDA5708_CNTR_BRIGHT_27 = 0x03, 79 SDA5708_CNTR_BRIGHT_20 = 0x04, 80 SDA5708_CNTR_BRIGHT_13 = 0x05, 81 SDA5708_CNTR_BRIGHT_6_6= 0x06, 82 SDA5708_CNTR_BRIGHT_0 = 0x07, 83 SDA5708_CNTR_PKCUR_12_5= 0x08, 84 85 SDA5708_CLEAR_COMMAND = 0xC0, 86 87 SDA5708_ADDR_COMMAND = 0xA0, 88 SDA5708_ADDR_LED_MASK = 0x07, 89 SDA5708_ADDR_LED0 = 0x00, 90 SDA5708_ADDR_LED1 = 0x01, 91 SDA5708_ADDR_LED2 = 0x02, 92 SDA5708_ADDR_LED3 = 0x03, 93 SDA5708_ADDR_LED4 = 0x04, 94 SDA5708_ADDR_LED5 = 0x05, 95 SDA5708_ADDR_LED6 = 0x06, 96 SDA5708_ADDR_LED7 = 0x07, 97 98 SDA5708_DATA_COMMAND = 0x00 99 }; 100 101 output_finder<8, 7, 5> m_dots; 102 uint8_t m_serial; 103 uint8_t m_load; 104 uint8_t m_reset; 105 uint8_t m_data; 106 uint8_t m_sdclk; 107 uint8_t m_dispmem[7 * 8]; 108 uint8_t m_cdp; 109 uint8_t m_digit; 110 uint8_t m_bright; 111 uint8_t m_clear; 112 uint8_t m_ip; 113 }; 114 115 116 // device type definition 117 DECLARE_DEVICE_TYPE(SDA5708, sda5708_device) 118 119 #endif // MAME_VIDEO_SDA5708_H 120