📄 display_control.h
字号:
char Display_BCD[6];
uchar Number_Display[14]={0x7d,0x60,0x3e,0x7a,0x63,0x5b,0x5f,0x70,0x7f,0x7b,0x00,0x02,0x62};
void Display_Control(char wlcddata,char wlcdaddr)
{
char wlcdtemp=0,i=0;
LCD_CS=0;
wlcdtemp=0xa0;
for(i=0;i<3;i++)
{
LCD_WR=0;
if((wlcdtemp<<i)&0x80)
LCD_Data=1;
else
LCD_Data=0;
LCD_WR=1;
}
wlcdtemp=wlcdaddr*4;
for(i=0;i<6;i++)
{
LCD_WR=0;
if((wlcdtemp<<i)&0x80)
LCD_Data=1;
else
LCD_Data=0;
LCD_WR=1;
}
wlcdtemp=wlcddata*16;
for(i=0;i<4;i++)
{
LCD_WR=0;
if((wlcdtemp<<i)&0x80)
LCD_Data=1;
else
LCD_Data=0;
LCD_WR=1;
}
LCD_WR=1;
LCD_CS=1;
}
void LCD_Cmd(char cmddata)
{
char cmdtemp,i;
cmdtemp=0x80;
LCD_CS=0;
for(i=0;i<3;i++)
{
LCD_WR=0;
if((cmdtemp<<i)&0x80)
LCD_Data=1;
else
LCD_Data=0;
LCD_WR=1;
}
cmdtemp=cmddata;
for(i=0;i<8;i++)
{
LCD_WR=0;
if((cmdtemp<<i)&0x80)
LCD_Data=1;
else
LCD_Data=0;
LCD_WR=1;
}
LCD_WR=0;
LCD_Data=0;
LCD_WR=1;
LCD_WR=1;
LCD_CS=1;
}
void LCD_Init() //LCD初始化
{
uchar i=0;
LCD_CS=0;
LCD_WR=0;
LCD_Data=0;
LCD_CS=1;
LCD_WR=1;
LCD_Data=1;
LCD_Cmd(0x1);
LCD_Cmd(0x3);
LCD_Cmd(0x28);
}
void Clear_Screen(void) //清全屏
{
uchar i=0;
for(i=0;i<=12;i++)
{
Display_Control(0,i);
}
}
void Whole_Screen_Display(void) //全屏显示
{
uchar i=0;
for(i=0;i<=12;i++)
{
Display_Control(0x0f,i);
}
}
void Display_Byte_Control(uchar dis_data,char addr)
{
Display_Control(dis_data&0x0f,addr);
Display_Control((dis_data&0xf0)>>4,addr+1);
}
void Float_To_BCD(float value_Float,char fraction_bit)//浮点数转化为BCD码
{
char i,j,minus=0;
float power=1;
float round_factor=0.5;
long int FTB_value=0;
for(i=0;i<fraction_bit;i++)
{
power*=10;
round_factor*=0.1;
}
if(value_Float<0) round_factor=-round_factor;
FTB_value=(long int)((value_Float+round_factor)*power);////round,取整//四舍五入
if(FTB_value<0)
{
FTB_value=-FTB_value;
minus=1;
}
Display_BCD[5]=(char)(FTB_value%10); ///.singl_bit
for(i=4;i>=0;i--)
{
FTB_value/=10;
Display_BCD[i]=(char)(FTB_value%10);
}
j=6-fraction_bit;
for(i=0;i<j;i++)
{
if(i>=1)
{
if(!Display_BCD[i])Display_BCD[i]=10; //去除无效零
else
{
if(minus==1)Display_BCD[i-1]=11; //最高位为负号
i=6;
}
}
else if(i==0)
{
if(Display_BCD[i]==0)Display_BCD[i]=10; // 去除无效零
else if(Display_BCD[i]==1)
{
if(minus==1)Display_BCD[i]=12; // 最高位为-1
i=6;
}
}
}
}
void Float_To_Display(float value_Float,char fraction_bit)//浮点数显示
{
char i,j,fraction_bit_Addr=1,temp,temp1;
float value_float1;
temp=fraction_bit;
temp1=fraction_bit;
value_float1=value_Float;
if(value_float1>999999 || value_float1<-199999)//是否超出显示范围
{
Display_Byte_Control(0x02,0);
Display_Byte_Control(0x02,2);
Display_Byte_Control(0x02,4);
Display_Byte_Control(0x02,6);
Display_Byte_Control(0x02,8);
Display_Byte_Control(0x02,10);
}
else
{
for(i=temp1;i>0;i--) //根据显示范围调整小数点位置
{
value_float1=value_float1*10;
if((value_float1>999999) || (value_float1<-199999))
{
temp=temp-i;
i=0;
}
}
Float_To_BCD(value_Float,temp); ////浮点数转化为BCD码
for(i=6-temp;(i-1)>0;i--)fraction_bit_Addr=fraction_bit_Addr+2; //确定小数点显示位置
for(j=0;j<=5;j++)
{
if((fraction_bit_Addr-1)==(j*2))Display_Byte_Control(Number_Display[Display_BCD[5-temp]]+0x80,fraction_bit_Addr-1); //BCD加小数点显示
else Display_Byte_Control(Number_Display[Display_BCD[j]],j*2); //BCD显示
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -