?? 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 + -