printing text onto the screen

Dependencies:   mbed

Committer:
faruq
Date:
Fri Aug 20 12:45:19 2010 +0000
Revision:
0:972f5da423fd

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
faruq 0:972f5da423fd 1 #include "mbed.h"
faruq 0:972f5da423fd 2 #include "MAX7456.h"
faruq 0:972f5da423fd 3
faruq 0:972f5da423fd 4 namespace mbed {
faruq 0:972f5da423fd 5
faruq 0:972f5da423fd 6
faruq 0:972f5da423fd 7
faruq 0:972f5da423fd 8 MAX7456::MAX7456(PinName mosi, PinName miso, PinName clk, PinName ncs, PinName nrst, const char* name)
faruq 0:972f5da423fd 9 : Stream(name), _spi(mosi, miso, clk), _ncs(ncs), _nrst(nrst) {
faruq 0:972f5da423fd 10
faruq 0:972f5da423fd 11 // initialisation code here
faruq 0:972f5da423fd 12
faruq 0:972f5da423fd 13 _nrst = 0;
faruq 0:972f5da423fd 14 wait (0.5);
faruq 0:972f5da423fd 15 _nrst = 1;
faruq 0:972f5da423fd 16 wait (0.5);
faruq 0:972f5da423fd 17
faruq 0:972f5da423fd 18 // Setup the spi for 8 bit data, high steady state clock,
faruq 0:972f5da423fd 19 // second edge capture
faruq 0:972f5da423fd 20 _spi.format(8,0);
faruq 0:972f5da423fd 21
faruq 0:972f5da423fd 22 // 1MHz clock
faruq 0:972f5da423fd 23 _spi.frequency(1000000);
faruq 0:972f5da423fd 24
faruq 0:972f5da423fd 25
faruq 0:972f5da423fd 26 }
faruq 0:972f5da423fd 27
faruq 0:972f5da423fd 28
faruq 0:972f5da423fd 29
faruq 0:972f5da423fd 30
faruq 0:972f5da423fd 31 void MAX7456::cls() {
faruq 0:972f5da423fd 32 int tmp=0;
faruq 0:972f5da423fd 33 tmp = _read(DMM);
faruq 0:972f5da423fd 34 tmp &= 0xFB;
faruq 0:972f5da423fd 35 _write(DMM,tmp); //Make sure that DMM[2]=0 so that there can be write operations
faruq 0:972f5da423fd 36
faruq 0:972f5da423fd 37 tmp = _read(DMM);
faruq 0:972f5da423fd 38 tmp |= 0x04;
faruq 0:972f5da423fd 39 _write (DMM,tmp); //set DMM[2]=1 to clear all locations
faruq 0:972f5da423fd 40
faruq 0:972f5da423fd 41 // should wait until DMM[2] goes back to zero, so we know the reset it finished
faruq 0:972f5da423fd 42
faruq 0:972f5da423fd 43 }
faruq 0:972f5da423fd 44
faruq 0:972f5da423fd 45
faruq 0:972f5da423fd 46 void MAX7456::locate(int x, int y) { //not sure if I understand the last line
faruq 0:972f5da423fd 47 if ( (x<30) && (y<16) ) {
faruq 0:972f5da423fd 48 int add = y*30+x; //formula for converting coordinates into denary location
faruq 0:972f5da423fd 49 _write(DMAL,add);
faruq 0:972f5da423fd 50 _write(DMAH,add>>8); // what does the ">>" mean?
faruq 0:972f5da423fd 51 }
faruq 0:972f5da423fd 52 }
faruq 0:972f5da423fd 53
faruq 0:972f5da423fd 54
faruq 0:972f5da423fd 55
faruq 0:972f5da423fd 56 int MAX7456::_getc(int character) {
faruq 0:972f5da423fd 57 for (int i = 0 ; i < 479 ; i++) {
faruq 0:972f5da423fd 58 int location= _read(DMDI,i)
faruq 0:972f5da423fd 59
faruq 0:972f5da423fd 60 if((location == character - 0x30){ //characters from 1-9
faruq 0:972f5da423fd 61 found= "true";
faruq 0:972f5da423fd 62 }
faruq 0:972f5da423fd 63 else if(location == character - 0x36){ // characters from A-Z
faruq 0:972f5da423fd 64 found = "true";
faruq 0:972f5da423fd 65 }
faruq 0:972f5da423fd 66 else if(location == character - 0x3C){ // characters from a-z
faruq 0:972f5da423fd 67 found = "true";
faruq 0:972f5da423fd 68 }
faruq 0:972f5da423fd 69 else if(location == character + 0x17){ //brackets ()
faruq 0:972f5da423fd 70 found = "true";
faruq 0:972f5da423fd 71 }
faruq 0:972f5da423fd 72 else{
faruq 0:972f5da423fd 73 found = "false";
faruq 0:972f5da423fd 74
faruq 0:972f5da423fd 75 if found = "true"{
faruq 0:972f5da423fd 76 return(i);
faruq 0:972f5da423fd 77 }
faruq 0:972f5da423fd 78 else{
faruq 0:972f5da423fd 79 return("character not found");
faruq 0:972f5da423fd 80 }
faruq 0:972f5da423fd 81 }
faruq 0:972f5da423fd 82
faruq 0:972f5da423fd 83
faruq 0:972f5da423fd 84 int MAX7456::_putc(int c) {
faruq 0:972f5da423fd 85
faruq 0:972f5da423fd 86 if((c >= 0x31)&&(c <= 0x39)) { //characters from 1-9
faruq 0:972f5da423fd 87 c= c-0x30;
faruq 0:972f5da423fd 88 }
faruq 0:972f5da423fd 89 if((c >= 0x41)&&(c <= 0x5A)){ // characters from A-Z
faruq 0:972f5da423fd 90 c= c-0x36;
faruq 0:972f5da423fd 91 }
faruq 0:972f5da423fd 92 if((c >= 0x61)&&(c <= 0x7A)){ // characters from a-z
faruq 0:972f5da423fd 93 c= c-0x3C;
faruq 0:972f5da423fd 94 }
faruq 0:972f5da423fd 95 if((c == 0x28)&&(c == 0x29)){ //brackets ()
faruq 0:972f5da423fd 96 c= c + 0x17;
faruq 0:972f5da423fd 97 }
faruq 0:972f5da423fd 98 _write(DMDI,c);
faruq 0:972f5da423fd 99 return(c);
faruq 0:972f5da423fd 100 }
faruq 0:972f5da423fd 101
faruq 0:972f5da423fd 102
faruq 0:972f5da423fd 103
faruq 0:972f5da423fd 104
faruq 0:972f5da423fd 105 void MAX7456::vtrim(int v) {
faruq 0:972f5da423fd 106 }
faruq 0:972f5da423fd 107
faruq 0:972f5da423fd 108 void MAX7456::htrim(int h) {
faruq 0:972f5da423fd 109 }
faruq 0:972f5da423fd 110
faruq 0:972f5da423fd 111 void MAX7456::format(char mode){
faruq 0:972f5da423fd 112 if (mode == "P"){
faruq 0:972f5da423fd 113 write(VM0,0x78); // internal sync, OSD enable, PAL
faruq 0:972f5da423fd 114 }
faruq 0:972f5da423fd 115 }
faruq 0:972f5da423fd 116
faruq 0:972f5da423fd 117 int MAX7456::_read(int address) {
faruq 0:972f5da423fd 118 // force bit 7 to 1 for a read
faruq 0:972f5da423fd 119 address |= 0x80;
faruq 0:972f5da423fd 120 _ncs=0; // select device
faruq 0:972f5da423fd 121 _spi.write(address); // send address
faruq 0:972f5da423fd 122 int value = _spi.write(0x00); // send dummy
faruq 0:972f5da423fd 123 _ncs=1; //deselect device
faruq 0:972f5da423fd 124 return (value);
faruq 0:972f5da423fd 125 }
faruq 0:972f5da423fd 126
faruq 0:972f5da423fd 127 void MAX7456::_write(int address, int data) {
faruq 0:972f5da423fd 128 // force bit 7 to 0 for a write
faruq 0:972f5da423fd 129 address &= 0x7f;
faruq 0:972f5da423fd 130 // select the device
faruq 0:972f5da423fd 131 _ncs = 0;
faruq 0:972f5da423fd 132 // write VM1
faruq 0:972f5da423fd 133 _spi.write(address); // send address
faruq 0:972f5da423fd 134 _spi.write(data); // send some data
faruq 0:972f5da423fd 135 // Deselect the device
faruq 0:972f5da423fd 136 _ncs = 1;
faruq 0:972f5da423fd 137 }