ÖÇÄÜÒÇÆ÷ʵÑéÖ¸µ¼Êé V9.2

5.È»ºóÑ¡¡°MaxBuad¡±ÖеIJ¨ÌØÂÊ£¬Ò²¿ÉÒÔѡĬÈÏÖµ¡£

6.µã»÷¡°ÏÂÔØ/±à³Ì¡±°´Å¥£¬È»ºó°´Ï°å×ÓÉϵĺìÉ«ÏÂÔØ¼ü£¬½øÐÐÎļþÏÂÔØ¡£ 7.ÉԵȼ¸Ã룬¼´¿ÉÏÂÔØÍê³É,Èçͼ£º

17/32

ʵÑéÒ»Êý¾Ý²É¼¯ÏµÍ³µÄÉè¼ÆÓëʵÏÖ

Ò»¡¢ÊµÑéÄ¿µÄ

ѧ»áÓÃ51µ¥Æ¬»úÄ£ÄâI2C×ÜÏß½Ó¿Ú£¬ÊµÏÖÓëPCF8573 8λAD/DAת»¯Æ÷µÄ½Ó¿Ú£¬Ñ§»áÓõ¥Æ¬»úʵÏÖÊý¾Ý²É¼¯µÄ·½·¨¡£ ¶þ¡¢ÊµÑéÉ豸¼°Æ÷¼þ

PC»ú һ̨

51µ¥Æ¬»úʵÑé°åһ̨£¨º¬PCF8951оƬ£© ÍòÓÃ±í¡¢Ê¾²¨Æ÷ Èý¡¢ÊµÑéÄÚÈÝ

±àдһ¶Î³ÌÐò£¬²É¼¯PCF8573ËÄ·ADͨµÀµÄÄ£ÄâÐźÅÖµ£¬½«²É¼¯µÄµçѹֵÓÃËÄλÊýÂë¹ÜÏÔʾ³öÀ´¡£

ËÄ¡¢ÊµÑéµç·ԭÀíͼ

AIN0-AIN3Ϊ4·ģÄâÊäÈëÐźţ¬Ê±ÖÓÐźÅSCL½ÓÖÁµ¥Æ¬»úP36£¬Êý¾ÝÏßSDA½ÓÖÁP37¡£ Îå¡¢²Î¿¼Àý³Ì

#include \#include #define uchar unsigned char #define uint unsigned int

#define PCF8591 0x90 //PCF8591 µØÖ· #define THCO 0xf8 //11.0592MHZ¾§Õñ #define TLCO 0xcb //¶¨Ê±2msʱ¼ä³£ÊýÖµ unsigned char Data_Buffer[4]={1,2,3,4}; uchar

code

Duan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};

sbit P24=P2^4; sbit P25=P2^5; sbit P26=P2^6;

18/32

//ËĸöÊýÂë¹ÜµÄλÂë¿Ú¶¨Òå

sbit P27=P2^7; bit flag=0;

bitDACconversion(unsigned char sla,unsigned char c, unsigned char Val); bitISendByte(unsigned char sla,unsigned char c); unsigned char IRcvByte(unsigned char sla); /******************************/ void main(void) //Ö÷³ÌÐò {

unsignedint v;

unsigned char AD_CHANNEL=0; unsignedint D[5]={0,0,0,0,255};

TMOD=0x11; TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

//ÉèÖö¨Ê±Æ÷0¹¤×÷ģʽ,16λ¼ÆÊýģʽ

//Æô¶¯¶¨Ê±Æ÷ //ʹÄܶ¨Ê±Æ÷ÖÐ¶Ï //¿ª×ÜÖжÏ

while(1) { if(flag==1) {flag=0;

if(++AD_CHANNEL>4) AD_CHANNEL=0; switch(AD_CHANNEL) {

case 0: ISendByte(PCF8591,0x40);

D[AD_CHANNEL]=IRcvByte(PCF8591); //ADC3 Ä£Êýת»»4

break;

case 1: ISendByte(PCF8591,0x41);

D[AD_CHANNEL]=IRcvByte(PCF8591); //ADC0 Ä£Êýת»»1

case 2: ISendByte(PCF8591,0x42);

19/32

break;

}

D[AD_CHANNEL]=IRcvByte(PCF8591); //ADC1 Ä£Êýת»»2

case 3: ISendByte(PCF8591,0x43);

D[AD_CHANNEL]=IRcvByte(PCF8591); //ADC2 Ä£Êýת»»3

break; break;

v=D[AD_CHANNEL];

Data_Buffer[0]=AD_CHANNEL; Data_Buffer[1]=v/100; Data_Buffer[2]=v/10;

Data_Buffer[3]=v; }

} }

void timer0() interrupt 1 //¶¨Ê±Æ÷ÖжϷþÎñ×Ó³ÌÐò {

static unsigned int count=0;//Èí¼ÆÊ±±äÁ¿¶¨Òå

static unsigned char Bit=0; //¾²Ì¬±äÁ¿£¬Í˳ö³ÌÐòºó£¬Öµ±£Áô

TH0=THCO; TL0=TLCO; Bit++; if(Bit>=4)Bit=0; P2|=0xf0;

//ÏȹØÎ»Âë //¿ª¶ÎÂë

P0=Duan[Data_Buffer[Bit]]; if(Bit==0)P0|=0x80; switch(Bit) {

case 0: P24=0;break; case 1: P25=0;break;

//ËÍλÂë

20/32

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)