微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 基于S52单片机的电子称,其中LCD1602的程序,求解释。

基于S52单片机的电子称,其中LCD1602的程序,求解释。

时间:10-02 整理:3721RD 点击:
sbit EN=P2^7;
sbit RS=P2^5;
sbit RW=P2^6;
unsigned char LCD1602_Table[]="0123456789:-";
      // 0123456789abcdef
unsigned char DIS1_TAB[]={"W:--.---KgP:--.-"};     //显示重量 单价
unsigned char DIS2_TAB[]={"Total Sum:----.-"};
void write_date(uchar date)
{
EN=0;
RS=1;
P0=date;
EN=0;
delayms(5);
EN=1;
}
void write_com(uchar date)
{
EN=0;
RS=0;
P0=date;
EN=0;
delayms(5);
EN=1;
}
void init_1602()
{
  unsigned char i;
RW=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(i=0;i<16;i++)
write_date(DIS1_TAB[i]);
write_com(0x80+0x40);
for(i=0;i<16;i++)
write_date(DIS2_TAB[i]);
}
void display()
{
int wight_dat;
uchar i=0;
write_com(0x80+2);
if(BP_DAT>10000)    //超量程显示错误
{
  write_date(' ');
  write_date('E');
  write_date('R');
  write_date('R');
  write_date('O');
  write_date('R');
  write_date('!');
  write_date(' ');
}
else if(BP_DAT>=0)    //重量为正
{
  wight_dat=BP_DAT;
  if((wight_dat/10000)>0)
  write_date(LCD1602_Table[wight_dat/10000]);
  else
  write_date(' ');
  write_date(LCD1602_Table[wight_dat%10000/1000]);
  write_date('.');
  write_date(LCD1602_Table[wight_dat%10000%1000/100]);
  write_date(LCD1602_Table[wight_dat%10000%1000%100/10]);
  write_date(LCD1602_Table[wight_dat%10]);
  write_date('K');
  write_date('g');
  if(wight_dat/10>950)
  BEEP=0;
  else
  BEEP=1;
}
else        //重量为负
{
  wight_dat=(-1)*BP_DAT;
  write_date('-');
  write_date(LCD1602_Table[wight_dat%10000/1000]);
  write_date('.');
  write_date(LCD1602_Table[wight_dat%10000%1000/100]);
  write_date(LCD1602_Table[wight_dat%10000%1000%100/10]);
  write_date(LCD1602_Table[wight_dat%10]);
  write_date('K');
  write_date('g');  
}

write_com(0x80+12);   //单价显示
write_date(LCD1602_Table[Price_dat/100]);
write_date(LCD1602_Table[Price_dat%100/10]);
write_date('.');
write_date(LCD1602_Table[Price_dat%10]);

write_com(0x80+0x40+10);   //总价显示
if((Total_Sum/10000)>0)
write_date(LCD1602_Table[Total_Sum/10000]);
else
write_date(' ');
if((Total_Sum/1000)>0)
write_date(LCD1602_Table[Total_Sum%10000/1000]);
else
write_date(' ');
if((Total_Sum/100)>0)
write_date(LCD1602_Table[Total_Sum%10000%1000/100]);
else
write_date(' ');
write_date(LCD1602_Table[Total_Sum%10000%1000%100/10]);
write_date('.');
write_date(LCD1602_Table[Total_Sum%10]);
}
请大神们帮我注释一下,我一点也不懂。

这程序没注解,我也看看。

泪流满面顶小编

天书一般啊      

求小编源程序包~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top