欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 基于51單片機(jī)的TCL2543源程序 [打印本頁(yè)]

作者: 額外熱舞    時(shí)間: 2023-5-13 21:59
標(biāo)題: 基于51單片機(jī)的TCL2543源程序
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
ulong volt;//測(cè)量的電壓值
uchar code led[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段數(shù)碼管顯示0-9的對(duì)應(yīng)電平碼
uint vtime;        // 用來(lái)控制測(cè)量地址位的改變
uchar addr;//測(cè)量地址位,指示測(cè)量的是哪一個(gè)模擬值 (其實(shí)就是TLC2543的控制字)
uchar xu[5];
float a;
sbit LW1=P2^3;//數(shù)碼管電壓顯示值的第1個(gè)                比如四個(gè)數(shù)碼管顯示4.885值中,對(duì)應(yīng)顯示4這個(gè)數(shù)碼管
sbit LW2=P2^2;//數(shù)碼管電壓顯示值的第2個(gè)
sbit LW3=P2^1;//數(shù)碼管電壓顯示值的第3個(gè)
sbit LW4=P2^0;//數(shù)碼管電壓顯示值的第4個(gè)

sbit CLK=P1^7;//定義時(shí)鐘信號(hào)口
sbit DIN=P1^6;//定義2543數(shù)據(jù)寫(xiě)入口
sbit DOUT=P1^5;//定義2543數(shù)據(jù)讀取口
sbit CS=P1^4;//定義2543片選信號(hào)口
sbit beep=P3^6;

/**********************************************************/
//函數(shù)名:delay(uint x)
//功能:延時(shí)程序 改變測(cè)量地址         
//調(diào)用函數(shù):
//輸入?yún)?shù):x
//輸出參數(shù):
//說(shuō)明:
/**********************************************************/
void delay(uint x)
{
        uchar y,z;
        for(y=x;y>0;y--)
                for(z=250;z>0;z--);//該步運(yùn)行時(shí)間約為0.5ms
                vtime++;
                if(vtime==1000)
                {
                        vtime=0;
//                        addr++;
//                        if(addr==3)
//                                addr=0;//以上語(yǔ)句實(shí)現(xiàn)測(cè)量地址位的改變               
                }        
}
/**********************************************************/
//函數(shù)名:read2543(uchar addr)
//功能:2543驅(qū)動(dòng)程序
//調(diào)用函數(shù):
//輸入?yún)?shù):addr
//輸出參數(shù):
//說(shuō)明:進(jìn)行ad轉(zhuǎn)換將結(jié)果存于volt變量中 addr為測(cè)量位地址
/**********************************************************/
void read2543(uchar addr)
{
        uint ad=0;
        uchar i;
        CLK=0;
        CS=0;//片選段,啟動(dòng)2543
        addr<<=4;//對(duì)地址位預(yù)處理
        for(i=0;i<12;i++) //12個(gè)時(shí)鐘走完,完成一次讀取測(cè)量
        {
                if(DOUT==1)
                        ad=ad|0x01;//單片機(jī)讀取ad數(shù)據(jù)
                DIN=addr&0x80;//2543讀取測(cè)量地址位
                CLK=1;
                ;;;//很短的延時(shí)
                CLK=0;//產(chǎn)生下降沿,產(chǎn)生時(shí)鐘信號(hào)
                ;;;
                addr<<=1;
                ad<<=1;//將數(shù)據(jù)移位準(zhǔn)備下一位的讀寫(xiě)
        }
        CS=1;//關(guān)2543
        ad>>=1;
        volt=ad;//取走轉(zhuǎn)換結(jié)果
        volt=volt*1221;//例子的滿(mǎn)量程為5V,轉(zhuǎn)換分辯率為12位(2的12次方=4096) 。即最大值是255,5/4096=1221mV,即例子中的1V代表實(shí)際1221mV      
    xu[0] = (volt/1000000);   //1
    xu[1] = (volt/100000)%10;   //0.001
    xu[2] = (volt/10000)%10;     //0.01
    xu[3] =(volt/1000)%10;      //0.1
          a=(xu[0]+xu[1]*0.001+xu[2]*0.01+xu[3]*0.1);
}
/**********************************************************/
//函數(shù)名:display()
//功能:5位數(shù)碼管顯示
//調(diào)用函數(shù):delay(uint x)
//輸入?yún)?shù):
//輸出參數(shù):
//說(shuō)明:將處理后的電壓值與測(cè)量位值顯示在5位數(shù)碼管上
/**********************************************************/
void display()
{

        P0=0xff;//消隱,因?yàn)椴粩噙M(jìn)行循環(huán)顯示,以防上次顯示有殘留電平的影響
        LW1=1;        //選中第1個(gè)數(shù)碼管進(jìn)行顯示
        P0=~led[volt/1000000]&0x7f;//帶小數(shù)點(diǎn)1伏顯示位
        delay(2);  //延時(shí)
        P0=0xff;  //消隱
        LW1=0;        //取消選中第1個(gè)數(shù)碼管進(jìn)行顯示
        LW2=1;        //選中第2個(gè)數(shù)碼管進(jìn)行顯示
        P0=~led[(volt/100000)%10];//100毫伏顯示位
        delay(2);
        P0=0xff;
        LW2=0;
        LW3=1;
        P0=~led[(volt/10000)%10];//10毫伏顯示位
        delay(2);
        P0=0xff;
        LW3=0;
        LW4=1;
        P0=~led[(volt/1000)%10];//1毫伏顯示位
        delay(2);
        P0=0xff;
        LW4=0;                        
}

void key()
{

if(a>=4.096)
{
beep=0;

}
if(a<4.096){
beep=1;
display();

}



}

/**********************************************************/
//主程序
/**********************************************************/
void main()
{
//beep=0;
read2543(0);
        while(1)
        {

    key();
                read2543(0);//調(diào)用2543驅(qū)動(dòng)程序測(cè)量地址為0

               
               
        }
}
作者: 額外熱舞    時(shí)間: 2023-5-13 22:00
第一次




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