⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlg_avalon_lcd128_64.h

📁 周立功 SOPC嵌入式系统实验教材 LCD12864驱动代码
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN ELECTRONIC CO.,LTD.
**                                      Research centre
**                          http://www.zyinside.com, http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			  zlg_avalon_lcd128_64.h
** Latest modified Date:  2006-2-8
** Latest Version:		  2.0
** Descriptions:		  All hardware ralative defines
**                       
**                        
**
**------------------------------------------------------------------------------------------------------
** Created by:			  Zhang Gaosong
** Created date:		  23 Dec, 2004
** Version:				  1.0
** Descriptions:		  The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:           Zhou Shuwu
** Modified date:         2006-2-8
** Version:               2.0
** Descriptions:          Modified for NiosII
**
********************************************************************************************************
********************************************************************************************************
**------------------------------------------------------------------------------------------------------
** Modified by:           Jing.Zhang
** Modified date:         2006-2-19
** Version:               2.0
** Descriptions:          Modified for API
**
********************************************************************************************************/
#ifndef _ZLG_AVALON_LCD128_64_H_
#define _ZLG_AVALON_LCD128_64_H_

#include "alt_types.h"
#include <io.h>

#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */

/******************************************************************
*      与硬件相关的宏定义,用户根据实际情况修改
******************************************************************/
#ifndef LCD_LIGHT_BASE             //这是控制LCD背光的PIO核的基地址
#define LCD_LIGHT_BASE  0xfffffffe //user's definition here
#endif

#if LCD_LIGHT_BASE == 0xfffffffe  
#warning "No definition of LCD_LIGHT PIO core.\n"
#endif

#ifndef LCD128_64_BASE            //这是LCD核的基地址   
#define LCD128_64_BASE  0xffffffff//user's definition here
#endif

#if LCD128_64_BASE == 0xffffffff
#warning "No definition of LCD128_64 core.\n"
#endif

//====================================================================
//                Base address definition              
//====================================================================
/*
#define    LCD_WRITE_COMMAND	((volatile alt_u8 *)LCD128_64_BASE)     // RS(A0)=0, R/W(A1)=0
#define    LCD_WRITE_DATA		((volatile alt_u8 *)(LCD128_64_BASE+4)) // RS(A0)=1, R/W(A1)=0
#define    LCD_READ_STATUS	    ((volatile alt_u8 *)(LCD128_64_BASE+8)) // RS(A0)=0, R/W(A1)=1
#define    LCD_READ_DATA		((volatile alt_u8 *)(LCD128_64_BASE+12))// RS(A0)=1, R/W(A1)=1
*/
#define    LCD_WRITE_COMMAND(data)  IOWR(LCD128_64_BASE, 0, data)// RS(A0)=0, R/W(A1)=0
#define    LCD_WRITE_DATA(data)     IOWR(LCD128_64_BASE, 1, data)// RS(A0)=1, R/W(A1)=0
#define    LCD_READ_STATUS()        IORD(LCD128_64_BASE, 2)      // RS(A0)=0, R/W(A1)=1
#define    LCD_READ_DATA()          IORD(LCD128_64_BASE, 3)      // RS(A0)=1, R/W(A1)=1

//====================================================================
//                Flag and commands macros              
//====================================================================
#define    LCD_BUSY_FLAG      0x80
#define    LCD_ERR_OK          0
#define    LCD_ERR_TIMEOUT    -2
#define    LCD_CMD_CLEAR      0x01   
#define    LCD_CMD_8BIT       0x30
#define    LCD_CMD_AC_INC     0x06
#define    LCD_CMD_AC_DEC     0x04
#define    LCD_CMD_RST_AC     0x02
#define    LCD_CMD_DISP_ON    0x0C
#define    LCD_CMD_DISP_OFF   0x08
#define    LCD_CMD_CURSOR_ON  0x0E    
#define    LCD_CMD_CURSOR_OFF 0x0C
#define    LCD_CMD_CURSOR_MOV 0x10
#define    LCD_CMD_SLEEP      0x08
#define    LCD_CMD_WAKEUP     0x0C
#define    LCD_CMD_CGRAM_ADDR 0x40
#define    LCD_CMD_DDRAM_ADDR 0x80

#define    LCD_CURSOR_LEFT    0x00
#define    LCD_CURSOR_RIGHT   0x04
#define    LCD_DISP_LEFT      0x08
#define    LCD_DISP_RIGHT     0x0C

#define    LCD_BACKLIGHT_ON   0x01
#define    LCD_BACKLIGHT_OFF  0x0


//=============================================================================
// User's LCD API
//=============================================================================
extern void LCD_BacklightCon(alt_u8 status);
extern void LCD_init(void);
extern int  LCD_printf(alt_u8 row,alt_u8 col,alt_u8 *pdata,alt_u8 len);
extern void LCD_PlotPic(alt_u8 *pdata);
//=============================================================================
// LCD Command API for higher abstractive function 
//=============================================================================
extern int ST7920_SendDATA(alt_u8 data);
extern int ST7920_ClearScreen(void);
extern int ST7920_CursorGoHome(void);
extern int ST7920_CursorMove(alt_u8 mode);
extern int ST7920_DisplayOn(void);
extern int ST7920_DisplayOff(void);
extern int ST7920_CursorOn(void);
extern int ST7920_CursorOff(void);
extern int ST7920_CursorMoveRight(void);
extern int ST7920_CursorMoveLeft(void);
extern int ST7920_ScreenMoveRight(void);
extern int ST7920_ScreenMoveLeft(void);
extern int ST7920_ExpandFunctionDisable(void);
extern int ST7920_ExpandFunctionEnable(void);
extern void ST7920_CgramAddress(alt_u8 CgramAddr);
extern void ST7920_DdramAddress(alt_u8 DdramAddr);
extern void ST7920_IdleMode(void);
extern void ST7920_RollInstructionEnable(void);
extern void ST7920_RollInstructionDisable(void);
extern void ST7920_IramAddress(alt_u8 IramAddr);
extern void ST7920_SetRollAddress(alt_u8 WhichdotLine);
extern void ST7920_NegativeDisplay(alt_u8 row,alt_u8 col,alt_u8 width);
extern void ST7920_CancelNegDisp(alt_u8 row,alt_u8 col,alt_u8 width);
extern void ST7920_Sleep(void);
extern void ST7920_WakeUp(void);
extern void ST7920_PictureOn(void);
extern void ST7920_PictureOff(void);
extern void ST7920_GdramAddress(alt_u8 VerticalAddr,alt_u8 HorizontalAddr);
extern void ST7920_ClearGDRAM(void);

/*
 * Macros used by alt_sys_init()
 */
#define ZLG_AVALON_LCD128_64_INSTANCE(name, device) extern int alt_no_storage
#define ZLG_AVALON_LCD128_64_INIT(name, device) while (0)

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* _ZLG_AVALON_LCD128_64_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -