找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)數(shù)控穩(wěn)壓電源制作 帶程序和原理圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
量=6V÷0.06V=100,注意這里的100是十進(jìn)制的,單片機(jī)不能識別十進(jìn)制數(shù)據(jù),所以要把十進(jìn)制
轉(zhuǎn)換成二進(jìn)制或十六進(jìn)制(轉(zhuǎn)換時(shí)可用WINDOWS自帶的科學(xué)計(jì)算器進(jìn)行)。100轉(zhuǎn)換成十六進(jìn)制后為
64H。只要給DAC0808輸入64H,它就能輸出6V的電壓(注意:理論值和實(shí)踐值有所出入,具體運(yùn)用時(shí)
要適當(dāng)?shù)恼{(diào)節(jié)數(shù)據(jù)輸入量),該電壓經(jīng)運(yùn)放TL082后再去推動LM317,由LM317輸出我們需要的電壓值,
實(shí)現(xiàn)了電壓數(shù)控調(diào)節(jié)。

三、保護(hù)電路:
   保護(hù)電路由89C51的P2.4,R10和R11組成,R11的作用是預(yù)先給P2.4一個(gè)高電位。當(dāng)某種原因
(如短路,過流)使得輸出電壓降低至一定值時(shí),P2.4端電位也隨之降低。程序立即檢測到P2.4這
一變化,并立刻通過繼電器關(guān)閉電源輸出。直至原因排除才能再次開機(jī);V3采用PNP型管是為了防止
在單片機(jī)復(fù)位前,LM317失控的電壓輸出到用電器上。

四、安裝與調(diào)試:
  圖中的正負(fù)15V、5V由黑白電視機(jī)的變壓器經(jīng)整流穩(wěn)壓后取得。運(yùn)放TL082可以用NE5532、4558等
常見的型號代替。LM317發(fā)熱量較大,散熱片要盡可能的做大些。在確認(rèn)接線無誤后就可試機(jī)。若一
開機(jī)即自動關(guān)機(jī),同時(shí)顯示“OF”,這說說明P2.4電壓太低。正常值應(yīng)在1.5V以上。發(fā)現(xiàn)這種情況可
以適當(dāng)?shù)恼{(diào)節(jié)R11和R10的大小直至P2.4的電壓正常。

  1. #include <reg52.h>                        //通用52單片機(jī)頭文件
  2. #define uchar unsigned char                                  
  3. sbit RESET=P3^3;                   //DA轉(zhuǎn)換數(shù)值復(fù)位端口位定義
  4. sbit keyup=P3^4;                   //步進(jìn)加端口位定義
  5. sbit keydown=P3^5;                   //步進(jìn)減端口位定義
  6. sbit LEDwei1=P2^7;                   //低位數(shù)碼管位選
  7. sbit LEDwei2=P2^6;                   //高位數(shù)碼管位選
  8. #define duan P0            //段選宏定義  
  9. void delay(int);                   //延時(shí)函數(shù)聲明
  10. void display(uchar);           //顯示函數(shù)聲明
  11. uchar code LEDcode[]={0xc0,0xf9,0xa4,0xb0,0x99,
  12.                                       0x92,0x82,0xF8,0x80,0x90,0x8e};       //共陽數(shù)碼管0-9和F(為段選所用)
  13. uchar code byte[]={ 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,        0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,
  14.                                        
  15.                                         0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e,        0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,
  16.                                        
  17.                                         0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,        0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e,
  18.                                        
  19.                                         0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,        0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e,
  20.                                        
  21.                                         0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,        0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,
  22.                                        
  23.                                         0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae,        0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,
  24.                                        
  25.                                         0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce,        0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde,
  26.                                        
  27.                                         0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee,        0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe,
  28.                                        
  29.                                         };//DA轉(zhuǎn)換數(shù)據(jù)

  30. uchar code table[]={0x11,0x12,15,16,17,18,20,21,22,23, 24,25,27,28,29,30,31,32,34,35,
  31.                                         36,37,38,39,41,42,43,44,45,47, 48,49,50,51,52,53,55,56,57,58,
  32.                                         59,61,62,63,64,65,66,68,69,70, 71,72,73,75,76,77,78,79,80,82,
  33.                                         83,84,85,86,87,89,90,91,92,93, 94,96,97,98,99};        //用于顯示電壓值的數(shù)組

  34. void main()
  35. {
  36.         uchar num=0;         
  37.         while(1)
  38.         {
  39.                          if(keyup==0)                 //步進(jìn)加端口為低電平,
  40.                         {       
  41.                                 delay(10);                  //稍作延時(shí),消抖,
  42.                                 if(keyup==0)          //步進(jìn)加端口依然為低電平,說明的確是被按下,
  43.                                 {       
  44.                                         if(num==128)  //執(zhí)行電壓DA轉(zhuǎn)換數(shù)值步進(jìn)增加一
  45.                                         num=0;
  46.                                         else
  47.                                         num++;
  48.                                 }
  49.                                 while(keyup==0);        //防止按死語句
  50.                          }
  51.                  if(keydown==0)                                 //步進(jìn)減端口為低電平,
  52.                          {
  53.                                  delay(10);                         //稍作延時(shí),消抖,
  54.                                 if(keydown==0)                 //步進(jìn)減端口依然為低電平,說明的確是被按下,
  55.                                 {       
  56.                                         if(num==0)                  //執(zhí)行電壓DA轉(zhuǎn)換數(shù)值步進(jìn)減一
  57.                                         num=128;
  58.                                         else
  59.                                         num--;
  60.                                 }
  61.                                 while(keydown==0);          //防止按死語句
  62.                          }
  63.                  if(RESET==0)                                  // 復(fù)位端口為低電平
  64.                          {
  65.                                  delay(10);                          //稍作延時(shí),消抖,
  66.                                 if(RESET==0)                  //復(fù)位端口依然為低電平,說明的確是被按下,
  67.                                 {       
  68.                                         num=0;                          //執(zhí)行復(fù)位操作
  69.                                 }
  70.                                 while(RESET==0);           //防止按死語句
  71.                          }
  72.        
  73.                  P1=byte[num];           //給DA一個(gè)數(shù)值,轉(zhuǎn)化成相應(yīng)的電壓值
  74.                  delay(10);
  75.                  display(num);           //調(diào)用顯示函數(shù)顯示電壓值
  76.          }
  77. }

  78. void delay(int x)                   //12M晶振,約1ms延時(shí)函數(shù)
  79. {
  80.         int i;
  81.         for(;x>0;x--)
  82.         for(i=0;i<123;i++)
  83.                 ;
  84. }
  85. void display(uchar num)              //顯示函數(shù)
  86. {        uchar temp;
  87.         temp=table[num];
  88.         if(num<75)                //電壓值小于10V的可以直接在數(shù)碼管上顯示出來
  89.         {
  90.              duan=LEDcode[temp/10]&0x7f;        //顯示個(gè)位,并加顯小數(shù)點(diǎn)
  91.                  LEDwei1=1;
  92.                  delay(5);
  93.                  LEDwei1=0;
  94.                  duan=LEDcode[temp%10];;          //顯示小數(shù)點(diǎn)后一位
  95.                  LEDwei2=1;
  96.                  delay(5);
  97.                  LEDwei2=0;
  98.         }
  99.         else               //電壓值大于10V的在數(shù)碼管上顯示字母"FF"
  100.         {                                          
  101.                  duan=LEDcode[10];            //顯示高位
  102.                  LEDwei1=1;
  103.                  delay(5);
  104.                  LEDwei1=0;
  105.                  duan=LEDcode[10];            //顯示低位
  106.                  LEDwei2=1;
  107.                  delay(5);
  108.                  LEDwei2=0;
  109.         }
  110. }                                           
復(fù)制代碼







所有資料下載:

單片機(jī)數(shù)控電源套件.rar

1.55 MB, 下載次數(shù): 172, 下載積分: 黑幣 -5

原理圖等.rar

228.46 KB, 下載次數(shù): 186, 下載積分: 黑幣 -5

評分

參與人數(shù) 2黑幣 +6 收起 理由
GUOXUAN + 5 絕世好帖!
cqhejian + 1 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:116826 發(fā)表于 2016-7-5 09:42 | 只看該作者
好帖,mark一下,感謝樓主費(fèi)心分享!
回復(fù)

使用道具 舉報(bào)

板凳
ID:96881 發(fā)表于 2017-2-28 19:50 | 只看該作者
這個(gè)資料真不錯(cuò),謝謝您分享,下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

地板
ID:185482 發(fā)表于 2017-4-2 00:35 | 只看該作者
很好的資料
回復(fù)

使用道具 舉報(bào)

5#
ID:4150 發(fā)表于 2017-4-2 09:36 | 只看該作者
TL082是用為比較器嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:102702 發(fā)表于 2017-4-3 14:41 | 只看該作者
正需要這資料,收藏了,有時(shí)間仿制一個(gè)
回復(fù)

使用道具 舉報(bào)

7#
ID:99130 發(fā)表于 2017-5-10 16:08 | 只看該作者
范圍小了點(diǎn)吧
回復(fù)

使用道具 舉報(bào)

8#
ID:76408 發(fā)表于 2017-8-19 14:16 | 只看該作者
謝謝樓主,正好我需要這個(gè)圖紙。
回復(fù)

使用道具 舉報(bào)

9#
ID:249545 發(fā)表于 2017-12-9 11:02 | 只看該作者
看了樓主資料,好像只有2位數(shù)碼管顯示電壓.要是做的話(自已私下認(rèn)為)功能一點(diǎn)點(diǎn)雞肋.
要是改下軟件能兼容其它的+-0.1V電壓連續(xù)可調(diào)的話,就可以DIY了.
回復(fù)

使用道具 舉報(bào)

10#
ID:427869 發(fā)表于 2018-12-8 20:39 | 只看該作者
感謝樓主提供的資料及樣例。下載下來學(xué)習(xí)下。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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