📄 adc0831.c
字号:
#include "reg52.h"
#include "intrins.h"
#include "absacc.h"
#define uchar unsigned char
#define uint unsigned int
sbit T0831_CS=P2^0;//片选I/O端口
sbit T0831_SK=P2^4;//时钟I/O端口
sbit T0831_DO=P2^2;//数据I/O端口
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
//****延迟*******************//
uchar i,j;
uint temp1;
uchar data data1;
uint temp;
void delay1(uchar k)
{for(i=0;i<k;i++);
}
void delay(uchar m)
{for(i=0;i<m;i++)
for(j=0;j<200;j++);
}
//*****************************************************//
//******************串口初始化**********************//
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
//****************************************************//
//********************初始化ADC8031***************//
uchar T0831Read(void)
{
uchar b,DataSoute;
T0831_CS=1;
delay1(10);
T0831_SK=1;
T0831_CS=0;
T0831_SK=0;
_nop_();
for(b=0;b<8;b++)
{
T0831_SK=1;
T0831_SK=0;
if(T0831_DO) DataSoute++;
DataSoute<<=1;
}
T0831_CS=1;
T0831_SK=1;
delay1(30);
return (DataSoute);
}
//**************************************//
//********温度转化为使十进制************//
uint tmp()
{
temp1=data1;
return temp1;
}
//**************************************//
//***********显示部分******************//
void display(uint temp1)
{ uchar A1,A2,A2t,A3;
SBUF=data1;
delay(500);
temp1=temp1*10;
temp1=temp1/2;
A1=temp1/100;
A2t=temp1%100;
A2=A2t/10;
A3=A2t%10;
dula=0;
P0=table[A1]; //显示百位
dula=1;
dula=0;
wela=0;
P0=0x7e;
wela=1;
wela=0;
delay(1);
dula=0;
P0=table1[A2]; //显示十位
dula=1;
dula=0;
wela=0;
P0=0x7d;
wela=1;
wela=0;
delay(1);
P0=table[A3]; //显示个位
dula=1;
dula=0;
P0=0x7b;
wela=1;
wela=0;
delay(1);
}
//********************************************//
void main()
{uchar a;
Init_Com();
while(1)
{ data1=T0831Read();
for(a=0;a<10;a++)
{display(tmp());}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -