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

📄 lcd.c

📁 仪器源码->基MSP430 OPEN/SHORT C代码,已成功用于工业自动控制 本仪器适应于各种邦定IC电路测试
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <msp430x13x.h>
#define BF    0x80 //用于检测LCM状态字中的Busy标识
typedef unsigned int Uint;
typedef unsigned char Uchar;
extern unsigned char open[] ;
extern unsigned char Short[] ;
extern unsigned char Short_grup1[] ;
extern unsigned char Short_grup2[] ;
extern unsigned char Short_grup3[] ;
extern unsigned char Short_grup4[] ;
extern unsigned char Short_grup5[] ;
extern unsigned char Short_grup6[] ;
extern unsigned char Short_grup7[] ;
extern unsigned char Short_grup8[] ;
extern unsigned char Short_grup9[] ;
extern unsigned char Short_grup10[] ;
extern unsigned char check_result;
extern unsigned char pin_power_wrong[];
void open_page1(void);
void Show_short(Uchar *pin,Uchar n);
/******************************************/
//RS    p57
//RW    p56
//E     p55
//REST  p54
//PSB   H
//DATA  P1
/******************************************/


/********************欢迎画面***************************/
const Uchar welcome[] =  {"  Welcome Enter "};
const Uchar welcome1[] = {" Open/Shor test "};
const Uchar welcome2[] = {"     SYSTEM     "};
const Uchar welcome3[] = {"IDT NATIONAL Ltd"};
/*******************************************************/


/********************欢迎画面***************************/
const Uchar fast[] =  {"                "};
const Uchar fast1[] = {" fast test mode "};
const Uchar fast2[] = {"                "};
const Uchar fast3[] = {"IDT NATIONAL Ltd"};
/*******************************************************/

/********************欢迎画面***************************/
const Uchar slow[] =  {"                "};
const Uchar slow1[] = {" slow test mode "};
const Uchar slow2[] = {"                "};
const Uchar slow3[] = {"IDT NATIONAL Ltd"};
/*******************************************************/

/********************学习***************************/
const Uchar studya[] =  {"                "};
const Uchar studya1[] = {"  studying      "};
const Uchar studya2[] = {"Please wait...  "};
const Uchar studya3[] = {"                "};
/*******************************************************/

/********************Finish***************************/
const Uchar study_ok[] =  {"                "};
const Uchar study_ok1[] = {" Congratulation "};
const Uchar study_ok2[] = {"  study finish  "};
const Uchar study_ok3[] = {"                "};
/*******************************************************/


/********************tatol_pin***************************/
const Uchar tatol_pin[] =  {"     tatol pin  "};
const Uchar tatol_pin1[] = {"                "};
const Uchar tatol_pin2[] = {"                "};
const Uchar tatol_pin3[] = {"Modify    Return"};
/*******************************************************/

/********************auto***************************/
const Uchar Auto[] =  {"                "};
const Uchar Auto1[] = {"    Auto        "};
const Uchar Auto2[] = {"                "};
const Uchar Auto3[] = {"Modify    Return"};
/*******************************************************/

/********************maunal***************************/
const Uchar maunal[] =  {"                "};
const Uchar maunal1[] = {"    Maunal      "};
const Uchar maunal2[] = {"                "};
const Uchar maunal3[] = {"Modify    Return"};
/*******************************************************/



/********************Testing***************************/
const Uchar Testing[] = {"   Testing....  "};
const Uchar Testing1[] = {"                "};
const Uchar Testing2[] = {" Please wait    "};
const Uchar Testing3[] = {"            Stop"};
/*******************************************************/

/********************ready***************************/
const Uchar ready[] =  {"OPEN/SHORT TEST "};
const Uchar ready1[] = {"    Ready....   "};
const Uchar ready2[] = {"                "};
const Uchar ready3[] = {"MENU       STRAT"};
/*******************************************************/

/********************open/short select***************************/
const Uchar open_short_select_menu[] =  {"1.See open  pin "};
const Uchar open_short_select_menu1[] = {"2.See short pin "};
const Uchar open_short_select_menu2[] = {"3.Power wrong   "};
const Uchar open_short_select_menu3[] = {"Ok        Return"};
/***************************************************************/


/********************menua select***************************/
const Uchar menua[] =  {"1.see open  pin "};
const Uchar menua1[] = {"2.see short pin "};
const Uchar menua2[] = {"3.Pin total set "};
const Uchar menua3[] = {"Ok        Return"};
/***************************************************************/

/********************warp***************************/
const Uchar warpa[] =  {"  power warp    "};
const Uchar warpa1[] = {"                "};
const Uchar warpa2[] = {"                "};
const Uchar warpa3[] = {"Modify    Return"};
/***************************************************************/



/********************menub select***************************/
const Uchar menub[] =  {"4.Windage Setup "};
const Uchar menub1[] = {"5.Auto/Maunal   "};
const Uchar menub2[] = {"6.para study    "};
const Uchar menub3[] = {"Ok        Return"};
/***************************************************************/

/********************menub select***************************/
const Uchar Modify[] =  {"iDT remind you  "};
const Uchar Modify1[] = {"       parameter"};
const Uchar Modify2[] = {" Modify succes  "};
const Uchar Modify3[] = {"  Thank you     "};
/***************************************************************/

/********************rest_factory***************************/
const Uchar rest_factory[] =  {"iDT remind you  "};
const Uchar rest_factory1[] = {"                "};
const Uchar rest_factory2[] = {"  rest factory  "};
const Uchar rest_factory3[] = {"  Thank you     "};
/***************************************************************/

/********************rest_factory***************************/
const Uchar Succeed[] =  {"                "};
const Uchar Succeed1[] = {"     PASS       "};
const Uchar Succeed2[] = {"                "};
const Uchar Succeed3[] = {"MENU       STRAT"};
/***************************************************************/


/********************menub select***************************/
const Uchar Maunal_Control[] =  {" Maunal Control "};
const Uchar Maunal_Control1[] = {"                "};
const Uchar Maunal_Control2[] = {"                "};
const Uchar Maunal_Control3[] = {"Go      Next pin"};
/***************************************************************/



Uchar pin[36];
Uchar short_pin[36];


const Uchar number[]={"0123456789 "};

const Uchar lengthCF3=8;
//**************************************************************************//
const Uchar  TAB1[]={
/*--  调入了一幅图像:C:\Documents and Settings\a\My Documents\11\未命名62.bmp  --*/
/*--  宽度x高度=256x32  --*横向取模,不倒序*/
0xFF};




//const unsigned  char uctech1[5];

void RS_L(void)//p57
{
   P5OUT&=~0x80;        
}

void RS_H(void)//p57
{
   P5OUT|=0x80;        
}

void WR_L(void)//p56
{
   P5OUT&=~0x40;        
}

void WR_H(void)//p56
{
   P5OUT|=0x40;        
}

void E_L(void)//p55
{
   P5OUT&=~0x20;        
}

void E_H(void)//p55
{
   P5OUT|=0x20;        
}

void REST_L(void)//p23
{
   P2OUT&=~0x08;        
}

void REST_H(void)//p23
{
   P2OUT|=0x08;        
}


void data_input_config()
{
  P1DIR = 0x00;
}
unsigned char data_r()
{  
  return P1IN;
}

void data_w(unsigned char data)
{
  P1DIR = 0xff;
  P1OUT=data;
}

//**************************************************************************//
//读忙标志,
void RDBF(void)
{
	Uchar temp; 
	RS_L();//RS=0;	// RS=0
	WR_H();//RW=1;	// RW=1
	while(1)
	{
        //P1=0xFF;      //数据线为输入	   
    	//E=1;
	//temp=P1;
	//E=0;	// E=0
	//if ((temp&0x80)==0) break;
	 data_input_config();//数据线为输入
	 E_H(); //E=1
	 temp=data_r();//读进来
	 E_L(); //E=0
	 if ((temp&0x80)==0) break;
       }	
}

//写数据到指令寄存器
void WRCommand(Uchar comm)
{
	//RDBF();
	//RW=0;
	//P1=comm;
	//E=1;
	//E=0;
	RDBF();
	WR_L();
	data_w(comm);
	E_H();
	E_L();
	
}
//写数据到数据寄存器
void WRData(Uchar TEMP)
{
	//RDBF();
	//RS=1;
	//RW=0;
	//P1=TEMP;
	//E=1; 
	//E=0;
	//stopint();
	RDBF();
	RS_H();
	WR_L();
	data_w(TEMP);
        E_H();
        E_L();        
}


