Dot Matrix LED clock with RTC ver1.0

Dependencies:   ds3231 mbed

Committer:
kohacraft
Date:
Tue Aug 11 08:59:44 2015 +0000
Revision:
3:179ec78e9158
Parent:
1:5577d93280da
Dot Matrix LED clock with RTC ver1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kohacraft 0:c872b97ce7ea 1 #include "TLC5940.h"
kohacraft 0:c872b97ce7ea 2
kohacraft 0:c872b97ce7ea 3 SPI driver( dp2 , NC , dp6 ); //mosi , miso , sck
kohacraft 0:c872b97ce7ea 4 DigitalOut vprg = dp4;
kohacraft 0:c872b97ce7ea 5 DigitalOut xlat = dp9;
kohacraft 0:c872b97ce7ea 6 DigitalOut blank = dp10;
kohacraft 3:179ec78e9158 7 //gsclk dp24に接続(CPUクロックの2分周したクロックを利用)
kohacraft 0:c872b97ce7ea 8 int num_drivers = 1;
kohacraft 0:c872b97ce7ea 9
kohacraft 0:c872b97ce7ea 10 void setup (int num_ics)
kohacraft 0:c872b97ce7ea 11 {
kohacraft 3:179ec78e9158 12 blank = 1; //LEDをOFF
kohacraft 0:c872b97ce7ea 13
kohacraft 3:179ec78e9158 14 //IO0_1(dp24)をCLKOUTに設定し、gsclkとして利用する
kohacraft 0:c872b97ce7ea 15 LPC_IOCON->PIO0_1 |= 1; // PIO0_1をCLKOUTとして使用する
kohacraft 3:179ec78e9158 16 LPC_SYSCON->CLKOUTCLKSEL |= 0x3; // 0:RC 1:Xtal 2:WDT 3:mainclock
kohacraft 0:c872b97ce7ea 17 LPC_SYSCON->CLKOUTUEN = 0; // レジスタ更新
kohacraft 0:c872b97ce7ea 18 LPC_SYSCON->CLKOUTUEN = 1;
kohacraft 0:c872b97ce7ea 19 while (!(LPC_SYSCON->CLKOUTUEN & 0x01));
kohacraft 3:179ec78e9158 20 LPC_SYSCON->CLKOUTDIV |= 2; // 2分周
kohacraft 0:c872b97ce7ea 21
kohacraft 3:179ec78e9158 22
kohacraft 0:c872b97ce7ea 23 driver.format (6,0);
kohacraft 0:c872b97ce7ea 24 driver.frequency (20000000);
kohacraft 0:c872b97ce7ea 25 if (num_ics <= 0)
kohacraft 0:c872b97ce7ea 26 {
kohacraft 0:c872b97ce7ea 27 num_drivers = 1;
kohacraft 0:c872b97ce7ea 28 }
kohacraft 0:c872b97ce7ea 29 else
kohacraft 0:c872b97ce7ea 30 {
kohacraft 0:c872b97ce7ea 31 num_drivers = num_ics;
kohacraft 0:c872b97ce7ea 32 }
kohacraft 0:c872b97ce7ea 33
kohacraft 0:c872b97ce7ea 34 xlat = 0; // hold GS/DC data constant
kohacraft 0:c872b97ce7ea 35
kohacraft 0:c872b97ce7ea 36 //補正データを最大に設定
kohacraft 0:c872b97ce7ea 37 vprg = 1;
kohacraft 0:c872b97ce7ea 38 for (int i = 0; i<16*num_ics; i++)
kohacraft 0:c872b97ce7ea 39 {
kohacraft 0:c872b97ce7ea 40 driver.write (0x3F); //最大
kohacraft 0:c872b97ce7ea 41 }
kohacraft 0:c872b97ce7ea 42 xlat = 1;
kohacraft 0:c872b97ce7ea 43 xlat = 0; // hold GS/DC data constant
kohacraft 0:c872b97ce7ea 44
kohacraft 0:c872b97ce7ea 45 driver.format (12,0);
kohacraft 0:c872b97ce7ea 46 vprg = 0; // sets drivers to GS mode. Set to 1 to change to DC mode
kohacraft 0:c872b97ce7ea 47
kohacraft 0:c872b97ce7ea 48 blank = 0;
kohacraft 0:c872b97ce7ea 49
kohacraft 0:c872b97ce7ea 50
kohacraft 0:c872b97ce7ea 51 }
kohacraft 0:c872b97ce7ea 52
kohacraft 0:c872b97ce7ea 53
kohacraft 0:c872b97ce7ea 54 void update_led (unsigned short* LEDS)
kohacraft 0:c872b97ce7ea 55 {
kohacraft 0:c872b97ce7ea 56 //blank = 0;
kohacraft 0:c872b97ce7ea 57 for (int k = (num_drivers - 1); k >= 0; k--)
kohacraft 0:c872b97ce7ea 58 {
kohacraft 0:c872b97ce7ea 59 for (int i = (16 - 1); i >= 0; i--)
kohacraft 0:c872b97ce7ea 60 {
kohacraft 0:c872b97ce7ea 61 driver.write (*(LEDS + k + i));
kohacraft 0:c872b97ce7ea 62 }
kohacraft 0:c872b97ce7ea 63 }
kohacraft 0:c872b97ce7ea 64 blank = 1;
kohacraft 0:c872b97ce7ea 65 xlat = 1;
kohacraft 0:c872b97ce7ea 66 xlat = 0;
kohacraft 0:c872b97ce7ea 67 blank = 0;
kohacraft 0:c872b97ce7ea 68
kohacraft 0:c872b97ce7ea 69 driver.format (1,0);
kohacraft 0:c872b97ce7ea 70 driver.write (0);
kohacraft 0:c872b97ce7ea 71 driver.format (12,0);
kohacraft 3:179ec78e9158 72 wait_us(170); //4096階調のために必要な時間 4096/24MHz
kohacraft 0:c872b97ce7ea 73
kohacraft 0:c872b97ce7ea 74 }