|
精密數(shù)控直流電流源仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (46.66 KB, 下載次數(shù): 103)
下載附件
2017-5-24 15:21 上傳
0.png (80.78 KB, 下載次數(shù): 128)
下載附件
2017-5-24 15:20 上傳
單片機源程序如下:
- #include<reg51.h>
- #include<absacc.h> //頭文件,可使用其中定義的宏來訪問絕對地址
- #define dac0832 XBYTE[0X7fff] //定義dac端口地址,P0口為地址的低8位,P2口為地址的高8位,0x7fff讓P2.7=0,其余為1
- unsigned char code shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f}; //數(shù)碼管段碼
- unsigned char code sho[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x7f}; //帶小數(shù)點的七段碼
- float s;
- sbit ALE=P3^0; //DAC0832 ALE腳工作脈沖位定義
- sbit START=P3^1; //DAC0832 START位定義
- sbit EOC=P3^2; //轉換結束標志位
- sbit OE=P3^3; //輸出允許位
- sbit SHCP=P2^0; //數(shù)碼管驅動芯片(如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,l; //定義變量
- unsigned int b;
- void delay(unsigned char t) //延時程序
- {
- while(t--);
- }
- void display() //靜態(tài)數(shù)碼管顯示程序
- {
-
-
-
- j=0x01; //74HC595 把數(shù)據(jù)從串口導入輸出,點亮數(shù)碼管過程。
- for(i=0;i<8;i++)
- {
- if((sho[m]&j)==0) //帶小數(shù)點數(shù)組輸出數(shù)碼管七段碼。
- {
- DS=0; //移位寄存器的內容到達保持寄存器并從并口輸出,空移位寄存器到輸出寄存器
- }
- else
- {
- DS=1; //邏輯高電平移入移位寄存器狀態(tài)0,包含所有的移位寄存器狀態(tài) 移入
- }
- SHCP=1;
- SHCP=0;
- j<<=1; //j的數(shù)值左移一位
- }
- P12=0; //RD 低電平
- P11=1; //T1 高電平
- STCP=0; //STCP置為上升沿
- STCP=1;
- delay(200);
- j=0x01;
- for(i=0;i<8;i++)
- {
- if((shu[n]&j)==0)
- {
- DS=0; //清空移位寄存器,并行輸出為高阻狀態(tài)
- }
- else
- {
- DS=1;
- }
- SHCP=1; //端口下降沿,下降沿移位寄存器數(shù)據(jù)不變
- SHCP=0;
- j<<=1;
- }
- P11=0; //T1 高電平
- P12=1; //RD 低電平
- STCP=0; //STCP置為上升沿
- STCP=1;
- delay(200); //調用延時程序
- }
-
- void main() //主函數(shù)
- {
- P2=0X87;
- TMOD=0X20; //定時器1初始化
- TH1=0X06;
- TL1=0X06;
- EA=1; //總中斷允許
- ET1=1;
- TR1=1;
- while(1) //循環(huán)程序
- {
- ALE=1; //DAC0832地址鎖存脈沖
- ALE=0;
- //DAC0832 開始轉換脈沖
- START=1; //ADC0808脈沖,置 START引腳為下降沿。
- START=0; //ST下降沿,開始進行模數(shù)轉換。
- while(EOC==0); //等待轉換完畢, A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。
- OE=1; //開始讀,數(shù)據(jù)輸出允許信號,輸入,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。
- k=P1; //讀數(shù)據(jù),數(shù)據(jù)從ADC0808 讀入 AT89C51
- a=P1; //讀數(shù)據(jù), 轉換好的數(shù)據(jù)存放在P1口。
- b=a*3.9; //平衡模數(shù)轉換輸出的數(shù)值用來通過單片機進行給數(shù)碼管顯示。
- m=b%1000/100; //取千位數(shù)
- n=b%100/10; //取百位數(shù)
- //l=b%1000/100/10 //取十位數(shù)
- dac0832=k;
-
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
數(shù)控直流穩(wěn)壓電源proteus仿真 程序資料.zip
(108.47 KB, 下載次數(shù): 224)
2017-5-24 13:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|