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