⑴ 基於單片機控制的可調直流穩壓電源設計的原理圖和程序 (1)控制器為單片機,電壓輸出范圍為0-12V
機控制的可調直流穩壓電源設計的原理圖和
zheyang kend
⑵ 我用單片機設計數控直流穩壓電源需要買那些器件啊
最簡單的是變壓器+LM317+DA+AD,就是效率低,網上有這種Proteus的模擬
復雜點的可以把LM317換成集成的DCDC晶元,比如常見的LM2596adj,輸出更穩定的可以用ST的L5972或者TI的STP5430等等都可以做到,當然用分離元件也是可以的,
再難點的可以做隔離式開關電源,沒有基礎還是建議別做這種隔離的。
⑶ LM317 51單片機數控穩壓電源,如何調大輸出電壓最大值
看電路上邊 OP07是作電壓比較器,DAC0832輸出基準電壓,和LM317輸出電壓比較,來控制LM317輸出穩定到基準電壓的值,所以輸出電壓要靠電壓基準來控制,而DAC0832的電源最大為15V,想要獲得更大的電壓只能進行放大,同時OP07供電電壓也要提高。
單片機,全稱單片微型計算機(英語:Single-Chip Microcomputer),又稱微控制器(Microcontroller),是把中央處理器、存儲器、定時/計數器(Timer/Counter)、各種輸入輸出介面等都集成在一塊集成電路晶元上的微型計算機。與應用在個人電腦中的通用型微處理器相比,它更強調自供應(不用外接硬體)和節約成本。它的最大優點是體積小,可放在儀表內部,但存儲量小,輸入輸出介面簡單,功能較低。由於其發展非常迅速,舊的單片機的定義已不能滿足,所以在很多應用場合被稱為范圍更廣的微控制器;從上世紀80年代,由當時的4位、8位單片機,發展到現在的32位300M的高速單片機。
⑷ 單片機控制直流穩壓電源
首先你得有DA,
單片機可以使用PWM來做個簡單DA,
如果單片機沒有PWM的可以用IO模擬PWM,
接著經過RC平滑後到運放做基準,
如果不用LM317的話可以直接驅動一個三極體就可以做個小電流數控電源,
如果還要大電流那就弄多個功率三極體,
驅動LM317的話就要從調節電壓腳入手,
修改反饋電壓即可修改輸出電壓,
還有不懂的可以Q上搜我名。
⑸ 基於8051單片機和DAC0832的可調直流穩壓電源設計的匯編語言
51單片機數控直流電源的設計2:
#include <REG52.H>
#include <STDIO.H>
#include <INTRINS.H>
#include <MATH.H>
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_()
#define DAT P0
uchar go;
sbit K1=P3^1;//
第一個鍵
sbit K2=P3^2;//
第二個鍵
sbit K3=P3^3;//
第三個鍵
sbit WR2 = P3^0; //DAC
的控制端
//
位定義
#define Lcd_Data P0 //
定義數據埠
sbit RS = P2 ^ 0; //
定義連接埠
sbit RW = P2 ^ 1;
sbit E = P2 ^ 2;
sbit Busy = P0 ^ 7;
bit hold=0;
bit _Int=0;
bit k =0;
bit m=0; 惠州學院畢業論文bit fushu=0;
bit q=0;
//
全局變數定義
uint DAdat;//
存放送到
DA
的數據 32uint x;
//uchar ADdat;//
存放從
ADC
讀出的數據
uchar vol; //
存放輸入電壓值
uchar keynum;
uchar kyreg;
uchar temp;//
存放功能狀態
uchar hh;
///
數組定義
static code uchar Disp[]="0123456789-";
static code uchar Disp2[]="Error! ";
static code uchar Disp3[]="Vol is:";
//
函數聲明
uchar keyread(void); //
讀鍵函數
uchar keyread2(void); //
讀鍵函數
2
uchar keyread3(void); //
讀鍵函數
3
void reADC(void); //AD
反饋讀數函數
uchar cmp(uchar ADdat,uchar DAdat); //
反饋比較函數基於51單片機數控直流電源的設計void lcdinit(); // LCD
初始化函數
void lcdcmd(uchar cmd); //LCD
寫控制字函數
void lcddata(uchar dat); //LCD
寫數據函數
void seDAC(uchar DAdata);// DAC
送數函數
void delay(uchar t); //
延時函數
void extint(void);
void volchange(); //
輸出電壓自增自減函數
/***********************DAC
送數
*********************/
main() //
主程序
{
unsigned int vol;
uchar i,j,l=0,a=0,b=0,e=0; 33 bit dian=0;
bit o=0,p=0;//
負數標志位、確認標志位
delay(255);
EA=1;
EX0=1;
PX0=1;
IT0=1;
//EX1=1;
//IT1=1;
pp:
a=b=0;dian=0;o=p=0,x=0;
P1=0;
lcdinit();
lcdcmd(0x80);
for(j=0;j<7;j++) //
開機送
0V
並顯示到
LCD
{
lcddata(Disp3[j]);
}
seDAC(128);
DAdat=128;
lcddata('0');
lcddata('0');
lcddata('.');
lcddata('0');
lcddata('V');
while(1)
{
while(!k)
{ delay(200); 34 i=keyread();
if(!m)
{
lcdcmd(0x1);
for(j=0;j<7;j++)
lcddata(Disp3[j]);
m=1;
}
else if(i==11){m=0;goto pp;} //
復位
⑹ 求C51單片機程序的注釋,(數控直流穩壓電源的設計)
本人估計,你是用proteus模擬做的吧,因為DAC0832的工作脈沖你是靠IO口取反來實現的,以下是我對程序的注釋,由於你沒給出原理圖,有不合理之處在所難勉.
有些地方我認為沒必要說的就不細說,不明再問
#include<reg51.h>
#include<absacc.h> //頭文件,可使用其中定山纖凳義的宏來訪問絕對地址
#define dac0832 XBYTE[0X7fff] //DAC位置定義,跟據實際原理圖而定
unsigned char code shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數碼管碼值表
float s;
/*******************DAC0832控制位的定義,視實際原理圖而定*************/
sbit ALE=P3^0; //DAC0832 ALE腳工作脈沖位定義
sbit START=P3^1; //DAC0832 START位定義
sbit EOC=P3^2; //轉換結束標志位
sbit OE=P3^3; //輸出允許位
sbit SHCP=P2^0; //數碼管驅動晶元(如595)位定義
sbit DS=P2^1; //同上
sbit STCP=P2^2; //同上
sbit P11=P3^5;
sbit P12=P3^7;
sbit clk=P2^6; //DAC0832 工作脈沖
/************************************************/
unsigned char j,k,m,n,i,a;
unsigned int b;
void delay(unsigned char t)
{ while(t--);
}
void display() //靜態數碼管的顯示
{
j=0x01;
for(i=0;i<8;i++)
{ if((shu[m]&j)==0)
{ DS=0;}
else {DS=1;}
SHCP=1;
SHCP=0;
j<<=1;
}
P12=0;
P11=1;
STCP=0;
STCP=1;
delay(200);
j=0x01;
for(i=0;i<8;i++)
{ if((shu[n]&j)==0)
{ DS=0;}
else {DS=1;}
SHCP=1;
SHCP=0;
j<<=1;
}
P11=0;
P12=1;
STCP=0;
STCP=1;
delay(200);
}
void main()
{
P2=0X87;
/////////定時器1初始化////////////////
TMOD=0X20;
TH1=0X06;
TL1=0X06;
EA=1;
ET1=1;
TR1=1;
while(1)
{
//DAC0832地址鎖存脈沖
ALE=1;
ALE=0;
//DAC0832 開始轉換脈沖
START=1;
START=0;
while(EOC==0); //逗旅等待轉換完畢
OE=1; //開始讀
k=P1; //讀數據
a=P1; //讀數據
b=a*6;
m=b/1000; //取千位豎輪數
n=b%1000/100; //取百位數
dac0832=k;
display(); //數碼管顯示
}
}
void time() interrupt 3 //DAC0932脈沖
{
clk=!clk; //位取反
⑺ 基於單片機的可調直流電源設計
我給你一個0~10可調的吧。我剛做的 圖貌似出不來了 北京交通大學 思源0702 設計要求及技術指標 數控直流穩壓電源 (2)輸出電壓Vo=±12V,最大輸出電流Iomax=1A (3)輸出紋波電壓ΔVop-p≤5mV 可控部分: • 1)輸出電壓:0~9.9V步進可調,調整步距0.1V。 • 2)輸出電流:≤500mA。 • 3)精度:靜態誤差≤1%FSR,紋波≤10mV。 • 4)顯示:輸出電壓用LED數碼管顯示。 • 5)電壓調整:由「+」、「-」兩鍵分別控制輸出電壓步進增減。 數顯、控制部分: 查閱網上的數顯可控直流穩壓電源資料,得到以下電路圖: 這種方案不僅對變壓器要求高,而且使用了7塊晶元,連接復雜,其中參數選擇有多處錯誤。我們決定應用其原理,從新設計一套方案。 電路圖如下: 此電路由6部分組成: (1) 正負12V直流穩壓輸出 (2) 數字電路供電電源 (3) 單片機控制系統 (4) D/A轉換及其輸出 (5) 數字顯示 (6) 負反饋可控直流輸出 一、正負12V直流穩壓輸出 電路圖及模擬結果如下:(帶1千歐負載) 交流信號: 二、數字電路供電電源 通過正12V直流穩壓電源與兩個大電阻分壓,得到4V參考電壓,在通過電壓跟隨器為數字電路供電。 其中所選電阻為 電壓跟隨器為LM324 三、單片機控制系統 包括最小系統及各引腳引線。單片機:STC12C4051AD,20引腳DIP封裝,與AT89C2051通用。11.059MHz晶體振盪。 程序原理:設置電壓初始值為5.1V,由P1口的低7位輸出,連接到DAC0832的高8位地址,最低位接電源。然後連接DAC0832的選片線到單片機P3.7口,由P3.7口輸出負跳變,實現DAC的數據鎖存。由於單片機指令周期過短,小於DAC0832的最小負跳變時間間隔。加入de1延時,使晶元輸出正確的模擬電壓。 按加號鍵加0.1V,按減號鍵減0.1V,按鍵掃描時間間隔0.2秒。 完成DA轉換後輸出BCD碼,輸入數顯部分。 程序原碼: org 0000h st: mov r0,#33h ;初始電壓為參考電壓的一半 ljmp st1 ss: call de ;掃描,等待按鍵 jnb p3.4,i0 jnb p3.5,i1 sjmp ss i0:inc r0 ;r0加一,並調用st1 cjne r0,#100,st1 dec r0 ljmp st1 i1:cjne r0,#0,i11 ;r0減一,並調用st1 ljmp st1 i11: djnz r0,st1 ljmp ss st1:mov a,r0 ;輸出的函數 mov p1,r0 clr p3.7 call de1 ;等待晶元接受數據 setb p3.7 mov b,#10 div ab mov r1,b rl a rl a rl a rl a add a,r1 mov p1,a ljmp ss de: mov r7,#200 a3: mov r1,#250 a2: mov r2,#2 a1: djnz r2,a1 djnz r1,a2