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

📄 16f914.c

📁 段式液晶屏的一个小程序,总算对它有所了解.现在我把程序拿出来,希望对初学有所帮助,有不对的地方,请帮忙修正.
💻 C
字号:
今天找了个段式液晶屏,写了一个小程序,总算对它有所了解.现在我把程序拿出来,
希望对初学有所帮助,有不对的地方,请帮忙修正.

#include <pic16f91x.h>
#define unchar   unsigned char
#define unint    unsigned int
#define uchar    unsigned char
#define hao  SEG0COM0
#define one  SEG1COM0
#define F1   SEG2COM0
#define A1   SEG3COM0
#define F2   SEG4COM0
#define A2   SEG5COM0
#define F3   SEG6COM0
#define A3   SEG7COM0
#define F4   SEG8COM0
#define A4   SEG9COM0
#define F5   SEG10COM0
#define A5   SEG11COM0
#define T1   SEG12COM0

#define NO    SEG0COM1
#define CK2   SEG1COM1
#define G1    SEG2COM1
#define B1    SEG3COM1
#define G2    SEG4COM1
#define B2    SEG5COM1
#define G3    SEG6COM1
#define B3    SEG7COM1
#define G4    SEG8COM1
#define B4    SEG9COM1
#define G5    SEG10COM1
#define B5    SEG11COM1
#define T2    SEG12COM1

#define TARE   SEG0COM2
#define CK1    SEG1COM2
#define E1     SEG2COM2
#define C1     SEG3COM2
#define E2     SEG4COM2
#define C2     SEG5COM2
#define E3     SEG6COM2
#define C3     SEG7COM2
#define E4     SEG8COM2
#define C4     SEG9COM2
#define E5     SEG10COM2
#define C5     SEG11COM2
#define T3     SEG12COM2

#define ZER0   SEG0COM3
#define P1     SEG1COM3
#define D1     SEG2COM3
#define P2     SEG3COM3
#define D2     SEG4COM3
#define P3     SEG5COM3
#define D3     SEG6COM3
#define P4     SEG7COM3
#define D4     SEG8COM3
#define P5     SEG9COM3
#define D5     SEG10COM3
#define P6     SEG11COM3
#define T4     SEG12COM3
unsigned char t0,t1,t2,t3,t4,data;
unsigned int  cnt1,T;
unsigned  int key,cnt,dsp0;
uchar flag0=0;
uchar flag1=0;
uchar flag2=0;
uchar flag3=0;
unchar a,b;
unint c;
//段码             
unsigned char table[]={0x3F,0x06,0x5B,0x4F,
                               0x66,0x6D,0x7D,0x07,
                                0x7F,0x6F,0x00}; 
void delay(unsigned int x)
{
  unsigned int y;
  for(y=x;--y;)
       continue;
  }

