'**************************************************************** '* Name : LCD_3310.PBP * '* Date : 14.2.2009 * '* Version : 1.0 * '* Notes : LCD command library for Nokia 3310 or similar LCD * '* : * '**************************************************************** ' LCD Command are: ' Lcd_Init ' Lcd_GotoXY ' Lcd_Clear ' Lcd_Home ' Lcd_Contrast ' Scr_Normal ' Scr_Invert '------------------------------------------------------------------------------- 'LCD Common Variables for 3310 and 7110 LCD PosX var Byte 'Variable for Position X PosY var Byte 'Variable for Position Y FC var Byte [6] 'Variable 6 bytes = 1 character Lcd_Data var Byte 'LCD command or data ColumnNum var byte 'Column number CharNum var byte 'character number '------------------------------------------------------------------------------- 'Port Mapping 'Change to match your application Lcd_CLK VAR Portc.3 'LCD Clock Lcd_DC VAR Portf.6 'LCD Data/Command Lcd_SCE VAR Portf.7 'LCD Chip Enable Lcd_RES VAR Portd.3 'LCD Reset 'Lcd_VCC VAR Porte.2 'LCD Power (always powered for olimex) Lcd_SDO VAR Portc.5 'LCD Data goto start '------------------------------------------------------------------------------- Lcd_Init: 'Initialize LCD, run 1st this! Low Lcd_RES 'Reset LCD (HW reset) pause 50 High Lcd_RES pause 50 'Release Reset Low Lcd_SCE 'Chip Select Low Lcd_DC 'Command/Data Lcd_Data= $21: GOSUB Lcd_SendByte ' LCD EXTENDED COMMANDS Lcd_Data= $c8: GOSUB Lcd_SendByte ' SET LCD Vop (CONTRAST) Lcd_Data= $06: GOSUB Lcd_SendByte ' SET TEMP COEFFICENT Lcd_Data= $13: GOSUB Lcd_Sendbyte ' LCD BIAS MODE Lcd_Data= $20: GOSUB Lcd_Sendbyte ' LCD STANDARD COMMANDS lcd_data= $08: gosub lcd_sendbyte 'lcd blank Lcd_Data= $0c: GOSUB Lcd_sendbyte ' LCD IN NORMAL MODE Return '------------------------------------------------------------------------------- Lcd_GotoXY: 'Goto XY coordinates Low Lcd_DC Lcd_Data=%01000000 | PosY :Gosub Lcd_SendByte Lcd_Data=%10000000 | PosX :Gosub Lcd_SendByte Return Lcd_Clear: 'Clear display Gosub Lcd_Home High Lcd_DC For ColumnNum = 1 to 84 'Send empty character SHiftOUT Lcd_SDO, Lcd_CLK, MSBFIRST, [0,0,0,0,0,0] '14 per page Next ColumnNum '6 rows High Lcd_DC '14 * 6 = 84 Return Lcd_Home: 'Cursor home PosX=0:PosY=0:Gosub Lcd_GotoXY Return Lcd_Contrast: 'Contrast Low Lcd_DC Lcd_Data= %11010001: Gosub Lcd_SendByte 'Contrast might need Return 'fine tunig Scr_Normal: 'Normal screen mode Low Lcd_DC Lcd_Data= %00001100:Gosub Lcd_SendByte return Scr_Invert: 'Invert screen mode Low Lcd_DC Lcd_Data= %00001101:Gosub Lcd_SendByte return Lcd_SendByte: 'Send command or data to LCD SHiftOUT Lcd_SDO, Lcd_CLK, MSBFIRST, [Lcd_Data] Return '------------------------------------------------------------------------------- ' This part demonstrates how to write to LCD Lcd_SendChar: lookdown Lcd_data,[" ! #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"],CharNum Lcd_data = CharNum +32 sELECT CASE lcd_data Case 32 FC(0)=$00:FC(1)=$00:FC(2)=$00:FC(3)=$00:FC(4)=$00:FC(5)=$00 ' // sp Case 33 FC(0)=$00:FC(1)=$00:FC(2)=$2f:FC(3)=$00:FC(4)=$00:FC(5)=$00 ' // ! Case 34 FC(0)=$00:FC(1)=$07:FC(2)=$00:FC(3)=$07:FC(4)=$00:FC(5)=$00 ' // Case 35 FC(0)=$14:FC(1)=$7f:FC(2)=$14:FC(3)=$7f:FC(4)=$14:FC(5)=$00 ' // # Case 36 FC(0)=$24:FC(1)=$2a:FC(2)=$7f:FC(3)=$2a:FC(4)=$12:FC(5)=$00 ' //$ Case 37 FC(0)=$c4:FC(1)=$c8:FC(2)=$10:FC(3)=$26:FC(4)=$46:FC(5)=$00 ' // % Case 38 FC(0)=$36:FC(1)=$49:FC(2)=$55:FC(3)=$22:FC(4)=$50:FC(5)=$00 ' // & Case 39 FC(0)=$00:FC(1)=$05:FC(2)=$03:FC(3)=$00:FC(4)=$00:FC(5)=$00 ' // ' Case 40 FC(0)=$00:FC(1)=$1c:FC(2)=$22:FC(3)=$41:FC(4)=$00:FC(5)=$00 ' // ( Case 41 FC(0)=$00:FC(1)=$41:FC(2)=$22:FC(3)=$1c:FC(4)=$00:FC(5)=$00 ' // ) Case 42 FC(0)=$14:FC(1)=$08:FC(2)=$3E:FC(3)=$08:FC(4)=$14:FC(5)=$00 ' // * Case 43 FC(0)=$08:FC(1)=$08:FC(2)=$3E:FC(3)=$08:FC(4)=$08:FC(5)=$00 ' // + Case 44 FC(0)=$00:FC(1)=$00:FC(2)=$50:FC(3)=$30:FC(4)=$00:FC(5)=$00 ' // Case 45 FC(0)=$10:FC(1)=$10:FC(2)=$10:FC(3)=$10:FC(4)=$10:FC(5)=$00 ' // - Case 46 FC(0)=$00:FC(1)=$60:FC(2)=$60:FC(3)=$00:FC(4)=$00:FC(5)=$00 ' // . Case 47 FC(0)=$20:FC(1)=$10:FC(2)=$08:FC(3)=$04:FC(4)=$02:FC(5)=$00 ' // / Case 48 FC(0)=$3E:FC(1)=$51:FC(2)=$49:FC(3)=$45:FC(4)=$3E:FC(5)=$00 ' // 0 Case 49 FC(0)=$00:FC(1)=$42:FC(2)=$7F:FC(3)=$40:FC(4)=$00:FC(5)=$00 ' // 1 Case 50 FC(0)=$42:FC(1)=$61:FC(2)=$51:FC(3)=$49:FC(4)=$46:FC(5)=$00 ' // 2 Case 51 FC(0)=$21:FC(1)=$41:FC(2)=$45:FC(3)=$4B:FC(4)=$31:FC(5)=$00 ' // 3 Case 52 FC(0)=$18:FC(1)=$14:FC(2)=$12:FC(3)=$7F:FC(4)=$10:FC(5)=$00 ' // 4 Case 53 FC(0)=$27:FC(1)=$45:FC(2)=$45:FC(3)=$45:FC(4)=$39:FC(5)=$00 ' // 5 Case 54 FC(0)=$3C:FC(1)=$4A:FC(2)=$49:FC(3)=$49:FC(4)=$30:FC(5)=$00 ' // 6 Case 55 FC(0)=$01:FC(1)=$71:FC(2)=$09:FC(3)=$05:FC(4)=$03:FC(5)=$00 ' // 7 Case 56 FC(0)=$36:FC(1)=$49:FC(2)=$49:FC(3)=$49:FC(4)=$36:FC(5)=$00 ' // 8 Case 57 FC(0)=$06:FC(1)=$49:FC(2)=$49:FC(3)=$29:FC(4)=$1E:FC(5)=$00 ' // 9 Case 58 FC(0)=$00:FC(1)=$36:FC(2)=$36:FC(3)=$00:FC(4)=$00:FC(5)=$00 ' // : Case 59 FC(0)=$00:FC(1)=$56:FC(2)=$36:FC(3)=$00:FC(4)=$00:FC(5)=$00 ' // ";" Case 60 FC(0)=$08:FC(1)=$14:FC(2)=$22:FC(3)=$41:FC(4)=$00:FC(5)=$00 ' // < Case 61 FC(0)=$14:FC(1)=$14:FC(2)=$14:FC(3)=$14:FC(4)=$14:FC(5)=$00 ' // = Case 62 FC(0)=$00:FC(1)=$41:FC(2)=$22:FC(3)=$14:FC(4)=$08:FC(5)=$00 ' // > Case 63 FC(0)=$02:FC(1)=$01:FC(2)=$51:FC(3)=$09:FC(4)=$06:FC(5)=$00 ' // ? Case 64 FC(0)=$32:FC(1)=$49:FC(2)=$59:FC(3)=$51:FC(4)=$3E:FC(5)=$00 ' // @ Case 65 FC(0)=$7E:FC(1)=$11:FC(2)=$11:FC(3)=$11:FC(4)=$7E:FC(5)=$00 ' // A Case 66 FC(0)=$7F:FC(1)=$49:FC(2)=$49:FC(3)=$49:FC(4)=$36:FC(5)=$00 ' // B Case 67 FC(0)=$3E:FC(1)=$41:FC(2)=$41:FC(3)=$41:FC(4)=$22:FC(5)=$00 ' // C Case 68 FC(0)=$7F:FC(1)=$41:FC(2)=$41:FC(3)=$22:FC(4)=$1C:FC(5)=$00 ' // D Case 69 FC(0)=$7F:FC(1)=$49:FC(2)=$49:FC(3)=$49:FC(4)=$41:FC(5)=$00 ' // E Case 70 FC(0)=$7F:FC(1)=$09:FC(2)=$09:FC(3)=$09:FC(4)=$01:FC(5)=$00 ' // F Case 71 FC(0)=$3E:FC(1)=$41:FC(2)=$49:FC(3)=$49:FC(4)=$7A:FC(5)=$00 ' // G Case 72 FC(0)=$7F:FC(1)=$08:FC(2)=$08:FC(3)=$08:FC(4)=$7F:FC(5)=$00 ' // H Case 73 FC(0)=$00:FC(1)=$41:FC(2)=$7F:FC(3)=$41:FC(4)=$00:FC(5)=$00 ' // I Case 74 FC(0)=$20:FC(1)=$40:FC(2)=$41:FC(3)=$3F:FC(4)=$01:FC(5)=$00 ' // J Case 75 FC(0)=$7F:FC(1)=$08:FC(2)=$14:FC(3)=$22:FC(4)=$41:FC(5)=$00 ' // K Case 76 FC(0)=$7F:FC(1)=$40:FC(2)=$40:FC(3)=$40:FC(4)=$40:FC(5)=$00 ' // L Case 77 FC(0)=$7F:FC(1)=$02:FC(2)=$0C:FC(3)=$02:FC(4)=$7F:FC(5)=$00 ' // M Case 78 FC(0)=$7F:FC(1)=$04:FC(2)=$08:FC(3)=$10:FC(4)=$7F:FC(5)=$00 ' // N Case 79 FC(0)=$3E:FC(1)=$41:FC(2)=$41:FC(3)=$41:FC(4)=$3E:FC(5)=$00 ' // O Case 80 FC(0)=$7F:FC(1)=$09:FC(2)=$09:FC(3)=$09:FC(4)=$06:FC(5)=$00 ' // P Case 81 FC(0)=$3E:FC(1)=$41:FC(2)=$51:FC(3)=$21:FC(4)=$5E:FC(5)=$00 ' // Q Case 82 FC(0)=$7F:FC(1)=$09:FC(2)=$19:FC(3)=$29:FC(4)=$46:FC(5)=$00 ' // R Case 83 FC(0)=$46:FC(1)=$49:FC(2)=$49:FC(3)=$49:FC(4)=$31:FC(5)=$00 ' // S Case 84 FC(0)=$01:FC(1)=$01:FC(2)=$7F:FC(3)=$01:FC(4)=$01:FC(5)=$00 ' // T Case 85 FC(0)=$3F:FC(1)=$40:FC(2)=$40:FC(3)=$40:FC(4)=$3F:FC(5)=$00 ' // U Case 86 FC(0)=$1F:FC(1)=$20:FC(2)=$40:FC(3)=$20:FC(4)=$1F:FC(5)=$00 ' // V Case 87 FC(0)=$3F:FC(1)=$40:FC(2)=$38:FC(3)=$40:FC(4)=$3F:FC(5)=$00 ' // W Case 88 FC(0)=$63:FC(1)=$14:FC(2)=$08:FC(3)=$14:FC(4)=$63:FC(5)=$00 ' // X Case 89 FC(0)=$07:FC(1)=$08:FC(2)=$70:FC(3)=$08:FC(4)=$07:FC(5)=$00 ' // Y Case 90 FC(0)=$61:FC(1)=$51:FC(2)=$49:FC(3)=$45:FC(4)=$43:FC(5)=$00 ' // Z Case 91 FC(0)=$00:FC(1)=$7F:FC(2)=$41:FC(3)=$41:FC(4)=$00:FC(5)=$00 ' // [ Case 92 FC(0)=$55:FC(1)=$2A:FC(2)=$55:FC(3)=$2A:FC(4)=$55:FC(5)=$00 ' // \ Case 93 FC(0)=$00:FC(1)=$41:FC(2)=$41:FC(3)=$7F:FC(4)=$00:FC(5)=$00 ' // ] Case 94 FC(0)=$04:FC(1)=$02:FC(2)=$01:FC(3)=$02:FC(4)=$04:FC(5)=$00 ' // ^ Case 95 FC(0)=$40:FC(1)=$40:FC(2)=$40:FC(3)=$40:FC(4)=$40:FC(5)=$00 ' // _ Case 96 FC(0)=$00:FC(1)=$01:FC(2)=$02:FC(3)=$04:FC(4)=$00:FC(5)=$00 ' // ' Case 97 FC(0)=$20:FC(1)=$54:FC(2)=$54:FC(3)=$54:FC(4)=$78:FC(5)=$00 ' // a Case 98 FC(0)=$7F:FC(1)=$48:FC(2)=$44:FC(3)=$44:FC(4)=$38:FC(5)=$00 ' // b Case 99 FC(0)=$38:FC(1)=$44:FC(2)=$44:FC(3)=$44:FC(4)=$20:FC(5)=$00 ' // c Case 100 FC(0)=$38:FC(1)=$44:FC(2)=$44:FC(3)=$48:FC(4)=$7F:FC(5)=$00 ' // d Case 101 FC(0)=$38:FC(1)=$54:FC(2)=$54:FC(3)=$54:FC(4)=$18:FC(5)=$00 ' // e Case 102 FC(0)=$08:FC(1)=$7E:FC(2)=$09:FC(3)=$01:FC(4)=$02:FC(5)=$00 ' // f Case 103 FC(0)=$0C:FC(1)=$52:FC(2)=$52:FC(3)=$52:FC(4)=$3E:FC(5)=$00 ' // g Case 104 FC(0)=$7F:FC(1)=$08:FC(2)=$04:FC(3)=$04:FC(4)=$78:FC(5)=$00 ' // h Case 105 FC(0)=$00:FC(1)=$44:FC(2)=$7D:FC(3)=$40:FC(4)=$00:FC(5)=$00 ' // i Case 106 FC(0)=$20:FC(1)=$40:FC(2)=$44:FC(3)=$3D:FC(4)=$00:FC(5)=$00 ' // j Case 107 FC(0)=$7F:FC(1)=$10:FC(2)=$28:FC(3)=$44:FC(4)=$00:FC(5)=$00 ' // k Case 108 FC(0)=$00:FC(1)=$41:FC(2)=$7F:FC(3)=$40:FC(4)=$00:FC(5)=$00 ' // l Case 109 FC(0)=$7C:FC(1)=$04:FC(2)=$18:FC(3)=$04:FC(4)=$78:FC(5)=$00 ' // m Case 110 FC(0)=$7C:FC(1)=$08:FC(2)=$04:FC(3)=$04:FC(4)=$78:FC(5)=$00 ' // n Case 111 FC(0)=$38:FC(1)=$44:FC(2)=$44:FC(3)=$44:FC(4)=$38:FC(5)=$00 ' // o Case 112 FC(0)=$7C:FC(1)=$14:FC(2)=$14:FC(3)=$14:FC(4)=$08:FC(5)=$00 ' // p Case 113 FC(0)=$08:FC(1)=$14:FC(2)=$14:FC(3)=$18:FC(4)=$7C:FC(5)=$00 ' // q Case 114 FC(0)=$7C:FC(1)=$08:FC(2)=$04:FC(3)=$04:FC(4)=$08:FC(5)=$00 ' // r Case 115 FC(0)=$48:FC(1)=$54:FC(2)=$54:FC(3)=$54:FC(4)=$20:FC(5)=$00 ' // s Case 116 FC(0)=$04:FC(1)=$3F:FC(2)=$44:FC(3)=$40:FC(4)=$20:FC(5)=$00 ' // t Case 117 FC(0)=$3C:FC(1)=$40:FC(2)=$40:FC(3)=$20:FC(4)=$7C:FC(5)=$00 ' // u Case 118 FC(0)=$1C:FC(1)=$20:FC(2)=$40:FC(3)=$20:FC(4)=$1C:FC(5)=$00 ' // v Case 119 FC(0)=$3C:FC(1)=$40:FC(2)=$30:FC(3)=$40:FC(4)=$3C:FC(5)=$00 ' // w Case 120 FC(0)=$44:FC(1)=$28:FC(2)=$10:FC(3)=$28:FC(4)=$44:FC(5)=$00 ' // x Case 121 FC(0)=$0C:FC(1)=$50:FC(2)=$50:FC(3)=$50:FC(4)=$3C:FC(5)=$00 ' // y Case 122 FC(0)=$44:FC(1)=$64:FC(2)=$54:FC(3)=$4C:FC(4)=$44:FC(5)=$00 ' // z Case 142 FC(0)=$7D:FC(1)=$12:FC(2)=$12:FC(3)=$12:FC(4)=$7D:FC(5)=$00 ' // Ä Case 153 FC(0)=$3D:FC(1)=$42:FC(2)=$42:FC(3)=$42:FC(4)=$3D:FC(5)=$00 ' // Ö Case 132 FC(0)=$22:FC(1)=$54:FC(2)=$54:FC(3)=$54:FC(4)=$3A:FC(5)=$00 ' // ä Case 148 FC(0)=$3A:FC(1)=$44:FC(2)=$44:FC(3)=$44:FC(4)=$3A:FC(5)=$00 ' // ö end SELECT Write_LCD: High Lcd_DC SHiftOUT Lcd_SDO , Lcd_CLK , MSBFIRST, [ FC(0),FC(1),FC(2),FC(3),FC(4),FC(5) ] Low Lcd_DC Return '-------------------------------------------------------------------------------