📄 16f914.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 + -