找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5466|回復(fù): 3
收起左側(cè)

STC15F單片機AD與DA轉(zhuǎn)換接口設(shè)計檢測5V電壓 帶仿真圖

[復(fù)制鏈接]
ID:66060 發(fā)表于 2016-4-24 09:25 | 顯示全部樓層 |閱讀模式
stc15f單片機ad和da仿真圖:
0.png

0.png
STC15F單片機AD與DA轉(zhuǎn)換接口設(shè)計檢測5V電壓
全部資料(壓縮包)下載:
帶仿真圖 A D與D A轉(zhuǎn)換接口設(shè)計檢測5V電壓.rar (24.18 KB, 下載次數(shù): 62)





下面是部分程序預(yù)覽(完整版本請下載本帖附件):
  1. #include <STC15F2K60S2.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code led[]={
  5. //0   1    2    3    4     5    6    7    8    9   
  6. 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};        //定義字形碼表,共陽極
  7. ///////////////////////
  8. #define SI P00
  9. #define SCK P01
  10. #define RCK P02
  11. #define ADC_POWER   0x80            //ADC電源控制位
  12. #define ADC_FLAG    0x10            //ADC完成標(biāo)志
  13. #define ADC_START   0x08            //ADC起始控制位
  14. #define ADC_SPEEDLL 0x00            //540個時鐘
  15. /////////////////////////////////////////
  16. unsigned char disp[4]={0,0,0,0};
  17. ///////////////////////////////////////////
  18. void delay_ms(uint ms)
  19. {  uint i,j;
  20.    for(;ms>0;ms--)
  21.    {
  22.    for(i=0;i<7;i++)
  23.     for(j=0;j<210;j++);
  24.         }
  25.    }
  26. /*----------------------------
  27. 初始化ADC
  28. ----------------------------*/
  29. void ADC_initiate()
  30. {   P1ASF=0XFF;
  31.     ADC_RES=0;
  32.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  33.         delay_ms(1);
  34.         }
  35. unsigned char ADC_STC12C5(unsigned char ch)
  36. {  ADC_RES=0;
  37.    ADC_CONTR|=ch;
  38.    delay_ms(1);
  39.    ADC_CONTR|=ADC_START;
  40.    while(!(ADC_CONTR&ADC_FLAG));
  41.    ADC_CONTR&=(~ADC_START);
  42.    ADC_CONTR&=(~ADC_FLAG);
  43.    return(ADC_RES);
  44.    }
  45. void data_process(unsigned char value)
  46. {   unsigned int temp;
  47.     temp=value*196;
  48.     disp[0]=temp/10000;
  49.         disp[1]=(temp/1000)%10;
  50.         disp[2]=(temp/100)%10;
  51.         disp[3]=(temp/10)%10;
  52.         }
  53. void sendData(unsigned char sendDat)        
  54. {        unsigned char i;
  55.         for(i=0;i<8;i++)
  56.         {        if((sendDat&0x01)==0) SI=0;
  57.                 else  SI=1;       //發(fā)出最低位
  58.         SCK=0;
  59.         SCK=1;          //上升沿,存儲一位數(shù)據(jù)。
  60.                 sendDat=sendDat>>1;
  61.         }
  62. }

  63. void seg_display(unsigned char n)
  64. {        unsigned char c, i;
  65.         
  66.         for(i=0;i<n;i++)
  67.         {        c=disp[i];                //取出待顯示字符
  68.                 if(i==0)
  69.                 sendData(led[c]+0x80);        //送出字形碼數(shù)據(jù)
  70.             else                 
  71.                 sendData(led[c]);
  72.                 }        
  73.     RCK=0;
  74.         RCK=1;                        //輸出                        
  75. }

  76. void main()
  77. {  unsigned char voltage;
  78.    ADC_initiate(); //初始化
  79.    delay_ms(10);
  80.    while(1)
  81.    {voltage=ADC_STC12C5(7);
  82.    data_process(voltage);
  83.    seg_display(4);
  84.    delay_ms(10);
  85.    }
  86. }
復(fù)制代碼


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:136090 發(fā)表于 2016-10-22 09:09 | 顯示全部樓層
都沒人下你的,我來下你的,嘿嘿!
回復(fù)

使用道具 舉報

ID:136090 發(fā)表于 2016-10-22 09:15 | 顯示全部樓層
我仿真出來沒反應(yīng),求指點。
回復(fù)

使用道具 舉報

ID:88256 發(fā)表于 2016-10-22 09:21 | 顯示全部樓層
下載一個看看,謝謝了!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表