在這漫長的時間里,給大家看看顯示程序:
#define rs _LATA8
#define wr _LATA4
#define rd _LATA7
#define cs1 _LATA10
const uchar tab1[]="升壓輸出: (V) ";
const uchar tab3[]="逆變輸出: (V) ";
const uchar tab4[]="輸出頻率: (HZ)";
const uchar tab5[]="供電狀況: ";
const uchar tab6[]="XFZ-30K";
const uchar tab7[]="亮德利科技";
const uchar tab8[]="無輸出";
const uchar tab9[]="有輸出";
void delay_nms(unsigned int n)
{
unsigned int i,j;
for(i=n;i>0;i--)
{
for(j=125;j>0;j--)
{
}
}
}
void write(uchar a)
{
_LATC0=a&0X01;
_LATC1=(a&0X02)>>1;
_LATC2=(a&0X04)>>2;
_LATC3=(a&0X08)>>3;
_LATC4=(a&0X10)>>4;
_LATC5=(a&0X20)>>5;
_LATC8=(a&0X40)>>6;
_LATC9=(a&0X80)>>7; }
void init()
{
_ODCC0=1;
_ODCC1=1;
_ODCC2=1;
_ODCC3=1;
_ODCC4=1;
_ODCC5=1;
_ODCC8=1;
_ODCC9=1;
_ODCA8=1;
_ODCA4=1;
_ODCA7=1;
_ODCA10=1;
_TRISA4=0;
_TRISA7=0;
_TRISA8=0;
_TRISA10=0;
_TRISC0=0;
_TRISC1=0;
_TRISC2=0;
_TRISC3=0;
_TRISC4=0;
_TRISC5=0;
_TRISC8=0;
_TRISC9=0;
}
void LCD_CmdWrite(uchar cmd)//8080 //LCD寫指令
{
rd=1;//讀禁止
cs1=0;//片選使能
rs=1;//命令使能
wr=0;//寫使能
write(cmd);
wr=1;//寫禁止
cs1=1;//禁止片選
rs=0;
}
void LCD_DataWrite(uchar wrdata)//8080 //LCD寫數(shù)據(jù)
{
rd=1;//讀禁止
cs1=0;//片選使能
rs=0;//數(shù)據(jù)使能
wr=0;//寫使能
write(wrdata);
wr=1;//寫禁止
cs1=1;//禁止片選
rs=1;
}
/*uchar LCD_StatusRead() //LCD讀狀態(tài)
{
uchar Data;
cs1 = 0;//片選使能
rs = 1;//命令使能
wr = 1;
rd = 0;
Data = read();
rd = 1;
cs1 = 1;
rs = 0;
return Data;
}
uchar LCD_DataRead() //LCD讀數(shù)據(jù)
{
uchar Data;
cs1 = 0;//片選使能
rs = 0;//數(shù)據(jù)使能
wr = 1;
rd = 0;
Data = read();
rd = 1;
cs1 = 1;
rs = 1;
return Data;
}*/
/////////////////清屏子程序//////////////////////////
void clear(void)
{
LCD_CmdWrite(0x00);
LCD_DataWrite(0x04); //選擇繪圖模式
LCD_CmdWrite(0xe0);
LCD_DataWrite(0x00);
LCD_CmdWrite(0xf0);
LCD_DataWrite(0xa8);
delay_nms(6);
}
void mulcipie(void)
{ uint i;
LCD_CmdWrite(0x60);
LCD_DataWrite(0x16);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0xa0);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xb0);
for(i=0;i<6;i++)
{
LCD_DataWrite(tab8[i]);
delay_nms(200);
}
}
void self(void)
{ uint i;
LCD_CmdWrite(0x60);
LCD_DataWrite(0x16);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0xa0);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xb0);
for(i=0;i<6;i++)
{
LCD_DataWrite(tab9[i]);
delay_nms(200);
}
}
void lcd_init(void)
{ uint i;
init();
clear();
LCD_CmdWrite(0x00);
LCD_DataWrite(0x0c);
LCD_CmdWrite(ADSR);
LCD_DataWrite(0x03);
LCD_CmdWrite(0x60);
LCD_DataWrite(0x08);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0x08);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0xA0);
LCD_CmdWrite(0xb0);
for(i=0;i<7;i++)
{
LCD_DataWrite(tab6[i]);
delay_nms(200);
}
LCD_CmdWrite(0x60);
LCD_DataWrite(0x00);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0x40);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xb0);
for(i=0;i<20;i++)
{
LCD_DataWrite(tab1[i]);
delay_nms(200);
}
LCD_CmdWrite(0x60);
LCD_DataWrite(0x00);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0x60);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xb0);
for(i=0;i<20;i++)
{
LCD_DataWrite(tab3[i]);
delay_nms(200);
}
LCD_CmdWrite(0x60);
LCD_DataWrite(0x00);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0x80);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xb0);
for(i=0;i<20;i++)
{
LCD_DataWrite(tab4[i]);
delay_nms(200);
}
LCD_CmdWrite(0x60);
LCD_DataWrite(0x00);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0xa0);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xb0);
for(i=0;i<20;i++)
{
LCD_DataWrite(tab5[i]);
delay_nms(200);
}
LCD_CmdWrite(0x60);
LCD_DataWrite(0x16);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(0xd0);
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x00);
LCD_CmdWrite(0xb0);
for(i=0;i<18;i++)
{
LCD_DataWrite(tab7[i]);
delay_nms(200);
}
}
void display_data(unsigned char adr, unsigned int data_p)
{
unsigned char v1,v2,v3,v4;
v3=data_p%100%10;
v2=data_p%100/10;
v1=data_p/100;
//v1=data_p/1000%10;
LCD_CmdWrite(0x60);
LCD_DataWrite(0x16);//設(shè)置X坐標(biāo)
LCD_CmdWrite(0x70); //設(shè)置Y坐標(biāo)
LCD_DataWrite(adr+0x40);//0x60
LCD_CmdWrite(0xf1);
LCD_DataWrite(0x50);
LCD_CmdWrite(0xf0);
LCD_DataWrite(0x82);
LCD_CmdWrite(0xb0);
if(v1) {
LCD_DataWrite(0x30+v1);
delay_nms(4);
}
else {
LCD_DataWrite(0x00);
delay_nms(4);
}
LCD_DataWrite(0x30+v2);
delay_nms(4);
LCD_DataWrite(0x30+v3);
delay_nms(4);
//LCD_DataWrite(0x2e);
delay_nms(2);
//LCD_DataWrite(0x30+v4);
delay_nms(2);
}