在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            EM78P458電壓表的制作

            作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
            以前的學(xué)習(xí)筆記——在學(xué)習(xí)74HC164的應(yīng)用,用義隆單片機(jī)調(diào)試。用了匯編調(diào)試成功后又用C調(diào)試了下。練習(xí)著就打算用C語言來編寫AD的讀寫,順便結(jié)合74HC164寫了個(gè)電壓表的程序。又花了半天時(shí)間把C代碼優(yōu)化了下,提高了代碼效率。晚上回家就把此例子記錄下來,以供參考。

            一、功能介紹:

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

            本設(shè)計(jì)采用臺灣的義隆單片機(jī)EM78P458,此單片機(jī)內(nèi)部有4K*13bit一次性ROM(OTPROM)此單片機(jī)內(nèi)帶8位多路AD,精度達(dá)到13位。結(jié)合3片74HC164來對三個(gè)數(shù)碼管進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)數(shù)據(jù)的串轉(zhuǎn)并,節(jié)省了單片機(jī)的I/O口資源;本設(shè)計(jì)只是個(gè)舉例應(yīng)用,為了學(xué)習(xí)74HC164的應(yīng)用和義隆單片機(jī)C語言的應(yīng)用。實(shí)際應(yīng)用中三個(gè)數(shù)碼管顯示可以用一個(gè)74HC164來賦數(shù)據(jù),三個(gè)I/O口來掃描,動態(tài)掃描來顯示。具體不做詳細(xì)介紹。A/D端口輸入電壓范圍:0~5V。顯示精確到小數(shù)點(diǎn)后2位。

            二、具體電路如下:

            三、完整程序

            //**************Voltage**************

            //Use IC: EMC78P458**

            //Author: zhengwen**

            //Date: 2007.1.22**

            //74HC164_PIN Q0~Q7 =LED_PIN a~h**

            //P57==CLRP55==CLOCK P56==data**

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

            #include "em78x458_9xx.h"

            #defineuchar unsigned char

            #defineuint unsigned int

            #defineDATA R56//Databit of 74HC164

            #defineCLKR55//Clock bit of 74HC164

            #defineDATA_CLRR57//Clrbit of 74HC164

            #defineENI()_asm{eni}

            //****************存儲空間分配**************

            unsigned short ledm@0x20:bank 1;//short占用2個(gè)存儲空間

            unsigned short ledtemp @0x22:bank 1;//AD計(jì)算時(shí)候的中間量

            unsigned charAD_data @0x24:bank 1;//AD采集數(shù)據(jù)存儲地址

            unsigned charled1@0x20:bank 0;//第1位數(shù)碼管顯示數(shù)

            unsigned charled2@0x21:bank 0;//第2位數(shù)碼管顯示數(shù)

            unsigned charled3@0x22:bank 0;//第3位數(shù)碼管顯示數(shù)

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

            //************Table of LED******************

            const unsigned char table[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

            const unsigned char table1[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x88,0x00,0x10,0x08,0x03,0xC6,0xA1,0x86,0x8E};

            //用const以后table里的數(shù)據(jù)就存放在ROM里,不然是存在RAM里

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

            //*******Subprogram of Delay****************

            void delay(void)

            {unsigned shorti;

            for(i=0;i<60000;i++)

            {;}

            }

            //***********AD參數(shù)設(shè)置子程序***************

            void DO_AD(void)

            {

            ADCON=0x08;//選擇AD0

            ADCOM=0x01;//模擬信號進(jìn)行轉(zhuǎn)換并設(shè)置轉(zhuǎn)換

            P6CR=1;

            GCON=0;//選擇ADC增益和工作電壓

            ADPD=1;//禁止ADC的低功耗模式

            ENI();//開中斷

            ADRUN=1;//啟動ADC

            while(ADRUN==1);//等待AD轉(zhuǎn)換結(jié)束

            AD_data=ADDATA; //AD數(shù)據(jù)存儲到AD_data地址中

            }

            //******Send Data Subprogram***********

            void sendData(uchar c)

            {

            unsigned char i;

            bit temp;

            for(i=0;i<8;i++)

            {

            if (c&0x80) temp=1;

            else temp=0;

            CLK=0;

            DATA=temp;

            CLK=1;

            c<<=1;

            }

            }

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

            //*******Initialization of Program***************

            void init(void)

            {

            P5CR=0x00;//P5 as Output

            P6CR=0x03;//PORT6的,1.2口為輸入,其他口為輸出

            //PDCR=0xff;//下拉電阻設(shè)置

            //ODCR=0x00;//高阻設(shè)置

            //PHCR=0xff;//上拉電阻設(shè)置

            WDTCR&=0xef;//"1" enable R-option ,"0" disable R-option

            }

            //*********Main Program********************

            void main()

            {

            DATA_CLR=1;//unable clr bit of 74HC164

            init();// I/O init

            while(1)

            {

            DO_AD();

            AD_data=ADDATA;

            //******AD采樣進(jìn)來的數(shù)據(jù)轉(zhuǎn)換*******

            //******Vin=(Dx/256)*5 (V)*********

            ledm=AD_data;

            ledm=ledm*125;

            ledtemp=ledm>>6;

            led1=ledtemp/100;

            led2=(ledtemp%100)/10;

            led3=(ledtemp%100)%10;

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

            delay();

            sendData(table1[led1]);//輸出顯示

            sendData(table[led2]);

            sendData(table[led3]);

            }

            }



            關(guān)鍵詞: EM78P458電壓

            評論


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

            關(guān)閉