标题: DIY数控电源 [打印本页]

作者: inter_web    时间: 2017-1-18 16:06
标题: DIY数控电源
简单的一个数控电源,使用51作为主芯片,DA芯片用的是八位的DAC0832.误差不超过0.01V,三个按键控制加减电压和功能设定,很简单且实用。控制方便,精准度适合平时自己使用。下面是仿真图和程序。


单片机源程序如下:
  1. #include<reg52.h>
  2. #include<math.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code table[]={
  6. 0xc0,0xf9,0xa4,0xb0,
  7. 0x99,0x92,0x82,0xf8,
  8. 0x80,0x90,0x88,0x83,
  9. 0xc6,0xa1,0x86,0x8e};
  10. sbit key1=P3^4;                 //加
  11. sbit key2=P3^5;                 //减
  12. sbit key3=P3^6;                 //模式设置
  13. uint flag;  //标志位
  14. uchar num1,z,x;           //x显示整数位,z显示小数位
  15. float num;
  16. //num1每次+17,即加1v,num每次加1.7,即加0.1v ,num1和nm都是给DA赋值的
  17. void delayms(uint xms)
  18. {
  19.    uint i,j;
  20.    for(i=xms;i>0;i--)
  21.     for(j=110;j>0;j--);
  22. }
  23. void shuzhi()
  24. {
  25.   if(num>=17)
  26.   {
  27.     num=0;
  28.         num1=num1+17;
  29.   }
  30.   if(num1>=255)
  31.   {
  32.     num1=0;
  33.   }
  34.   if(num<=0)
  35.   {
  36.     num=0;
  37.   }
  38. }

  39. void KEY1()
  40. {
  41.   if(key1==0)
  42.   {         
  43.     delayms(10);
  44.     if(key1==0)
  45.         {
  46.    
  47.     num=num+1.7;
  48.         while(!key1);
  49.         }
  50.   }
  51. }
  52. void KEY2()
  53. {
  54. if(key1==0)
  55. {         
  56.    delayms(10);
  57.    if(key1==0)
  58.    {
  59.    num1=num1+17;
  60.            while(!key1);
  61.    }
  62. }
  63. }
  64. void KEY3()
  65. {
  66.   if(key2==0)
  67.   {
  68.     delayms(10);
  69.         if(key2==0)
  70.         {
  71.     num=num-1.7;
  72.         while(!key2);
  73.         }
  74.   }
  75. }

  76. void KEY4()
  77. {
  78.   if(key2==0)
  79.   {       
  80.     delayms(10);
  81.     if(key2==0)
  82.         {
  83.     num1=num1-17;
  84.         while(!key2);
  85.         }
  86.   }
  87.   
  88. }
  89. void set_v()
  90. {
  91.   P1=num1+num;//赋值给P1口
  92.   if(flag==1)
  93.   {
  94.             KEY2();
  95.          KEY4();
  96.   }
  97.   if(flag==2)
  98.   {
  99.            KEY1();
  100.         KEY3();
  101.   }
  102. }
  103. void display() //显示
  104. {
  105.    x=num1/17;
  106.    z=num/1.7;
  107.    P0=table[x];
  108.          P2=0X40;
  109.    delayms(10);

  110.            P0=0x7f;
  111.         P2=0X40;
  112.    delayms(10);
  113.             
  114.    P0=table[z];
  115.            P2=0X80;
  116.    delayms(10);
  117. }

  118. void main()
  119. {


  120.   while(1){
  121.    display();
  122.    shuzhi();
  123.    set_v();       
  124.   
  125.    if(key3==0)
  126.    {
  127.      delayms(10);
  128.          if(key3==0)
  129.          {
  130.            flag++;
  131.            if(flag>2){flag=0;}
  132.          }
  133. ……………………

  134. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
数控电源.zip (79.29 KB, 下载次数: 146)




作者: lxa0    时间: 2017-1-18 19:53
本帖最后由 lxa0 于 2017-1-18 19:54 编辑

是楼主最新实验出来的?
在这里看见过不少数控电源
但是都不大理想
不知这个如何?

楼主可否直接上电路图看看啊?

作者: Alvin_Nie    时间: 2017-4-3 17:21
有没验证过性能如何?

作者: qq88046220    时间: 2017-6-30 15:42
有没有数显的呢
作者: qq88046220    时间: 2017-6-30 15:43
有没有数显呢
作者: 1985    时间: 2017-7-16 17:21

有没有数显的呢
作者: zheng995599    时间: 2017-8-2 11:32
楼主可否直接上电路图看看啊??
作者: zhahl    时间: 2017-8-6 08:56
楼主只有程序吗?能不能把原理图也分享出来呢?谢谢!
作者: zhou.1983    时间: 2017-10-15 00:23
楼主上图预览
作者: 3760609865    时间: 2017-10-17 10:38
下载学习学习,谢谢分享。
作者: GUOXUAN    时间: 2017-12-9 11:04
老师你好,请给我们同学贴完整电路图吧
作者: 溧阳科燕    时间: 2017-12-14 15:26
老师你好,请给我们同学贴完整电路图吧




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1