📄 zlg_avalon_lcd128_64.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 + -