新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一個簡單的單片機直流可調穩壓電源設計

        一個簡單的單片機直流可調穩壓電源設計

        作者: 時間:2016-12-01 來源:網絡 收藏
        通過做直流穩壓電源可以掌握A/D,D/A模塊的使用,51單片機程序分為鍵盤處理、D/A、A/D和存儲四個模塊。運用掃描法,對鍵盤進行掃描,有按鍵就更改輸入TLC5615 的數值,ADD按鍵是對數據進行加以操做,長按的話使步進值增大,實現快加,SUB按鍵與ADD按鍵同,預讀取按鍵用于讀取 AT24C04 中預置的數值,保存按鍵用于保存當前電壓值;顯示部分主要是對TLC549采集回來的電壓進行處理顯示,它主要是在定時器0的中斷服務程序中顯示,100ms刷新顯示一次;TLC5615 模塊,通過對dA的串行數據輸入,使其在輸出電壓時可控,輸出電壓后經lm324,三極管,加上負載輸出電壓,輸出電壓后,用TLC549芯片100ms采集一次,送數碼管顯示。



        完整的工程文件及hex文件下載地址:http://www.51hei.com/f/dpjdianyuan_c.rar

        本文引用地址:http://www.104case.com/article/201612/324255.htm

        AT24C04.h 代碼

        sbit ATCLK=P1^6;
        sbit SDA=P1^7;
        sbit a7=ACC^7;
        sbit a6=ACC^6;
        sbit a5=ACC^5;
        sbit a4=ACC^4;
        sbit a3=ACC^3;
        sbit a2=ACC^2;
        sbit a1=ACC^1;
        sbit a0=ACC^0;
        /*********************
        *******24C04的初始化**
        **** **************/
        void init_24C04()
        {
        SDA=1;
        _nop_();
        ATCLK=1;
        _nop_();
        }
        /*********************
        ****啟動24C04*********
        *******************/
        void start_24C04()
        {

        SDA=1;
        _nop_();
        ATCLK=1;
        _nop_();

        SDA=0;
        _nop_();
        ATCLK=0;
        _nop_();
        }
        /********************
        *****停止24C04*******
        *********************/
        void stop_24C04()
        {
        SDA=0;
        _nop_();

        ATCLK=1;
        _nop_();
        SDA=1;
        _nop_();

        }
        /*********************
        ****24C04應答*********
        *******************/
        void response()
        {
        unsigned char i;
        ATCLK=1;
        _nop_();
        while((SDA==1)&&(i<250))i++;
        ATCLK=0;
        _nop_();
        }
        /********************
        *****讀取24C04一個字節**
        **************************/
        unsigned char read_byte()
        {
        SDA=1;
        ATCLK=1;a7=SDA;ATCLK=0;
        ATCLK=1;a6=SDA;ATCLK=0;
        ATCLK=1;a5=SDA;ATCLK=0;
        ATCLK=1;a4=SDA;ATCLK=0;
        ATCLK=1;a3=SDA;ATCLK=0;
        ATCLK=1;a2=SDA;ATCLK=0;
        ATCLK=1;a1=SDA;ATCLK=0;
        ATCLK=1;a0=SDA;ATCLK=0;
        SDA=1;
        ATCLK=0;
        return ACC;
        }
        /*************************
        **寫入24C04一個字節******
        *************************/
        void write_byte(unsigned char addr)
        {
        ACC=addr;
        SDA=a7;ATCLK=1;ATCLK=0;
        SDA=a6;ATCLK=1;ATCLK=0;
        SDA=a5;ATCLK=1;ATCLK=0;
        SDA=a4;ATCLK=1;ATCLK=0;
        SDA=a3;ATCLK=1;ATCLK=0;
        SDA=a2;ATCLK=1;ATCLK=0;
        SDA=a1;ATCLK=1;ATCLK=0;
        SDA=a0;ATCLK=1;ATCLK=0;
        SDA=1;
        ATCLK=0;

        }
        /***********************
        **寫24C04的數據*******
        *****************/
        void write_24C04(unsigned char addr,unsigned char dat)
        {
        start_24C04();
        write_byte(0xa0);
        response();
        write_byte(addr);
        response();
        write_byte(dat);
        response();
        stop_24C04();
        }
        /**********************
        ***讀24C04的數據*******
        *****************/
        unsigned char read_24C04(unsigned char addr)
        {
        unsigned char t;
        start_24C04();
        write_byte(0xa0);
        response();
        write_byte(addr);
        response();
        start_24C04();
        write_byte(0xa1);
        response();
        t=read_byte();
        stop_24C04();
        return t;
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 调兵山市| 谷城县| 枞阳县| 中阳县| 黎平县| 鲁甸县| 菏泽市| 健康| 东海县| 喀喇| 本溪市| 广宁县| 龙胜| 买车| 图片| 鹤岗市| 政和县| 始兴县| 眉山市| 保山市| 平武县| 巴塘县| 姚安县| 科技| 龙胜| 广汉市| 金乡县| 噶尔县| 邓州市| 哈尔滨市| 赞皇县| 定远县| 共和县| 喜德县| 嫩江县| 富宁县| 任丘市| 黔西县| 容城县| 临江市| 彰化县|