📄 ocm4x8c.c
字号:
//******************************************************//
//FILE: ocm4x8c.c
// 液晶显示程序
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
#include "DSP281x_GlobalPrototypes.h"
#define BF GpioDataRegs.GPBDAT.bit.GPIOB7
#define RS GpioDataRegs.GPBDAT.bit.GPIOB8 //H=data; L=command
#define RW GpioDataRegs.GPBDAT.bit.GPIOB9 //H=read; L=write
#define EN GpioDataRegs.GPBDAT.bit.GPIOB10 //input enable
#define RESET_LCD GpioDataRegs.GPEDAT.bit.GPIOE2 //Reset Signal 低电平有效
#define COMM 0 //command
#define DATA 1 //data
// Prototype statements for functions found within this file.
void Gpio_select(void);
void InitSystem(void);
void InitLcd(void);
void Wr_lcd(Uchar data_comm,Uchar data);//写指令或数据
void Chn_Disp(Uchar *chn); //OK
void Img_Dispfull(Uchar *img);//全屏显示图形 OK
void Img_Disp(int x,int y,Uint16 height,Uint16 width,Uchar *img);//区域显示图形 OK
void Img_clr(int x,int y,Uint16 height,Uint16 width);//清除图形 OK
void Con_Disprow(int row);//反白显示 OK
void con_disp(Uchar data1,Uchar data2,int x0,int y0,int x1,int y1);
void Con_disparea(int x, int y, int height,int width);
void lat_disp(Uchar data1,Uchar data2); //data1=data2=0x00--clear screen
void origin_cur(void);
void cur_disp(Uchar data1,Uchar data2,Uchar x,Uchar y); //光标显示
void Move_cur(int dir);
void OnOff_cur(Uchar cur_con,Uchar cur_on);
void Chk_Busy(void);//测试忙状态
void Clr_ram(void);//Clear Scream/DDRam
Uchar Read_lcd(void);
void delay (int delay);
void delay_s(int ss);
int Max(int x,int y);
int Min(int x,int y);
Uchar addr[]={0x80,0x90,0x88,0x98};
Uchar tab1[]={
"本系列中文模块ke"
"任意位置反白显sh"
"置二级字库,可在"
"使用更方便更灵活"
};
Uchar tab2[]={
"金鹏科技有限公司"
"Golden Palm TECH"
"奥可拉液晶显示器"
"TEL:0758-2263858"
};
Uchar tab3[]={
" 科技有限 "
" "
"TEL:0758-2263858"
"0x00,0x000x000x00,0x00"
};
Uchar tab5[]={
/*-- 调入了一幅图像:C:\Documents and Settings\mirror\桌面\bmp\www.imagebt.com__HOUSE31.bmp --*/
/*-- 宽度x高度=128x64 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x1F,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x1F,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x1C,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x1C,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x1F,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x07,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x06,0x06,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x06,0x06,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x00,0x00,0x00,0x00,0x06,0x06,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xDF,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x84,0x7F,0xC4,0x04,0x04,0x04,0x04,0x07,0xF4,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0xFF,0xC4,0x04,0x04,0x04,0x04,0x1F,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0B,0x00,0x3A,0x0A,0x0A,0x0A,0x0A,0x3F,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF7,0xFF,0xFD,0xF1,0xF1,0xF1,0xF1,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x47,0xFF,0xFC,0x40,0x40,0x40,0x41,0x80,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x58,0x00,0x06,0x40,0x40,0x40,0x43,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xB8,0x00,0x06,0xA0,0xA0,0xA0,0xA3,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x30,0x7F,0x83,0x1F,0x1F,0x1F,0x1E,0x0F,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0x30,0x8C,0x43,0x04,0x04,0x04,0x06,0x11,0x88,
0x00,0x00,0x00,0x00,0x00,0x01,0xC4,0x61,0x0C,0x21,0x84,0x04,0x04,0x0C,0x21,0x84,
0x00,0x00,0x00,0x00,0x00,0x03,0x8A,0x62,0x0C,0x11,0x8A,0x0A,0x0A,0x1C,0x41,0x82,
0x00,0x00,0x00,0x00,0x00,0x03,0xF1,0x46,0x0C,0x18,0xF1,0xF1,0xF1,0xF8,0xC1,0x83,
0x00,0x00,0x00,0x00,0x00,0x07,0x40,0xFF,0xFF,0xFF,0xE0,0x40,0x40,0x5F,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x0E,0x40,0xFE,0x0C,0x1F,0xC0,0x40,0x40,0x4F,0xC1,0x83,
0x00,0x00,0x00,0x00,0x00,0x1C,0xA0,0xA6,0x0C,0x18,0xA0,0xA0,0xA0,0xA0,0xC1,0x83,
0x00,0x00,0x00,0x00,0x00,0x3F,0x1F,0x1E,0x0C,0x1F,0x1F,0x1F,0x1F,0x1F,0xC1,0x83,
0x00,0x00,0x00,0x00,0x00,0x34,0x04,0x06,0x0C,0x1C,0x04,0x04,0x04,0x04,0xC1,0x83,
0x00,0x00,0x00,0x00,0x00,0x74,0x04,0x06,0x0C,0x1C,0x04,0x04,0x04,0x04,0xC1,0x83,
0x00,0x00,0x00,0x00,0x00,0xEA,0x0A,0x0E,0x0C,0x1A,0x0A,0x0A,0x0A,0x0A,0xC1,0x83,
0x00,0x00,0x00,0x00,0x01,0xF1,0xF1,0xF7,0xFF,0xF9,0xF1,0xF1,0xF1,0xF1,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x01,0xC0,0x40,0x46,0x0C,0x18,0x40,0x40,0x40,0x40,0xC1,0x83,
0x00,0x00,0x00,0x00,0x03,0xC0,0x40,0x46,0x0C,0x18,0x40,0x40,0x40,0x40,0xC1,0x83,
0x00,0x00,0x00,0x00,0x07,0xA0,0xA0,0xA6,0x0C,0x18,0xA0,0xA0,0xA0,0xA0,0xC1,0x83,
0x00,0x00,0x00,0x00,0x0F,0x1F,0x1F,0x1E,0x0C,0x1F,0x1F,0x1F,0x1F,0x1F,0xC1,0x83,
0x00,0x00,0x00,0x00,0x1C,0x04,0x04,0x06,0x0C,0x1C,0x04,0x04,0x04,0x04,0xC1,0x83,
0x00,0x00,0x00,0x00,0x1C,0x04,0x04,0x06,0x0C,0x1C,0x04,0x04,0x04,0x04,0xC1,0x83,
0x00,0x00,0x00,0x00,0x3A,0x0A,0x0A,0x0F,0xFF,0xFA,0x0A,0x0A,0x0A,0x0A,0xFF,0xFF
};
//bmp图2:小的太阳
Uchar tab4[]={
/*-- 调入了一幅图像:C:\Documents and Settings\mirror\桌面\bmp\www.imagebt.bmp --*/
/*-- 宽度x高度=64x64 --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xF7,0xFF,
0xFF,0xCF,0xFF,0x7F,0xF7,0xFF,0xE3,0xFF,0xFF,0xE7,0xFF,0x7F,0xF7,0xFF,0xE7,0xFF,
0xFF,0xF7,0xFF,0x3F,0xF7,0xFF,0xCF,0xFF,0xFF,0xF3,0xFF,0xBF,0xF7,0xFF,0x8F,0xFF,
0xFF,0xF9,0xFF,0xBF,0xF7,0xFF,0x9F,0xFF,0xFF,0xFD,0xFF,0xBF,0xF7,0xFF,0x3F,0xFF,
0xFF,0xFC,0xFF,0x9F,0xF7,0xFE,0x3F,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,
0xFF,0xFF,0x7F,0xFF,0xFF,0xFC,0xFF,0xFF,0xF7,0xFF,0x3F,0xFF,0xFF,0xF9,0xFF,0xFF,
0xE3,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xF8,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0x9F,
0xFC,0x7F,0xFF,0x80,0x00,0xFF,0xFF,0x1F,0xFE,0x3F,0xFE,0x00,0x00,0x3F,0xFE,0x3F,
0xFF,0x1F,0xF8,0x00,0x00,0x0F,0xFC,0xFF,0xFF,0xBF,0xE0,0x00,0x00,0x07,0xFF,0xFF,
0xFF,0xFF,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x7F,0xFF,
0xFF,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xFF,0xF8,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x0F,0xFF,
0xFF,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x07,0xFF,
0xFF,0xF0,0x00,0x00,0x00,0x78,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x00,0xFC,0x07,0xFF,
0xFF,0xE0,0x78,0x00,0x00,0xFC,0x03,0xFF,0xFF,0xE0,0xFC,0x00,0x00,0xFC,0x03,0xFF,
0xFF,0xE0,0xFE,0x00,0x00,0xFC,0x03,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0xFC,0x03,0xFF,
0xFF,0xC0,0xFE,0x00,0x00,0x10,0x03,0xFF,0xFF,0xC0,0xFC,0x00,0x00,0x00,0x03,0xFF,
0xFF,0xC0,0x38,0x00,0x00,0x00,0x03,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x03,0xFF,
0xFF,0xE0,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xE0,0x00,0x00,0x01,0xFF,0x03,0xFF,
0xFF,0xE0,0x00,0x07,0xFF,0xFF,0x07,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x07,0xFF,
0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x0F,0xFF,
0xFF,0xF8,0x7F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,
0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xE0,0x3F,0xFF,
0xFF,0xFE,0x07,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0x80,0x7F,0xFF,
0xFF,0xFF,0x80,0x7F,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xC0,0x07,0xF0,0x01,0xFF,0xFF,
0xFF,0xFF,0xE0,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x0F,0xFF,0xFF,
0xFF,0xFF,0xFC,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
////////////////////////////////////////////////////////////////////
//fuction:显示汉字或字符->第二行反白显示->全屏显示图形->清除图形->
//->显示图形->
void main()
{
//Uchar i;
InitSystem();
DINT;
IER = 0x0000;
IFR = 0x0000;
// Initialize Pie Control Registers To Default State:
InitPieCtrl();
InitPieVectTable();
Gpio_select();
RESET_LCD = 0;
delay(1500);
RESET_LCD = 1;
InitLcd();
delay(3000);
Chn_Disp(tab2);
delay_s(5);
Con_Disprow(1);
delay_s(5);
Clr_ram();
Img_Dispfull(tab5);
delay_s(3);
Img_Disp(10,10,64,64,tab4);
delay_s(5);
Img_clr(0,0,20,20);
for(;;)
{}
}
// 子程序
void Gpio_select(void)
{
EALLOW;
GpioMuxRegs.GPBMUX.all = 0x0;
GpioMuxRegs.GPEMUX.all = 0x0;
GpioMuxRegs.GPBDIR.all = 0xFFFF; // GPIO Ports---- output
GpioMuxRegs.GPEDIR.all = 0xFFFF; // GPIO PORT as input//IOE2--/RST
GpioMuxRegs.GPBQUAL.all = 0x0;
GpioMuxRegs.GPEQUAL.all = 0x0;
EDIS;
}
void InitSystem(void)
{
Uint16 i;
EALLOW;
// 禁止看门狗模块
SysCtrlRegs.WDCR= 0x0068;
//初始化锁相环
SysCtrlRegs.PLLCR = 0xA; //
//等待锁相环稳定
for(i=0;i<5000;i++){}
SysCtrlRegs.HISPCP.all = 0x0001; // Setup Highspeed Clock Prescaler to divide by 2 (75MHz)
SysCtrlRegs.LOSPCP.all = 0x0002; // Setup Lowspeed CLock Prescaler to divide by 4 (37.5MHz)
// Peripheral clock enables set for the selected peripherals.
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;
EDIS;
}
//LCD初始化子程序
void InitLcd(void)
{ RESET_LCD=1;
Wr_lcd (COMM,0x30); /* 30---基本指令动作 */
delay(1500);
Wr_lcd (COMM,0x01); /* 清除显示,DDRAM地址指针指向00H */
delay(1500);
Wr_lcd (COMM,0x06); /* 光标右移 */
delay(1500);
Wr_lcd (COMM,0x0c); /* 开显示,关光标 */
}
/*---------------显示汉字或字符----------------*/
void Chn_Disp(Uchar *chn)
{
Uchar i,j;
Wr_lcd(COMM,0x30);
Wr_lcd(COMM,0x80);
for (i=0;i<4;i++)
{
for (j=0;j<16;j++)
Wr_lcd(DATA,chn[i*16+j]);
}
}
/****************************************************/
/*----------------显示图形-----------------*/
//显示的步骤:
//1. 先将垂直的字节坐标(Y)写入绘图RAM 地址。
//2. 再将水平的字节坐标(X)写入绘图RAM 地址。
//3. 将D15~D8 写入到RAM 中(写入第一个Bytes)。
//4. 将D7~D0 写入到RAM 中(写入第二个Bytes)。
void Img_Dispfull(Uchar *img)
{
Uchar i,j,k=0;
//上半屏
for(i=0;i<32;i++)
{
for(j=0;j<8;j++)
{
Wr_lcd(COMM,0x34); //扩充指令 绘图显示
Wr_lcd(COMM,0x80+i); //设定绘图地址80H~FFH
Wr_lcd(COMM,0x80+j);//80H~87H
Wr_lcd(COMM,0x30); //变更指令集
Wr_lcd(DATA,img[k]);
Wr_lcd(DATA,img[k+1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -