46 #define RS_HIGH() _LATB9 = 1
47 #define RS_LOW() _LATB9 = 0
48 #define CONFIG_RS() CONFIG_RB9_AS_DIG_OUTPUT()
50 #define RW_HIGH() _LATB13 = 1
51 #define RW_LOW() _LATB13 = 0
52 #define CONFIG_RW() CONFIG_RB13_AS_DIG_OUTPUT()
54 #define E_HIGH() _LATB14 = 1
55 #define E_LOW() _LATB14 = 0
56 #define CONFIG_E() CONFIG_RB14_AS_DIG_OUTPUT()
64 #define CONFIG_LCD4_AS_INPUT() CONFIG_RB5_AS_DIG_INPUT()
65 #define CONFIG_LCD5_AS_INPUT() CONFIG_RB6_AS_DIG_INPUT()
66 #define CONFIG_LCD6_AS_INPUT() CONFIG_RB7_AS_DIG_INPUT()
67 #define CONFIG_LCD7_AS_INPUT() CONFIG_RB8_AS_DIG_INPUT()
69 #define CONFIG_LCD4_AS_OUTPUT() CONFIG_RB5_AS_DIG_OUTPUT()
70 #define CONFIG_LCD5_AS_OUTPUT() CONFIG_RB6_AS_DIG_OUTPUT()
71 #define CONFIG_LCD6_AS_OUTPUT() CONFIG_RB7_AS_DIG_OUTPUT()
72 #define CONFIG_LCD7_AS_OUTPUT() CONFIG_RB8_AS_DIG_OUTPUT()
74 #define GET_BUSY_FLAG() LCD7I
84 CONFIG_LCD4_AS_OUTPUT();
85 CONFIG_LCD5_AS_OUTPUT();
86 CONFIG_LCD6_AS_OUTPUT();
87 CONFIG_LCD7_AS_OUTPUT();
91 void configBusAsInLCD(
void) {
92 CONFIG_LCD4_AS_INPUT();
93 CONFIG_LCD5_AS_INPUT();
94 CONFIG_LCD6_AS_INPUT();
95 CONFIG_LCD7_AS_INPUT();
100 void outputToBusLCD(
uint8_t u8_c) {
102 LCD5O = (u8_c >> 1)& 0x01;
103 LCD6O = (u8_c >> 2)& 0x01;
104 LCD7O = (u8_c >> 3)& 0x01;
108 void configControlLCD(
void) {
141 u8_wdtState = _SWDTEN;
147 u8_BusyFlag = GET_BUSY_FLAG();
151 }
while (u8_BusyFlag);
152 _SWDTEN = u8_wdtState;
157 if (u8_DataFlag) RS_HIGH();
159 outputToBusLCD(u8_Cmd >> 4);
162 outputToBusLCD(u8_Cmd);
170 writeLCD(0x20,0,0,0);
171 writeLCD(0x28,0,0,1);
172 writeLCD(0x28,0,0,1);
173 writeLCD(0x06,0,0,1);
174 writeLCD(0x0C,0,0,1);
175 writeLCD(0x01,0,0,1);
180 void outStringLCD(
char *psz_s) {
182 writeLCD(*psz_s, 1, 1,1);
194 outStringLCD(
"******Hello, my name is Bob********");
195 writeLCD(0xC0,0,1,1);
196 outStringLCD(
"-----these lines are moving!-------");
198 writeLCD(0x18,0,1,1);