找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

求下面這個仿真圖的程序,TLC1543與ACS712與at89c51單片機(jī),lcd1602的輸入和顯示程...

查看數(shù): 3008 | 評論數(shù): 1 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2019-1-6 16:46

正文摘要:

急求,就是將ACS712檢測的電流經(jīng)過TCL1543進(jìn)行A/D轉(zhuǎn)換后,通過單片機(jī)用lcd1602顯示輸出,謝謝

回復(fù)

ID:647574 發(fā)表于 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個CLOCK信號
                {
                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;         
        }
        
}

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表