|
8路8位串行AD TLC0838与51系列单片机的接口程序,可多片并联,共用时钟线与数据线适用于多路采集,本程序中使用两片可采集16路
完整代码下载:
0838.rar
(722 Bytes, 下载次数: 33)
- void main(void)
- {
- Byte data1;
- data1=AD_0838(0,2);
- while(1);
- }
- /**********************************************************
- 目的:运用TLC0838,输入通道值,读取AD转换值
- 输入参数:1、通道值TDZ
- 输出参数:1、AD转换结果AD_JG
- 相关管脚:1、ADCS1=P1^3 第一个0838-AD片选 2、ADCS2=P1^0 第二个0838-AD片选
- 3、ADCLK=P1^1 0832-AD时钟 4 、ADIO=P1^4 0832-AD数据
- */
- Byte AD_0838(Byte TDZ,Byte Number)
- {
- Byte Bit[8];
- Byte TDZ_MID;
- Byte i;
- Byte AD_JG=0x00;
- Bit[0]=0x01;
- Bit[1]=0x02;
- Bit[2]=0x04;
- Bit[3]=0x08;
- Bit[4]=0x10;
- Bit[5]=0x20;
- Bit[6]=0x40;
- Bit[7]=0x80;
- switch(TDZ)
- {
- case 0 :TDZ_MID=0x18;break;
- case 1 :TDZ_MID=0x1c;break;
- case 2 :TDZ_MID=0x19;break;
- case 3 :TDZ_MID=0x1d;break;
- case 4 :TDZ_MID=0x1a;break;
- case 5 :TDZ_MID=0x1e;break;
- case 6 :TDZ_MID=0x1b;break;
- case 7 :TDZ_MID=0x1f;break;
- }
- switch(Number)
- {
- case 1:ADCS1=1;break;
- case 2:ADCS2=1;break;
- }
- RS_ADIO=0;
- CM8880CLK_ADCLK=0;
- switch(Number)
- {
- case 1:ADCS1=0;break;
- case 2:ADCS2=0;break;
- }
- for(i=5;i>0;i--)
- {
- RS_ADIO=TDZ_MID&Bit[i-1];
- AD_0838_Pulse();
- }
- CM8880CLK_ADCLK=1;
- for(i=8;i>0;i--)
- {
- AD_0838_Pulse();
- if(RS_ADIO)AD_JG|=Bit[i-1];
- }
- switch(Number)
- {
- case 1:ADCS1=1;break;
- case 2:ADCS2=1;break;
- }
- return AD_JG;
- }
- void AD_0838_Pulse(void)
- {
- Byte i;
- CM8880CLK_ADCLK=1; //get a pulse about 52 us
- for(i=0;i<4;i++)
- {
- _nop_();
- }
- CM8880CLK_ADCLK=0;
- for(i=0;i<4;i++)
- {
- _nop_();
- }
- }
复制代码
|
|