12864带字库显示屏显示汉字程序
2017-03-10 09:32
323 查看
/*****************************************************/
//描述:LCD12864的驱动
//作者:happygrilclh
//时间:2015/06/30
/*****************************************************/
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#define LCD_DATA (*((volatile Uint16 *)0x45EF))
#define E GpioDataRegs.GPBDAT.bit.GPIO61
#define RW GpioDataRegs.GPADAT.bit.GPIO27
#define RS GpioDataRegs.GPBDAT.bit.GPIO60
#define LOW 0
#define HIGH 1
#define CLEAR_SCREEN 0x01 //清屏指令:清屏且AC值为00H
#define AC_INIT 0x02 //将AC设置为00H。且游标移到原点位置
#define CURSE_ADD 0x06 //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)
#define FUN_MODE 0x30 //工作模式:8位基本指令集
#define DISPLAY_ON 0x0c //显示开,显示游标,且游标位置反白
#define DISPLAY_OFF 0x08 //显示关
#define CURSE_DIR 0x14 //游标向右移动:AC=AC+1
#define SET_CG_AC 0x40 //设置AC,范围为:00H~3FH
#define SET_DD_AC 0x80
#define DELAY_MS(A) DELAY_US((long double)A * 1000.0L)
#define DELAY_100US(B) DELAY_US((long double)B * 100.0L)
void InitXintf(void);
void ConfigGpio(void);
void InitLcd(void);
void WriteCmd12864(Uint16 cmd);
void WriteData12864(Uint16 dat);
void DisplayDdram(uchar *hz);
void DisplayChar();
uchar A[] = {"输 出功率:"};
uchar B[] = {"当天发电量:"};
uchar C[] = {"当月发电量:"};
uchar D[] = {"总 发电量:"};
void main(void)
{
InitSysCtrl();
InitXintf();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
ConfigGpio();
InitLcd();
DisplayChar();
while(1);
}
void ConfigGpio(void)
{
EALLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
Gpio
4000
CtrlRegs.GPAMUX2.bit.GPIO27 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO27 = 1;
EDIS;
}
void InitLcd(void)
{
DELAY_100US(5);
WriteCmd12864(FUN_MODE);
DELAY_US(5);
WriteCmd12864(FUN_MODE);
DELAY_US(5);
WriteCmd12864(DISPLAY_ON);
DELAY_US(5);
WriteCmd12864(CLEAR_SCREEN);
DELAY_US(20);
WriteCmd12864(AC_INIT);
DELAY_US(4);
}
void WriteCmd12864(Uint16 cmd)
{
RS = LOW;
RW = LOW;//写数据
E = HIGH;
LCD_DATA = cmd;
E = LOW;
}
void WriteData12864(Uint16 dat)
{
RS = HIGH;
RW = LOW;//写数据
E = HIGH;
LCD_DATA = dat;
E = LOW;
}
void DisplayChar()
{
WriteCmd12864(0x80);
DELAY_US(5);
DisplayDdram(A);
WriteCmd12864(0x90);
DELAY_US(5);
DisplayDdram(B);
WriteCmd12864(0x88);
DELAY_US(5);
DisplayDdram(C);
WriteCmd12864(0x98);
DELAY_US(5);
DisplayDdram(D);
}
void DisplayDdram(uchar *hz)
{
while(*hz != '\0')
{
WriteData12864(*hz);//地址里面的值
hz++;
DELAY_US(3);
}
}
有问题,请咨询,个人公众号。
//描述:LCD12864的驱动
//作者:happygrilclh
//时间:2015/06/30
/*****************************************************/
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#define LCD_DATA (*((volatile Uint16 *)0x45EF))
#define E GpioDataRegs.GPBDAT.bit.GPIO61
#define RW GpioDataRegs.GPADAT.bit.GPIO27
#define RS GpioDataRegs.GPBDAT.bit.GPIO60
#define LOW 0
#define HIGH 1
#define CLEAR_SCREEN 0x01 //清屏指令:清屏且AC值为00H
#define AC_INIT 0x02 //将AC设置为00H。且游标移到原点位置
#define CURSE_ADD 0x06 //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)
#define FUN_MODE 0x30 //工作模式:8位基本指令集
#define DISPLAY_ON 0x0c //显示开,显示游标,且游标位置反白
#define DISPLAY_OFF 0x08 //显示关
#define CURSE_DIR 0x14 //游标向右移动:AC=AC+1
#define SET_CG_AC 0x40 //设置AC,范围为:00H~3FH
#define SET_DD_AC 0x80
#define DELAY_MS(A) DELAY_US((long double)A * 1000.0L)
#define DELAY_100US(B) DELAY_US((long double)B * 100.0L)
void InitXintf(void);
void ConfigGpio(void);
void InitLcd(void);
void WriteCmd12864(Uint16 cmd);
void WriteData12864(Uint16 dat);
void DisplayDdram(uchar *hz);
void DisplayChar();
uchar A[] = {"输 出功率:"};
uchar B[] = {"当天发电量:"};
uchar C[] = {"当月发电量:"};
uchar D[] = {"总 发电量:"};
void main(void)
{
InitSysCtrl();
InitXintf();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
ConfigGpio();
InitLcd();
DisplayChar();
while(1);
}
void ConfigGpio(void)
{
EALLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
Gpio
4000
CtrlRegs.GPAMUX2.bit.GPIO27 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO27 = 1;
EDIS;
}
void InitLcd(void)
{
DELAY_100US(5);
WriteCmd12864(FUN_MODE);
DELAY_US(5);
WriteCmd12864(FUN_MODE);
DELAY_US(5);
WriteCmd12864(DISPLAY_ON);
DELAY_US(5);
WriteCmd12864(CLEAR_SCREEN);
DELAY_US(20);
WriteCmd12864(AC_INIT);
DELAY_US(4);
}
void WriteCmd12864(Uint16 cmd)
{
RS = LOW;
RW = LOW;//写数据
E = HIGH;
LCD_DATA = cmd;
E = LOW;
}
void WriteData12864(Uint16 dat)
{
RS = HIGH;
RW = LOW;//写数据
E = HIGH;
LCD_DATA = dat;
E = LOW;
}
void DisplayChar()
{
WriteCmd12864(0x80);
DELAY_US(5);
DisplayDdram(A);
WriteCmd12864(0x90);
DELAY_US(5);
DisplayDdram(B);
WriteCmd12864(0x88);
DELAY_US(5);
DisplayDdram(C);
WriteCmd12864(0x98);
DELAY_US(5);
DisplayDdram(D);
}
void DisplayDdram(uchar *hz)
{
while(*hz != '\0')
{
WriteData12864(*hz);//地址里面的值
hz++;
DELAY_US(3);
}
}
有问题,请咨询,个人公众号。
相关文章推荐
- 12864带字库显示屏显示汉字程序
- 【12864】 LCD12864无字库显示汉字【仿真+程序+注意事项】
- 12864带字库显示屏自定义字符显示CGRAM
- 12864带字库显示屏画图程序
- 12864带字库显示屏画图程序
- UCGUI自定义字库及显示汉字的程序
- 单片机--带字库12864显示正弦波程序
- 12864带字库显示屏滚屏显示
- arm力天电子 lpc2148 无字库的12864显示一个汉字(串行)
- arm 力天电子lpc2148无字库12864显示多行多个汉字(串行)
- 12864带字库显示屏按键选择菜单显示
- 12864带字库显示屏滚屏显示
- 12864带字库显示屏按键选择菜单显示
- 英文系统wince在程序中动态加载字库显示汉字
- 12864带字库显示的各种程序的总结
- 12864带字库显示的各种程序的总结
- UCGUI自定义字库及显示汉字的程序
- 单片机练习 - 带中文字库12864LCD显示程序
- 液晶12864汉字显示程序及显示顺序正常的C语言程序
- 12864带字库显示屏自定义字符显示CGRAM