Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

MAX6954 or 6955 Help

Status
Not open for further replies.
Advanced Member level 6
Joined
Dec 4, 2012
Messages
4,280
Helped
822
Reputation
1,654
Reaction score
791
Trophy points
1,393
Location
Bangalore, India
Activity points
0
Can somebody provide MAX6955 or 6954 initialization routine. I need to drive 8 X 16-Segment displays.

Edit: I found this C++ Code. Can somebody translate it to C Code? I found this code at mbed.com

https://mbed.org/users/lonesometraveler/code/MAX6955/rev/


Code C - [expand]
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
#include "MAX6955.h"
 
MAX6955::MAX6955(PinName sda, PinName scl, char driver): i2c_(sda, scl), driver_(driver){}
 
int MAX6955::write(char command, char data){
    char i2cData[2];
    i2cData[0] = command;
    i2cData[1] = data;
    int result = i2c_.write(driver_, i2cData, 2);
    wait(0.07);
    return result;
}
 
int MAX6955::writeS(char* buffer){
    int result = i2c_.write(driver_, (char *) buffer, 8);
    wait(0.07);
    return result;
}
 
int MAX6955::init(){
    int result = 0;
    result = result + write(reg_decodeMode, 0x00);
    result = result + write(reg_scanLimit, 0x07);
    result = result + write(reg_configuration, 0x21);
    result = result + write(reg_globalIntensity, 0x08);
    result = result + write(reg_digitType, 0xFF);
    result = result + write(reg_displayTest, 0x00);
    return result;
}




Code C - [expand]
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
#ifndef MAX6955_H
#define MAX6955_H
 
#include "mbed.h"
 
#define reg_noOp 0x00
#define reg_decodeMode 0x01
#define reg_globalIntensity 0x02
#define reg_scanLimit 0x03
#define reg_configuration 0x04
#define reg_displayTest 0x07
#define reg_digitType 0x0C
 
#define reg_intensity10 0x10
#define reg_intensity32 0x11
#define reg_intensity54 0x12
#define reg_intensity76 0x13
#define reg_intensity10a 0x14
#define reg_intensity32a 0x15
#define reg_intensity54a 0x16
#define reg_intensity76a 0x17
 
#define USE_GLOBAL 0x00
#define USE_DISCRETE 0x40
#define RUN 0x01
#define SHUTDOWN 0x00
 
#define reg_digit0 0x60
#define reg_digit1 0x61
#define reg_digit2 0x62
#define reg_digit3 0x63
#define reg_digit4 0x64
#define reg_digit5 0x65
#define reg_digit6 0x66
#define reg_digit7 0x67
#define reg_digit0a 0x68
#define reg_digit1a 0x69
#define reg_digit2a 0x6A
#define reg_digit3a 0x6B
#define reg_digit4a 0x6C
#define reg_digit5a 0x6D
#define reg_digit6a 0x6E
#define reg_digit7a 0x6F
 
class MAX6955{
    public:
        /* 
         * @param sda mbed pin for I2C SDA
         * @param scl mbed pin for I2C SCL
         * @param driver I2C device address
         */
        MAX6955(PinName sda, PinName scl, char driver);   
        int write(char command, char data);
        int writeS(char* buffer);
        int init(void);
        
    private:
        I2C i2c_;
        char driver_;
};
 
#endif



Somebody please explain these lines.


Code C++ - [expand]
1
2
3
4
5
6
7
MAX6955::MAX6955(PinName sda, PinName scl, char driver): i2c_(sda, scl), driver_(driver){}
 
int result = i2c_.write(driver_, i2cData, 2);
 
private:
        I2C i2c_;
        char driver_;




Edit:

I got CCS C Code. Can somebody translate this to mikroC Code?


Code C - [expand]
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
#define MAX6955BaseAddress 0b11000000 
 
#define reg_noOp 0x00 
#define reg_decodeMode 0x01 
#define reg_globalIntensity 0x02 
#define reg_scanLimit 0x03 
#define reg_configuration 0x04 
#define reg_displayTest 0x07 
#define reg_digitType 0x0C 
 
#define reg_intensity10 0x10 
#define reg_intensity32 0x11 
#define reg_intensity54 0x12 
#define reg_intensity76 0x13 
#define reg_intensity10a 0x14 
#define reg_intensity32a 0x15 
#define reg_intensity54a 0x16 
#define reg_intensity76a 0x17 
 
#define USE_GLOBAL 0x00 
#define USE_DISCRETE 0x40 
#define RUN 0x01 
#define SHUTDOWN 0x00 
 
#define reg_digit0 0x60 
#define reg_digit1 0x61 
#define reg_digit2 0x62 
#define reg_digit3 0x63 
#define reg_digit4 0x64 
#define reg_digit5 0x65 
#define reg_digit6 0x66 
#define reg_digit7 0x67 
#define reg_digit0a 0x68 
#define reg_digit1a 0x69 
#define reg_digit2a 0x6A 
#define reg_digit3a 0x6B 
#define reg_digit4a 0x6C 
#define reg_digit5a 0x6D 
#define reg_digit6a 0x6E 
#define reg_digit7a 0x6F 
 
void writeMAX6955(unsigned char, unsigned char, unsigned char); 
void initMAX6955(unsigned char); 
 
void writeMAX6955(unsigned char driver, unsigned char command, unsigned char data) 
{ 
   i2c_start(); 
   i2c_write(MAX6955BaseAddress + (driver<<1)); 
   i2c_write(command); 
   i2c_write(data); 
   i2c_stop(); 
} 
 
void initMAX6955(unsigned char driver) 
{ 
   writeMAX6955(driver, reg_decodeMode, 0x00); 
   writeMAX6955(driver, reg_scanLimit, 0x07); 
   writeMAX6955(driver, reg_configuration, (RUN|USE_DISCRETE)); 
   writeMAX6955(driver, reg_globalIntensity, 0x0F); 
   writeMAX6955(driver, reg_digitType, 0x00); 
   writeMAX6955(driver, reg_displayTest, 0x01); 
   delay_ms(1000); 
   writeMAX6955(driver, reg_displayTest, 0x00); 
}




Can somebody tell what should be the values of driver, command, and data? I need to display HI on 16 segment displays. I also need the connections.
 
Last edited:

Now I am trying this Code. **broken link removed**

Can somebody check what the problem is. It is not working. I am attaching CCS C Code and Proteus File.

**broken link removed**

Edit: I am attaching a working code. Can somebody modify it so that it displays string "230.145 V".
 

Attachments

  • 16segccsc.jpg
    16segccsc.jpg
    265 KB · Views: 140
  • MAX6955I2C.rar
    54.7 KB · Views: 96
  • MAX6955I2C v1.rar
    33.2 KB · Views: 103
Last edited:

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top