Revision 437
Cleaned up analog.c code. Recompiled library. Mostly commenting and
documentation fixes. No changes made to actual code.
lcd.c | ||
---|---|---|
54 | 54 |
|
55 | 55 |
//**************************************Old shit below!***************** |
56 | 56 |
/* |
57 |
FontLookup - a lookup table for all characters |
|
57 |
FontLookup - a lookup table for all characters
|
|
58 | 58 |
*/ |
59 | 59 |
static const unsigned char FontLookup [][5] = |
60 |
{ |
|
60 |
{
|
|
61 | 61 |
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp |
62 | 62 |
{ 0x00, 0x00, 0x5f, 0x00, 0x00 }, // ! |
63 | 63 |
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // " |
... | ... | |
154 | 154 |
{ 0x41, 0x41, 0x36, 0x08, 0x00 }, // } |
155 | 155 |
{ 0x02, 0x01, 0x01, 0x02, 0x01 }, // ~ |
156 | 156 |
{ 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // del |
157 |
}; |
|
157 |
};
|
|
158 | 158 |
|
159 | 159 |
|
160 | 160 |
/** |
... | ... | |
170 | 170 |
* Initializes the LCD. Must be called before any other |
171 | 171 |
* LCD functions. |
172 | 172 |
**/ |
173 |
void lcd_init(void) |
|
174 |
{ |
|
175 |
LCDDDR |= (SCE | SDI | SCK); |
|
176 |
LCDRESETDDR |= (RST|D_C); |
|
173 |
void lcd_init(void) { |
|
174 |
LCDDDR |= (SCE | SDI | SCK); |
|
175 |
LCDRESETDDR |= (RST|D_C); |
|
177 | 176 |
|
178 |
LCDPORT &= ~( SCE | SDI | SCK);
|
|
179 |
LCDRESETPORT &=~(D_C);
|
|
177 |
LCDPORT &= ~( SCE | SDI | SCK);
|
|
178 |
LCDRESETPORT &=~(D_C);
|
|
180 | 179 |
|
181 |
SPCR |= 0x50;//0b01010000; // no SPI int, SPI en, Master, sample on rising edge, fosc/2
|
|
182 |
SPSR |= 0x01; // a continuation of the above
|
|
180 |
SPCR |= 0x50;//0b01010000; // no SPI int, SPI en, Master, sample on rising edge, fosc/2
|
|
181 |
SPSR |= 0x01; // a continuation of the above
|
|
183 | 182 |
|
184 |
LCDRESETPORT |= RST;
|
|
185 |
delay_ms(10);
|
|
186 |
LCDRESETPORT &= (~RST);
|
|
187 |
delay_ms(100);
|
|
188 |
LCDRESETPORT |= RST;
|
|
183 |
LCDRESETPORT |= RST;
|
|
184 |
delay_ms(10);
|
|
185 |
LCDRESETPORT &= (~RST);
|
|
186 |
delay_ms(100);
|
|
187 |
LCDRESETPORT |= RST;
|
|
189 | 188 |
|
190 |
lcd_putbyte( 0x21 ); // LCD Extended Commands.
|
|
191 |
lcd_putbyte( 0xC8 ); // Set LCD Vop (Contrast).
|
|
192 |
lcd_putbyte( 0x06 ); // Set Temp coefficent.
|
|
193 |
lcd_putbyte( 0x13 ); // LCD bias mode 1:48.
|
|
194 |
lcd_putbyte( 0x20 ); // LCD Standard Commands, Horizontal addressing mode.
|
|
195 |
lcd_putbyte( 0x0C ); // LCD in normal mode.
|
|
189 |
lcd_putbyte( 0x21 ); // LCD Extended Commands.
|
|
190 |
lcd_putbyte( 0xC8 ); // Set LCD Vop (Contrast).
|
|
191 |
lcd_putbyte( 0x06 ); // Set Temp coefficent.
|
|
192 |
lcd_putbyte( 0x13 ); // LCD bias mode 1:48.
|
|
193 |
lcd_putbyte( 0x20 ); // LCD Standard Commands, Horizontal addressing mode.
|
|
194 |
lcd_putbyte( 0x0C ); // LCD in normal mode.
|
|
196 | 195 |
|
197 |
LCDRESETPORT |= D_C; //put it in init instead of main
|
|
196 |
LCDRESETPORT |= D_C; //put it in init instead of main
|
|
198 | 197 |
|
199 |
lcd_clear_screen();
|
|
198 |
lcd_clear_screen();
|
|
200 | 199 |
} |
201 | 200 |
|
202 | 201 |
/** |
... | ... | |
205 | 204 |
* @see lcd_init |
206 | 205 |
**/ |
207 | 206 |
void lcd_clear_screen( void ) { |
208 |
int i;
|
|
209 |
for (i = 0; i < 504; i++)
|
|
210 |
lcd_putbyte(0x0);
|
|
207 |
int i;
|
|
208 |
for (i = 0; i < 504; i++)
|
|
209 |
lcd_putbyte(0x0);
|
|
211 | 210 |
|
212 |
lcd_gotoxy(0,0);
|
|
211 |
lcd_gotoxy(0,0);
|
|
213 | 212 |
} |
214 | 213 |
|
215 | 214 |
/** |
... | ... | |
220 | 219 |
* |
221 | 220 |
* @see lcd_init |
222 | 221 |
**/ |
223 |
void lcd_putc(char c) |
|
224 |
{ |
|
225 |
int i; |
|
222 |
void lcd_putc(char c) { |
|
223 |
int i; |
|
226 | 224 |
|
227 |
for (i = 0; i < 5; i++)
|
|
228 |
lcd_putbyte(FontLookup[c-32][i]);
|
|
229 |
lcd_putbyte(0);
|
|
225 |
for (i = 0; i < 5; i++)
|
|
226 |
lcd_putbyte(FontLookup[c-32][i]);
|
|
227 |
lcd_putbyte(0);
|
|
230 | 228 |
} |
231 | 229 |
|
232 | 230 |
/* |
233 |
print an entire string to the lcd |
|
231 |
print an entire string to the lcd
|
|
234 | 232 |
*/ |
235 |
void lcd_puts(char *s) |
|
236 |
{ |
|
237 |
char *t = s; |
|
238 |
while (*t != 0) |
|
239 |
{ |
|
240 |
lcd_putc(*t); |
|
241 |
t++; |
|
242 |
} |
|
233 |
void lcd_puts(char *s) { |
|
234 |
char *t = s; |
|
235 |
while (*t != 0) { |
|
236 |
lcd_putc(*t); |
|
237 |
t++; |
|
238 |
} |
|
243 | 239 |
} |
244 | 240 |
|
245 | 241 |
/* |
246 |
go to coordinate x, y |
|
247 |
y: vertically - 1 char |
|
248 |
x: horizontally - 1 pixel |
|
242 |
go to coordinate x, y
|
|
243 |
y: vertically - 1 char
|
|
244 |
x: horizontally - 1 pixel
|
|
249 | 245 |
|
250 |
multiply x by 6 if want to move 1 entire character |
|
246 |
multiply x by 6 if want to move 1 entire character
|
|
251 | 247 |
|
252 |
origin (0,0) is at top left corner of lcd screen |
|
248 |
origin (0,0) is at top left corner of lcd screen
|
|
253 | 249 |
*/ |
254 | 250 |
|
255 | 251 |
/** |
... | ... | |
261 | 257 |
* |
262 | 258 |
* @see lcd_init |
263 | 259 |
**/ |
264 |
void lcd_gotoxy(int x, int y) |
|
265 |
{ |
|
266 |
LCDRESETPORT &= ~(D_C); |
|
267 |
lcd_putbyte(0x40 | (y & 0x07)); |
|
268 |
lcd_putbyte(0x80 | (x & 0x7f)); |
|
269 |
LCDRESETPORT |= D_C; |
|
260 |
void lcd_gotoxy(int x, int y) { |
|
261 |
LCDRESETPORT &= ~(D_C); |
|
262 |
lcd_putbyte(0x40 | (y & 0x07)); |
|
263 |
lcd_putbyte(0x80 | (x & 0x7f)); |
|
264 |
LCDRESETPORT |= D_C; |
|
270 | 265 |
} |
271 | 266 |
|
272 | 267 |
/* |
273 |
prints an int to the lcd |
|
268 |
prints an int to the lcd
|
|
274 | 269 |
|
275 |
code adapted from Chris Efstathiou's code (hendrix@otenet.gr) |
|
270 |
code adapted from Chris Efstathiou's code (hendrix@otenet.gr)
|
|
276 | 271 |
*/ |
277 | 272 |
|
278 | 273 |
/** |
... | ... | |
283 | 278 |
* |
284 | 279 |
* @see lcd_init |
285 | 280 |
**/ |
286 |
void lcd_puti(int value ) |
|
287 |
{ |
|
288 |
unsigned char lcd_data[6]={'0','0','0','0','0','0' }, position=sizeof(lcd_data), radix=10; |
|
281 |
void lcd_puti(int value ) { |
|
282 |
unsigned char lcd_data[6]={'0','0','0','0','0','0' }, position=sizeof(lcd_data), radix=10; |
|
289 | 283 |
|
290 |
/* convert int to ascii */
|
|
291 |
if(value<0) {
|
|
292 |
lcd_putc('-');
|
|
293 |
value=-value;
|
|
294 |
}
|
|
295 |
do {
|
|
296 |
position--;
|
|
297 |
*(lcd_data+position)=(value%radix)+'0';
|
|
298 |
value/=radix;
|
|
299 |
} while(value);
|
|
284 |
/* convert int to ascii */ |
|
285 |
if(value<0) { |
|
286 |
lcd_putc('-');
|
|
287 |
value=-value;
|
|
288 |
}
|
|
289 |
do { |
|
290 |
position--;
|
|
291 |
*(lcd_data+position)=(value%radix)+'0';
|
|
292 |
value/=radix;
|
|
293 |
} while(value);
|
|
300 | 294 |
|
301 | 295 |
|
302 |
/* start displaying the number */
|
|
303 |
for( ; position<=(sizeof(lcd_data)-1); position++)
|
|
304 |
lcd_putc(lcd_data[position]);
|
|
296 |
/* start displaying the number */ |
|
297 |
for(;position<=(sizeof(lcd_data)-1);position++)
|
|
298 |
lcd_putc(lcd_data[position]);
|
|
305 | 299 |
|
306 |
return;
|
|
300 |
return;
|
|
307 | 301 |
} |
308 | 302 |
|
309 | 303 |
/** @} **/ //end defgroup |
310 | 304 |
|
311 |
void lcd_putbyte(unsigned char b) |
|
312 |
{ |
|
313 |
SPDR = b; |
|
314 |
while (!(SPSR & 0x80)); /* Wait until SPI transaction is complete */ |
|
305 |
void lcd_putbyte(unsigned char b) { |
|
306 |
SPDR = b; |
|
307 |
while (!(SPSR & 0x80)); /* Wait until SPI transaction is complete */ |
|
315 | 308 |
} |
316 |
|
Also available in: Unified diff