|
鄙人在做電壓測(cè)量一個(gè)項(xiàng)目,用到了mcp3208。在測(cè)試1、2、3、4、5V時(shí)只有0、1、2示數(shù)正確。3、4、5分別顯示00、01、02。
網(wǎng)上的參考資料比較少,所以想問(wèn)問(wèn)大家這款12位高精度AD芯片你們用過(guò)嗎?
111.jpg (140.28 KB, 下載次數(shù): 30)
下載附件
2018-8-6 15:46 上傳
程序代碼我已經(jīng)刪減到最簡(jiǎn)潔了:
- #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;
- }
- }
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|