⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocm4x8c.c

📁 液晶显示程序 可显示图形汉字字符(大图小图均能) 基于2812
💻 C
📖 第 1 页 / 共 2 页
字号:

//******************************************************//
//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 + -