Something for HACMan LED Sign

Dependencies:   mbed

Committer:
TBSliver
Date:
Sat Aug 27 09:53:12 2011 +0000
Revision:
1:354410846278
Parent:
0:772568a970df
Child:
2:ecd97a0901e2
hopefully working with tests;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TBSliver 1:354410846278 1 #include "ledsign.h"
TBSliver 0:772568a970df 2
TBSliver 0:772568a970df 3 // Sign Output Pins
TBSliver 0:772568a970df 4
TBSliver 0:772568a970df 5 BusOut address(p25, p26, p27, p28); // Address 0 to 16
TBSliver 0:772568a970df 6 BusOut colour(p23, p24); // 0 = off, 1 = red, 2 = green, 3 = orange
TBSliver 0:772568a970df 7
TBSliver 1:354410846278 8 DigitalOut abTop(p22); // bank A or B switch for Top Row - 1 = write to A, display B, 0 = write to B, display A
TBSliver 0:772568a970df 9 DigitalOut clkTop(p21); // clock for Top Row
TBSliver 0:772568a970df 10 DigitalOut weTop(p20); // Write Enable for Top Row
TBSliver 0:772568a970df 11 DigitalOut aeTop(p19); // Address Enable for Top Row
TBSliver 0:772568a970df 12 DigitalOut enbTop(p18); // Enable for Top Row
TBSliver 0:772568a970df 13
TBSliver 1:354410846278 14 DigitalOut abBot(p17); // bank A or B switch for Bottom Row - 1 = write to A, display B, 0 = write to B, display A
TBSliver 0:772568a970df 15 DigitalOut clkBot(p16); // clock for Bottom Row
TBSliver 0:772568a970df 16 DigitalOut weBot(p15); // Write Enable for Bottom Row
TBSliver 0:772568a970df 17 DigitalOut aeBot(p14); // Address Enable for Bottom Row
TBSliver 0:772568a970df 18 DigitalOut enbBot(p13); // Enable for Bottom Row
TBSliver 0:772568a970df 19
TBSliver 0:772568a970df 20 int main() {
TBSliver 1:354410846278 21
TBSliver 1:354410846278 22 setup();
TBSliver 1:354410846278 23
TBSliver 1:354410846278 24 test1();
TBSliver 1:354410846278 25
TBSliver 1:354410846278 26 clearScreen();
TBSliver 1:354410846278 27
TBSliver 1:354410846278 28 }
TBSliver 1:354410846278 29
TBSliver 1:354410846278 30 void setup() {
TBSliver 1:354410846278 31 address = 0;
TBSliver 1:354410846278 32 colour = 0;
TBSliver 1:354410846278 33 abTop = 0;
TBSliver 1:354410846278 34 clkTop = 0;
TBSliver 1:354410846278 35 weTop = 0;
TBSliver 1:354410846278 36 aeTop = 0;
TBSliver 1:354410846278 37 enbTop = 0;
TBSliver 1:354410846278 38 abBot = 0;
TBSliver 1:354410846278 39 clkBot = 0;
TBSliver 1:354410846278 40 weBot = 0;
TBSliver 1:354410846278 41 aeBot = 0;
TBSliver 1:354410846278 42 enbBot = 0;
TBSliver 1:354410846278 43 }
TBSliver 1:354410846278 44
TBSliver 1:354410846278 45 void test1() {
TBSliver 1:354410846278 46 /*
TBSliver 1:354410846278 47 This function should turn on the whole screen to orange, then make the
TBSliver 1:354410846278 48 right hand side orange, left hand side black, and then make the left hand
TBSliver 1:354410846278 49 side orange, right hand side black.
TBSliver 1:354410846278 50 */
TBSliver 1:354410846278 51 colour = 3; // set colour to orange
TBSliver 1:354410846278 52 abTop = 1; // set top bank to A
TBSliver 1:354410846278 53 abBot = 1; // set bottom bank to A
TBSliver 1:354410846278 54
TBSliver 1:354410846278 55 for (int i=0; i<128; i++) { // clock in 128 bits to turn all the LED's on
TBSliver 1:354410846278 56 clkTop = 1;
TBSliver 1:354410846278 57 clkBot = 1;
TBSliver 1:354410846278 58 wait_us(10);
TBSliver 1:354410846278 59 clkTop = 0;
TBSliver 1:354410846278 60 clkBot = 0;
TBSliver 1:354410846278 61 wait_us(10);
TBSliver 1:354410846278 62 }
TBSliver 1:354410846278 63
TBSliver 1:354410846278 64 for (int i=0; i<16; i++) {
TBSliver 1:354410846278 65 writeTop(i);
TBSliver 1:354410846278 66 writeBot(i);
TBSliver 1:354410846278 67 }
TBSliver 1:354410846278 68
TBSliver 1:354410846278 69 abTop = 0;
TBSliver 1:354410846278 70 abBot = 0;
TBSliver 1:354410846278 71 enbTop = 1;
TBSliver 1:354410846278 72 enbBot = 1;
TBSliver 1:354410846278 73
TBSliver 1:354410846278 74 wait(0.5);
TBSliver 1:354410846278 75
TBSliver 1:354410846278 76 colour = 0;
TBSliver 1:354410846278 77
TBSliver 1:354410846278 78 for (int i=0; i<64; i++) { // clock in 64 bits of black
TBSliver 1:354410846278 79 clkTop = 1;
TBSliver 1:354410846278 80 clkBot = 1;
TBSliver 1:354410846278 81 wait_us(10);
TBSliver 1:354410846278 82 clkTop = 0;
TBSliver 1:354410846278 83 clkBot = 0;
TBSliver 1:354410846278 84 wait_us(10);
TBSliver 1:354410846278 85 }
TBSliver 1:354410846278 86
TBSliver 1:354410846278 87 for (int i=0; i<16; i++) {
TBSliver 1:354410846278 88 writeTop(i);
TBSliver 1:354410846278 89 writeBot(i);
TBSliver 1:354410846278 90 }
TBSliver 1:354410846278 91
TBSliver 1:354410846278 92 abTop = 1;
TBSliver 1:354410846278 93 abBot = 1;
TBSliver 1:354410846278 94
TBSliver 1:354410846278 95 wait(0.5);
TBSliver 1:354410846278 96
TBSliver 1:354410846278 97 colour = 3;
TBSliver 1:354410846278 98
TBSliver 1:354410846278 99 for (int i=0; i<64; i++) { // clock in 64 bits of orange
TBSliver 1:354410846278 100 clkTop = 1;
TBSliver 1:354410846278 101 clkBot = 1;
TBSliver 1:354410846278 102 wait_us(10);
TBSliver 1:354410846278 103 clkTop = 0;
TBSliver 1:354410846278 104 clkBot = 0;
TBSliver 1:354410846278 105 wait_us(10);
TBSliver 1:354410846278 106 }
TBSliver 1:354410846278 107
TBSliver 1:354410846278 108 for (int i=0; i<16; i++) {
TBSliver 1:354410846278 109 writeTop(i);
TBSliver 1:354410846278 110 writeBot(i);
TBSliver 1:354410846278 111 }
TBSliver 1:354410846278 112
TBSliver 1:354410846278 113 abTop = 1;
TBSliver 1:354410846278 114 abBot = 1;
TBSliver 1:354410846278 115
TBSliver 1:354410846278 116 wait(0.5);
TBSliver 1:354410846278 117 }
TBSliver 1:354410846278 118
TBSliver 1:354410846278 119 void clearScreen() {
TBSliver 1:354410846278 120 enbTop = 0;
TBSliver 1:354410846278 121 enbBot = 0;
TBSliver 1:354410846278 122 abTop = 1;
TBSliver 1:354410846278 123 abBot = 1;
TBSliver 1:354410846278 124
TBSliver 1:354410846278 125 colour = 0;
TBSliver 1:354410846278 126
TBSliver 1:354410846278 127 for (int i=0; i<128; i++) { // clock in 128 bits of black
TBSliver 1:354410846278 128 clkTop = 1;
TBSliver 1:354410846278 129 clkBot = 1;
TBSliver 1:354410846278 130 wait_us(10);
TBSliver 1:354410846278 131 clkTop = 0;
TBSliver 1:354410846278 132 clkBot = 0;
TBSliver 1:354410846278 133 wait_us(10);
TBSliver 1:354410846278 134 }
TBSliver 1:354410846278 135
TBSliver 1:354410846278 136 for (int i=0; i<16; i++) {
TBSliver 1:354410846278 137 writeTop(i);
TBSliver 1:354410846278 138 writeBot(i);
TBSliver 1:354410846278 139 }
TBSliver 1:354410846278 140
TBSliver 1:354410846278 141 abTop = 0;
TBSliver 1:354410846278 142 abBot = 0;
TBSliver 1:354410846278 143
TBSliver 1:354410846278 144 for (int i=0; i<16; i++) {
TBSliver 1:354410846278 145 writeTop(i);
TBSliver 1:354410846278 146 writeBot(i);
TBSliver 1:354410846278 147 }
TBSliver 0:772568a970df 148
TBSliver 0:772568a970df 149 }
TBSliver 1:354410846278 150
TBSliver 1:354410846278 151 void writeTop(int topAddress) {
TBSliver 1:354410846278 152 address = topAddress;
TBSliver 1:354410846278 153 aeTop = 1;
TBSliver 1:354410846278 154 wait_us(1);
TBSliver 1:354410846278 155 weTop = 1;
TBSliver 1:354410846278 156 wait_us(1);
TBSliver 1:354410846278 157 weTop = 0;
TBSliver 1:354410846278 158 wait_us(1);
TBSliver 1:354410846278 159 aeTop = 0;
TBSliver 1:354410846278 160 wait_us(1);
TBSliver 1:354410846278 161 }
TBSliver 1:354410846278 162
TBSliver 1:354410846278 163 void writeBot(int botAddress) {
TBSliver 1:354410846278 164 address = botAddress;
TBSliver 1:354410846278 165 aeBot = 1;
TBSliver 1:354410846278 166 wait_us(1);
TBSliver 1:354410846278 167 weBot = 1;
TBSliver 1:354410846278 168 wait_us(1);
TBSliver 1:354410846278 169 weBot = 0;
TBSliver 1:354410846278 170 wait_us(1);
TBSliver 1:354410846278 171 aeBot = 0;
TBSliver 1:354410846278 172 wait_us(1);
TBSliver 1:354410846278 173 }