//头文件
#ifndef LCD1602_H_ #define LCD1602_H_ #include \#include
/*****************以下请按照软核定义修改******************/
#define LCD_BASE LCD1620_BASE //定义器件地址
#define LCD_DELAY_TIME 2000 //延时大小,请根据系统时针适当修改
/***********************控制指令***********************/ #define LCD_CUSSOR_OFF 0x0C //无光标
#define LCD_CUSSOR_ON_F 0x0F //有光标,闪烁 #define LCD_CUSSOR_ON 0x0E //有光标,不闪烁
/*******************定义控制函数***********************/ #define LCD_Write_CMD(data) IOWR(LCD_BASE, 0, data) #define LCD_Write_Data(data) IOWR(LCD_BASE, 2, data) #define LCD_Read_Data() IORD(LCD_BASE, 3)
/*********************函数声明***********************/ extern void LCD_Init(void); //液晶初始化 extern void LCD_Print(char *Text); //显示字符串
extern void LCD_SetPos(int Row, int Column); //显示定位
/*======================================================= * LCD_Init()
* Description: 1602初始化
*=======================================================*/ void LCD_Init() {
LCD_Write_CMD(0x38); //8bit数据方式,2行显示,4X11点阵 usleep(LCD_DELAY_TIME);
LCD_Write_CMD(LCD_CUSSOR_OFF); //显示开关,和光标闪烁方式 usleep(LCD_DELAY_TIME);
LCD_Write_CMD(0x01); //清屏 usleep(LCD_DELAY_TIME);
LCD_Write_CMD(0x06); //光标前移方式,不整屏移动 usleep(LCD_DELAY_TIME);
LCD_Write_CMD(0X80); //光标复位到0X80 usleep(LCD_DELAY_TIME); }
/*======================================================= * LCD_Print()
* Description: 打印字符串
*=======================================================*/ void LCD_Print(char *Text) {
while(*Text!='\\0') {
LCD_Write_Data(*Text); usleep(LCD_DELAY_TIME); ++Text; } }
/*======================================================= * LCD_SetPos()
* Description: 设置光标位置
* 参数: Row--液晶行(0~1)
* Coluumn---液晶列(0~15)
*=======================================================*/ void LCD_SetPos(int Row, int Column) {
LCD_Write_CMD((0x80+Column)|(Row<<6)); usleep(LCD_DELAY_TIME); }
#endif /*LCD1602_H_*/
//C文件
#include
#include \#include \
int alt_main() {
LCD_Init();
LCD_Print(\ LCD_SetPos(1,0); LCD_Print(\ LCD_SetPos(1,11); LCD_Print(\ while(1);
return 0; }