Bank Account Security System

Dependencies:   FatFileSystemSD mbed

Committer:
Dhruv_Varun
Date:
Thu Oct 11 20:49:25 2012 +0000
Revision:
0:7e4786a3584b
Code For Bank Account Security System

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dhruv_Varun 0:7e4786a3584b 1 /* mbed TextLCD Library, for a 4-bit LCD based on HD44780
Dhruv_Varun 0:7e4786a3584b 2 * Copyright (c) 2007-2010, sford, http://mbed.org
Dhruv_Varun 0:7e4786a3584b 3 *
Dhruv_Varun 0:7e4786a3584b 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
Dhruv_Varun 0:7e4786a3584b 5 * of this software and associated documentation files (the "Software"), to deal
Dhruv_Varun 0:7e4786a3584b 6 * in the Software without restriction, including without limitation the rights
Dhruv_Varun 0:7e4786a3584b 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Dhruv_Varun 0:7e4786a3584b 8 * copies of the Software, and to permit persons to whom the Software is
Dhruv_Varun 0:7e4786a3584b 9 * furnished to do so, subject to the following conditions:
Dhruv_Varun 0:7e4786a3584b 10 *
Dhruv_Varun 0:7e4786a3584b 11 * The above copyright notice and this permission notice shall be included in
Dhruv_Varun 0:7e4786a3584b 12 * all copies or substantial portions of the Software.
Dhruv_Varun 0:7e4786a3584b 13 *
Dhruv_Varun 0:7e4786a3584b 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Dhruv_Varun 0:7e4786a3584b 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Dhruv_Varun 0:7e4786a3584b 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Dhruv_Varun 0:7e4786a3584b 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Dhruv_Varun 0:7e4786a3584b 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Dhruv_Varun 0:7e4786a3584b 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
Dhruv_Varun 0:7e4786a3584b 20 * THE SOFTWARE.
Dhruv_Varun 0:7e4786a3584b 21 */
Dhruv_Varun 0:7e4786a3584b 22
Dhruv_Varun 0:7e4786a3584b 23 #include "TextLCD.h"
Dhruv_Varun 0:7e4786a3584b 24 #include "mbed.h"
Dhruv_Varun 0:7e4786a3584b 25
Dhruv_Varun 0:7e4786a3584b 26 TextLCD::TextLCD(PinName rs, PinName e, PinName d0, PinName d1,
Dhruv_Varun 0:7e4786a3584b 27 PinName d2, PinName d3, LCDType type) : _rs(rs),
Dhruv_Varun 0:7e4786a3584b 28 _e(e), _d(d0, d1, d2, d3),
Dhruv_Varun 0:7e4786a3584b 29 _type(type) {
Dhruv_Varun 0:7e4786a3584b 30
Dhruv_Varun 0:7e4786a3584b 31 _e = 1;
Dhruv_Varun 0:7e4786a3584b 32 _rs = 0; // command mode
Dhruv_Varun 0:7e4786a3584b 33
Dhruv_Varun 0:7e4786a3584b 34 wait(0.015); // Wait 15ms to ensure powered up
Dhruv_Varun 0:7e4786a3584b 35
Dhruv_Varun 0:7e4786a3584b 36 // send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus)
Dhruv_Varun 0:7e4786a3584b 37 for (int i=0; i<3; i++) {
Dhruv_Varun 0:7e4786a3584b 38 writeByte(0x3);
Dhruv_Varun 0:7e4786a3584b 39 wait(0.00164); // this command takes 1.64ms, so wait for it
Dhruv_Varun 0:7e4786a3584b 40 }
Dhruv_Varun 0:7e4786a3584b 41 writeByte(0x2); // 4-bit mode
Dhruv_Varun 0:7e4786a3584b 42 wait(0.000040f); // most instructions take 40us
Dhruv_Varun 0:7e4786a3584b 43
Dhruv_Varun 0:7e4786a3584b 44 writeCommand(0x28); // Function set 001 BW N F - -
Dhruv_Varun 0:7e4786a3584b 45 writeCommand(0x0C);
Dhruv_Varun 0:7e4786a3584b 46 writeCommand(0x6); // Cursor Direction and Display Shift : 0000 01 CD S (CD 0-left, 1-right S(hift) 0-no, 1-yes
Dhruv_Varun 0:7e4786a3584b 47 cls();
Dhruv_Varun 0:7e4786a3584b 48 }
Dhruv_Varun 0:7e4786a3584b 49
Dhruv_Varun 0:7e4786a3584b 50 void TextLCD::character(int column, int row, int c) {
Dhruv_Varun 0:7e4786a3584b 51 int a = address(column, row);
Dhruv_Varun 0:7e4786a3584b 52 writeCommand(a);
Dhruv_Varun 0:7e4786a3584b 53 writeData(c);
Dhruv_Varun 0:7e4786a3584b 54 }
Dhruv_Varun 0:7e4786a3584b 55
Dhruv_Varun 0:7e4786a3584b 56 void TextLCD::cls() {
Dhruv_Varun 0:7e4786a3584b 57 writeCommand(0x01); // cls, and set cursor to 0
Dhruv_Varun 0:7e4786a3584b 58 wait(0.00164f); // This command takes 1.64 ms
Dhruv_Varun 0:7e4786a3584b 59 locate(0, 0);
Dhruv_Varun 0:7e4786a3584b 60 }
Dhruv_Varun 0:7e4786a3584b 61
Dhruv_Varun 0:7e4786a3584b 62 void TextLCD::locate(int column, int row) {
Dhruv_Varun 0:7e4786a3584b 63 _column = column;
Dhruv_Varun 0:7e4786a3584b 64 _row = row;
Dhruv_Varun 0:7e4786a3584b 65 }
Dhruv_Varun 0:7e4786a3584b 66
Dhruv_Varun 0:7e4786a3584b 67 int TextLCD::_putc(int value) {
Dhruv_Varun 0:7e4786a3584b 68 if (value == '\n') {
Dhruv_Varun 0:7e4786a3584b 69 _column = 0;
Dhruv_Varun 0:7e4786a3584b 70 _row++;
Dhruv_Varun 0:7e4786a3584b 71 if (_row >= rows()) {
Dhruv_Varun 0:7e4786a3584b 72 _row = 0;
Dhruv_Varun 0:7e4786a3584b 73 }
Dhruv_Varun 0:7e4786a3584b 74 } else {
Dhruv_Varun 0:7e4786a3584b 75 character(_column, _row, value);
Dhruv_Varun 0:7e4786a3584b 76 _column++;
Dhruv_Varun 0:7e4786a3584b 77 if (_column >= columns()) {
Dhruv_Varun 0:7e4786a3584b 78 _column = 0;
Dhruv_Varun 0:7e4786a3584b 79 _row++;
Dhruv_Varun 0:7e4786a3584b 80 if (_row >= rows()) {
Dhruv_Varun 0:7e4786a3584b 81 _row = 0;
Dhruv_Varun 0:7e4786a3584b 82 }
Dhruv_Varun 0:7e4786a3584b 83 }
Dhruv_Varun 0:7e4786a3584b 84 }
Dhruv_Varun 0:7e4786a3584b 85 return value;
Dhruv_Varun 0:7e4786a3584b 86 }
Dhruv_Varun 0:7e4786a3584b 87
Dhruv_Varun 0:7e4786a3584b 88 int TextLCD::_getc() {
Dhruv_Varun 0:7e4786a3584b 89 return -1;
Dhruv_Varun 0:7e4786a3584b 90 }
Dhruv_Varun 0:7e4786a3584b 91
Dhruv_Varun 0:7e4786a3584b 92 void TextLCD::writeByte(int value) {
Dhruv_Varun 0:7e4786a3584b 93 _d = value >> 4;
Dhruv_Varun 0:7e4786a3584b 94 wait(0.000040f); // most instructions take 40us
Dhruv_Varun 0:7e4786a3584b 95 _e = 0;
Dhruv_Varun 0:7e4786a3584b 96 wait(0.000040f);
Dhruv_Varun 0:7e4786a3584b 97 _e = 1;
Dhruv_Varun 0:7e4786a3584b 98 _d = value >> 0;
Dhruv_Varun 0:7e4786a3584b 99 wait(0.000040f);
Dhruv_Varun 0:7e4786a3584b 100 _e = 0;
Dhruv_Varun 0:7e4786a3584b 101 wait(0.000040f); // most instructions take 40us
Dhruv_Varun 0:7e4786a3584b 102 _e = 1;
Dhruv_Varun 0:7e4786a3584b 103 }
Dhruv_Varun 0:7e4786a3584b 104
Dhruv_Varun 0:7e4786a3584b 105 void TextLCD::writeCommand(int command) {
Dhruv_Varun 0:7e4786a3584b 106 _rs = 0;
Dhruv_Varun 0:7e4786a3584b 107 writeByte(command);
Dhruv_Varun 0:7e4786a3584b 108 }
Dhruv_Varun 0:7e4786a3584b 109
Dhruv_Varun 0:7e4786a3584b 110 void TextLCD::writeData(int data) {
Dhruv_Varun 0:7e4786a3584b 111 _rs = 1;
Dhruv_Varun 0:7e4786a3584b 112 writeByte(data);
Dhruv_Varun 0:7e4786a3584b 113 }
Dhruv_Varun 0:7e4786a3584b 114
Dhruv_Varun 0:7e4786a3584b 115 int TextLCD::address(int column, int row) {
Dhruv_Varun 0:7e4786a3584b 116 switch (_type) {
Dhruv_Varun 0:7e4786a3584b 117 case LCD20x4:
Dhruv_Varun 0:7e4786a3584b 118 switch (row) {
Dhruv_Varun 0:7e4786a3584b 119 case 0:
Dhruv_Varun 0:7e4786a3584b 120 return 0x80 + column;
Dhruv_Varun 0:7e4786a3584b 121 case 1:
Dhruv_Varun 0:7e4786a3584b 122 return 0xc0 + column;
Dhruv_Varun 0:7e4786a3584b 123 case 2:
Dhruv_Varun 0:7e4786a3584b 124 return 0x94 + column;
Dhruv_Varun 0:7e4786a3584b 125 case 3:
Dhruv_Varun 0:7e4786a3584b 126 return 0xd4 + column;
Dhruv_Varun 0:7e4786a3584b 127 }
Dhruv_Varun 0:7e4786a3584b 128 case LCD16x2B:
Dhruv_Varun 0:7e4786a3584b 129 return 0x80 + (row * 40) + column;
Dhruv_Varun 0:7e4786a3584b 130 case LCD16x2:
Dhruv_Varun 0:7e4786a3584b 131 case LCD20x2:
Dhruv_Varun 0:7e4786a3584b 132 default:
Dhruv_Varun 0:7e4786a3584b 133 return 0x80 + (row * 0x40) + column;
Dhruv_Varun 0:7e4786a3584b 134 }
Dhruv_Varun 0:7e4786a3584b 135 }
Dhruv_Varun 0:7e4786a3584b 136
Dhruv_Varun 0:7e4786a3584b 137 int TextLCD::columns() {
Dhruv_Varun 0:7e4786a3584b 138 switch (_type) {
Dhruv_Varun 0:7e4786a3584b 139 case LCD20x4:
Dhruv_Varun 0:7e4786a3584b 140 case LCD20x2:
Dhruv_Varun 0:7e4786a3584b 141 return 20;
Dhruv_Varun 0:7e4786a3584b 142 case LCD16x2:
Dhruv_Varun 0:7e4786a3584b 143 case LCD16x2B:
Dhruv_Varun 0:7e4786a3584b 144 default:
Dhruv_Varun 0:7e4786a3584b 145 return 16;
Dhruv_Varun 0:7e4786a3584b 146 }
Dhruv_Varun 0:7e4786a3584b 147 }
Dhruv_Varun 0:7e4786a3584b 148
Dhruv_Varun 0:7e4786a3584b 149 int TextLCD::rows() {
Dhruv_Varun 0:7e4786a3584b 150 switch (_type) {
Dhruv_Varun 0:7e4786a3584b 151 case LCD20x4:
Dhruv_Varun 0:7e4786a3584b 152 return 4;
Dhruv_Varun 0:7e4786a3584b 153 case LCD16x2:
Dhruv_Varun 0:7e4786a3584b 154 case LCD16x2B:
Dhruv_Varun 0:7e4786a3584b 155 case LCD20x2:
Dhruv_Varun 0:7e4786a3584b 156 default:
Dhruv_Varun 0:7e4786a3584b 157 return 2;
Dhruv_Varun 0:7e4786a3584b 158 }
Dhruv_Varun 0:7e4786a3584b 159 }