⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.c

📁 该代码来自2008年湖北电子设计大赛位移测量装置制作,主要实现位移的自动测量和手动测量,msp430单片机
💻 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 + -