標(biāo)題: 求下面這個(gè)仿真圖的程序,TLC1543與ACS712與at89c51單片機(jī),lcd1602的輸入和顯示程... [打印本頁]

作者: 破曉q    時(shí)間: 2019-1-6 16:46
標(biāo)題: 求下面這個(gè)仿真圖的程序,TLC1543與ACS712與at89c51單片機(jī),lcd1602的輸入和顯示程...
急求,就是將ACS712檢測的電流經(jīng)過TCL1543進(jìn)行A/D轉(zhuǎn)換后,通過單片機(jī)用lcd1602顯示輸出,謝謝

QQ截圖20190106164447.png (19.87 KB, 下載次數(shù): 67)

原理圖

原理圖

作者: zahngjie-12345    時(shí)間: 2020-4-3 20:44
#include<at89x52.h>
#include<INTRINS.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define CLOCK P1_0
#define D_IN  P1_1
#define D_OUT P1_2
#define _CS   P1_3
sbit g1=P2^7;
sbit g2=P2^1;
sbit g3=P2^3;
sbit g4=P2^5;
ulong AD_ad1,AD_ad2;
float JiZhun_AD=2.5;
float AD_Data=0.0;
ulong AD_ad=0;
char chi;
unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};        
        void delay02s(void)
        {  
        unsigned char i,j,k;
        for(i=1;i>0;i--)
        for(j=10;j>0;j--)
        for(k=200;k>0;k--);
        }
uint read1543(uchar port)
        {        
        uint ad;
        uint i;
        uchar al=0,ah=0;
        CLOCK=0;
        _CS=0;
        port<<=4;
        for (i=0;i<4;i++) //將四位通道地址送1543
                {
                D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;
                port<<=1;
                }
        for (i=0;i<6;i++) //填6個(gè)CLOCK信號(hào)
                {
                CLOCK=1;CLOCK=0;
                }
        _CS=1;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();
        _CS=0; //等待AD轉(zhuǎn)換結(jié)束
        _nop_();_nop_();_nop_();
for (i=0;i<2;i++) //D9,D8
                {        
                D_OUT=1;CLOCK=1;ah<<=1;               
                if (D_OUT) ah +=0x01;
                CLOCK=0;
                }
        for (i=0;i<8;i++) //取出D7--D0
                {        
                D_OUT=1;CLOCK=1;al <<= 1;               
                if (D_OUT)
                al +=0x01;
                CLOCK=0;
                }
_CS=1;        
ad = (uint)ah;
ad <<= 8;
ad +=(uint)al; //
return(ad);
}
void main()
{
TMOD=0x01;
TH0=(65535-20000)/255;
TL0=(65535-20000)%255;
EA=1;ET0=1;TR0=1;
while(1)
        {
        P0=table[(AD_ad%10)];
        g1=1;
    delay02s();
    g1=0;              
        P0=table[(AD_ad/10)%10];
        g2=1;
    delay02s();
    g2=0;            
    P0=table[(AD_ad/100)%10];
        g3=1;
    delay02s();
    g3=0;
        P0=table[(AD_ad/1000)]|0X80;
        g4=1;
    delay02s();
        g4=0;
        }
}
zhongduan()interrupt 1
{
        TH0=(65535-20000)/255;
        TL0=(65535-20000)%255;
        chi++;
        if(chi==50)
        {
        chi=0;
        AD_ad1 = read1543(0);   //          (通道0電壓正端)
        AD_Data = ((float)AD_ad1)*JiZhun_AD*2/1024+0.15005;//0.15經(jīng)過實(shí)測需要加0.15減少誤差        
        AD_ad =((AD_Data-2.68)/0.185)*1000;         
        }
        
}





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1