12864带字库显示屏显示汉字程序

来源:互联网 发布:c语言中字符串处理函数 编辑:程序博客网 时间:2024/06/08 06:06
/*****************************************************///描述:LCD12864的驱动//作者:小四叶草//时间: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 EGpioDataRegs.GPBDAT.bit.GPIO61#define RWGpioDataRegs.GPADAT.bit.GPIO27#define RS GpioDataRegs.GPBDAT.bit.GPIO60#define LOW 0#define HIGH1#define CLEAR_SCREEN0x01//清屏指令:清屏且AC值为00H#define AC_INIT0x02//将AC设置为00H。且游标移到原点位置#define CURSE_ADD0x06//设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)#define FUN_MODE0x30//工作模式:8位基本指令集#define DISPLAY_ON0x0c//显示开,显示游标,且游标位置反白#define DISPLAY_OFF0x08//显示关#define CURSE_DIR0x14//游标向右移动:AC=AC+1#define SET_CG_AC0x40//设置AC,范围为:00H~3FH#define SET_DD_AC0x80 #defineDELAY_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;GpioCtrlRegs.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);}}

1 0
原创粉丝点击