vu16 display_char[6]={0x77,0x5e,0x31,0x6d,0x79,0x07};
vu16 display_Value[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
vu16 TIME;
void delay1ms(u16 time)
{
u16 i;
while(time--)
{
i=8000;
while(i--);
}
}
void delay500ns(u16 time)
{
u16 i;
while(time--)
{
i=4;
while(i--);
}
}
void NOP(void)
{
;
}
void display_writedata(u16 leth,u16 data)
{
u16 i;
GPIO_ResetBits(GPIOC, GPIO_Pin_11);
for(i=0;i<leth;i++)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_12);
GPIO_WriteBit( GPIOD, GPIO_Pin_2, data&0X01);
data=data>>1;
delay500ns(1);
GPIO_SetBits(GPIOC, GPIO_Pin_12);
NOP();
NOP();
delay500ns(1);
}
delay500ns(2);
GPIO_SetBits(GPIOC, GPIO_Pin_11);
delay500ns(3);
}
void DISPLAY(u16 data)
{
u16 i,temp,dd;
vu16 display_data[4];
vu16 cmd3_data[4];
display_data[0]=data%10;
display_data[1]=(data%100)/10;
display_data[2]=(data%1000)/100;
display_data[3]=data/1000;
for(i=0;i<4;i++)
{
temp=display_data[i];
switch(temp)
{
case 0:
dd=display_Value[0];
break;
case 1:
dd=display_Value[1];
break;
case 2:
dd=display_Value[2];
break;
case 3:
dd=display_Value[3];
break;
case 4:
dd=display_Value[4];
break;
case 5:
dd=display_Value[5];
break;
case 6:
dd=display_Value[6];
break;
case 7:
dd=display_Value[7];
break;
case 8:
dd=display_Value[8];
break;
case 9:
dd=display_Value[9];
break;
default:
dd=0x00;
break;
}
cmd3_data[i]=dd<<8;
}
if( display_data[3]==0)
cmd3_data[3]=0x00;
if( display_data[3]==0&&display_data[2]==0)
{
cmd3_data[3]=0x00;
cmd3_data[2]=0x00;
}
if( display_data[3]==0&&display_data[2]==0&&display_data[1]==0)
{
cmd3_data[3]=0x00;
cmd3_data[2]=0x00;
cmd3_data[1]=0x00;
}
display_writedata(8,0X44);//2
display_writedata(16,cmd3_data[0]|0Xc6);//3
display_writedata(16,cmd3_data[1]|0Xc4);//3
display_writedata(16,cmd3_data[2]|0Xc2);//3
display_writedata(16,cmd3_data[3]|0Xc0);//3
display_writedata(8,0X01);//1
display_writedata(8,0X8A);//4
}
void DISPLAY_LED(u16 led2,u16 led3,u16 led4,u16 led5,u16 led6,u16 led7,u16 led8,u16 led9)
{
u16 LED=led2|led3|led4|led5|led6|led7|led8|led9;
display_writedata(8,0X44);//2
display_writedata(16,LED|0Xc8);//3
display_writedata(8,0X01);//1
display_writedata(8,0X8A);//4
}
void DISPLAY_ONELED(u16 led)
{
display_writedata(8,0X44);//2
display_writedata(16,led|0Xc8);//3
display_writedata(8,0X01);//1
display_writedata(8,0X8A);//4
}
void DISPLAY_INIT(void)
{
delay1ms(1000);
display_writedata(8,0X44);//2
display_writedata(16,0X3fc0);//3
display_writedata(16,0X3fc2);//3
display_writedata(16,0X3fc4);//3
display_writedata(16,0X3fc6);//3
display_writedata(8,0X00);//1
display_writedata(8,0X83);//4
display_writedata(8,0X00);//1
display_writedata(8,0X8A); //4
}
void DISPLAY_clear(void)
{
//delay1ms(5);
display_writedata(8,0X44);//2
display_writedata(16,0X00c0);//3
display_writedata(16,0X00c2);//3
display_writedata(16,0X00c4);//3
display_writedata(16,0X00c6);//3
display_writedata(8,0X00);//1
display_writedata(8,0X83);//4
display_writedata(8,0X00);//1
display_writedata(8,0X8A); //4
}
vu32 READ_KEY(void)
{
vu16 i,data;
vu32 KEY=0;
data=0x46;
GPIO_ResetBits(GPIOC, GPIO_Pin_11);
for(i=0;i<8;i++)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_12);
GPIO_WriteBit( GPIOD, GPIO_Pin_2, data&0X01);
data=data>>1;
delay500ns(1);
GPIO_SetBits(GPIOC, GPIO_Pin_12);
NOP();
NOP();
delay500ns(1);
}
delay500ns(4);
for(i=0;i<32;i++)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_12);
delay500ns(1);
KEY=GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9)|KEY;
KEY=KEY<<1;
GPIO_SetBits(GPIOC, GPIO_Pin_12);
delay500ns(1);
}
display_writedata(8,0X00);//1
display_writedata(8,0X8A); //4
return KEY;
}
void DISPLAY_char(u8* n,u8 len)
{
u16 i;
vu16 display_data[4];
vu16 cmd3_data[4];
for(i=0;i<len;i++)
{
display_data[i]=n[i];
cmd3_data[i]=display_data[i];
cmd3_data[i]=cmd3_data[i]<<8;
}
if( display_data[3]==0)
cmd3_data[3]=0x00;
if( display_data[3]==0&&display_data[2]==0)
{
cmd3_data[3]=0x00;
cmd3_data[2]=0x00;
}
if(display_data[3]==0&&display_data[2]==0&&display_data[1]==0)
{
cmd3_data[3]=0x00;
cmd3_data[2]=0x00;
cmd3_data[1]=0x00;
}
display_writedata(8,0X44);//2
display_writedata(16,cmd3_data[0]|0Xc6);//3
display_writedata(16,cmd3_data[1]|0Xc4);//3
display_writedata(16,cmd3_data[2]|0Xc2);//3
display_writedata(16,cmd3_data[3]|0Xc0);//3
display_writedata(8,0X01);//1
display_writedata(8,0X8A);//4
}
void DISPLAY_value(u16 data,u16 p)
{
u16 i,temp,dd;
vu16 display_data[4];
vu16 cmd3_data[4];
display_data[0]=data%10;
display_data[1]=(data%100)/10;
display_data[2]=(data%1000)/100;
display_data[3]=data/1000;
for(i=0;i<4;i++)
{
temp=display_data[i];
switch(temp)
{
case 0:
dd=display_Value[0];
break;
case 1:
dd=display_Value[1];
break;
case 2:
dd=display_Value[2];
break;
case 3:
dd=display_Value[3];
break;
case 4:
dd=display_Value[4];
break;
case 5:
dd=display_Value[5];
break;
case 6:
dd=display_Value[6];
break;
case 7:
dd=display_Value[7];
break;
case 8:
dd=display_Value[8];
break;
case 9:
dd=display_Value[9];
break;
default:
dd=0x00;
break;
}
cmd3_data[i]=dd<<8;
}
if( p==4&&TIME<20)
cmd3_data[3]=0x00;
if( p==3&&TIME<20)
cmd3_data[2]=0x00;
if( p==2&&TIME<20)
cmd3_data[1]=0x00;
if( p==1&&TIME<20)
cmd3_data[0]=0x00;
display_writedata(8,0X44);//2
display_writedata(16,cmd3_data[0]|0Xc6);//3
display_writedata(16,cmd3_data[1]|0Xc4);//3
display_writedata(16,cmd3_data[2]|0Xc2);//3
display_writedata(16,cmd3_data[3]|0Xc0);//3
display_writedata(8,0X01);//1
display_writedata(8,0X8A);//4
}