📄 电压表.c
字号:
#include<reg52.h> //52系列单片机定义文件
#include<intrins.h> //调用_nop_();延时函数用
#define uchar unsigned char //无符号字符
#define uint unsigned int //无符号整数
sbit ALE=P2^3;
sbit START=P2^4;
sbit OE=P2^5;
sbit EOC=P3^7;
sbit DOT=P1^7;
sbit AO=P2^6;
sbit BO=P2^7;
sbit CO=P3^5;
sbit DO=P3^6;
uchar code xs_7[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar code saomiao[4]={0xfe,0xfd,0xfb,0xf7};
uchar data ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uint data dis[5]={0x00,0x00,0x00,0x00,0x00};
//
//
/**************1ms延时子函数*************/
delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
//
//
/***********显示扫描子函数************/
scan()
{
uchar k,n;
int h;
dis[3]=0x00;
for(n=0;n<8;n++)
{
dis[2]=ad_data[n]/51;
dis[4]=ad_data[n]%51;
dis[4]=dis[4]*10;
dis[1]=dis[4]/51;
dis[4]=dis[4]%51;
dis[4]=dis[4]*10;
dis[0]=dis[4]/51;
for(h=0;h<255;h++)
{
for(k=0;k<4;k++)
{
P1=xs_7[dis[k]];
if(k==2) {DOT=1;}
P3=saomiao[k];delay1ms(1);P3=0xff;
}
}
dis[3]++;
}
}
/*************通道选择********************/
tongdao(uchar m)
{
uchar k;
int h;
dis[3]=m; //通道
dis[2]=ad_data[m]/51; //通道数据
dis[4]=ad_data[m]%51;
dis[4]=dis[4]*10;
dis[1]=dis[4]/51;
dis[4]=dis[4]%51;
dis[4]=dis[4]*10;
dis[0]=dis[4]/51;
if(dis[2]>3&&dis[1]>5)
{
AO=1;
BO=1;
}
for(h=0;h<255;h++)
{
for(k=0;k<4;k++)
{
P1=xs_7[dis[k]];
if(k==2)
{
DOT=1;
}
P3=saomiao[k];
delay1ms(1);
P3=0xff;
}
}
}
/***********0809AD转换子函数*************/
test()
{
uchar m;
uchar s=0x00;
P2=s;
for(m=0;m<8;m++)
{
ALE=1;
_nop_();
_nop_();
ALE=0;
START=1;
_nop_();
_nop_();
START=0;
_nop_();
_nop_();
_nop_();
_nop_();
while(EOC==0);
OE=1;
ad_data[m]=P0;
OE=0;
s++;
P2=s;
}
P2=0x00;
}
/***********主函数***********/
main()
{
uchar i,j,n;
int t=0;
j=0;n=0;
P0=0xff;
P2=0x00;
P1=0xff;
P3=0xff;
for(;;)
{
test();
if(j==0)
{
i=DO; /*p3^6*/
if(i==0)
{
tongdao(n);
n++;
}
if(n>7)
n=0;
tongdao(n);
}
else
scan();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -