📄 sms0403.h
字号:
#include <delay.h>
#define LCD_DI PORTD.2 //根据实际接线定义
#define LCD_CLK PORTC.2
/* Use an 4 alphanumeric LCD connected
to PORTC as follows:
[LCD] [SMS0403 PORTC HEADER]
1 +5V
2 LCD_DI
3 LCD_CLK
4 GND
*/
void LCD_sendbyte(unsigned char lcd_data)//lcd移入数据
{
unsigned char i;
for(i=0;i<8;i++)
{
LCD_DI=(lcd_data & 0x80);
LCD_CLK=1;
LCD_CLK=0;
LCD_CLK=1;
lcd_data<<=1;//移位
}
}
void LCD_SHOW(float * hex_data)
{
unsigned char LCD_buf[4]={0x82,0x82,0x82,0x82};//无数据时显示为0
unsigned char lcd_middle[4],i;
float j;
//"0"--0x82,"1"--0xee,"2"--0x43,"3"--0x4a,"4"--0x2e,"5"--0x1a,"6"--0x12,"7"--0xce,
//"8"--0x02,"9"--0x0a,"a"--0x86,"b"--0xa6,"c"--0x93,"d"--0x37,"e"--0x13,"f"--0x17,"-"--0x7f;
unsigned char show_member[17]={0x82,0xee,0x43,0x4a,0x2e,0x1a,0x12,0xce,0x02,0x0a,0x86,0xa6,0x93,0x37,0x13,0x17,0x7f};//移入数据对应显示数值
j=*hex_data;
/*
lcd_middle[0]=j;
lcd_middle[1]=(j-lcd_middle[0])/0.1;
lcd_middle[2]=(j-lcd_middle[0]-lcd_middle[1]*0.1)/0.01;
lcd_middle[3]=(j-lcd_middle[0]-lcd_middle[1]*0.1-lcd_middle[2]*0.01)/0.001;
//数据处理
*/
lcd_middle[0]=j/100;
lcd_middle[1]=(j-lcd_middle[0]*100)/10;
lcd_middle[2]=j-lcd_middle[0]*100-lcd_middle[1]*10;
lcd_middle[3]=(j-lcd_middle[0]*100-lcd_middle[1]*10-lcd_middle[2])/0.1;
if(j>=100)
{
lcd_middle[1]=1;
lcd_middle[2]=0;
lcd_middle[3]=0;
}
switch(lcd_middle[0])
{
case 0 :LCD_buf[0]=show_member[0];break;
case 1 :LCD_buf[0]=show_member[1];break;
case 2 :LCD_buf[0]=show_member[2];break;
case 3 :LCD_buf[0]=show_member[3];break;
case 4 :LCD_buf[0]=show_member[4];break;
case 5 :LCD_buf[0]=show_member[5];break;
case 6 :LCD_buf[0]=show_member[6];break;
case 7 :LCD_buf[0]=show_member[7];break;
case 8 :LCD_buf[0]=show_member[8];break;
case 9 :LCD_buf[0]=show_member[9];break;
case 10 :LCD_buf[0]=show_member[10];break;
case 11 :LCD_buf[0]=show_member[11];break;
case 12 :LCD_buf[0]=show_member[12];break;
case 13 :LCD_buf[0]=show_member[13];break;
case 14 :LCD_buf[0]=show_member[14];break;
case 15 :LCD_buf[0]=show_member[15];break;
case 16 :LCD_buf[0]=show_member[16];break;
default :LCD_buf[0]=show_member[0];break;
break;
}
switch(lcd_middle[1])
{
case 0 :LCD_buf[1]=show_member[0];break;
case 1 :LCD_buf[1]=show_member[1];break;
case 2 :LCD_buf[1]=show_member[2];break;
case 3 :LCD_buf[1]=show_member[3];break;
case 4 :LCD_buf[1]=show_member[4];break;
case 5 :LCD_buf[1]=show_member[5];break;
case 6 :LCD_buf[1]=show_member[6];break;
case 7 :LCD_buf[1]=show_member[7];break;
case 8 :LCD_buf[1]=show_member[8];break;
case 9 :LCD_buf[1]=show_member[9];break;
case 10 :LCD_buf[1]=show_member[10];break;
case 11 :LCD_buf[1]=show_member[11];break;
case 12 :LCD_buf[1]=show_member[12];break;
case 13 :LCD_buf[1]=show_member[13];break;
case 14 :LCD_buf[1]=show_member[14];break;
case 15 :LCD_buf[1]=show_member[15];break;
default :
break;
}
switch(lcd_middle[2])
{
case 0 :LCD_buf[2]=show_member[0];break;
case 1 :LCD_buf[2]=show_member[1];break;
case 2 :LCD_buf[2]=show_member[2];break;
case 3 :LCD_buf[2]=show_member[3];break;
case 4 :LCD_buf[2]=show_member[4];break;
case 5 :LCD_buf[2]=show_member[5];break;
case 6 :LCD_buf[2]=show_member[6];break;
case 7 :LCD_buf[2]=show_member[7];break;
case 8 :LCD_buf[2]=show_member[8];break;
case 9 :LCD_buf[2]=show_member[9];break;
case 10 :LCD_buf[2]=show_member[10];break;
case 11 :LCD_buf[2]=show_member[11];break;
case 12 :LCD_buf[2]=show_member[12];break;
case 13 :LCD_buf[2]=show_member[13];break;
case 14 :LCD_buf[2]=show_member[14];break;
case 15 :LCD_buf[2]=show_member[15];break;
default :
break;
}
LCD_buf[2]&=0xfd; //加小数点
switch(lcd_middle[3])
{
case 0 :LCD_buf[3]=show_member[0];break;
case 1 :LCD_buf[3]=show_member[1];break;
case 2 :LCD_buf[3]=show_member[2];break;
case 3 :LCD_buf[3]=show_member[3];break;
case 4 :LCD_buf[3]=show_member[4];break;
case 5 :LCD_buf[3]=show_member[5];break;
case 6 :LCD_buf[3]=show_member[6];break;
case 7 :LCD_buf[3]=show_member[7];break;
case 8 :LCD_buf[3]=show_member[8];break;
case 9 :LCD_buf[3]=show_member[9];break;
case 10 :LCD_buf[3]=show_member[10];break;
case 11 :LCD_buf[3]=show_member[11];break;
case 12 :LCD_buf[3]=show_member[12];break;
case 13 :LCD_buf[3]=show_member[13];break;
case 14 :LCD_buf[3]=show_member[14];break;
case 15 :LCD_buf[3]=show_member[15];break;
default :
break;
}
for(i=0;i<4;i++)
{
LCD_sendbyte(LCD_buf[i]);
delay_us(100);
}
delay_ms(10);//为显示时不闪烁
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -