📄 lcm141.c
字号:
#include <msp430x16x.h>
#include <math.h>
//显示初始化
#define lcm_cs BIT3
#define lcm_wr BIT2
#define lcm_data BIT1
//显示变量
unsigned char disbuffer[8];
unsigned char disbuffer1[6];
const unsigned char sunsiliangdis_model[]=
{
0xeb,0x60,0xc7,0xe5,0x6c,0xad,0xaf,0xe0,0xef,0xed, //0,1,2,3,4,5,6,7,8,9
0xfb,0x70,0xd7,0xf5,0x7c,0xbd,0xbf,0xf0,0xFF,0xfd, //0.,1.,2.,3.,4.,5.,6.,7.,8.,9.
0x00,0x0f,0xee,0x0a,0x04,0xce,0x27,0x8F,0xad,0x67,0x2f,0x8e,0x0b,0x6e,0x07 //灭,t,A,I,-,P, o ,E,s,d,b,f,l,h,c
//显示位1~6
};
const unsigned char leijiliangdis_model[]=
{
0xd7,0x06,0xe3,0xa7,0x36,0xb5,0xf5,0x07,0xf7,0xb7, //0,1,2,3,4,5,6,7,8,9
0xdf,0x0e,0xeb,0xaf,0x3e,0xbd,0xfd,0x0f,0xFF,0xbf, //0.,1.,2.,3.,4.,5.,6.,7.,8.,9.
0x00,0xb5,0xe6,0x77,0xf4,0xd1,0xf0,0xe4,0x70,0xf3, //灭码,s,d,A,b,c ,t,o,r,e显示位7~14
0x00,0x20 //灭码,-
};
unsigned int flag=0x00fc; // ....K13~K10 K5~K8 K4~K1 K16 K17 K18 K15
//延时程序
void yantime(unsigned char a)
{
unsigned int i;
unsigned int j;
for (j=1;j<=a;j++)
{
for (i=1;i<=200;i++);
}
}
void times(void)
{
unsigned char i;
for(i=10;i>0;i--);
}
///////////////给lcm送命令
void wrcom(unsigned char cod)// 1 0 0 C7 C6 C5 C4 C3 C2 C1 C0 0 ..............共12位
{
unsigned char i;
P1OUT |= lcm_cs;
times();
P1OUT &= ~lcm_cs;
times();
///////////////////////送100
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
///////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-----------------0
P1OUT |= lcm_wr;
times();
////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-----------------0
P1OUT |= lcm_wr;
times();
/*
P1OUT &= ~lcm_wr;
P1OUT &= ~lcm_data;
P1OUT &= ~lcm_cs;
P1OUT |= lcm_wr;
P1OUT |= lcm_data;
P1OUT |= lcm_cs;
*/
////送命令代码
for (i=1;i<=8;i++)// ----------------C7.......C0
{
P1OUT &= ~lcm_wr;
times();
if ((cod&0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
P1OUT &= ~lcm_data;
}
times();
P1OUT |= lcm_wr;
times();
cod<<=1;
}
//////////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-------------------0
P1OUT |= lcm_wr;
times();
}
//显示初始化////////////
void display_init(void)
{
unsigned char a;
unsigned char cod;
a=250;
yantime(a); //延时200ms
cod=0x29;
wrcom(cod); //初始化
cod=0x18;
wrcom(cod); //内部RC振荡方式// 0x18 //32768Hz 0x14
cod=0x01;
wrcom(cod); //开振荡器
cod=0x03;
wrcom(cod); //开显示
}
///累积量显示程序
void leijiliangwrdata(void)
{
unsigned char leijiliangdisdata;
unsigned char lcmdress;
unsigned char i;
unsigned char j;
lcmdress=0x1c; //第13位
leijiliangdisdata=leijiliangdis_model[disbuffer[1]];
P1OUT |= lcm_cs;
times();
P1OUT &= ~lcm_cs;
times();
//=====================================101 0 A5 A4 A3 A2 A1 A0 D3 D2 D1 D0 13 bit
///////////////////////送101
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
///////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-----------------0
P1OUT |= lcm_wr;
times();
////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
////送显示地址代码
lcmdress<<=2; //构成 0 A4-A0
for (i=1;i<=6;i++)
{
P1OUT &= ~lcm_wr;
times();
if ((lcmdress&0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
P1OUT &= ~lcm_data;
}
times();
P1OUT |= lcm_wr;
times();
lcmdress<<=1;
}
/////////送数据
for (j=1;j<=2;j++)
{
for (i=1;i<=8;i++)
{
P1OUT &= ~lcm_wr;
times();
if ((leijiliangdisdata & 0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
P1OUT &= ~lcm_data;
}
times();
P1OUT |= lcm_wr;
times();
leijiliangdisdata<<=1;
}
leijiliangdisdata=leijiliangdis_model[disbuffer[0]]; //第14位 000000000000
}
////////////////////////////////////
leijiliangdisdata=leijiliangdis_model[disbuffer[2]]; //第12位 00000000000000
P1OUT |= lcm_cs;
times();
P1OUT &= ~lcm_cs;
times();
///////////////////////送101
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
///////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-----------------0
P1OUT |= lcm_wr;
times();
////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
////送显示地址代码6个0
for (i=1;i<=6;i++)
{
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();
P1OUT |= lcm_wr;
times();
}
/////////送数据
for (j=1;j<=6;j++)
{
for (i=1;i<=8;i++)
{
P1OUT &= ~lcm_wr;
times();
if ((leijiliangdisdata & 0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
P1OUT &= ~lcm_data;
}
times();
P1OUT |= lcm_wr;
times();
leijiliangdisdata<<=1;
}
leijiliangdisdata=leijiliangdis_model[disbuffer[2+j]]; //送下一位直到第7位
}
}
////瞬时量显示程序
void sunsiliangwrdata(void)
{
unsigned char sunsiliangdisdata;
unsigned char lcmdress;
unsigned char i;
unsigned char j;
lcmdress=0x0f;
sunsiliangdisdata=sunsiliangdis_model[disbuffer1[5]]; //第6位
P1OUT |= lcm_cs;
times();
P1OUT &= ~lcm_cs;
times();
///////////////////////送101
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
///////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-----------------0
P1OUT |= lcm_wr;
times();
////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
////送显示地址代码
lcmdress<<=2; //构成 0 A4-A0
for(i=1;i<=6;i++)
{
P1OUT &= ~lcm_wr;
times();
if ((lcmdress&0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
P1OUT &= ~lcm_data;
}
times();
P1OUT |= lcm_wr;
times();
lcmdress<<=1;
}
/////////送数据
for (j=1;j<=6;j++) //
{
for (i=1;i<=8;i++)
{
P1OUT &= ~lcm_wr;
times();
if ((sunsiliangdisdata&0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
P1OUT &= ~lcm_data;
}
times();
P1OUT |= lcm_wr;
times();
sunsiliangdisdata<<=1;
}
sunsiliangdisdata=sunsiliangdis_model[disbuffer1[5-j]]; //显示下1位直到第1位
}
}
void measureflagwrdata(void) // ....K13~K10 K5~K8 K4~K1 K16 K17 K18 K15
{ //....
unsigned char lcmdress;
unsigned char i;
unsigned char j;
lcmdress=0x0C;
P1OUT |= lcm_cs;
times();
P1OUT &= ~lcm_cs;
times();
///////////////////////送101
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
///////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT &= ~lcm_data;
times();//-----------------0
P1OUT |= lcm_wr;
times();
////////////////
P1OUT &= ~lcm_wr;
times();
P1OUT |= lcm_data;
times();//---------------1
P1OUT |= lcm_wr;
times();
////送显示地址代码
lcmdress<<=2; //构成 0 A4-A0
for (i=1;i<=6;i++)
{
P1OUT &= ~lcm_wr;
times();
if ((lcmdress&0x80)==0x80)
{
P1OUT |= lcm_data;
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -