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

標(biāo)題: 用51單片機(jī)+xpt2046將電位器上的模擬電壓轉(zhuǎn)換成分辨率為12位的數(shù)字信號(hào) [打印本頁(yè)]

作者: tiantian97    時(shí)間: 2018-7-10 08:46
標(biāo)題: 用51單片機(jī)+xpt2046將電位器上的模擬電壓轉(zhuǎn)換成分辨率為12位的數(shù)字信號(hào)
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int  
#define uchar unsigned char  
unsigned char smgnumber[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,         //數(shù)碼管
                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uint i,j;
uchar qian,bai,shi,ge ;
uint number        ;

sbit AA=P2^2;
sbit BB=P2^3;
sbit CC=P2^4;

sbit DIN=P3^4;                                         // 控制字 輸入端口
sbit CS=P3^5;                                          //xpt2046芯片使能端,低電平有效
sbit CLK=P3^6;                                        //芯片時(shí)鐘輸入端,在時(shí)鐘上升沿或下降沿進(jìn)行數(shù)據(jù)輸入或輸出
sbit DOUT=P3^7;                                        //芯片ad轉(zhuǎn)換后 數(shù)字量輸出口,串行輸出

void delayms(uint);                                
void display(uint);                        
void SPI_write (uchar);
void SPI_read();


void main ()
{

        while (1)
        {        
                CLK=0;
                CS=0;
               
                SPI_write(0X94);                 //輸入控制字 0X94
                for(i=6;i>0;i--);                  // 延遲一丁點(diǎn),等待轉(zhuǎn)換結(jié)果
                CLK=1;_nop_();_nop_();           //看時(shí)序圖需延遲一個(gè)時(shí)鐘周期               
                CLK=0;_nop_();_nop_();


                SPI_read  ();
                CS=1;                  
                 display (number) ;
                 
                                       
        }
}

void delayms(uint t)
{
        for(i=t;i>0;i--)
                for(j=110;j>0;j--);
}

void display (uint number1)
{
        qian= number1/1000;
        bai=number1%1000/100;
        shi=number1%100/10;
        ge=number1%10;

        CC=0,BB=0,AA=0;                           //數(shù)碼管顯示 ad轉(zhuǎn)化后的數(shù)字量
        P0=smgnumber[ge];
        delayms(5);
        P0=0;
        CC=0,BB=0,AA=1;
        P0=smgnumber[shi];
        delayms(5);
        P0=0;
        CC=0,BB=1,AA=0;
        P0=smgnumber[bai];
        delayms(5);
        P0=0;
        CC=0,BB=1,AA=1;
        P0=smgnumber[qian];
        delayms(5);
        P0=0;
}

void SPI_write (uchar controlword)
{
        uchar m;
        CLK=0;
        for (m=0;m<8;m++)
        {
                DIN=controlword>>7;                                  //控制位最高位賦給 DIN輸入口
                 controlword = controlword<<1 ;           //將控制字次高位變?yōu)樽罡呶?br />                 CLK=0;                                                          //串行輸入,時(shí)鐘上升沿將控制字一位一位的輸入到芯片。
                CLK=1;

        }
}

void SPI_read  ()
{
        uchar n;
        CLK=0;
        number=0;                                                            ////注意!!!!這點(diǎn)清零很重要,number是全局變量,如果不清0,
                                                                 //下次再進(jìn)行移位的時(shí)候運(yùn)算的結(jié)果得不到我們想要的
        for(n=0;n<12;n++)
        {
                number = number<<1;                                 // number 定義的是全局變量,不賦初值的話全局變量默認(rèn)初值為0
                CLK=1;                                                        //時(shí)鐘下降沿 把一位數(shù)據(jù) 從DOUT口 輸出
                CLK=0;
                number = number | DOUT ;            // number 和 DOUT這個(gè)串行輸出口 進(jìn)行或運(yùn)算,實(shí)現(xiàn)DOUT端口的值賦給number        
                                                                                //十二個(gè)周期后,ad轉(zhuǎn)換的12位數(shù)字量全部附給了number
n
        }
}



作者: 偉云科技    時(shí)間: 2020-4-30 10:58
前來(lái)學(xué)習(xí),謝謝分享




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