//初始化LCD-8位接口
void LCDInit(void)
{ 
        //REST=1;
        //REST=0;
        //REST=1;
        REST_H();
        REST_L();
        REST_H();                
  	WRCommand(0x30);	//基本指令集,8位并行
	WRCommand(0x06);	//启始点设定:光标右移
	WRCommand(0x01);	//清除显示DDRAM
	WRCommand(0x0C);	//显示状态开关:整体显示开,光标显示关,光标显示反白关
	WRCommand(0x02);	//地址归零	
}

//显示数组字符串(显示半宽字型16*8点阵)
void ShowQQChar(Uchar addr,const Uchar *english,Uchar count)
{	
	Uchar i;
	WRCommand(addr);	//设定DDRAM地址
	for(i=0;i<count;)
	{	
	  WRData(english[i*2]);
          WRData(english[i*2+1]);
	  i++;
        }
}


//显示开路引脚(显示半宽字型16*8点阵)
void Show_Open(Uchar *pin)
{	
        //第一行
	WRCommand(0X80);	//设定DDRAM地址	
	if(pin[0]==32 && pin[1]==32 && pin[2]==32)	
	  WRData(' ');
	else
	  WRData('P');
	
	WRData(pin[0]);
	WRData(pin[1]);
	WRData(pin[2]);
	WRData(' ');
	WRData(' ');

	if(pin[3]==32 && pin[4]==32 && pin[5]==32)	
	  WRData(' ');
	else
	  WRData('P');
	WRData(pin[3]);
	WRData(pin[4]);
	WRData(pin[5]);
	WRData(' ');
	WRData(' ');	
	
	if(pin[6]==32 && pin[7]==32 && pin[8]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[6]);
	WRData(pin[7]);
	WRData(pin[8]);

        //第二行
	WRCommand(0X90);	//设定DDRAM地址	
	if(pin[9]==32 && pin[10]==32 && pin[11]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[9]);
	WRData(pin[10]);
	WRData(pin[11]);
	WRData(' ');
	WRData(' ');
			
	if(pin[12]==32 && pin[13]==32 && pin[14]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[12]);
	WRData(pin[13]);
	WRData(pin[14]);
	WRData(' ');
	WRData(' ');	
	if(pin[15]==32 && pin[16]==32 && pin[17]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[15]);
	WRData(pin[16]);
	WRData(pin[17]);

        //第三行
	WRCommand(0X88);	//设定DDRAM地址	
	if(pin[18]==32 && pin[19]==32 && pin[20]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[18]);
	WRData(pin[19]);
	WRData(pin[20]);
	WRData(' ');
	WRData(' ');		
	if(pin[21]==32 && pin[22]==32 && pin[23]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[21]);
	WRData(pin[22]);
	WRData(pin[23]);
	WRData(' ');
	WRData(' ');	
	if(pin[24]==32 && pin[25]==32 && pin[26]==32)	
	  WRData(' ');
	else
	  WRData('P');

	WRData(pin[24]);
	WRData(pin[25]);
	WRData(pin[26]);

        //第四行
	WRCommand(0X98);	//设定DDRAM地址	
	WRData('O');//1
	WRData('p');//2
	WRData('e');//3
	WRData('n');//4
	WRData('_');//5
	WRData('p');//6		
	WRData('i');//7
	WRData('n');//8
	WRData(0x18);//9
	WRData(0x19);//10
	WRData(' ');//11	
	WRData('R');//12
	WRData('e');//13
	WRData('t');//14
	WRData('u');//15
	WRData('n');//16	
}

