📄 display.c
字号:
#include "display.h"
unsigned char lcd[9]={0x7D};/*0x11,*/
unsigned char dl[16]={
0x7D, // 0
0x60, // 1
0x3E, // 2
0x7A, // 3
0x63, // 4
0x5B, // 5
0x5F, // 6
0x70, // 7
0x7F, // 8
0x7B, // 9
0x77, // A
0x4F, // B
0x1D, // C
0x6E, // D
0x1F, // E
0x17 // F
};
int a[10]={0},b;
double c;
//******************************************************************************
void SendBit_1621(unsigned char data,unsigned char cnt) //data的高cnt位写入HT1621,高位在前
{
unsigned char i;
for(i =0; i <cnt; i ++)
{
if((data&0x80)==0) DAT0;
else DAT1;
WR0;
_NOP();
WR1;
data<<=1;
}
}
//******************************************************************************
void SendDataBit_1621(unsigned char data,unsigned char cnt) //data 的低cnt 位写入HT1621,低位在前
{
unsigned char i;
for(i =0; i <cnt; i ++)
{
if((data&0x01)==0) DAT0;
else DAT1;
WR0;
_NOP();
WR1;
data>>=1;
}
}
//******************************************************************************
void SendCmd(unsigned char command)
{
CS0;
SendBit_1621(0x80,3); //写入标志码"100"
SendBit_1621(command,9); //写入9 位数据,其中前8 位为command 命令,最后1 位任意
CS1;
}
//******************************************************************************
void Write_1621(unsigned char addr,unsigned char data)
{
CS0;
SendBit_1621(0xa0,3); //写入标志码"101"
SendBit_1621(addr<<2,6); //写入6 位addr
SendDataBit_1621(data,4); //写入data 的低4 位
CS1;
}
//******************************************************************************
void WriteAll_1621(unsigned char addr,unsigned char *p,unsigned char cnt)
{
unsigned char i;
CS0;
SendBit_1621(0xa0,3); //写入标志码"101"
SendBit_1621(addr<<2,6); //写入6 位addr
for(i =0; i <cnt; i ++,p++) //连续写入数据
{
SendDataBit_1621(*p,8);
}
CS1;
}
//******************************************************************************
void LcdInit(void)
{
HT1621IO_DIR;
//P4SEL |= BIT3;
SendCmd(BIAS); //设置偏压和占空比
SendCmd(SYSEN); //打开系统振荡器
SendCmd(LCDN); //打开LCD 偏压发生器
Write_1621(0x09,0x01); //在地址0x09 处写入数据0x01
}
//*******************数据量化************************/
void countvalue(double n)
{
double m;
int i=0;
m=n;
if(m<0) m=-n;
if(m>0&m<100)
{
m= m*1000;
i=4;
}
else i=0;
for(a[9]=7;a[9]>=0;a[9]--)
{
a[a[9]] = (long)m%10;
m=m/10;
}
for(a[8]=7;a[8]>=0;a[8]--)
{
lcd[a[8]]=dl[a[a[8]]];
}
if(lcd[0]==dl[0]) lcd[0]=0;
if(lcd[0]==0&&lcd[1]==dl[0]) lcd[1]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==dl[0]) lcd[2]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==dl[0]) lcd[3]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==0&&lcd[4]==dl[0]) lcd[4]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==0&&lcd[4]==0&&lcd[5]==dl[0]) lcd[5]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==0&&lcd[4]==0&&lcd[5]==0&&lcd[6]==dl[0]) lcd[6]=0;
if(i!=0) lcd[i] |= 0x80;
if(n<0) lcd[0] = 0x02;
WriteAll_1621(0,lcd,9);
}
void countvalue2(double n,double h)
{
double m;
int i=0,j=1;
m=n;
if(m>0&m<100)
{
m= m*1000;
i=4;
}
if(h>0&h<100)
{
h= h*1000;
j=0;
}
for(a[9]=7;a[9]>=4;a[9]--)
{
a[a[9]] = (long)m%10;
m=m/10;
}
for(a[9]=3;a[9]>=0;a[9]--)
{
a[a[9]] = (long)h%10;
h=h/10;
}
for(a[8]=7;a[8]>=0;a[8]--)
{
lcd[a[8]]=dl[a[a[8]]];
}
if(i!=0) lcd[i] |= 0x80;
if(j!=1) lcd[j] |= 0x80;
WriteAll_1621(0,lcd,9);
}
void countvalue3(double n,double h)
{
double m;
int i=0,j=0;
m=n;
if(m>0&m<100)
{
m= m*100;
i=5;
}
if(h>0&h<100)
{
h= h*100;
j=1;
}
for(a[9]=7;a[9]>=4;a[9]--)
{
a[a[9]] = (long)m%10;
m=m/10;
}
for(a[9]=3;a[9]>=0;a[9]--)
{
a[a[9]] = (long)h%10;
h=h/10;
}
for(a[8]=7;a[8]>=0;a[8]--)
{
lcd[a[8]]=dl[a[a[8]]];
}
if(i!=0) lcd[i] |= 0x80;
if(j!=0) lcd[j] |= 0x80;
WriteAll_1621(0,lcd,9);
}
void countvalue1(double n)
{
double m;
m=n;
for(a[9]=7;a[9]>=0;a[9]--)
{
a[a[9]] = (long)m%10;
m=m/10;
}
for(a[8]=7;a[8]>=0;a[8]--)
{
lcd[a[8]]=dl[a[a[8]]];
}
if(lcd[0]==dl[0]) lcd[0]=0;
if(lcd[0]==0&&lcd[1]==dl[0]) lcd[1]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==dl[0]) lcd[2]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==dl[0]) lcd[3]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==0&&lcd[4]==dl[0]) lcd[4]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==0&&lcd[4]==0&&lcd[5]==dl[0]) lcd[5]=0;
if(lcd[0]==0&&lcd[1]==0&&lcd[2]==0&&lcd[3]==0&&lcd[4]==0&&lcd[5]==0&&lcd[6]==dl[0]) lcd[6]=0;
WriteAll_1621(0,lcd,9);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -