Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * main.c
- *
- * Created on: 28.09.2016
- * Author: levi
- */
- #include <avr/io.h>
- #include <util/delay.h>
- #include <hd44780.c>
- #include <hd44780.h>
- #include <stdlib.h>
- typedef _Bool bool;
- typedef unsigned char byte;
- typedef struct buffer {
- byte Xpos;
- byte Ypos;
- byte Xsize;
- byte Ysize;
- } layer;
- enum LCD_PINS {
- RS,RW,R,D1,D2,D3,D4,D5,D6,D7
- };
- enum formating {nowrap, wrap};
- void LCD_animate(layer * buffer);
- void LCD_Draw (layer * buffer, char text[], enum formating format);
- void LCD_initSurface (layer * buffer);
- int main (void) {
- layer base = {
- .Xpos=3,
- .Ypos=4,
- .Xsize=6,
- .Ysize=1,
- };
- LCD_Initalize();
- LCD_Clear();
- LCD_initSurface(&base);
- LCD_Draw(&base, "123456", nowrap);
- while(1) {
- //
- }
- }
- //====================================================
- void LCD_animate(layer * buffer) {
- buffer->Xpos++;
- }
- //----------------------------------------------------
- void LCD_Draw (layer * buffer, char text[], enum formating format) {
- LCD_GoTo (buffer->Xpos, buffer->Ypos);
- byte framesize = (buffer->Xsize * buffer->Ysize)-1;
- byte i;
- byte trackx = 0;
- for (i=0; i <= framesize; i++) {
- trackx++;
- if (format==wrap && trackx >= buffer->Xsize+1 && buffer->Ysize >=2) {
- LCD_GoTo (buffer->Xpos, buffer->Ypos+1);
- LCD_WriteData(text[i]);
- trackx =0;
- }
- else {
- LCD_WriteData(text[i]);
- }
- }
- }
- //----------------------------------------------------
- void LCD_initSurface (layer * buffer) {
- buffer->Xpos--;
- buffer->Ypos--;
- }
- //----------------------------------------------------
Add Comment
Please, Sign In to add comment