鄙人在做電壓測量一個項目,用到了mcp3208。在測試1、2、3、4、5V時只有0、1、2示數正確。3、4、5分別顯示00、01、02。
網上的參考資料比較少,所以想問問大家這款12位高精度AD芯片你們用過嗎?
程序代碼我已經刪減到最簡潔了:
- #include "reg51.h"
- #include "stdio.h"
- sbit ADCS = P1^3;
- sbit DIN = P1^2;
- sbit DOUT = P1^1;
- sbit CLK = P1^0;
- float getdata;
- float t;
- char sum[12];
- unsigned char s[]="Hello";
- void Output_Control(char TempChar)
- {
- unsigned int Mask = 0x10;
- unsigned char Count;
- for(Count = 0;Count<5;Count++)
- {
- DIN = 0;
- if(TempChar&Mask)
- {
- DIN = 1;
- }
- CLK = 1;
- Mask >>= 0x01;
- CLK = 0;
- }
- }
- float trans(char a[12]){
- int i, num = 0;
- for(i=11; i>=0; i--)
- {
- num*=2;
- num+=a[i]-'0';
- }
- return num;
- }
- float Input_Data()
- {
- unsigned char Count;
- CLK = 1;
- CLK = 0;
- for(Count = 0;Count <12;Count++)
- {
- sum[Count]=DOUT;
- CLK = 1;
- CLK = 0;
- }
- return(trans(sum));
- }
- void main(void)
- {
- ADCS = 1;
- while(1)
- {
- ADCS = 0;
- Output_Control((char)0x18);
- getdata=Input_Data();
- ADCS = 1;
- t=(5*getdata/8191);
- P2=t;
- }
- }
復制代碼
|