kohacraft Lab
/
kc_matrixclock_withRTC
Dot Matrix LED clock with RTC ver1.0
Embed:
(wiki syntax)
Show/hide line numbers
TLC5940.cpp
00001 #include "TLC5940.h" 00002 00003 SPI driver( dp2 , NC , dp6 ); //mosi , miso , sck 00004 DigitalOut vprg = dp4; 00005 DigitalOut xlat = dp9; 00006 DigitalOut blank = dp10; 00007 //gsclk dp24に接続(CPUクロックの2分周したクロックを利用) 00008 int num_drivers = 1; 00009 00010 void setup (int num_ics) 00011 { 00012 blank = 1; //LEDをOFF 00013 00014 //IO0_1(dp24)をCLKOUTに設定し、gsclkとして利用する 00015 LPC_IOCON->PIO0_1 |= 1; // PIO0_1をCLKOUTとして使用する 00016 LPC_SYSCON->CLKOUTCLKSEL |= 0x3; // 0:RC 1:Xtal 2:WDT 3:mainclock 00017 LPC_SYSCON->CLKOUTUEN = 0; // レジスタ更新 00018 LPC_SYSCON->CLKOUTUEN = 1; 00019 while (!(LPC_SYSCON->CLKOUTUEN & 0x01)); 00020 LPC_SYSCON->CLKOUTDIV |= 2; // 2分周 00021 00022 00023 driver.format (6,0); 00024 driver.frequency (20000000); 00025 if (num_ics <= 0) 00026 { 00027 num_drivers = 1; 00028 } 00029 else 00030 { 00031 num_drivers = num_ics; 00032 } 00033 00034 xlat = 0; // hold GS/DC data constant 00035 00036 //補正データを最大に設定 00037 vprg = 1; 00038 for (int i = 0; i<16*num_ics; i++) 00039 { 00040 driver.write (0x3F); //最大 00041 } 00042 xlat = 1; 00043 xlat = 0; // hold GS/DC data constant 00044 00045 driver.format (12,0); 00046 vprg = 0; // sets drivers to GS mode. Set to 1 to change to DC mode 00047 00048 blank = 0; 00049 00050 00051 } 00052 00053 00054 void update_led (unsigned short* LEDS) 00055 { 00056 //blank = 0; 00057 for (int k = (num_drivers - 1); k >= 0; k--) 00058 { 00059 for (int i = (16 - 1); i >= 0; i--) 00060 { 00061 driver.write (*(LEDS + k + i)); 00062 } 00063 } 00064 blank = 1; 00065 xlat = 1; 00066 xlat = 0; 00067 blank = 0; 00068 00069 driver.format (1,0); 00070 driver.write (0); 00071 driver.format (12,0); 00072 wait_us(170); //4096階調のために必要な時間 4096/24MHz 00073 00074 }
Generated on Wed Jul 13 2022 08:03:41 by 1.7.2