📄 ad0809.c
字号:
#include<reg51.h>
#include"AD0809.h"
uchar WordCode[]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E, //0~F分别是数字0~15
0xFF,0xFF,0xFF,0x42,0x41,0x06,0x4E, //16~18 19~22分别是X X X G.U.E.T.
0x7F,0xFF}; //23是小数点//24是全灭
uchar SelectCode[]={0x0E,0x0D,0x0B,0x07,0xFF};
uchar LED[4] = {0};
void DisplaySingleLED(uchar NO, uchar WORD)
{
WORDPORT = 0xFF;
WORDPORT = WordCode[WORD];
SELECTPORT = SelectCode[NO];
Delay5ms();
}
void Display(void)
{
uchar i;
bit flag = 0; //flag为零表示待显示的是数据的第一位
uint AMPtemp = 0;
// drop = 0;
AMPtemp = AMPIN0;
/*
if(!AMPtemp)
{
DisplaySingleLED(3,0);
}
*/
for(i=4; i>0; i--)
{
LED[i-1] = AMPtemp%10;
AMPtemp = AMPtemp/10;
}
for(i=0; i<4; i++)
{
// if(drop)
// {
// DisplaySingleLED(0,23);
// flag = 1;
// }
// if(LED[i] | flag)
// {
DisplaySingleLED(i,LED[i]);
// flag = 1;
// }
}
}
void ReadAD0809(void)
{
uchar i;
uint AMP = 0;
ST = 0;
ST = 0;
ST = 1;
for(i=200; i>0; i--)
{;}
ST = 1;
ST = 1;
ST = 0;
EOC = 0;
i = 100;
while((!EOC) & (i>0))//等待转换完成
// while(!EOC)
{
i--;
}
OE = 1;
DATAPORT = 0xFF;
AMP = DATAPORT;
OE = 0;
EOC = 0;
AMPIN0 = AMP;
// AMPIN0 = 0;
AMPIN0 = AMP*20;//转换出来的单位为MV,最大值为5000,最小值为20(1/51*1000=19.6
}
void SystemTest(void)
{
uchar i,j;
j = 0;
// WORDPORT = 0xFF;
// SELECTPORT = 0xFF;
while(j<4)
{
i = 100;
while(i--)
{
DisplaySingleLED(0,16+j);
DisplaySingleLED(1,17+j);
DisplaySingleLED(2,18+j);
DisplaySingleLED(3,19+j);
}
j++;
}
}
void Delay5ms(void)
{
unsigned char i,j,k;
for(i=5; i>0; i--)
for(j=2;j>0;j--)
for(k=124;k>0;k--);
}
void AD0809Init(void)
{
ST = 0;
EOC = 0;
OE = 0;
}
void keyscan(void)
{
KEY1 = 1;
KEY2 = 1;
if(!KEY1)
{
while(!KEY1)
{
KEY1 = 1;
}
drop = !drop;
}
if(!KEY2)
{
AMPIN0 = 0;
}
}
uchar i;
void main(void)
{
SystemTest();
AD0809Init();
while(1)
{
ReadAD0809();
for(i=25;i>0;i--)
{
// keyscan();
Display();
}
// DisplaySingleLED(0,13);
// DisplaySingleLED(1,14);
// DisplaySingleLED(2,15);
// DisplaySingleLED(3,12);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -