- #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++);
- }
- }
复制代码 |