æºè½åå¤è·¯ä¸²è¡æ°æ®éé/ä¼ è¾æ¨¡åç设计
广å·å¸å
æºçµå·¥ç¨ç 究ä¸å¿ è¡èå
广å·å¸æ¹ç»çç©ç§ææéå
¬å¸ å
³ 强
å¼è¨
éççµåææ¯çä¸æåå±ï¼ç®å对åç§ç©çéçæ£æµåæ§å¶é½å¯å¾ä»¥å®ç°ãå¾®æºæ£æµæ§å¶ç³»ç»ä¸ä»
è¿ç¨å°èªå¤©èªç©ºãæºå¨äººææ¯ã纺ç»æºæ¢°ãé£åå å·¥çå·¥ä¸è¿ç¨æ§å¶ï¼èä¸å·²ç»æ为æ¥å¸¸åç§å®¶ç¨çµå¨å½ä¸ç主è¦ç»æé¨åãå
¶ä¸ï¼A/Dï¼æ¨¡ææ°å转æ¢ï¼è®¾å¤èµ·çååéè¦çä½ç¨ãè¿æ ·ï¼ä¸ä¸ªç³»ç»ä¸å°±ä¼éè¦æ´å¤çA/D设å¤ãä¸è¬æ¯ç¨æ©å±ä¸åæå¤åA/Dééå¡çæ¹æ³å»å®ç°ãå½æ¨¡æéè¾å°ææ¯æ¸©åº¦ãååçç¼åä¿¡å·åºåï¼éç¨æ»çº¿åA/Då¡å¹¶ä¸æ¯æåéãæç»æµçæ¹æ¡ãè¿éä»ç»ä¸ç§ä»¥AT89C2051åçæºä¸ºæ ¸å¿ï¼éç¨TLC2543L 12ä½ä¸²è¡A/D转æ¢å¨ææçéæ ·æ¨¡åï¼è¯¥æ¨¡åçéæ ·æ°æ®ç±åçæºä¸²å£ç»çµå¹³è½¬æ¢åéå°ä¸ä½æºï¼PCæºï¼ç串å£COM1æCOM2ï¼å½¢æä¸ç§ä¸²è¡æ°æ®éé串è¡æ°æ®ä¼ è¾çæ¹å¼ã
主è¦å
件åè½ä»ç»
AT89C2051åçæº
AT89C2051æ¯ATMELå
¬å¸æ¨åºçä¸ç§æ§è½ä»·æ ¼æ¯æé«ç 8ä½åçæºï¼å
¶æ令系ç»ä¸MCS-51ç³»åå®å
¨å
¼å®¹ãå¼èæåå¦å¾1æ示ã
TLC2543L串è¡A/D转æ¢å¨
TLC2543L éç¨SPI串è¡æ¥å£æ»çº¿ï¼SPI串è¡æ¥å£æ»çº¿ç±Motorolaå
¬å¸æåºï¼å®æ¯ä¸ç§ä¸çº¿åæ¥æ¥å£ï¼åå«ä¸ºåæ¥ä¿¡å·ãè¾å
¥ä¿¡å·åè¾åºä¿¡å·ãå¦å¤è¯çè¿æä¸æ ¹çé线ï¼åçæºéè¿çé线ééTLC2543Lãå
¶ä¸ï¼CLK为åæ¥æ¶éèå²ï¼CS为çé线ï¼DIN为åçæºçæ°æ®è¾åºåTLC2543Lçæ°æ®è¾å
¥çº¿ï¼DOUT为åçæºçæ°æ®è¾å
¥çº¿åTLC2543Lçæ°æ®è¾åºçº¿ãå¾2为TLC2543Læ¶åºå¾ãTLC2543L æ¯å
¨åå·¥çï¼å³æ°æ®çåéåæ¥æ¶å¯åæ¶è¿è¡ãå¦æåªæ¯å¯¹TLC2543Låæ°æ®ï¼åçæºå¯ä»¥ä¸¢å¼åæ¶è¯»å
¥çæ°æ®ï¼åä¹ï¼å¦æåªè¯»æ°æ®ï¼å¯ä»¥å¨å½ä»¤åèåï¼åå
¥ä»»ææ°æ®ãæ°æ®ä¼ é以åè为åä½ï¼å¹¶éç¨é«ä½å¨åçæ ¼å¼ã
模åéç¨TIå
¬å¸çTLC2543L 12ä½ä¸²è¡A/D转æ¢å¨ï¼ä½¿ç¨å¼å
³çµå®¹é次é¼è¿æ³å®æA/D转æ¢è¿ç¨ã串è¡è¾å
¥ç»æï¼è½å¤å¤§å¤§èç51ç³»ååçæºI/Oèµæºï¼ä¸ä»·æ ¼éä¸ãå
¶ç¹ç¹æï¼
(1) 11个模æè¾å
¥ééï¼
(2) 转æ¢æ¶é´10 sï¼
(3) 12ä½å辨çA/D转æ¢å¨ï¼
(4) 3è·¯å
ç½®èªæµè¯æ¹å¼ï¼
(5) éæ ·ç为66kbpsï¼
(6) 线æ§è¯¯å·®+1LSBï¼maxï¼
(7) æ转æ¢ç»æï¼EOCï¼è¾åºï¼
(8) å
·æåãåææ§è¾åºï¼
(9) å¯ç¼ç¨çMSBæLSBå导ï¼
(10)å¯ç¼ç¨çè¾åºæ°æ®é¿åº¦ã TLC2543Lçå¼èæåå¦å¾3æ示ãå¾3ä¸AIN0ï½AIN10为模æè¾å
¥ç«¯ï¼ 为çé端ï¼DIN 为串è¡æ°æ®è¾å
¥ç«¯ï¼DOUT为A/D转æ¢ç»æçä¸æ串è¡è¾åºç«¯ï¼EOC为转æ¢ç»æ端ï¼CLK为I/Oæ¶éï¼REF+为æ£åºåçµå端ï¼REF-为è´åºåçµå端ï¼VCC为çµæºï¼GND为å°ã
çµå¹³è½¬æ¢å¨MAX232C
MAX232C为RS-232æ¶åå¨ï¼ç®åæç¨ï¼å+5Vçµæºä¾çµï¼ä»
éå¤æ¥å 个çµå®¹å³å¯å®æä»TTLçµå¹³å°RS-232çµå¹³ç转æ¢ï¼å¼èæåå¦å¾4æ示ã
硬件设计
硬件çµè·¯å¦å¾5æ示ã
åçæºAT89C2051æ¯æ´ä¸ªç³»ç»çæ ¸å¿ï¼TLC2543L对è¾å
¥ç模æä¿¡å·è¿è¡ééï¼è½¬æ¢ç»æç±åçæºéè¿P3.5ï¼9èï¼æ¥æ¶ï¼ADè¯ççéééæ©åæ¹å¼æ°æ®éè¿P3.4ï¼8èï¼è¾å
¥å°å
¶å
é¨çä¸ä¸ª8ä½å°ååæ§å¶å¯åå¨ï¼åçæºééçæ°æ®éè¿ä¸²å£ï¼3ã2èï¼ç»MAX232C转æ¢æRS232çµå¹³åä¸ä½æºä¼ è¾ã
åçæºè½¯ä»¶è®¾è®¡
åçæºç¨åºä¸»è¦å
æ¬ä¸²è¡æ°æ®éé/ä¼ è¾æ¨¡åçç³»ç»ä¿¡æ¯ãééæ°ãééå¨æåé讯åè®®å®ä¹ï¼ä»¥åæ°æ®ééåä¼ è¾çæ ååç¨åºã
TLC2543Lçéééæ©åæ¹å¼æ°æ®ä¸º8ä½ï¼å
¶åè½ä¸ºï¼D7ãD6ãD5åD4ç¨æ¥éæ©è¦æ±è½¬æ¢çééï¼D7D6D5D4=0000æ¶éæ©0ééï¼D7D6D5D4=0001æ¶éæ©1ééï¼ä¾æ¬¡ç±»æ¨ï¼D3åD2ç¨æ¥éæ©è¾åºæ°æ®é¿åº¦ï¼æ¬ç¨åºéæ©è¾åºæ°æ®é¿åº¦ä¸º12ä½ï¼å³D3D2=00æD3D2=10ï¼D1ï¼D0éæ©è¾å
¥æ°æ®ç导åä½ï¼D1D0=00éæ©é«ä½å¯¼åã
TLC2543Lå¨æ¯æ¬¡I/Oå¨æ读åçæ°æ®é½æ¯ä¸æ¬¡è½¬æ¢çç»æï¼å½åç转æ¢ç»æå¨ä¸ä¸ä¸ªI/Oå¨æä¸è¢«ä¸²è¡ç§»åºã第ä¸æ¬¡è¯»æ°ç±äºå
é¨è°æ´ï¼è¯»åç转æ¢ç»æå¯è½ä¸åç¡®ï¼åºä¸¢å¼ã
æ°æ®ééç¨åºå¦ä¸ï¼
sbit DATAIN=P1^1;
sbit CLOCK=P1^0;
sbit DATAOUT=P1^2;
sbit CS=P1^3;
bit datain_a_bit0()
{ bit m=0;
DATAOUT=1;
m=DATAOUT;
DATAIN=0;
Nop();
CLOCK=1;
Nop();
CLOCK=0;
Return(m);
}
bit datain_a_bit1()
{ bit m=0;
DATAOUT=1;
m=DATAOUT;
DATAIN=1;
Nop();
CLOCK=1;
Nop();
CLOCK=0;
Return(m);
}
åçæºéè¿ç¼ç¨äº§ç串è¡æ¶éï¼å¹¶ææ¶åºåéä¸æ¥æ¶æ°æ®ä½ï¼å®æééæ¹å¼/ééæ°æ®çåå
¥å转æ¢ç»æç读åºï¼ç¨åºå¦ä¸ï¼
unsigned int Tlc2543L(unsigned char ch)
{unsigned char i,chch=0;<br/>unsigned int xdata xxx=0;<br/>unsigned int xdata y=0;<br/>CS=0;<br/>Chch=ch<<4;<br/>Y=chch;<br/>Y<<=8;<br/>I=0;<br/>While(I<12)<br/>{if((y&0x8000)==0)<br/>{if(datain_a_bit0()==0) xxx&=0xfffe;<br/>else xxx|=0x0001;<br/>if(I!=11) xxx<<=1;<br/>}
else
{if(datain_a_bit1()==0) xxx&=0xfffe;<br/>else xxx|=0x0001;<br/>if(I!=11) xxx<<=1;<br/>}
y<<=1;
I+=1;
}
CS=1;
Return(xxx);
}
串è¡æ°æ®ä¼ è¾æ¨¡åå
æ¬ä¸²è¡å£åå§ååç¨åºåæ°æ®ä¼ è¾åç¨åºï¼ååç¨åºåå«å¦ä¸ãå
¶ä¸æ°æ®ä¼ è¾éç¨æ¥è¯¢æ¹å¼ï¼ä¹å¯ä»¥æ¹ä¾¿å°æ¹ä¸ºä¸ææ¹å¼ã
Void rs232init()
{TMOD=0x20;<br/>TH1=0xfd;<br/>TR1=1;<br/>SCON=0x50;<br/>}
void receandtran()
{unsigned char da;<br/>while(!RI)<br/>RI=0;<br/>Da=SBUF;<br/>SBUF==da;<br/>While(!TI);<br/>TI=0;<br/>}
ä¸ä½æºæ¥æ¶æ°æ®æç¨Cè¯è¨ç¨åºå
æ¬åå§ååç¨åºåæ¥æ¶åç¨åºãååç¨åºåå«å¦ä¸ï¼
void cominit(void)
{
outportb(0x3fb,0x80);
outportb(0x3f8,0x18); /ä¸åçæºæ³¢ç¹çä¸è´ä¸º9600bps*/
outportb(0x3f9,0x00);
outportb(0x3fb,0x03); /8ä½æ°æ®ä½ï¼1ä½åæ¢ä½,æ å¥å¶æ ¡éª*/
outportb(0x3fc,0x03); /*Modemæ§å¶å¯åå¨è®¾ç½®,使DTRåRTSè¾åºææ*/
outportb(0x3f9,0x00); /*设置ä¸æå
许å¯åå¨ï¼ç¦æ¢ä¸åä¸æ*/
}
void data_rece(void) /*æ¥è¯¢æ¹å¼æ¥æ¶æ°æ®åç¨åº*/
{
while(!kbhit())
{
while(!(inportb(0x3fd)&0x01));/*è¥æ¥æ¶å¯åå¨ä¸ºç©ºï¼åçå¾
*/
printf("%x ",inportb(0x3f8)); /*读åç»æ并æ¾ç¤º*/
}
getch();
}
æºè½å串è¡éé/ä¼ è¾æ¨¡åå¨PCR仪ä¸çåºç¨
å¨PCR仪ççµè·¯è®¾è®¡ä¸ï¼å éè¦æ£æµçä¿¡å·å¾å¤ï¼å
æ¬ççç温度æ£æµï¼æ£çå¨ç温度æ£æµï¼è
ä½å
é¨ç温度æ£æµï¼æ°æµç温度æ£æµï¼å
ä¿¡å·çæ£æµççï¼ä¸ºäºç®åçµè·¯ï¼è约ææ¬ï¼åå°ä½ç§¯ï¼å¨éæ©A/D转æ¢çµè·¯æ¶éç¨äºSPIæ»çº¿çTLC2543ï¼è¯¥è¯çæå¤è¾¾11è·¯ç模æä¿¡å·è¾å
¥ç«¯ï¼å®å
¨æ»¡è¶³PCR仪çµè·¯è®¾è®¡çéè¦ï¼ä¸ä¸ªè¯çæ¢è½å®ææ£æµå¤ä¸ªä¿¡å·çåè½ï¼åè½è约åçæºçèµæºï¼å¾6æ¯å
¶ç¡¬ä»¶åçå¾ã
ç»è®º
æ¬ææè¿°çæºè½å串è¡æ°æ®æ¨¡åï¼å¯ç´æ¥ç¨äºä»»ä½å¾®æºæ§å¶åæ£æµç³»ç»ä¸ä»¥å代åæ¥ç模æ°è½¬æ¢è®¾è®¡ãç»è¿å®è·µæ£éªï¼è¯¥æ¨¡ååèä½ãéæ ·ç²¾åº¦é«ãå¯é æ§å¥½ãæ¥å£ç®ä¾¿ï¼æå¾é«çå®ç¨ä»·å¼ã该æºè½æ¨¡åç软件å硬件æååºç¨äºçå½ç§å¦ä»ªå¨âç循ç¯ä»ªâç设计åå®è·µä¸ï¼ä½¿ç¨æ¹ä¾¿ï¼ç®åå¯è¡ï¼è约ææ¬ï¼è½å¤æ»¡è¶³å¤§å¤æ°æ°æ®éæ ·çåºç¨åºåã
温馨提示:内容为网友见解,仅供参考