//显示开路引脚(显示半宽字型16*8点阵)
void Show_Short(Uchar *pin)
{	
        //第一行
	WRCommand(0X80);	//设定DDRAM地址	
	WRData('P');
	WRData(pin[0]);
	WRData(pin[1]);
	WRData(pin[2]);
	WRData(' ');
	WRData(' ');		
	WRData('P');
	WRData(pin[3]);
	WRData(pin[4]);
	WRData(pin[5]);
	WRData(' ');
	WRData(' ');	
	WRData('P');
	WRData(pin[6]);
	WRData(pin[7]);
	WRData(pin[8]);

        //第二行
	WRCommand(0X90);	//设定DDRAM地址	
	WRData('P');
	WRData(pin[9]);
	WRData(pin[10]);
	WRData(pin[21]);
	WRData(' ');
	WRData(' ');		
	WRData('P');
	WRData(pin[12]);
	WRData(pin[13]);
	WRData(pin[14]);
	WRData(' ');
	WRData(' ');	
	WRData('P');
	WRData(pin[15]);
	WRData(pin[16]);
	WRData(pin[17]);

        //第三行
	WRCommand(0X88);	//设定DDRAM地址	
	WRData('P');
	WRData(pin[18]);
	WRData(pin[19]);
	WRData(pin[20]);
	WRData(' ');
	WRData(' ');		
	WRData('P');
	WRData(pin[21]);
	WRData(pin[22]);
	WRData(pin[23]);
	WRData(' ');
	WRData(' ');	
	WRData('P');
	WRData(pin[24]);
	WRData(pin[25]);
	WRData(pin[26]);

        //第四行
	WRCommand(0X98);	//设定DDRAM地址	
	WRData('S');//1
	WRData('h');//2
	WRData('o');//3
	WRData('r');//4
	WRData('t');//5
	WRData(' ');//6		
	WRData('0');//7
	WRData('1');//8
	WRData(0x18);//9
	WRData(0x19);//10
	WRData(' ');//11	
	WRData('R');//12
	WRData('e');//13
	WRData('t');//14
	WRData('u');//15
	WRData('n');//16	
}


//显示连续字串(半宽字符)
void ShowNUMChar(Uchar addr,Uchar i,Uchar count)
{
     Uchar j;
	for(j=0;j<count;)
	{	
	    WRCommand(addr);	//设定DDRAM地址
		WRData(i+j);
		j++;
		WRData(i+j);
		addr++;
		j++;
	}		
}
//自定义字符写入CGRAM
void WRCGRAM(Uchar data1,Uchar data2,Uchar addr)
{     
      Uchar i;
      for(i=0;i<16;)
  {
      WRCommand(addr+i);  	//设定CGRAM地址
      WRData(data1);
	  WRData(data1);
      i++;
	  WRCommand(addr+i);  	//设定CGRAM地址
	  WRData(data2);
	  WRData(data2);
      i++;
  }  
}
//显示自定义的字符,并把这个字符填满全屏16*16
void ShowCGChar(Uchar addr,Uchar i)
{
     Uchar j;
	for(j=0;j<0x20;)
	{	
	    WRCommand(addr+j);	//设定DDRAM地址
		WRData(0x00);
	    WRData(i);
		j++;
	}		
}
void CLEARGDRAM(void)
{    
       Uchar j;
       Uchar i;
	   WRCommand(0x34);
	   WRCommand(0x36);
       for(j=0;j<32;j++)
  {
       WRCommand(0x80+j);
	   WRCommand(0x80);//X坐标
       for(i=0;i<32;i++)//
      {
       WRData(0x00);
      }
   }
  
}


//写入GDRAM 绘图,Y是Y绘图坐标,2个字节一行,CLONG是图形长度,以字节
//为单位;HIGHT是图形高度,TAB是图形数据表.12864M的图形显示范围是256*32点阵.
//要在12864M里显示全屏,取模时一幅图横切成两半
//绘图在串口输入时,会比在并口下的输入要慢一些
void WRGDRAM(Uchar Y,Uchar clong,Uchar hight,const Uchar *TAB1)
{    
       Uint k=0;
       Uchar j;
       Uchar i;
	   WRCommand(0x34);
	   WRCommand(0x36);
	   for(j=0;j<hight;)
  {
       WRCommand(Y+j);  //Y总坐标
	   WRCommand(0x80);//X坐标
       for(i=0;i<clong;i++)//
      {
       WRData(TAB1[k]);
       k++;
      }
       j++;
  }
}


void menu1(void)
{
	WRCommand(0x01);	//清除显示DDRAM
        CLEARGDRAM();
        WRGDRAM(0x80,32,32,TAB1);
}	
	
void welcome_page(void)	
{  
    LCDInit();
    WRCommand(0x01);	//清除显示DDRAM
    ShowQQChar(0x80,welcome,lengthCF3);//显示'瑞特电子有限公司',以下共四行
    ShowQQChar(0x90,welcome1,lengthCF3);
    ShowQQChar(0x88,welcome2,lengthCF3);
    ShowQQChar(0x98,welcome3,lengthCF3);    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -