📄 ad转换12位.c
字号:
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
sbit L1=P3^3;
sbit L2=P3^2;
sbit L3=P3^1;
sbit L4=P3^0;
//定义端口
sbit CE=P1^4;
sbit CS=P1^1; //定义端口
sbit RC=P1^3;
sbit A0=P1^2;
sbit STS=P1^0;
unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};
static unsigned char i,j,w,p,q,r,t,a,b,c,d,e,f,g,h;
unsigned long l,k,m,n,s;
Delay(ms)
{
while(ms--)
{
unsigned char i;
for(i=0;i<200;i++)
{
;
}
}
}
void INIT_ADC()
{
CE=0;
CS=0;
RC=0;
A0=1;
CE=1;
while(STS==1);
CE=0;
}
void main()
{
TH0=(65535-5000)/256; // 开启记时器设置
TL0=(65535-5000)%256;
EA=1;
ET0=1;
TMOD=0x01;
TR0=1;
while(1)
{
INIT_ADC(); //启动ad转换
STS=0;
A0=0;
CS=1;
CE=1;
RC=1;
CE=0;
CS=0;
_nop_();
CE=1;
//传值
k=P0;
CE=0;
_nop_(); //取高八位
CS=1;
CE=1;
A0=1;
CE=0;
CS=0;
_nop_();
CE=1;
//传值
l=P0;
CE=0; //取低四位
k=k<<4;
l=l>>4;
m=k+l;
s=(int)m;
m=s*5000/4096;
a=m%10; //数据处理
b=m/10%10;
c=m/100%10;
d=m/1000;
}
}
void Timer0() interrupt 1 //记时器显示程序
{
TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
L1=0;
P2=Tab[a+10];
Delay(1);
L1=1;
L2=0;
P2=Tab[b];
Delay(1);
L2=1;
L3=0;
P2=Tab[c];
Delay(1);
L3=1;
L4=0;
P2=Tab[d];
Delay(1);
L4=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -