#include "reg52.h"
#define SD 0
//==========================
sbit CS=P0^0;
sbit CLK=P0^1;
sbit DI =P0^2;
sbit DO =P0^3;
//============================
unsigned char bdata ADC_BIT;
sbit ADC0=ADC_BIT^0;
sbit ADC1=ADC_BIT^1;
sbit ADC2=ADC_BIT^2;
sbit ADC3=ADC_BIT^3;
sbit ADC4=ADC_BIT^4;
sbit ADC5=ADC_BIT^5;
sbit ADC6=ADC_BIT^6;
sbit ADC7=ADC_BIT^7;
//==============================
char numf[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6};
char numz[]={0xff,0x01,0x02,0x04,0x08};//數位管位選
// 關閉 個位 十位 百位 千位
void yc(int n); //延時n毫秒
void smg_xs (int num)
{
char ws[]={0,0,0,0,0};
//位數,個十百千
//個 十 百 千
if(num>999&&num<9999)
{
ws[1]=num%10000%100%100%10%10;
ws[2]=num%10000%1000%100/10;
ws[3]=num%10000%1000/100;
ws[4]=num%10000/1000;
}
if(num>99&&num<999)
{
ws[1]=num%1000%10%10;
ws[2]=num%1000%100/10;
ws[3]=num%1000/100;
}
if(num>9&&num<99)
{ ws[1]=num%10;
ws[2]=num/10;
}
if(num>-1&&num<9)
{ws[1]=num;}
//================================
{//局部範圍
int sm;
int i;
for(sm=0;sm<15;sm++)
{
for(i=1;i<=4;i++)
{
P3=numz[i];
P2=~numf[ws[i]];
yc(1);
P3=~numz[0];
}//for i end
}// for sm end
}//局部範圍 end
}//smg_xs() end
//=========================================
void BEGIN_ADC0832()
{
//初始化 ADC
//CLK=0;
//CS=0;
//1脈沖 DI=1 開始
//2脈沖 DI=1
//3脈沖 DI=0
//=================
CLK=0;yc(SD);
CS=0;yc(SD);
//========================準備
DI=1;
yc(SD);
CLK=1;
//1脈沖
yc(SD);
CLK=0;
DI=1;
yc(SD);
CLK=1;
//2脈沖
yc(SD);
CLK=0;
DI=0;
yc(SD);
CLK=1;
//3脈沖
}
void READ_ADC0832()
{
CLK=0;//3脈沖 下降沿
yc(SD);
//------------------------
CLK=1;
yc(SD);
//4脈沖
CLK=0;
yc(SD);
ADC7=DO;
//------------------------
CLK=1;
yc(SD);
//5脈沖
CLK=0;
yc(SD);
ADC6=DO;
//------------------------
CLK=1;
yc(SD);
//6脈沖
CLK=0;
yc(SD);
ADC5=DO;
//------------------------
CLK=1;
yc(SD);
//7脈沖
CLK=0;
yc(SD);
ADC4=DO;
//------------------------
CLK=1;
yc(SD);
//8脈沖
CLK=0;
yc(SD);
ADC3=DO;
//------------------------
CLK=1;
yc(SD);
//9脈沖
CLK=0;
yc(SD);
ADC2=DO;
//------------------------
CLK=1;
yc(SD);
//10脈沖
CLK=0;
yc(SD);
ADC1=DO;
//------------------------
CLK=1;
yc(SD);
//11脈沖
CLK=0;
yc(SD);
ADC0=DO;
//------------------------
CS=1;
}
//=========================================
main()
{
float NUM_F;
char D4,D3,D2,D1;
while(1)
{
BEGIN_ADC0832();
READ_ADC0832();
NUM_F= ADC_BIT * 0.0196;
//==================
D4=NUM_F;
D3=(NUM_F*10)-(D4*10);
D2=(NUM_F*100)-(D4*100)-(D3*10);
D1=0;
//=============
smg_xs(D4*1000 + D3*100 + D2 *10 +D1);
//1 函數的形參 類型是什麼 int
//2 實參 類型 double
}
//等待
}
void yc(int n) //延時n毫秒
{
char i;
while(n--)
{
for(i=0;i<120;i++);
}
}