找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7966|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機+DAC0832數(shù)控直流電源程序+電路圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:629841 發(fā)表于 2019-10-26 11:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

功能說明:
本作品采用DAC0832作為電壓信號輸出。DAC0832是一款采用CMOS工藝制成的單片電流輸出型8位數(shù) / 模轉(zhuǎn)換器。DAC0832有三種工作方式:不帶緩沖工作方式,單緩沖工作方式,雙緩沖工作方式。因為輸出電壓量程為10V,VREF基準電壓范圍為-10V---+10V,基準電壓可以為5.12V,這樣在DAC0832的8腳輸出電壓的分辨率為:即D/A輸入數(shù)據(jù)端每增加1,電壓增加0.02V。D/A的電壓輸出端接放大器OP27的輸入端,放大器的放大倍數(shù)為5 ,才能得到輸出電壓的電壓分辨率:0.02V×5=0.1V這樣當調(diào)節(jié)電壓的時候,以每次0.1V的梯度增加或者降低電壓。
硬件電路圖
1.波形轉(zhuǎn)換與放大部分
選用51系列的單片機產(chǎn)生和控制波形。數(shù)模轉(zhuǎn)換器用的是DAC0832,本方案中DAC0832采用單緩沖模式。
電路如圖五所示,P0口和DAC0832的數(shù)據(jù)口直接相連,接地,DAC數(shù)據(jù)寄存器處于直通狀態(tài),ILE=1,和連接后接P2.0。在選中該片的地址(=0)時,寫入數(shù)字量,該數(shù)字信號就立即傳送到DAC輸入寄存器,并直通至DAC數(shù)據(jù)寄存器,經(jīng)過短暫的建立時間,即可以獲得相應(yīng)的模擬電壓。 寫入操作結(jié)束, 和立即變?yōu)楦唠娖剑瑢懭氲臄?shù)據(jù)被輸入寄存器鎖存,直到再次寫入刷新。

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char

  3. sbit dp=P1^4;
  4. sbit sh=P1^5;

  5. void delay(unsigned int t);
  6. uchar Getkey(void);
  7. void Disp(uchar n);

  8. uchar Disptab[10]={0x11,0x7d,0x23,0x29,0x4d,0x89,0x81,0x3d,0x1,0x9};

  9. main()
  10. {
  11.     uchar key;
  12.     char Vol1=0x00,Vol2=0x00;
  13.     Disp(Disptab[Vol2]);
  14.         Disp(Disptab[Vol1]-1);
  15.         P0=0x00;
  16.     while(1)
  17.         {
  18.             key=Getkey();
  19.                 switch(key)
  20.                 {
  21.                     case 0x01:break;
  22.                         case 0x02:break;
  23.                         case 0x04:if(Vol1==0&&Vol2==0)break;
  24.                                   Vol2--;
  25.                                   if(Vol2<0)
  26.                       {
  27.                           Vol2=9;Vol1--;
  28.                       }
  29.                       Disp(Disptab[Vol2]);
  30.                               Disp(Disptab[Vol1]-1);
  31.                               P0=4.3*(Vol1*10+Vol2);
  32.                                   break;
  33.                         case 0x08:if(Vol1==9&&Vol2==9)break;
  34.                                   Vol2++;
  35.                                   if(Vol2==10)
  36.                                   {
  37.                                      Vol2=0x00;Vol1++;
  38.                       }
  39.                       Disp(Disptab[Vol2]);
  40.                               Disp(Disptab[Vol1]-1);
  41.                               P0=4.3*(Vol1*10+Vol2);
  42.                       break;
  43.                         default:break;
  44.                 }
  45.         }
  46. }

  47. uchar Getkey(void)
  48. {
  49.     uchar key;
  50.     P1|=0x0f;
  51.         if(!(~(P1|0xf0))) return 0x00;
  52.         delay(0x20);
  53.     if(!(~(P1|0xf0))) return 0x00;
  54.         key=~(P1|0xf0);
  55.         while(~(P1|0xf0));
  56.         return key;
  57. }

  58. void delay(unsigned int t)
  59. {
  60.     while(--t);
  61. }

  62. void Disp(uchar n)
  63. {
  64.     uchar i;
  65.     for(i=0;i<8;i++){
  66.         sh=0;
  67.         if(0x80&n){
  68.             dp=1;
  69.         }
  70.         else{
  71.             dp=0;
  72.         }
  73.         sh=1;        
  74.         n=(n<<1)+1;
  75.     }
  76. }
復(fù)制代碼

所有資料51hei提供下載:
數(shù)控直流電源.rar (298.51 KB, 下載次數(shù): 180)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:375451 發(fā)表于 2020-3-27 15:29 | 只看該作者
很不錯的一個應(yīng)用
回復(fù)

使用道具 舉報

板凳
ID:846847 發(fā)表于 2021-1-17 16:13 | 只看該作者
請問你的設(shè)計輸出電壓是0-10V嗎?有過流、短路保護嗎?
回復(fù)

使用道具 舉報

地板
ID:34268 發(fā)表于 2022-5-10 21:39 | 只看該作者
顯然沒有過流短路保護
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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