📄 lcd.c
字号:
#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 + -