- #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++);
- }
- }
復制代碼 |