.
Display.cpp@0:cfa2cc5fc505, 2015-07-28 (annotated)
- Committer:
- Jamestom999
- Date:
- Tue Jul 28 08:14:46 2015 +0000
- Revision:
- 0:cfa2cc5fc505
- Child:
- 1:1926cb6ea141
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jamestom999 | 0:cfa2cc5fc505 | 1 | #include "Display.h" |
Jamestom999 | 0:cfa2cc5fc505 | 2 | extern int timer; //Stores timer mode |
Jamestom999 | 0:cfa2cc5fc505 | 3 | extern int Time; //time in 10mS |
Jamestom999 | 0:cfa2cc5fc505 | 4 | |
Jamestom999 | 0:cfa2cc5fc505 | 5 | //A B C d E F g H I J K L M N O P q r S t U V W X y Z |
Jamestom999 | 0:cfa2cc5fc505 | 6 | int ImageTable[26]={0x77,0x1F,0x4E,0x3D,0x4F,0x47,0x7B,0x37,0x30,0x3C,0x37,0x0E,0x00,0x76,0x7E,0x67,0x73,0x46,0x5B,0x0F,0x3E,0x3E,0x00,0x37,0x3B,0x6D}; |
Jamestom999 | 0:cfa2cc5fc505 | 7 | |
Jamestom999 | 0:cfa2cc5fc505 | 8 | DigitalOut CS (D2); |
Jamestom999 | 0:cfa2cc5fc505 | 9 | SPI Display( PTD2,PTD3,PTD1); |
Jamestom999 | 0:cfa2cc5fc505 | 10 | |
Jamestom999 | 0:cfa2cc5fc505 | 11 | void DisplayInit(void){ |
Jamestom999 | 0:cfa2cc5fc505 | 12 | CS =1; //Disable chip select |
Jamestom999 | 0:cfa2cc5fc505 | 13 | Display.format(16,3); //16-bit, mode 3 |
Jamestom999 | 0:cfa2cc5fc505 | 14 | Display.frequency(1000000);//1MHz clock speed |
Jamestom999 | 0:cfa2cc5fc505 | 15 | SendData(0x01, ShutDown ); //Normal Operation |
Jamestom999 | 0:cfa2cc5fc505 | 16 | SendData(0x0F, Intensity); //Brightness set to full |
Jamestom999 | 0:cfa2cc5fc505 | 17 | SendData(0x04, ScanLimit); //Scanning digits 1-5 |
Jamestom999 | 0:cfa2cc5fc505 | 18 | DisplayBCD(1); //BCD decoder active on all digits |
Jamestom999 | 0:cfa2cc5fc505 | 19 | } |
Jamestom999 | 0:cfa2cc5fc505 | 20 | |
Jamestom999 | 0:cfa2cc5fc505 | 21 | void SendData(int data, int address){ |
Jamestom999 | 0:cfa2cc5fc505 | 22 | |
Jamestom999 | 0:cfa2cc5fc505 | 23 | CS=0; //Enable input |
Jamestom999 | 0:cfa2cc5fc505 | 24 | data|=(address<<8); //Data format: XXXXAAAADDDDDDDD, X=dont care. A=address. D=data |
Jamestom999 | 0:cfa2cc5fc505 | 25 | Display.write(data);//Send SPI data |
Jamestom999 | 0:cfa2cc5fc505 | 26 | CS=1; //Disable input |
Jamestom999 | 0:cfa2cc5fc505 | 27 | |
Jamestom999 | 0:cfa2cc5fc505 | 28 | } |
Jamestom999 | 0:cfa2cc5fc505 | 29 | |
Jamestom999 | 0:cfa2cc5fc505 | 30 | void DisplayClear(void){//Only use when not in BCD mode. |
Jamestom999 | 0:cfa2cc5fc505 | 31 | |
Jamestom999 | 0:cfa2cc5fc505 | 32 | SendData(0x00,1); //Send nothing to all the digits. |
Jamestom999 | 0:cfa2cc5fc505 | 33 | SendData(0x00,2); |
Jamestom999 | 0:cfa2cc5fc505 | 34 | SendData(0x00,3); |
Jamestom999 | 0:cfa2cc5fc505 | 35 | SendData(0x00,4); |
Jamestom999 | 0:cfa2cc5fc505 | 36 | SendData(0x00,5); |
Jamestom999 | 0:cfa2cc5fc505 | 37 | |
Jamestom999 | 0:cfa2cc5fc505 | 38 | } |
Jamestom999 | 0:cfa2cc5fc505 | 39 | |
Jamestom999 | 0:cfa2cc5fc505 | 40 | void DisplayBCD(int state){//1 to turn on, 0 to turn off. |
Jamestom999 | 0:cfa2cc5fc505 | 41 | if(state){ |
Jamestom999 | 0:cfa2cc5fc505 | 42 | SendData(0xFF, BCD_Mode); |
Jamestom999 | 0:cfa2cc5fc505 | 43 | }else{ |
Jamestom999 | 0:cfa2cc5fc505 | 44 | SendData(0x00, BCD_Mode); |
Jamestom999 | 0:cfa2cc5fc505 | 45 | } |
Jamestom999 | 0:cfa2cc5fc505 | 46 | } |
Jamestom999 | 0:cfa2cc5fc505 | 47 | |
Jamestom999 | 0:cfa2cc5fc505 | 48 | void DisplayUpdate(void){ |
Jamestom999 | 0:cfa2cc5fc505 | 49 | |
Jamestom999 | 0:cfa2cc5fc505 | 50 | if (timer==Start){ //If timer is in start mode, increment the time |
Jamestom999 | 0:cfa2cc5fc505 | 51 | Time++; |
Jamestom999 | 0:cfa2cc5fc505 | 52 | }else if(timer==Reset){ //If timer is on reset mode, time = 0 |
Jamestom999 | 0:cfa2cc5fc505 | 53 | Time=0; |
Jamestom999 | 0:cfa2cc5fc505 | 54 | } |
Jamestom999 | 0:cfa2cc5fc505 | 55 | |
Jamestom999 | 0:cfa2cc5fc505 | 56 | if(timer!=Disable){ //Display the time on the 7-segment display, if enabled. |
Jamestom999 | 0:cfa2cc5fc505 | 57 | DisplayBCD(1); |
Jamestom999 | 0:cfa2cc5fc505 | 58 | SendData(DPoint| (Time/6000) , 5); |
Jamestom999 | 0:cfa2cc5fc505 | 59 | SendData( ((Time%6000)/1000), 4); |
Jamestom999 | 0:cfa2cc5fc505 | 60 | SendData(DPoint|((Time%1000)/100) , 1); |
Jamestom999 | 0:cfa2cc5fc505 | 61 | SendData( ((Time%100 )/10) , 2); |
Jamestom999 | 0:cfa2cc5fc505 | 62 | SendData( ((Time%10 ) ) , 3); |
Jamestom999 | 0:cfa2cc5fc505 | 63 | } |
Jamestom999 | 0:cfa2cc5fc505 | 64 | } |
Jamestom999 | 0:cfa2cc5fc505 | 65 | |
Jamestom999 | 0:cfa2cc5fc505 | 66 | void DisplayScroll(char data[40]){//Lower case only |
Jamestom999 | 0:cfa2cc5fc505 | 67 | int ScreenText[50]; //Segment data for screen |
Jamestom999 | 0:cfa2cc5fc505 | 68 | int n,length; |
Jamestom999 | 0:cfa2cc5fc505 | 69 | |
Jamestom999 | 0:cfa2cc5fc505 | 70 | for(n=0;n<50;n++){ //clear array |
Jamestom999 | 0:cfa2cc5fc505 | 71 | ScreenText[n]=0; |
Jamestom999 | 0:cfa2cc5fc505 | 72 | } |
Jamestom999 | 0:cfa2cc5fc505 | 73 | |
Jamestom999 | 0:cfa2cc5fc505 | 74 | n=0; |
Jamestom999 | 0:cfa2cc5fc505 | 75 | while(n<40 && (data[n]!='\0')){ //keep looping untill the end of the string, max 20 |
Jamestom999 | 0:cfa2cc5fc505 | 76 | if(data[n]>96 && data[n]<123){ //check for valid characters |
Jamestom999 | 0:cfa2cc5fc505 | 77 | ScreenText[n+5]=ImageTable[data[n]-97]; //use a look-up table to convert ASCII to segment data |
Jamestom999 | 0:cfa2cc5fc505 | 78 | } |
Jamestom999 | 0:cfa2cc5fc505 | 79 | n++; |
Jamestom999 | 0:cfa2cc5fc505 | 80 | } |
Jamestom999 | 0:cfa2cc5fc505 | 81 | |
Jamestom999 | 0:cfa2cc5fc505 | 82 | timer=Disable; |
Jamestom999 | 0:cfa2cc5fc505 | 83 | DisplayBCD(0); //turn off decoders |
Jamestom999 | 0:cfa2cc5fc505 | 84 | |
Jamestom999 | 0:cfa2cc5fc505 | 85 | length=n; |
Jamestom999 | 0:cfa2cc5fc505 | 86 | for(n=0;n<(length+6);n++){ //display data |
Jamestom999 | 0:cfa2cc5fc505 | 87 | SendData(ScreenText[n ], 5); |
Jamestom999 | 0:cfa2cc5fc505 | 88 | SendData(ScreenText[n+1], 4); |
Jamestom999 | 0:cfa2cc5fc505 | 89 | SendData(ScreenText[n+2], 1); |
Jamestom999 | 0:cfa2cc5fc505 | 90 | SendData(ScreenText[n+3], 2); |
Jamestom999 | 0:cfa2cc5fc505 | 91 | SendData(ScreenText[n+4], 3); |
Jamestom999 | 0:cfa2cc5fc505 | 92 | wait(0.3); |
Jamestom999 | 0:cfa2cc5fc505 | 93 | } |
Jamestom999 | 0:cfa2cc5fc505 | 94 | |
Jamestom999 | 0:cfa2cc5fc505 | 95 | |
Jamestom999 | 0:cfa2cc5fc505 | 96 | |
Jamestom999 | 0:cfa2cc5fc505 | 97 | |
Jamestom999 | 0:cfa2cc5fc505 | 98 | } |