📄 1.c
字号:
#include <AT89X51.H>
#define L 300 //表示300cm
#define PE 2 /*5V/256=0.0195V 转换精度,没有用上*/
#define ST P3_2
#define OE P3_0
#define EOC P3_1
void main()
{unsigned char data ADC_1,ADC_2; /*存放转换后的数据*/
int data j;
float data k,m,n;
unsigned char data i,LED_0=0,LED_1=0,LED_2=0,LED_3=0; /*存放三个数码管的段码*/
char code DIS_1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//不带点0 1 2 3 4 5 6 7 8 9
char code DIS_2[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};//带点
/*TMOD=0x01;
TH0=255-12;
TL0=255-12;
ET0=1,EA=1,TR0=1;
*/
while (1)
{
//采集传感器A的数据
P3_4=0,P3_5=0,P3_6=0;
ST=0;
ST=1;
ST=0;
while (!EOC) ;
OE=1;
ADC_1=P1;
OE=0;
//采集传感器B的数据
P3_4=1,P3_5=0,P3_6=0;
ST=0;
ST=1;
ST=0;
while (!EOC);
OE=1;
ADC_2=P1;
OE=0;
m=ADC_1,n=ADC_2;
k=m*L/(m+n);
j=k*10;
LED_3=j/1000;
LED_0=j/100%10;
LED_1=j/10%10;
LED_2=j%10;
for(i=0;i<100;i++)
{P0=DIS_1[LED_3];
P2_0=0;}
P2_0=1;
for(i=0;i<100;i++)
{P0=DIS_1[LED_0];
P2_1=0;}
P2_1=1;
for(i=0;i<100;i++)
{P0=DIS_2[LED_1];
P2_2=0;}
P2_2=1;
for(i=0;i<100;i++)
{P0=DIS_1[LED_2];
P2_3=0;}
P2_3=1;
}
}
/*void CLOCK () interrupt 1
{P2_4=~P2_4;}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -