在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STC12C5410AD學(xué)習(xí)板---AD按鍵測(cè)試程序

            STC12C5410AD學(xué)習(xí)板---AD按鍵測(cè)試程序

            作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏

            /************ STC12C5410AD學(xué)習(xí)板 ******************/
            /*功能描述:AD按鍵練習(xí) */
            /*作者:鄭 文 ClimberWin */
            /*編寫時(shí)間:2008.8.15 */
            /*功能:采集按鍵電壓;分配鍵值,并把鍵值傳給PC機(jī) */
            /*外部晶振22.1184 MHZ */
            /*把波特率設(shè)置為51的12倍,現(xiàn)在波特率 115200 */
            /*注意:需要測(cè)得實(shí)際電源電壓作為參考電壓 */
            /*L7805穩(wěn)壓在4.88-4.98V之間,根據(jù)實(shí)際測(cè)量確定電壓 */
            /**************************************************/
            /*修改時(shí)間: */
            /*修改內(nèi)容: 還需要添加按鍵去抖 */

            本文引用地址:http://www.biyoush.com/article/201611/316029.htm


            #include
            #include
            #include
            #include
            #define uchar unsigned char
            #define uint unsigned int
            #define ulong unsigned long

            sbit PWM0 = P3^7;//pwm口定義green
            sbit PWM1 = P3^5;//pwm口定義blue
            sbit PWM2 = P2^0;//pwm口定義
            sbit PWM3 = P2^4;//pwm口定義red

            sbit AD0 = P1^0; //電位器和外部電壓輸入共用同一AD口,用跳帽來選擇。
            sbit AD1 = P1^1; //用做AD按鍵的輸出口。
            sbit AD2 = P1^2; //溫度測(cè)量,測(cè)量熱敏電阻的參數(shù)。


            void Delay1ms(unsigned int count);
            void init_rs232(void); //串口初始化
            void STC12C5410AD_int(void); //AD初始化


            void Delay1ms(unsigned int count);
            void init_rs232(void); //串口初始化

            /***************************1秒延時(shí)子程序start***************************/
            void Delay1ms(unsigned int count)
            {
            unsigned int i,j;
            for(i=0;ifor(j=0;j<120;j++);
            }

            /***************************1秒延時(shí)子程序end***************************/

            /* 串口通信初始化設(shè)置 */
            void init_rs232(void)
            {
            AUXR=74; //設(shè)置波特率是普通51的12倍 ,允許AD中斷
            SCON=0x50;
            PCON=0x00;
            TH1=0xFA; //波特率 115200 22.1184MHZ 時(shí)候(F4 4800 FA 9600 FDH 9600)*12
            TL1=0XFA;
            TMOD=0X20;
            TR1=1;
            }

            /*STC12C5410AD的AD初始化程序*/
            // ADC_CONTR=[ADC_POWER] [SPEED1] [SPEED0] [ADC_FLAG] [ADC_START] [CHS2] [CHS1][CHS0]
            // ADC_DATA 高8位 ADC_LOW2 //低2位
            void STC12C5410AD_int(void)
            {
            ADC_CONTR=0x80 ; //開轉(zhuǎn)換電源設(shè)置轉(zhuǎn)換速度為1080個(gè)時(shí)鐘周期轉(zhuǎn)換一次,選擇AD0通道
            Delay1ms(20); //稍做延時(shí),大于1ms就可以

            /*I/O口作為AD使用,設(shè)置漏極開路模式*/
            P1M0=1;
            P1M1=1;
            }

            /*******************************************/

            /*****************主程序************************/
            main()
            { //main start
            //uchar w;
            uint ad_temp; //AD數(shù)據(jù)保存的地址
            float f; //存放AD采集過來的數(shù)據(jù),格式00.000,總共5位

            Delay1ms(5000);

            init_rs232(); //串口初始化
            TI=1;

            printf("STC12C5410AD學(xué)習(xí)板 AD按鍵練習(xí)n");
            printf("ClimberWin 2008.8.15nn");
            Delay1ms(5000);


            printf("串口初始化成功nn");
            Delay1ms(5000);

            /*************************************************/

            STC12C5410AD_int(); //AD初始化
            printf("A/D初始化成功n");
            ADC_CONTR|=0x01; //選擇AD1通道 ,AD按鍵
            printf("選擇通道AD1nn");

            printf("按鍵測(cè)試開始:nn");


            while(1)
            {
            ADC_CONTR|=0x08; //開始AD轉(zhuǎn)換(ADC_START=1)

            while(!(ADC_CONTR & 0x10));//判斷AD是否轉(zhuǎn)換結(jié)束

            ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標(biāo)志位ADC_FLAG清零
            //AD采集進(jìn)來的數(shù)據(jù)進(jìn)行轉(zhuǎn)化
            ad_temp=ADC_LOW2;
            ad_temp=ad_temp+ ((uint)ADC_DATA)<<2;
            f=(4.961*ad_temp)/1024;//基準(zhǔn)電壓調(diào)整,用7805做穩(wěn)壓需要測(cè)得實(shí)際電源電壓
            //通過串口打印AD采集進(jìn)來的數(shù)據(jù)
            // printf("%.3f ",f); //串口傳輸AD采集數(shù)據(jù)
            Delay1ms(1000);
            /**************鍵值判斷*******************************/
            if (f>4.590&f<4.650)
            { printf("K1按下nn");}
            else if (f>4.500&f<4.550)
            { printf("K2按下nn");}
            else if (f>4.400&f<4.490)
            { printf("K3按下nn");}
            else if (f>4.200&f<4.350)
            { printf("K4按下nn");}
            else if (f>3.700&f<4.100)
            { printf("K5按下nn");}
            else if (f>3.000&f<3.500)
            { printf("K6按下nn");}
            else
            {;}
            Delay1ms(1000);
            /*******************************************************/
            }

            } //mian end



            關(guān)鍵詞: STC12C5410ADAD按鍵測(cè)

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