dotmatrixLED animation with ht1632 LED driver.
Dependencies: SDFileSystem mbed
ht1632.cpp@2:f28ec2298aa6, 2015-08-23 (annotated)
- Committer:
- kohacraft
- Date:
- Sun Aug 23 22:55:49 2015 +0000
- Revision:
- 2:f28ec2298aa6
- Parent:
- 0:62dc51c731b4
ver1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kohacraft | 0:62dc51c731b4 | 1 | #include "mbed.h" |
kohacraft | 0:62dc51c731b4 | 2 | #include "ht1632.h" |
kohacraft | 0:62dc51c731b4 | 3 | |
kohacraft | 0:62dc51c731b4 | 4 | DigitalOut ht1632_cs(dp9); |
kohacraft | 0:62dc51c731b4 | 5 | DigitalOut ht1632_wr(dp10); |
kohacraft | 0:62dc51c731b4 | 6 | DigitalOut ht1632_data(dp11); |
kohacraft | 0:62dc51c731b4 | 7 | |
kohacraft | 0:62dc51c731b4 | 8 | void initHt1632() |
kohacraft | 0:62dc51c731b4 | 9 | { |
kohacraft | 0:62dc51c731b4 | 10 | ht1632_cs = 1; |
kohacraft | 0:62dc51c731b4 | 11 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 12 | ht1632_data = 0; |
kohacraft | 0:62dc51c731b4 | 13 | |
kohacraft | 0:62dc51c731b4 | 14 | sendCommand(SYS_EN); |
kohacraft | 0:62dc51c731b4 | 15 | sendCommand(LED_ON); |
kohacraft | 0:62dc51c731b4 | 16 | sendCommand(BLINK_OFF); |
kohacraft | 0:62dc51c731b4 | 17 | sendCommand(RC_MASTER_MODE); |
kohacraft | 0:62dc51c731b4 | 18 | sendCommand(Pmos8Common); |
kohacraft | 0:62dc51c731b4 | 19 | sendCommand(PWM16DUTY); |
kohacraft | 0:62dc51c731b4 | 20 | } |
kohacraft | 0:62dc51c731b4 | 21 | |
kohacraft | 0:62dc51c731b4 | 22 | |
kohacraft | 0:62dc51c731b4 | 23 | void sendCommand( unsigned char orderNum ) |
kohacraft | 0:62dc51c731b4 | 24 | { |
kohacraft | 0:62dc51c731b4 | 25 | unsigned short command = 0x8000; //0b1000 0000 0000 0000 |
kohacraft | 0:62dc51c731b4 | 26 | command = command | ( ( (unsigned short)orderNum) <<5 ); //0b100x xxxx xxx0 0000 |
kohacraft | 0:62dc51c731b4 | 27 | unsigned short mask = 0x8000; |
kohacraft | 0:62dc51c731b4 | 28 | |
kohacraft | 0:62dc51c731b4 | 29 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 30 | ht1632_cs = 0; |
kohacraft | 0:62dc51c731b4 | 31 | |
kohacraft | 0:62dc51c731b4 | 32 | for(int i=0 ; i<12 ; i++ ) |
kohacraft | 0:62dc51c731b4 | 33 | { |
kohacraft | 0:62dc51c731b4 | 34 | ht1632_wr = 0; |
kohacraft | 0:62dc51c731b4 | 35 | ht1632_data = (bool)(command & mask); |
kohacraft | 0:62dc51c731b4 | 36 | mask = mask >> 1; |
kohacraft | 0:62dc51c731b4 | 37 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 38 | } |
kohacraft | 0:62dc51c731b4 | 39 | ht1632_cs = 1; |
kohacraft | 0:62dc51c731b4 | 40 | ht1632_data = 0; |
kohacraft | 0:62dc51c731b4 | 41 | } |
kohacraft | 0:62dc51c731b4 | 42 | |
kohacraft | 0:62dc51c731b4 | 43 | void sendData( unsigned char address , unsigned char *data , int length) |
kohacraft | 0:62dc51c731b4 | 44 | { |
kohacraft | 0:62dc51c731b4 | 45 | unsigned short command = 0xa000; //0b1010 0000 0000 0000 |
kohacraft | 0:62dc51c731b4 | 46 | address = address & 0x3F; //avilable 7bit |
kohacraft | 0:62dc51c731b4 | 47 | command = command | (((unsigned short)address)<<6); //0b101x xxxx xx00 0000 |
kohacraft | 0:62dc51c731b4 | 48 | unsigned short commandMmask = 0x8000; |
kohacraft | 0:62dc51c731b4 | 49 | unsigned char dataMmask = 0x80; |
kohacraft | 0:62dc51c731b4 | 50 | |
kohacraft | 0:62dc51c731b4 | 51 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 52 | ht1632_cs = 0; |
kohacraft | 0:62dc51c731b4 | 53 | |
kohacraft | 0:62dc51c731b4 | 54 | for(int i=0 ; i<10 ; i++ ) |
kohacraft | 0:62dc51c731b4 | 55 | { |
kohacraft | 0:62dc51c731b4 | 56 | ht1632_wr = 0; |
kohacraft | 0:62dc51c731b4 | 57 | ht1632_data = (bool)(command & commandMmask); |
kohacraft | 0:62dc51c731b4 | 58 | commandMmask = commandMmask >> 1; |
kohacraft | 0:62dc51c731b4 | 59 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 60 | } |
kohacraft | 0:62dc51c731b4 | 61 | |
kohacraft | 0:62dc51c731b4 | 62 | for(int j=0 ; j<length ; j++ ) |
kohacraft | 0:62dc51c731b4 | 63 | { |
kohacraft | 0:62dc51c731b4 | 64 | dataMmask = 0x01; |
kohacraft | 0:62dc51c731b4 | 65 | for(int i=0 ; i<4 ; i++ ) |
kohacraft | 0:62dc51c731b4 | 66 | { |
kohacraft | 0:62dc51c731b4 | 67 | ht1632_wr = 0; |
kohacraft | 0:62dc51c731b4 | 68 | ht1632_data = (bool)(~data[j] & dataMmask); |
kohacraft | 0:62dc51c731b4 | 69 | dataMmask = dataMmask << 1; |
kohacraft | 0:62dc51c731b4 | 70 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 71 | } |
kohacraft | 0:62dc51c731b4 | 72 | |
kohacraft | 0:62dc51c731b4 | 73 | dataMmask = 0x10; |
kohacraft | 0:62dc51c731b4 | 74 | for(int i=0 ; i<4 ; i++ ) |
kohacraft | 0:62dc51c731b4 | 75 | { |
kohacraft | 0:62dc51c731b4 | 76 | ht1632_wr = 0; |
kohacraft | 0:62dc51c731b4 | 77 | ht1632_data = (bool)(~data[j] & dataMmask); |
kohacraft | 0:62dc51c731b4 | 78 | dataMmask = dataMmask << 1; |
kohacraft | 0:62dc51c731b4 | 79 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 80 | } |
kohacraft | 0:62dc51c731b4 | 81 | } |
kohacraft | 0:62dc51c731b4 | 82 | |
kohacraft | 0:62dc51c731b4 | 83 | ht1632_wr = 1; |
kohacraft | 0:62dc51c731b4 | 84 | ht1632_cs = 1; |
kohacraft | 0:62dc51c731b4 | 85 | ht1632_data = 0; |
kohacraft | 0:62dc51c731b4 | 86 | } |
kohacraft | 0:62dc51c731b4 | 87 | |
kohacraft | 0:62dc51c731b4 | 88 | void convColor( unsigned char *data , int length ) |
kohacraft | 0:62dc51c731b4 | 89 | { |
kohacraft | 0:62dc51c731b4 | 90 | ; |
kohacraft | 0:62dc51c731b4 | 91 | } |