AT89S51ºÍADC0809¹¹³ÉµÄÊý×Öµçѹ±íµç·ÔÀíͼ
ÀûÓõ¥Æ¬»úAT89S51ÓëADC0809Éè¼ÆÒ»¸öÊý×Öµçѹ±í£¬Äܹ»²âÁ¿0£5VÖ®¼äµÄÖ±
Á÷µçѹֵ£¬ËÄλÊýÂëÏÔʾ£¬µ«ÒªÇóʹÓõÄÔªÆ÷¼þÊýÄ¿×îÉÙ¡£
3£® ϵͳ°åÉÏÓ²¼þÁ¬Ïß
a) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP1.0£P1.7Óë¡°¶¯Ì¬ÊýÂëÏÔʾ¡±ÇøÓòÖеÄABCDEFGH¶Ë
¿ÚÓÃ8оÅÅÏßÁ¬½Ó¡£ b) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP2.0£P2.7Óë¡°¶¯Ì¬ÊýÂëÏÔʾ¡±ÇøÓòÖеÄ
S1S2S3S4S5S6S7S8¶Ë¿ÚÓÃ8оÅÅÏßÁ¬½Ó¡£
c) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP3.0Óë¡°Ä£Êýת»»Ä£¿é¡±ÇøÓòÖеÄST¶Ë×ÓÓõ¼ÏßÏàÁ¬
½Ó¡£ d) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP3.1Óë¡°Ä£Êýת»»Ä£¿é¡±ÇøÓòÖеÄOE¶Ë×ÓÓõ¼ÏßÏàÁ¬
½Ó¡£
e) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP3.2Óë¡°Ä£Êýת»»Ä£¿é¡±ÇøÓòÖеÄEOC¶Ë×ÓÓõ¼ÏßÏà
Á¬½Ó¡£ f) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP3.3Óë¡°Ä£Êýת»»Ä£¿é¡±ÇøÓòÖеÄCLK¶Ë×ÓÓõ¼ÏßÏà
Á¬½Ó¡£ g) °Ñ¡°Ä£Êýת»»Ä£¿é¡±ÇøÓòÖеÄA2A1A0¶Ë×ÓÓõ¼ÏßÁ¬½Óµ½¡°µçÔ´Ä£¿é¡±ÇøÓòÖеÄGND
¶Ë×ÓÉÏ¡£ h) °Ñ¡°Ä£Êýת»»Ä£¿é¡±ÇøÓòÖеÄIN0¶Ë×ÓÓõ¼ÏßÁ¬½Óµ½¡°Èý·¿Éµ÷µçѹģ¿é¡±ÇøÓòÖÐ
µÄVR1¶Ë×ÓÉÏ¡£ i) °Ñ¡°µ¥Æ¬»úϵͳ¡±ÇøÓòÖеÄP0.0£P0.7ÓÃ8оÅÅÏßÁ¬½Óµ½¡°Ä£Êýת»»Ä£¿é¡±ÇøÓò
ÖеÄD0D1D2D3D4D5D6D7¶Ë×ÓÉÏ¡£ 4£® ³ÌÐòÉè¼ÆÄÚÈÝ
i. ÓÉÓÚADC0809ÔÚ½øÐÐA/Dת»»Ê±ÐèÒªÓÐCLKÐźţ¬¶ø´ËʱµÄADC0809µÄCLKÊǽÓÔÚ
AT89S51µ¥Æ¬»úµÄP3.3¶Ë¿ÚÉÏ£¬Ò²¾ÍÊÇÒªÇó´ÓP3.3Êä³öCLKÐźŹ©ADC0809ʹÓá£Òò´Ë²úÉúCLKÐźŵķ½·¨¾ÍµÃÓÃÈí¼þÀ´²úÉúÁË¡£ ii. ÓÉÓÚADC0809µÄ²Î¿¼µçѹVREF£½VCC£¬ËùÒÔת»»Ö®ºóµÄÊý¾ÝÒª¾¹ýÊý¾Ý´¦Àí£¬ÔÚÊýÂë¹Ü
ÉÏÏÔʾ³öµçѹֵ¡£Êµ¼ÊÏÔʾµÄµçѹֵ (D/256*VREF) 5£® »ã±àÔ´³ÌÐò £¨ÂÔ£©
6£® CÓïÑÔÔ´³ÌÐò
#include
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,0,0,0,0}; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned char i;
sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^2; sbit CLK=P3^3;
void main(void) { ST=0; OE=0; ET0=1; ET1=1; EA=1;
TMOD=0x12; TH0=216; TL0=216;
TH1=(65536-4000)/256; TL1=(65536-4000)%6; TR1=1; TR0=1; ST=1; ST=0; while(1) {
if(EOC==1) { OE=1;
getdata=P0; OE=0;
temp=getdata*235; temp=temp/128; i=5;
dispbuf[0]=10; dispbuf[1]=10; dispbuf[2]=10; dispbuf[3]=10; dispbuf[4]=10; dispbuf[5]=0; dispbuf[6]=0; dispbuf[7]=0; while(temp/10) {
dispbuf[i]=temp; temp=temp/10; i++; }
dispbuf[i]=temp; ST=1; ST=0; }