📄 lcd_disp.c
字号:
//本模块用于对LCD的显示进行控制
//其中lcd_disp_data()函数可将1000倍转角数据在LCD上以角度显示
#define PORT_DISP PORTB //PORT_DISP为LED控制端口,1为CLK,2为DIN
//LCD显示驱动
void lcd_disp(char a[8])
{
int i,j,data;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
data = (a[i] & (1<<j))>>j; //提取欲显示段数据
PORT_DISP |= (data<<1); //DIN数据准备
PORT_DISP |= (1<<0); //CLK上跳
PORT_DISP &= ~(1<<0); //CLK下跳
PORT_DISP &= ~(1<<1); //DIN复位
}
}
}
//出错显示,显示“Error”
void lcd_disp_error(void)
{
char a[8] = {0x00,0x9E,0x0A,0x0A,0x3A,0x0A,0x00,0x00};
lcd_disp(a);
}
//将0-9转换为LCD段码
char convert(int input)
{
char result = 0x40;
if(input==0)
result = 0xFC;
if(input==1)
result = 0x60;
if(input==2)
result = 0xDA;
if(input==3)
result = 0xF2;
if(input==4)
result = 0x66;
if(input==5)
result = 0xB6;
if(input==6)
result = 0xBE;
if(input==7)
result = 0xE0;
if(input==8)
result = 0xFE;
if(input==9)
result = 0xF6;
return result;
}
//将六位整数显示于LCD
void lcd_disp_data(int data)
{
char a[8];
if(data>360000||data<-360000)
goto OVER;
if(data>0) //判断符号
a[0] = 0x40;
else
{
a[0] = 0x00;
data = 0 - data;
}
a[1] = convert((data/100000)%10);
a[2] = convert((data/10000)%10);
a[3] = convert((data/1000)%10) + 0x01; //小数点
a[4] = convert((data/100)%10);
a[5] = convert((data/10)%10);
a[6] = convert(data%10);
a[7] = 0x63; //“度”符号
lcd_disp(a);
OVER:lcd_disp_error();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -