簡單的一個數控電源,使用51作為主芯片,DA芯片用的是八位的DAC0832.誤差不超過0.01V,三個按鍵控制加減電壓和功能設定,很簡單且實用。控制方便,精準度適合平時自己使用。下面是仿真圖和程序。
0.png (18.72 KB, 下載次數: 93)
下載附件
2017-10-15 00:29 上傳
0.png (60.81 KB, 下載次數: 79)
下載附件
2017-10-15 00:29 上傳
單片機源程序如下:
- #include<reg52.h>
- #include<math.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]={
- 0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e};
- sbit key1=P3^4; //加
- sbit key2=P3^5; //減
- sbit key3=P3^6; //模式設置
- uint flag; //標志位
- uchar num1,z,x; //x顯示整數位,z顯示小數位
- float num;
- //num1每次+17,即加1v,num每次加1.7,即加0.1v ,num1和nm都是給DA賦值的
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void shuzhi()
- {
- if(num>=17)
- {
- num=0;
- num1=num1+17;
- }
- if(num1>=255)
- {
- num1=0;
- }
- if(num<=0)
- {
- num=0;
- }
- }
- void KEY1()
- {
- if(key1==0)
- {
- delayms(10);
- if(key1==0)
- {
-
- num=num+1.7;
- while(!key1);
- }
- }
- }
- void KEY2()
- {
- if(key1==0)
- {
- delayms(10);
- if(key1==0)
- {
- num1=num1+17;
- while(!key1);
- }
- }
- }
- void KEY3()
- {
- if(key2==0)
- {
- delayms(10);
- if(key2==0)
- {
- num=num-1.7;
- while(!key2);
- }
- }
- }
- void KEY4()
- {
- if(key2==0)
- {
- delayms(10);
- if(key2==0)
- {
- num1=num1-17;
- while(!key2);
- }
- }
-
- }
- void set_v()
- {
- P1=num1+num;//賦值給P1口
- if(flag==1)
- {
- KEY2();
- KEY4();
- }
- if(flag==2)
- {
- KEY1();
- KEY3();
- }
- }
- void display() //顯示
- {
- x=num1/17;
- z=num/1.7;
- P0=table[x];
- P2=0X40;
- delayms(10);
- P0=0x7f;
- P2=0X40;
- delayms(10);
-
- P0=table[z];
- P2=0X80;
- delayms(10);
- }
- void main()
- {
- while(1){
- display();
- shuzhi();
- set_v();
-
- if(key3==0)
- {
- delayms(10);
- if(key3==0)
- {
- flag++;
- if(flag>2){flag=0;}
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
數控電源.zip
(79.29 KB, 下載次數: 149)
2017-1-18 16:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|