通過SPI用51單片機和TLC2543進行AD轉換讀取電壓值
單片機源程序如下:
- #include "reg52.h"
- #include"intrins.h"
- //void Delay500ms(); //@11.0592MHz
- unsigned int AD_Read() ;
- //void Delay10us(); //@11.0592MHz
- //void Delay3000ms(); //@11.0592MHz
- sbit SCK= P1^0;
- sbit RES_CS= P1^1;
- sbit DI = P1^2;
- sbit DO = P1^3;
- code unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9段碼顯示
- int main()
- {
- unsigned char j,a,aa,aaa,aaaa;
- unsigned int advalue=0;
- float value;
- while(1)
- {
- advalue=AD_Read();
- // value=(advalue*5)/65536.0;
- // advalue=value*10000;
- a=advalue%10;
- advalue=advalue/10;
- aa=advalue%10;
- advalue=advalue/10;
- aaa=advalue%10;
- aaaa=advalue/10;
- P3=0xfe;
- P2=~seg[aaaa];
- for(j=0;j<100;j++);
- P3=0xfd;
- P2=~seg[aaa];
- for(j=0;j<100;j++);
- P3=0xfb;
- P2=~seg[aa];
- for(j=0;j<100;j++);
- P3=0xf7;
- P2=~seg[a];
- for(j=0;j<100;j++);
- }
- }
- unsigned int AD_Read()
- {
- unsigned char i,j,command=0x0c;
- unsigned int value;
- RES_CS = 1;
- _nop_();
- SCK = 0;
- _nop_();
- RES_CS = 0;
- _nop_();
- for(i=8;i>0;i--)
- {
- command <<= 1;
- DI = CY; //CY為狀態寄存器進位標志位,將command的最高位賦給DI
- _nop_();
- SCK = 1;
- _nop_();
- SCK = 0;
- _nop_();
- value=value<<1;
- j=DO;
- if(j==1)
- {
- value|=0x01;
- }
- }
- for(i=8;i>0;i--)
- {
- _nop_();
- SCK = 1;
- _nop_();
- SCK = 0;
- _nop_();
- value=value<<1;
- j=DO;
- if(j==1)
- {
- value|=0x01;
- }
- }
- return value;
- }
復制代碼
所有資料51hei提供下載:
TLC2543 SPI通信.zip
(31.82 KB, 下載次數: 17)
2019-1-26 10:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|