131 1300 0010
其他電源
當(dāng)前位置: 首頁>> 電源技術(shù)>>其他電源>>
  • 導(dǎo)航欄目
  • 逆變電源
  • 開關(guān)電源
  • 電機(jī)伺服
  • 其他電源
  • AT89C52單片機(jī)對八路電壓表的設(shè)計
    AT89C52單片機(jī)對八路電壓表的設(shè)計
  • AT89C52單片機(jī)對八路電壓表的設(shè)計
  •   發(fā)布日期: 2019-05-25  瀏覽次數(shù): 1,009

    八路電壓表C程序

    /*使用AT89C52單片機(jī),12MHz晶振,P0口讀入AD值,P2口作AD控制,用共陽LED數(shù)碼管

     

    P1口輸出段碼,P3口掃描,最高位指示通道(0-7)。*/

    #include“reg52.h”//52系列單片機(jī)定義文件

    #include“intrins.h”//調(diào)用_nop_();延時函數(shù)用

    #definead_conP2//AD控制口

    #defineaddataP0//AD數(shù)據(jù)計入讀入口

    #defineDisdataP1//顯示數(shù)據(jù)段碼輸出口

    #defineucharunsignedchar//無符號字符(8位)

    #defineuintunsignedint//無符號整數(shù)(16位)

    sbitALE=P2^3;//存地址控制位

    sbitSTART=P2^4;//啟動一次轉(zhuǎn)換位

    sbitOE=P2^5;//0809輸出數(shù)據(jù)控制位

    sbitEOC=P3^7;//轉(zhuǎn)換結(jié)束標(biāo)志位

    sbitDISX=Disdata^7;//LED小數(shù)點

    AT89C52單片機(jī)對八路電壓表的設(shè)計

    ucharcodedis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

    /*共陽七段LED段碼表“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮”*/

    ucharcodesCAN_con[4]={0xfe,0xfd,0xfb,0xf7};//四位列掃描控制字

    uchardataad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//定義8個數(shù)據(jù)內(nèi)存單元

    uintdatadis[5]={0x00,0x00,0x00,0x00,0x00};//定義4個顯示數(shù)據(jù)單元、1個數(shù)據(jù)暫存單元

    //

    //

    /********1毫秒延時子函數(shù)**********/

    delay1ms(uintt)

    {

    uinti,j;

    for(i=0;ifor(j=0;j《120;j++)

    ;

    }

    //

    //

    /***********顯示掃描子函數(shù)**********/

    scan()

    {

    uchark,n;

    inth;

    dis[3]=0x00;//通道初值為0

    for(n=0;n《8;n++)//每次顯示8個數(shù)據(jù)

    {

    dis[2]=ad_data[n]/51;//測得值轉(zhuǎn)換為三位BCD碼,最大為5.00V

    dis[4]=ad_data[n]%51;//余數(shù)暫存

    dis[4]=dis[4]*10;//計算小數(shù)第一位

    dis[1]=dis[4]/51;//

    dis[4]=dis[4]%51;//

    dis[4]=dis[4]*10;//計算小數(shù)第二位

    dis[0]=dis[4]/51;//

    for(h=0;h《500;h++)//每個通道值顯示時間控制(約1秒)

    {

    for(k=0;k《4;k++)//四位LED掃描控制

    {

    Disdata=dis_7[dis[k]];

    if(k==2){DISX=0;}

    P3=scan_con[k];delay1ms(1);P3=0xff;

    }

    }

    dis[3]++;//通道值加1

    }

    }

    //

    //

    /*******0809AD轉(zhuǎn)換子函數(shù)***********/

    test()

    {

    ucharm;

    uchars=0x00;

    ad_con=s;

    for(m=0;m《8;m++)

    {

    ALE=1;_nop_();_nop_();ALE=0;//轉(zhuǎn)換通道地址鎖存

    START=1;_nop_();_nop_();START=0;//開始轉(zhuǎn)換命令

    _nop_();_nop_();_nop_();_nop_();//延時4微秒

    while(EOC==0);//等待轉(zhuǎn)換結(jié)束

    OE=1;ad_data[m]=addata;OE=0;s++;ad_con=s;//取AD值,地址加1

    }

    ad_con=0x00;//控制復(fù)位

    }

    //

    //

    /**************主函數(shù)****************/

    main()

    {

    P0=0xff;//初始化端口

    P2=0x00;

    P1=0xff;

    P3=0xff;

    while(1)

    {

    scan();//依次顯示8個通道值一次

    test();//測量轉(zhuǎn)換一次

    }

    }

    //

    //

    //*********************結(jié)束**************************//


  • ·上一篇:
    ·下一篇:
  • 其他關(guān)聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機(jī):131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 xbquwah.cn 電話:13113000010 粵ICP備2021111333號