📄 voltage.c
字号:
#include"reg51.h"
#include<INTRINS.H>
#define timerh 0xee
#define timerl 0xff
sbit TLC549_clk=P2^3;
sbit TLC549_data=P2^4;
unsigned char cs;
unsigned char dispram[4];
unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char sega[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0x6f};
void intimer(void);
void selectcs(void);
void select_none(void);
unsigned char TLC549_AD(void);
unsigned char advalue,adcnt;
unsigned int adsum,addisplay;
void main()
{
P0=0xff;
P1=0xff;
P2=0xff;
intimer();
dispram[0]=0;
dispram[1]=1;
dispram[2]=2;
dispram[3]=3;
adcnt=0;
adsum=0;
TR1=1;
while(1)
{
advalue=TLC549_AD();
if(adcnt==255)
{
adcnt=0;
addisplay=adsum/128;
dispram[0]=addisplay/1000;
dispram[1]=(addisplay%1000)/100;
dispram[2]=(addisplay%100)/10;
dispram[3]=addisplay%10;
adsum=0;
}
else
{
adcnt++;
adsum+=advalue;
}
}
}
unsigned char TLC549_AD(void)
{
char i;
unsigned char rt=0;
TLC549_data=1;
TLC549_clk=0;
selectcs();
if(TLC549_data&1)
rt|=0x80;
TLC549_clk=1;
TLC549_clk=1;
for(i=6;i>=0;i--)
{
TLC549_clk=1;
if(TLC549_data&1)
rt|=(1<<i);
TLC549_clk=0;
}
TLC549_clk=1;
select_none();
return rt;
}
void selectcs(void)
{
_nop_();
_nop_();
P2&=0x7f;
}
void select_none(void)
{
_nop_();
_nop_();
P2|=0xe0;
}
void segdata(unsigned char m)
{
if(cs==1)
P0=sega[m];
else
P0=seg[m];
_nop_();
_nop_();
P2&=0x1f;
_nop_();
_nop_();
P2|=0xe0;
}
void csdata(unsigned char cs)
{
cs&=0x0f;
P0=~cs;
_nop_();
_nop_();
P2&=0x3f;
_nop_();
_nop_();
P2|=0xe0;
}
void intimer(void)
{
cs=0;
dispram[0]=dispram[1]=dispram[2]=dispram[3]=0;
TMOD=0x10;
TH1=timerh;
TL1=timerl;
EA=1;
ET1=1;
}
void timer(void) interrupt 3 using 2
{
TH1=timerh;
TL1=timerl;
TF1=0;
if(cs>=3)
cs=0;
else
cs++;
segdata(dispram[cs]);
csdata(1<<cs);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -