📄 adc-12.c
字号:
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_()
#define WEI P2
#define DUAN P0
code uchar display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
data uchar Disp_Data[6]={0,0,0,0,0,0};
/*************变量定义******************/
uint Con_Data=0;
float Vref=2.5;
/*************函数声明******************/
void delay(uchar j);//
void Data_Process(void);
void led_display(void);
/**************************************/
sbit DOUT=P1^0;
sbit SCLK=P1^1;
sbit CS=P1^2;
/***************************************/
void delay(uchar j)
{ register i;
while(j--)
{
for(i=0;i<125;i++)
{;}
}
}
/***************************************/
void Re_Data(void)
{
uchar i;
CS=0;
Con_Data=0;
nop();
DOUT=1;
SCLK=0;
nop();
SCLK=1;
nop();
for(i=0;i<12;i++)
{
SCLK=0;
nop();
SCLK=1;
Con_Data<<=1;
if(DOUT)
{Con_Data|=0x01;}
}
CS=1;
}
/***************************************/
void Data_Process(void)
{
float tt;
uint dispnumber;
tt=(Con_Data*Vref)/4095.0;
tt*=1000.0; //电压放大1000倍,显示到
dispnumber=(uint)tt;
Disp_Data[0]=dispnumber/100000;
Disp_Data[1]=dispnumber%100000/10000;
Disp_Data[2]=dispnumber%100000%10000/1000;
Disp_Data[3]=dispnumber%100000%10000%1000/100;
Disp_Data[4]=dispnumber%100000%10000%1000%100/10;
Disp_Data[5]=dispnumber%100000%10000%1000%100%10;
}
/**************************************/
void led_display(void)
{
uchar i,j,k;
uchar *p,*q;
p=&Disp_Data[0];
q=display;
k=0x20;
for(i=0;i<6;i++)
{
WEI=k;
j=*(p+i);
DUAN=*(q+j);
if(i==2)
{DUAN|=0x80;}
k>>=1;
delay(1);
}
}
/**************************************/
void main(void)//主程序
{
while(1)
{
Re_Data();
Data_Process();
led_display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -