åºäº51åçæºç温度æµéç³»ç»
æãè¦: åçæºå¨æ£æµåæ§å¶ç³»ç»ä¸å¾å°å¹¿æ³çåºç¨, 温度åæ¯ç³»ç»å¸¸éè¦æµéãæ§å¶åä¿æçä¸ä¸ªéã æ¬æä»ç¡¬ä»¶å软件两æ¹é¢ä»ç»äºAT89C2051åçæºæ¸©åº¦æ§å¶ç³»ç»ç设计ï¼å¯¹ç¡¬ä»¶åçå¾åç¨åºæ¡å¾ä½äºç®æ´çæè¿°ã
å
³é®è¯: åçæºAT89C2051;æ¸©åº¦ä¼ æå¨DS18B20;温度;æµé
å¼è¨
åçæºå¨çµå产åä¸çåºç¨å·²ç»è¶æ¥è¶å¹¿æ³,并ä¸å¨å¾å¤çµå产åä¸ä¹å°å
¶ç¨å°æ¸©åº¦æ£æµå温度æ§å¶ã为æ¤å¨æ¬æä¸ä½è
设计äºåºäºatmelå
¬å¸çAT89C2051ç温度æµéç³»ç»ãè¿æ¯ä¸ç§ä½ææ¬çå©ç¨åçæºå¤ä½I/Oå£å®ç°ç温度æ£æµçµè·¯, 该çµè·¯é常ç®å, æäºå®ç°, 并ä¸éç¨äºå ä¹ææç±»åçåçæºã
ä¸.ç³»ç»ç¡¬ä»¶è®¾è®¡
ç³»ç»ç硬件ç»æå¦å¾1æ示ã
1.1æ°æ®éé
æ°æ®ééçµè·¯å¦å¾2æ示, ç±æ¸©åº¦ä¼ æå¨DS18B20éé被æ§å¯¹è±¡çå®æ¶æ¸©åº¦, æä¾ç»AT89C2051çP3.2å£ä½ä¸ºæ°æ®è¾å
¥ãå¨æ¬æ¬¡è®¾è®¡ä¸æ们ææ§ç对象为æå¤å®¤æ¸©ãå½ç¶ä½ä¸ºæ¹è¿æ们å¯ä»¥æä¼ æå¨ä¸çµè·¯æ¿å离ï¼ç±æ°æ®çº¿ç¸è¿è¿è¡é讯ï¼ä¾¿äºæµéå¤ç§å¯¹è±¡ã
DS18B20æ¯DALLASå
¬å¸ç产çä¸çº¿å¼æ°åæ¸©åº¦ä¼ æå¨ï¼å
·æ3å¼èTOï¼92å°ä½ç§¯å°è£
å½¢å¼ï¼æ¸©åº¦æµéèå´ä¸ºï¼55âï½ï¼125â,å¯ç¼ç¨ä¸º9ä½ï½12ä½A/D转æ¢ç²¾åº¦ï¼æµæ¸©å辨çå¯è¾¾0.0625âï¼è¢«æµæ¸©åº¦ç¨ç¬¦å·æ©å±ç16ä½æ°åéæ¹å¼ä¸²è¡è¾åºï¼æ¯æ3Vï½5.5Vççµåèå´ï¼ä½¿ç³»ç»è®¾è®¡æ´çµæ´»ãæ¹ä¾¿ï¼å
¶å·¥ä½çµæºæ¢å¯å¨è¿ç«¯å¼å
¥ï¼ä¹å¯éç¨å¯ççµæºæ¹å¼äº§çï¼å¤ä¸ªDS18B20å¯ä»¥å¹¶èå°3æ ¹æ2æ ¹çº¿ä¸ï¼CPUåªéä¸æ ¹ç«¯å£çº¿å°±è½ä¸è¯¸å¤DS18B20éä¿¡ï¼å ç¨å¾®å¤çå¨ç端å£è¾å°ï¼å¯èç大éçå¼çº¿åé»è¾çµè·¯ã以ä¸ç¹ç¹ä½¿DS18B20é常éç¨äºè¿è·ç¦»å¤ç¹æ¸©åº¦æ£æµç³»ç»ãå辨ç设å®ï¼åç¨æ·è®¾å®çæ¥è¦æ¸©åº¦åå¨å¨EEPROMä¸ï¼æçµåä¾ç¶ä¿åãDS18B20使çµåãç¹æ§ææ´å¤çéæ©ï¼è®©æ们å¯ä»¥æ建éåèªå·±çç»æµçæµæ¸©ç³»ç»ãå¦å¾2æ示DS18B20ç2èDQ为æ°åä¿¡å·è¾å
¥/è¾åºç«¯ï¼1èGND为çµæºå°ï¼3èVDD为å¤æ¥ä¾çµçµæºè¾å
¥ç«¯ã
AT89C2051ï¼ä»¥ä¸ç®ç§°2051ï¼æ¯ä¸æ8051å
¼å®¹çåçæºå¾®æ§å¨ï¼ä¸IntelçMCS-51å®å
¨å
¼å®¹ï¼å
è2Kçå¯ç¨åºåFlashåå¨ä½ï¼å
é¨æ128Båèçæ°æ®åå¨å¨ç©ºé´ï¼å¯ç´æ¥æ¨å¨LEDï¼ä¸8051å®å
¨ç¸åï¼æ15个å¯ç¨åºåçI/Oç¹ï¼åå«æ¯P1端å£ä¸P3端å£ï¼å°äºP3.6ï¼ã
1.2æ¥å£çµè·¯
å¾2 åçæº2051ä¸æ¸©åº¦ä¼ æå¨DS18B20çè¿æ¥å¾
æ¥å£çµè·¯ç±ATMELå
¬å¸ç2051åçæºãULN2003è¾¾æé¡¿è¯çã4511BCDè¯ç å¨ã串è¡EEPROM24C16ï¼ä¿åç³»ç»åæ°ï¼ãMAX232ãæ°ç 管åå¤å´çµè·¯ææ, åçæºä»¥å¹¶è¡éä¿¡æ¹å¼ä»P1.0ï½P1.7å£è¾åºæ§å¶ä¿¡å·,éè¿4511BCDè¯ç å¨è¯ç ï¼ç¨2个å
±é´æLEDéææ¾ç¤ºæ¸©åº¦çåä½ã个ä½ã
串è¡EEPROM24C16æ¯æ åI2Cè§æ ¼ä¸åªè¦ä¸¤æ ¹å¼èå°±è½è¯»åãç±äºåçæº2051çP1æ¯ä¸ä¸ªååçI/O端å£ï¼æ以å¨æ们å¨è®¾è®¡ä¸å°P1端å£å½æè¾åºç«¯å£ç¨ãç±å¾2å¯ç¥ï¼P1.7ä½ä¸ºä¸²æ§çæ¶éè¾åºä¿¡å·ä¸24C16ç第6èç¸æ¥ï¼P1.6åä½ä¸ºä¸²è¡æ°æ®è¾åºæ¥å°24C16ç第5èãP1. 4åP1.5åä½ä¸ºä¸¤ä¸ªæ°ç 管çä½éä¿¡å·æ§å¶ï¼å¨P1.4=1æ¶ï¼éä¸ç¬¬ä¸ä¸ªæ°ç 管ï¼ä¸ªä½ï¼ï¼P1.5=1æ¶ï¼éä¸ç¬¬äºä¸ªæ°ç 管ï¼åä½ï¼ãP1.0ï½P1.3çè¾åºä¿¡å·æ¥å°è¯ç å¨4511ä¸ä½ä¸ºæ°ç 管çæ¾ç¤ºãæ¤å¤ï¼ç±äºåçæº2051çP3端å£æç¹æ®çåè½ï¼P3.0ï¼RXDï¼ä¸²è¡è¾å
¥ç«¯å£ï¼P3.1ï¼TXDï¼ä¸²è¡è¾åºç«¯å£ï¼P3.2ï¼INTOï¼å¤é¨ä¸æ0ï¼P3.3ï¼INT1ï¼å¤é¨ä¸æ1P3.4ï¼ï¼T0ï¼ å¤é¨å®æ¶/计æ°è¾å
¥ç¹ï¼P3.5ï¼T1ï¼å¤é¨å®æ¶/计æ°è¾å
¥ç¹ãç±å¾2å¯ç¥ï¼P3.0åP3.1ä½ä¸ºä¸MAX232串è¡éä¿¡çæ¥å£ï¼P3.2åP3.3ä½ä¸ºä¸æä¿¡å·æ¥å£ï¼P3.4åP3.5ä½ä¸ºå¤é¨å®æ¶/è®°æ°è¾å
¥ç¹ãP3.7ä½ä¸ºä¸ä¸ªèå²è¾åºï¼æ§å¶åå
äºæ管ç亮çã
ç±äºå¨çµè·¯ä¸éç¨çå
±é´æçLEDæ°ç 管ï¼æ以å¨è®¾è®¡çµè·¯æ¶å äºä¸ä¸ªè¾¾æé¡¿çµè·¯ULN2003对信å·è¿è¡æ¾å¤§ï¼äº§ç足å¤å¤§ççµæµé©±å¨æ°ç 管æ¾ç¤ºãç±äº4511åªè½è¿è¡BCDåè¿å¶è¯ç ï¼åªè½è¯å°0è³9ï¼æ以å¨è¿éæ们å©ç¨4511è¯ç è¾åºæ们æéè¦ç温度ã
1.3æ¥è¦çµè·¯ç®ä»
å¾3 温度å¨ä¸æ®µæ°ç 管ä¸æ¾ç¤ºè¿æ¥å¾
æ¬æä¸æ设计çæ¥è¦çµè·¯è¾ä¸ºç®åï¼ç±ä¸ä¸ªèªæéè¡åçè鸣å¨ï¼åªè¦å¨è鸣å¨ä¸¤ç«¯å ä¸è¶
è¿3Vççµåï¼è鸣å¨å°±ä¼å«ä¸ªä¸åï¼åä¸ä¸ªåå
äºæ管ç»æï¼å¦å¾3æ示ï¼ãå¨è¿æ¬¡è®¾è®¡ä¸è鸣å¨æ¯éè¿ULN2003çµæµæ¾å¤§ICæ¥æ§å¶ãå¨æ们æè¦æ±ç温度达å°ä¸å®çä¸çæè
ä¸çæ¶ï¼å¨æä¸æ们设置çä¸ç温度æ¯45âï¼ä¸ç温度æ¯5âï¼ï¼æ¥è¦çµè·¯å¼å§å·¥ä½ï¼ä¸»è¦ç¨åºè®¾è®¡å¦ä¸ï¼
main()//主å½æ°
{unsigned char i=0; <br/>unsigned int m,n; <br/>while(1) <br/>{i=ReadTemperature();//读温度}
if(i>0 && i<=10) //å¦æ温度å¨0å°10度ä¹é´ç´æ¥ç»ä¸æ®µæ°ç 管èµå¼
{P1=designP1[i];}
else//å¦æ温度大äº10度
{m=i%10;//å
ç»ç¬¬ä¸ä¸ªä¸æ®µæ°ç 管èµå¼ <br/>D1=1; <br/>D2=0; <br/>P1=designP1[m]; <br/>n=i/10;//åç»ç¬¬äºä¸ªä¸æ®µæ°ç 管èµå¼ <br/>D1=0; <br/>D2=1; <br/>P1=designP1[n]; <br/>if(n>=4&&m>=5)%%(m<=5)//å¤æ温度çåå¼èå´ï¼å¦æ大äº45æå°äº5度ï¼åè鸣å¨å«ï¼åå
äºæ管éªç <br/>{ int a,b; <br/>Q1=1;//è鸣å¨å« <br/>for(a=0;a<1000;a++)//åå
äºæ管éªç <br/>for(b=0;b<1000;b++) <br/>Q2=1; <br/>for(a=0;a<1000;a++) <br/>for(b=0;b<1000;b++) <br/>Q2=0;}}}
温馨提示:答案为网友推荐,仅供参考