找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4384|回復(fù): 0
收起左側(cè)

TLC0838 8路AD 51單片機(jī)程序分享

[復(fù)制鏈接]
ID:127902 發(fā)表于 2016-6-23 21:58 | 顯示全部樓層 |閱讀模式
8路8位串行AD TLC0838與51系列單片機(jī)的接口程序,可多片并聯(lián),共用時(shí)鐘線與數(shù)據(jù)線適用于多路采集,本程序中使用兩片可采集16路 0.png


完整代碼下載: 0838.rar (722 Bytes, 下載次數(shù): 33)




  1. void main(void)
  2. {
  3. Byte data1;
  4. data1=AD_0838(0,2);
  5. while(1);
  6. }

  7. /**********************************************************
  8. 目的:運(yùn)用TLC0838,輸入通道值,讀取AD轉(zhuǎn)換值
  9. 輸入?yún)?shù):1、通道值TDZ
  10. 輸出參數(shù):1、AD轉(zhuǎn)換結(jié)果AD_JG
  11. 相關(guān)管腳:1、ADCS1=P1^3  第一個(gè)0838-AD片選   2、ADCS2=P1^0    第二個(gè)0838-AD片選
  12.           3、ADCLK=P1^1  0832-AD時(shí)鐘         4 、ADIO=P1^4    0832-AD數(shù)據(jù)
  13. */
  14. Byte AD_0838(Byte TDZ,Byte Number)
  15. {
  16.         Byte Bit[8];
  17.         Byte TDZ_MID;
  18.         Byte i;
  19.         Byte AD_JG=0x00;
  20.         Bit[0]=0x01;
  21.         Bit[1]=0x02;
  22.         Bit[2]=0x04;
  23.         Bit[3]=0x08;
  24.         Bit[4]=0x10;
  25.         Bit[5]=0x20;
  26.         Bit[6]=0x40;
  27.         Bit[7]=0x80;
  28.         switch(TDZ)
  29.         {
  30.                 case 0   :TDZ_MID=0x18;break;
  31.                         case 1   :TDZ_MID=0x1c;break;
  32.                                 case 2   :TDZ_MID=0x19;break;
  33.                                         case 3   :TDZ_MID=0x1d;break;
  34.                                                 case 4   :TDZ_MID=0x1a;break;
  35.                                                         case 5   :TDZ_MID=0x1e;break;
  36.                                                                 case 6   :TDZ_MID=0x1b;break;
  37.                                                                         case 7   :TDZ_MID=0x1f;break;
  38.         }
  39.         switch(Number)
  40.         {
  41.         case 1:ADCS1=1;break;
  42.         case 2:ADCS2=1;break;
  43.         }
  44.         RS_ADIO=0;
  45.         CM8880CLK_ADCLK=0;
  46.         switch(Number)
  47.         {
  48.         case 1:ADCS1=0;break;
  49.         case 2:ADCS2=0;break;
  50.         }
  51.         for(i=5;i>0;i--)
  52.         {
  53.                 RS_ADIO=TDZ_MID&Bit[i-1];
  54.                 AD_0838_Pulse();
  55.         }
  56.         CM8880CLK_ADCLK=1;
  57.         for(i=8;i>0;i--)
  58.         {
  59.                 AD_0838_Pulse();
  60.                 if(RS_ADIO)AD_JG|=Bit[i-1];
  61.         }
  62.         switch(Number)
  63.         {
  64.         case 1:ADCS1=1;break;
  65.         case 2:ADCS2=1;break;
  66.         }
  67.         return AD_JG;
  68. }

  69. void AD_0838_Pulse(void)
  70. {
  71.         Byte i;
  72.         CM8880CLK_ADCLK=1;       //get a pulse about 52 us
  73.         for(i=0;i<4;i++)
  74.         {
  75.         _nop_();
  76.         }
  77.         CM8880CLK_ADCLK=0;
  78.         for(i=0;i<4;i++)
  79.         {
  80.         _nop_();
  81.         }
  82. }
復(fù)制代碼






相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表