void initial()
{
 LCDCON=0x93;  //使能LCD模块,休眠模式下使能LCD模块,使能LCD偏置电压引脚,1/4
 LCDPS=0xc1;   //1/3偏置
 LCDSE0=0xFF;     //段使能
 LCDSE1=0xff;
 LCDSE2=0x00;
 TRISE=0XFF;
 ADCON1=0X07;
 CMCON0=0X07;
 ANSEL=0X00;
 INTCON=0X00;
 GIE=1;
 T0IE=1;
 T0IF=0;
 TMR0=230; 
 OPTION=0X87;
 dsp0=0;
 cnt=0;
 key=0;
}
void keydsp()
{  if(key<10)
      {t0=key;
       t1=0;
       t2=0;
       t3=10;  
       t4=10;
       }    
    if((key>=10)&&(key<100))
      {t0=key%10;
        t1=key/10;
        t2=0;
        t3=10;
        t4=10;
        }
    if((key>=100)&&(key<1000))
          { t0=key%10;
            t1=key/10%10;
            t2=key/100;
            t3=10;
            t4=10;
          }
      if((key>=1000)&&(key<10000))
          {t0=key%10;
           t1=key/10%10;
           t2=key/100%10;
           t3=key/1000;
           t4=10;
           }       
    if((key>=10000)&&(key<100000))
          {t0=key%10;
           t1=key/10%10;
           t2=key/100%10;
           t3=key/1000%10;
           t4=key/100000;
           }         
///            {key=0;
//              t0=t1=t2=t3=0;
//              display();
//               }
}
void duty()
{while(1)
 {key=dsp0;
  keydsp(); 
  key=0;
  delay(25000); 
  t0=t1=t2=t3=10;
  delay(25000);   
  cnt1++;
  if(cnt1==3)
    break;
   }
}
void interrupt tmr0(void)
{   if(T0IE&T0IF)  
  {data=table[t4];
   data>>=1;
   A1=CARRY;
   data>>=1;
   B1=CARRY;
   data>>=1;
   C1=CARRY;
   data>>=1;
   D1=CARRY;
   data>>=1;
   E1=CARRY;
    data>>=1;
   F1=CARRY;
   data>>=1;
   G1=CARRY;
 
 
   data=table[t3];
   data>>=1;
   A2=CARRY;
   data>>=1;
   B2=CARRY;
   data>>=1;
   C2=CARRY;
   data>>=1;
   D2=CARRY;
   data>>=1;
   E2=CARRY;
   data>>=1;
   F2=CARRY;
   data>>=1;
   G2=CARRY;
   data=table[t2];
   data>>=1;
   A3=CARRY;
   data>>=1;
   B3=CARRY;
   data>>=1;
   C3=CARRY;
   data>>=1;
   D3=CARRY;
   data>>=1;
   E3=CARRY;
   data>>=1;
   F3=CARRY;
   data>>=1;
   G3=CARRY;
   data=table[t1];
   data>>=1;
   A4=CARRY;
   data>>=1;
   B4=CARRY;
   data>>=1;
   C4=CARRY;
   data>>=1;
   D4=CARRY;
   data>>=1;
   E4=CARRY;
   data>>=1;
   F4=CARRY;
   data>>=1;
   G4=CARRY;
  data=table[t0];
   data>>=1;
   A5=CARRY;
   data>>=1;
   B5=CARRY;
   data>>=1;
   C5=CARRY;
   data>>=1;
   D5=CARRY;
   data>>=1;
   E5=CARRY;
   data>>=1;
   F5=CARRY;
   data>>=1;
   G5=CARRY;
 }
  T0IF=0;
  TMR0=230;
}
main()
{      initial();   
       LCDDATA0=0XFF;  //LCD  ON
       LCDDATA1=0XFF;
       LCDDATA2=0XFF;
       LCDDATA3=0XFF;
       LCDDATA4=0XFF;
       LCDDATA5=0XFF;
       LCDDATA6=0XFF;
       LCDDATA7=0XFF;
       LCDDATA8=0XFF;
       LCDDATA9=0XFF;
       LCDDATA10=0XFF;
       LCDDATA11=0XFF; 
       delay(50000);
       delay(50000);
       LCDDATA0=0X00;  //LCD  off
       LCDDATA1=0X00;
       LCDDATA2=0X00;
       LCDDATA3=0X00;
       LCDDATA4=0X00;
       LCDDATA5=0X00;
       LCDDATA6=0X00;
       LCDDATA7=0X00;
       LCDDATA8=0X00;
       LCDDATA9=0X00;
       LCDDATA10=0X00; 
       LCDDATA11=0X00; 
       delay(100); 
   
while(1)
 {  CK1=0;
    CK2=0;
    one=0;
    ZER0=0;
    TARE=0;
    P1=0;
    P2=0;
    P3=0;
    P4=1;
    P5=0;
    P6=0;
    T1=T2=T3=T4=0;
    NO=0;
    hao=0;
     while(1)          
         {if(RE0==0)
             break;
          while(1)
               {if(RE1==0)
                  {flag0=1;
                   flag1=0;}          
                if(RE1==1)
                        break;
               }
          while(1)
               {if((RE2==0)&&(RE1==1)) 
                      {flag1=1;
                       flag0=0;}
                if((RE2==1)&&(RE1==1)&&(flag3==10))  
                       break;  
                flag3++;   
                }
          } 
         if(flag0==1)
             {dsp0=10; 
              duty();}
       if(flag1==1)
              {dsp0=1; 
               duty();}
       flag0=flag1=flag3=0;
       cnt1=0;                                          
       cnt=dsp0+cnt;
       key=cnt;
       dsp0=0;
       keydsp();   
    }
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -