📄 lcdac1.c
字号:
/**************************************************************************** Description : LCD module handler functions* HW-Environment : AVR MCU ATMega162-10MHz* PCB eOscope v1.0* XC9500 firmware v1.1* SW-Environment : AVR-GCC 3.4.3, Anjuta 1.2.1, AVR-INSIGHT, Avarice * Author : Daniel Ciocea** Revision : 1.0 Initial version****************************************************************************/#include <avr/io.h>#include <avr/pgmspace.h>#include "TIMaC1.h"#include "LCDaC1.h"#include "eOscope.h"#include "grid.h"/* Macro for convenience */#define LCD__vPrepareWriteDataFast() LCD_u8CtrlPort &= (~(1<<LCD_nCtrlRS));LCD_u8CtrlPort &= (~(1<<LCD_nCtrlRW));prog_char FontLookupTable [][8] ={ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 1{ 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04}, // 2{ 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}, // 3{ 0x00, 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a}, // 4{ 0x00, 0x04, 0x1e, 0x05, 0x0e, 0x14, 0x0f, 0x04}, // 5{ 0x00, 0x03, 0x13, 0x08, 0x04, 0x02, 0x19, 0x18}, // 6{ 0x00, 0x06, 0x09, 0x05, 0x02, 0x05, 0x09, 0x16}, // 7{ 0x00, 0x06, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00}, // 8{ 0x00, 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08}, // 9{ 0x00, 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02}, // 10{ 0x00, 0x00, 0x04, 0x15, 0x0e, 0x15, 0x04, 0x00}, // 11{ 0x00, 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00}, // 12{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x02}, // 13{ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00}, // 14{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06}, // 15{ 0x00, 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00}, // 16{ 0x00, 0x0e, 0x11, 0x19, 0x15, 0x13, 0x11, 0x0e}, // 17{ 0x00, 0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x0e}, // 18{ 0x00, 0x0e, 0x11, 0x10, 0x08, 0x04, 0x02, 0x1f}, // 19{ 0x00, 0x1f, 0x08, 0x04, 0x08, 0x10, 0x11, 0x0e}, // 20{ 0x00, 0x08, 0x0c, 0x0a, 0x09, 0x1f, 0x08, 0x08}, // 21{ 0x00, 0x1f, 0x01, 0x0f, 0x10, 0x10, 0x11, 0x0e}, // 22{ 0x00, 0x0c, 0x02, 0x01, 0x0f, 0x11, 0x11, 0x0e}, // 23{ 0x00, 0x1f, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02}, // 24{ 0x00, 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e}, // 25{ 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x08, 0x06}, // 26{ 0x00, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00}, // 27{ 0x00, 0x00, 0x06, 0x06, 0x00, 0x06, 0x04, 0x02}, // 28{ 0x00, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08}, // 29{ 0x00, 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00}, // 30{ 0x00, 0x01, 0x02, 0x04, 0x08, 0x04, 0x02, 0x01}, // 31{ 0x00, 0x0e, 0x11, 0x10, 0x08, 0x04, 0x00, 0x04}, // 32{ 0x00, 0x0e, 0x11, 0x10, 0x16, 0x15, 0x15, 0x0e}, // 33{ 0x00, 0x0e, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11}, // 34{ 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f}, // 35{ 0x00, 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e}, // 36{ 0x00, 0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07}, // 37{ 0x00, 0x1f, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x1f}, // 38{ 0x00, 0x1f, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01}, // 39{ 0x00, 0x0e, 0x11, 0x01, 0x1d, 0x11, 0x11, 0x1e}, // 40{ 0x00, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11}, // 41{ 0x00, 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e}, // 42{ 0x00, 0x1c, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06}, // 43{ 0x00, 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11}, // 44{ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f}, // 45{ 0x00, 0x11, 0x1b, 0x15, 0x11, 0x11, 0x11, 0x11}, // 46{ 0x00, 0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11}, // 47{ 0x00, 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e}, // 48{ 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x01, 0x01}, // 49{ 0x00, 0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16}, // 50{ 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x05, 0x09, 0x11}, // 51{ 0x00, 0x1e, 0x01, 0x01, 0x0e, 0x10, 0x10, 0x0f}, // 52{ 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, // 53{ 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e}, // 54{ 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04}, // 55{ 0x00, 0x11, 0x11, 0x11, 0x11, 0x15, 0x15, 0x0a}, // 56{ 0x00, 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11}, // 57{ 0x00, 0x11, 0x11, 0x0e, 0x04, 0x04, 0x04, 0x04}, // 58{ 0x00, 0x1f, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f}, // 59{ 0x00, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e}, // 60{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00}, // 61{ 0x00, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e}, // 62{ 0x00, 0x04, 0x0a, 0x11, 0x00, 0x00, 0x00, 0x00}, // 63{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f}, // 64{ 0x00, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00}, // 65{ 0x00, 0x00, 0x00, 0x0e, 0x10, 0x1e, 0x11, 0x1e}, // 66{ 0x00, 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f}, // 67{ 0x00, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x11, 0x0e}, // 68{ 0x00, 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e}, // 69{ 0x00, 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x0e}, // 70{ 0x00, 0x0c, 0x12, 0x02, 0x07, 0x02, 0x02, 0x02}, // 71{ 0x00, 0x00, 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x0f}, // 72{ 0x00, 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x11}, // 73{ 0x00, 0x04, 0x00, 0x06, 0x04, 0x04, 0x04, 0x0e}, // 74{ 0x00, 0x08, 0x00, 0x0c, 0x08, 0x08, 0x09, 0x06}, // 75{ 0x00, 0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09}, // 76{ 0x00, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e}, // 77{ 0x00, 0x00, 0x00, 0x0b, 0x15, 0x15, 0x11, 0x11}, // 78{ 0x00, 0x00, 0x00, 0x0d, 0x13, 0x11, 0x11, 0x11}, // 79{ 0x00, 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e}, // 80{ 0x00, 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x01}, // 81{ 0x00, 0x00, 0x00, 0x16, 0x19, 0x1e, 0x10, 0x10}, // 82{ 0x00, 0x00, 0x00, 0x0d, 0x13, 0x01, 0x01, 0x01}, // 83{ 0x00, 0x00, 0x00, 0x0e, 0x01, 0x0e, 0x10, 0x0f}, // 84{ 0x00, 0x02, 0x02, 0x0f, 0x02, 0x02, 0x12, 0x0c}, // 85{ 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x19, 0x16}, // 86{ 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04}, // 87{ 0x00, 0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0a}, // 88{ 0x00, 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11}, // 89{ 0x00, 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0f}, // 90{ 0x00, 0x00, 0x00, 0x1f, 0x08, 0x04, 0x02, 0x1f}, // 91{ 0x00, 0x08, 0x04, 0x04, 0x02, 0x04, 0x04, 0x08}, // 92{ 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, // 93{ 0x00, 0x02, 0x04, 0x04, 0x08, 0x04, 0x04, 0x02}, // 94{ 0x00, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, // 95{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 96{ 0x00, 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11}, // 97{ 0x00, 0x0a, 0x04, 0x0e, 0x10, 0x1e, 0x11, 0x1e}, // 98{ 0x00, 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x11, 0x11}, // 99{ 0x00, 0x04, 0x0a, 0x0e, 0x10, 0x1e, 0x11, 0x1e}, // 100{ 0x00, 0x04, 0x0a, 0x0e, 0x04, 0x04, 0x04, 0x0e}, // 101{ 0x00, 0x04, 0x0a, 0x06, 0x04, 0x04, 0x04, 0x0e}, // 102{ 0x00, 0x1e, 0x01, 0x0e, 0x10, 0x0f, 0x04, 0x02}, // 103{ 0x00, 0x0e, 0x01, 0x0e, 0x10, 0x0e, 0x04, 0x02}, // 104{ 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x08, 0x04}, // 105{ 0x00, 0x02, 0x0f, 0x02, 0x0a, 0x04, 0x04, 0x02}, // 106{ 0x00, 0x0c, 0x12, 0x07, 0x02, 0x07, 0x02, 0x1d}, // 107{ 0x00, 0x1c, 0x02, 0x0f, 0x02, 0x0f, 0x02, 0x1c}, // 108{ 0x00, 0x11, 0x0a, 0x04, 0x1f, 0x04, 0x1f, 0x04}, // 109{ 0x00, 0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00}, // 110{ 0x00, 0x04, 0x0e, 0x15, 0x04, 0x04, 0x04, 0x04}, // 111{ 0x00, 0x04, 0x04, 0x04, 0x04, 0x15, 0x0e, 0x04} // 112};prog_char CursorPrintPosition [128][2] ={// {}, {}, // 2 randuri ocupate de frame { 0x0, 0x5}, { 0x0, 0x23}, { 0x0, 0x41}, { 0x0, 0x5f}, { 0x0, 0x7d}, { 0x0, 0x9b}, { 0x0, 0xb9}, { 0x0, 0xd7}, { 0x0, 0xf5}, { 0x1, 0x13}, { 0x1, 0x31}, { 0x1, 0x4f}, { 0x1, 0x6d}, { 0x1, 0x8b}, { 0x1, 0xa9}, { 0x1, 0xc7}, { 0x1, 0xe5}, { 0x2, 0x3}, { 0x2, 0x21}, { 0x2, 0x3f}, { 0x2, 0x5d}, { 0x2, 0x7b}, { 0x2, 0x99}, { 0x2, 0xb7}, { 0x2, 0xd5}, { 0x2, 0xf3}, { 0x3, 0x11}, { 0x3, 0x2f}, { 0x3, 0x4d}, { 0x3, 0x6b}, { 0x3, 0x89}, { 0x3, 0xa7}, { 0x3, 0xc5}, { 0x3, 0xe3}, { 0x4, 0x1}, { 0x4, 0x1f}, { 0x4, 0x3d}, { 0x4, 0x5b}, { 0x4, 0x79}, { 0x4, 0x97}, { 0x4, 0xb5}, { 0x4, 0xd3}, { 0x4, 0xf1}, { 0x5, 0xf}, { 0x5, 0x2d}, { 0x5, 0x4b}, { 0x5, 0x69}, { 0x5, 0x87}, { 0x5, 0xa5}, { 0x5, 0xc3}, { 0x5, 0xe1}, { 0x5, 0xff}, { 0x6, 0x1d}, { 0x6, 0x3b}, { 0x6, 0x59}, { 0x6, 0x77}, { 0x6, 0x95}, { 0x6, 0xb3}, { 0x6, 0xd1}, { 0x6, 0xef}, { 0x7, 0xd}, { 0x7, 0x2b}, { 0x7, 0x49}, { 0x7, 0x67}, { 0x7, 0x85}, { 0x7, 0xa3}, { 0x7, 0xc1}, { 0x7, 0xdf}, { 0x7, 0xfd}, { 0x8, 0x1b}, { 0x8, 0x39}, { 0x8, 0x57}, { 0x8, 0x75}, { 0x8, 0x93}, { 0x8, 0xb1}, { 0x8, 0xcf}, { 0x8, 0xed}, { 0x9, 0xb}, { 0x9, 0x29}, { 0x9, 0x47}, { 0x9, 0x65}, { 0x9, 0x83}, { 0x9, 0xa1}, { 0x9, 0xbf}, { 0x9, 0xdd}, { 0x9, 0xfb}, { 0xa, 0x19}, { 0xa, 0x37}, { 0xa, 0x55}, { 0xa, 0x73}, { 0xa, 0x91}, { 0xa, 0xaf}, { 0xa, 0xcd}, { 0xa, 0xeb}, { 0xb, 0x9}, { 0xb, 0x27}, { 0xb, 0x45}, { 0xb, 0x63}, { 0xb, 0x81}, { 0xb, 0x9f}, { 0xb, 0xbd}, { 0xb, 0xdb}, { 0xb, 0xf9}, { 0xc, 0x17}, { 0xc, 0x35}, { 0xc, 0x53}, { 0xc, 0x71}, { 0xc, 0x8f}, { 0xc, 0xad}, { 0xc, 0xcb}, { 0xc, 0xe9}, { 0xd, 0x7}, { 0xd, 0x25}, { 0xd, 0x43}, { 0xd, 0x61}, { 0xd, 0x7f}, { 0xd, 0x9d}, { 0xd, 0xbb}, { 0xd, 0xd9}, { 0xd, 0xf7}, { 0xe, 0x15}, { 0xe, 0x33}, { 0xe, 0x51}, { 0xe, 0x6f}, { 0xe, 0x8d}, { 0xe, 0xab}, { 0xe, 0xc9}, { 0xe, 0xe7}};/* Local functions prototypes */void LCD__vBusyWait (void);void LCD__vWriteData(uint8_t u8Data);void LCD__vWriteDataFast(uint8_t u8Data);void LCD__vWriteBytes(uint8_t u8Control,uint8_t u8Data);void LCD__vWriteCtrl(uint8_t u8Control);uint8_t LCD__vGetHighByte (const uint16_t Value);uint8_t LCD__vGetLowByte (const uint16_t Value);uint8_t LCD__vGetDigit(const uint16_t Value, const uint8_t NrDigit);uint8_t LCD__u8GetYValue (uint8_t RowNr, uint8_t ByteNr);uint8_t LCD__vGetHighByte (const uint16_t Value) { uint8_t Cycles = 0; for (uint16_t Temp16 = Value ; Temp16 > 256 ; Temp16 -= 256) Cycles++; return (Cycles); }uint8_t LCD__vGetLowByte (const uint16_t Value) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -