1、基本要求 (1)輸出電流范圍:0~2000mA; (2)可按鍵設置輸出電壓值值,要求輸出電壓與給定值偏差的絕對值≤給定值的1%+10 mA; (3)具有“+”、“-”步進調整功能,步進0.1V; (4)三極管作調整輸出,實現最低電壓輸出0V (5)紋波電壓≤10mV; 本電源主要由數控部分和穩流輸出部分組成 1.數控部分 數控部分主要有數字電路構成,它要完成鍵盤控制,LCD1602液晶顯示輸出的電壓值,短路保護等功能。因此采用STC89C51單片機作為整機的控制單元,通過改變TLC5615的輸入數字量來改變輸出電壓值,從而使輸出功率管的基極電壓發生變化,間接地改變輸出電流的大小。采用軟件方法來解決數據的預置以及電電壓的步進控制,使系統硬件更加簡潔,各類功能易于實現,能很好地滿足題目的要求。 2. 穩流輸出部分 這部分是將控制部分送來的電流控制字數據轉換成穩定電流輸出。電壓控制電路采用數控的方式,利用單片機送出數字量,經過D/A轉換轉變成模擬信號,再送到大功率三極管進行放大。單片機系統實時對輸出電流進行監控,采用數字方式作為反饋調整環節,由程序控制調節功率管的輸出電壓恒定。 部分代碼: uchar code tab1[]={"Welcome to use "}; //固定字符 uchar code tab2[]={"adj power supply"}; //固定字符 uchar code tab3[]={"Voltage: . V"}; //固定字符 uchar code tab4[]={" "}; //固定字符 uchar code tab5[]={"Short circuit!!!"}; //固定字符 uchar code tab6[]={"Please restart!!"}; //固定字符 //延時函數,后面經常調用 void delay(uint xms)//延時函數,有參函數 { uint x,y; for(x=xms;x>0;x--) for(y=121;y>0;y--); } /********液晶寫入指令函數與寫入數據函數,以后可調用**************/ /*在這個程序中,液晶寫入有關函數會在DS1302的函數中調用,所以液晶程序要放在前面*/ void write_1602com(uchar com)//****液晶寫入指令函數**** { RS=0;//數據/指令選擇置為指令 RW=0; //讀寫選擇置為寫 P0=com;//送入數據 delay(1); EN=1;//拉高使能端,為制造有效的下降沿做準備 delay(1); EN=0;//en由高變低,產生下降沿,液晶執行命令 } void write_1602dat(uchar dat)//***液晶寫入數據函數**** { RS=1;//數據/指令選擇置為數據 RW=0; //讀寫選擇置為寫 P0=dat;//送入數據 delay(1); EN=1; //en置高電平,為制造下降沿做準備 delay(1); EN=0; //en由高變低,產生下降沿,液晶執行命令 } void lcd_init()//***液晶初始化函數**** { uchar p; write_1602com(0x38);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數據 write_1602com(0x0c);//開顯示不顯示光標 write_1602com(0x06);//整屏不移動,光標自動右移 write_1602com(0x01);//清顯示 write_1602com(0x80);//日歷顯示固定符號從第一行第1個位置之后開始顯示 for(p=0;p<16;p++) { write_1602dat(tab1[p]);//向液晶屏寫日歷顯示的固定符號部分 } write_1602com(0xc0);//時間顯示固定符號寫入位置,從第2個位置后開始顯示 for(p=0;p<16;p++) { write_1602dat(tab2[p]);//寫顯示時間固定符號,兩個冒號 } delay(1000); write_1602com(0x80);//日歷顯示固定符號從第一行第1個位置之后開始顯示 for(p=0;p<16;p++) { write_1602dat(tab3[p]);//向液晶屏寫日歷顯示的固定符號部分 } write_1602com(0xc0);//時間顯示固定符號寫入位置,從第2個位置后開始顯示 for(p=0;p<16;p++) { write_1602dat(tab4[p]);//寫顯示時間固定符號,兩個冒號 }
}
|