xref: /btstack/port/archive/msp-exp430f5438-cc2564b/firmware/hal_lcd.h (revision 1664436fd643daf66517dc309e6cc72448e8a86d)
1*1664436fSMatthias Ringwald /*******************************************************************************
2*1664436fSMatthias Ringwald     Filename: hal_lcd.h
3*1664436fSMatthias Ringwald 
4*1664436fSMatthias Ringwald     Copyright 2008 Texas Instruments, Inc.
5*1664436fSMatthias Ringwald ***************************************************************************/
6*1664436fSMatthias Ringwald #ifndef HAL_LCD_H
7*1664436fSMatthias Ringwald #define HAL_LCD_H
8*1664436fSMatthias Ringwald 
9*1664436fSMatthias Ringwald #ifndef MIN
10*1664436fSMatthias Ringwald #define MIN(n,m)   (((n) < (m)) ? (n) : (m))
11*1664436fSMatthias Ringwald #endif
12*1664436fSMatthias Ringwald 
13*1664436fSMatthias Ringwald #ifndef MAX
14*1664436fSMatthias Ringwald #define MAX(n,m)   (((n) < (m)) ? (m) : (n))
15*1664436fSMatthias Ringwald #endif
16*1664436fSMatthias Ringwald 
17*1664436fSMatthias Ringwald #ifndef ABS
18*1664436fSMatthias Ringwald #define ABS(n)     (((n) < 0) ? -(n) : (n))
19*1664436fSMatthias Ringwald #endif
20*1664436fSMatthias Ringwald 
21*1664436fSMatthias Ringwald #define LCD_COMM_OUT        P8OUT
22*1664436fSMatthias Ringwald #define LCD_COMM_DIR        P8DIR
23*1664436fSMatthias Ringwald #define LCD_COMM_SEL        P8SEL
24*1664436fSMatthias Ringwald #define LCD_BACKLIGHT_PIN   BIT3
25*1664436fSMatthias Ringwald 
26*1664436fSMatthias Ringwald #ifdef REV_02
27*1664436fSMatthias Ringwald   #define LCD_CS_RST_DIR      LCD_COMM_DIR
28*1664436fSMatthias Ringwald   #define LCD_CS_RST_OUT      LCD_COMM_OUT
29*1664436fSMatthias Ringwald   #define LCD_CS_PIN          BIT1
30*1664436fSMatthias Ringwald   #define LCD_RESET_PIN       BIT2
31*1664436fSMatthias Ringwald #else
32*1664436fSMatthias Ringwald   #define LCD_CS_RST_DIR      P9DIR
33*1664436fSMatthias Ringwald   #define LCD_CS_RST_OUT      P9OUT
34*1664436fSMatthias Ringwald   #define LCD_CS_PIN          BIT6
35*1664436fSMatthias Ringwald   #define LCD_RESET_PIN       BIT7
36*1664436fSMatthias Ringwald #endif
37*1664436fSMatthias Ringwald 
38*1664436fSMatthias Ringwald #define LCD_ROW                 110
39*1664436fSMatthias Ringwald #define LCD_COL                 138
40*1664436fSMatthias Ringwald #define LCD_Size                3505
41*1664436fSMatthias Ringwald #define LCD_MEM_Size            110*17
42*1664436fSMatthias Ringwald #define LCD_Max_Column_Offset   0x10
43*1664436fSMatthias Ringwald 
44*1664436fSMatthias Ringwald #define LCD_Last_Pixel          3505
45*1664436fSMatthias Ringwald 
46*1664436fSMatthias Ringwald #define LCD_MEM_Row             0x11
47*1664436fSMatthias Ringwald #define LCD_Row                 0x20
48*1664436fSMatthias Ringwald 
49*1664436fSMatthias Ringwald // Grayscale level definitions
50*1664436fSMatthias Ringwald #define PIXEL_OFF               0
51*1664436fSMatthias Ringwald #define PIXEL_LIGHT             1
52*1664436fSMatthias Ringwald #define PIXEL_DARK              2
53*1664436fSMatthias Ringwald #define PIXEL_ON                3
54*1664436fSMatthias Ringwald 
55*1664436fSMatthias Ringwald #define INVERT_TEXT             BIT0
56*1664436fSMatthias Ringwald #define OVERWRITE_TEXT          BIT2
57*1664436fSMatthias Ringwald 
58*1664436fSMatthias Ringwald /*-------------------------------------------------------------
59*1664436fSMatthias Ringwald  *                  Function Prototypes
60*1664436fSMatthias Ringwald  * ------------------------------------------------------------*/
61*1664436fSMatthias Ringwald void halLcdInit(void);
62*1664436fSMatthias Ringwald void halLcdShutDown(void);
63*1664436fSMatthias Ringwald void halLcdBackLightInit(void);
64*1664436fSMatthias Ringwald void halLcdSetBackLight(unsigned char BackLightLevel);
65*1664436fSMatthias Ringwald unsigned int halLcdGetBackLight(void);
66*1664436fSMatthias Ringwald void halLcdShutDownBackLight(void);
67*1664436fSMatthias Ringwald void halLcdSendCommand(unsigned char Data[]) ;
68*1664436fSMatthias Ringwald void halLcdSetContrast(unsigned char ContrastLevel);
69*1664436fSMatthias Ringwald unsigned char halLcdGetContrast(void);
70*1664436fSMatthias Ringwald void halLcdStandby(void);
71*1664436fSMatthias Ringwald void halLcdActive(void);
72*1664436fSMatthias Ringwald 
73*1664436fSMatthias Ringwald //Move to specified LCD address
74*1664436fSMatthias Ringwald void halLcdSetAddress(int Address);
75*1664436fSMatthias Ringwald 
76*1664436fSMatthias Ringwald //Draw at current segment location
77*1664436fSMatthias Ringwald void halLcdDrawCurrentBlock(unsigned int Value);
78*1664436fSMatthias Ringwald 
79*1664436fSMatthias Ringwald //Draw at specified location by calling
80*1664436fSMatthias Ringwald //LCD_Set_Address(Address) & LCD_Draw_Current_Block( value )
81*1664436fSMatthias Ringwald void halLcdDrawBlock(unsigned int Address, unsigned int Value);
82*1664436fSMatthias Ringwald 
83*1664436fSMatthias Ringwald //Read value from LCD CGRAM
84*1664436fSMatthias Ringwald int halLcdReadBlock(unsigned int Address);
85*1664436fSMatthias Ringwald 
86*1664436fSMatthias Ringwald //Clear LCD Screen
87*1664436fSMatthias Ringwald void halLcdClearScreen(void);
88*1664436fSMatthias Ringwald 
89*1664436fSMatthias Ringwald //Invert black to white and vice versa
90*1664436fSMatthias Ringwald void halLcdReverse(void);
91*1664436fSMatthias Ringwald 
92*1664436fSMatthias Ringwald // Draw a Pixel @ (x,y) with GrayScale level
93*1664436fSMatthias Ringwald void halLcdPixel(  int x,  int y, unsigned char GrayScale);
94*1664436fSMatthias Ringwald //Draw Line from (x1,y1) to (x2,y2) with GrayScale level
95*1664436fSMatthias Ringwald void halLcdLine(  int x1,  int y1,  int x2,  int y2, unsigned char GrayScale);
96*1664436fSMatthias Ringwald 
97*1664436fSMatthias Ringwald void halLcdCircle(int x, int y, int Radius, int GrayScale);
98*1664436fSMatthias Ringwald 
99*1664436fSMatthias Ringwald void halLcdImage(const unsigned int Image[], int Columns, int Rows, int x, int y);
100*1664436fSMatthias Ringwald void halLcdClearImage(int Columns, int Rows,  int x, int y);
101*1664436fSMatthias Ringwald 
102*1664436fSMatthias Ringwald //Print String of Length starting at current LCD location
103*1664436fSMatthias Ringwald void halLcdPrint( char String[], unsigned char TextStyle) ;
104*1664436fSMatthias Ringwald 
105*1664436fSMatthias Ringwald //Print String of Length starting at (x,y)
106*1664436fSMatthias Ringwald void halLcdPrintXY(char String[], int x, int y, unsigned char TextStyle);
107*1664436fSMatthias Ringwald 
108*1664436fSMatthias Ringwald //Print String of Length starting at (x,y)
109*1664436fSMatthias Ringwald void halLcdPrintLine(char String[], unsigned char Line, unsigned char TextStyle);
110*1664436fSMatthias Ringwald void halLcdPrintLineCol(char String[], unsigned char Line, unsigned char Col, unsigned char TextStyle);
111*1664436fSMatthias Ringwald 
112*1664436fSMatthias Ringwald void halLcdCursor(void);
113*1664436fSMatthias Ringwald void halLcdCursorOff(void);
114*1664436fSMatthias Ringwald //Scroll a single row of pixels
115*1664436fSMatthias Ringwald void halLcdScrollRow(int y);
116*1664436fSMatthias Ringwald //Scroll a number of consecutive rows from yStart to yEnd
117*1664436fSMatthias Ringwald void halLcdHScroll(int yStart, int yEnd);
118*1664436fSMatthias Ringwald //Scroll a line of text
119*1664436fSMatthias Ringwald void halLcdScrollLine(int Line);
120*1664436fSMatthias Ringwald 
121*1664436fSMatthias Ringwald #endif
122