- #include"reg52.h"
- #include"adc.h"
- #define GPIO_DIG P0
- #define uint unsigned int
- #define uchar unsigned char
- #define u8 unsigned char
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f};
- unsigned char displaydig[4];
- void delay(uint i)
- {
- while(i--);
- }
- void datapros()
- {
- uint temp;
- static u8 i;
- if(i==50)
- {
- i=0;
- temp=Read_AD_Value(0x94); //notice ???????
- }
- i++;
- displaydig[0]=smgduan[temp/1000];
- displaydig[1]=smgduan[temp%1000/100];
- displaydig[2]=smgduan[temp%1000%100/10];
- displaydig[3]=smgduan[temp%1000%100%10];
- }
- void DigDisplay()
- {
- u8 i;
- for(i=0;i<4;i++)
- {
- switch(i)
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;
- case(1):
- LSA=1;LSB=0;LSC=0; break;
- case(2):
- LSA=0;LSB=1;LSC=0; break;
- case(3):
- LSA=1;LSB=1;LSC=0; break;
- }
- GPIO_DIG=displaydig[i];
- delay(100);
- GPIO_DIG=0x00;
- }
- }
- void main()
- {
- while(1)
- {
- datapros();
- DigDisplay();
- }
- }
- #include"reg52.h"
- #include"adc.h"
- #include"intrins.h"
- #ifndef uchar
- #define uchar unsigned char
- #endif
- #ifndef uint
- #define uint unsigned int
- #endif
- sbit CS=P3^5;
- sbit CLK=P3^6;
- sbit DIN=P3^4;
- sbit DOUT=P3^7;
- void SPI_Write(uchar dat)
- {
- uchar i;
- CLK=0;
- for(i=0;i<8;i++)
- {
- DIN=dat>>7;
- dat<<=1;
- CLK=0; //????
-
- CLK=1;
-
- }
- }
- uint SPI_Read()
- {
- uchar i,dat=0;
- CLK=0;
- for(i=0;i<12;i++)
- {
- dat<<=1;
- CLK=1;
- CLK=0; //????????
- dat|=DOUT;
-
- }
- return dat;
- }
- uint Read_AD_Value(uchar cmd)
- {
- uint AD_Value;
- int i;
- CS=0;
- CLK=0;
- SPI_Write(cmd);
- for(i=6;i>0;i--);
- CLK=1; //????
- _nop_();
- _nop_();
- CLK=0;
- _nop_();
- _nop_();
- AD_Value=SPI_Read();
- //_nop_();
- CS=1;
- return AD_Value;
- }
- #ifndef __ADC_H__
- #define __ADC_H__
- #ifndef uchar
- #define uchar unsigned char
- #endif
- #ifndef uint
- #define uint unsigned int
- #endif
- uint Read_AD_Value(uchar cmd);
- uint SPI_Read();
- void SPI_Write(uchar dat);
- #endif
复制代码 |