找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4911|回复: 12
打印 上一主题 下一主题
收起左侧

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, 下载次数: 145)



评分

参与人数 2黑币 +9 收起 理由
mchord + 1 很给力!
nhdjd + 8 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:74784 发表于 2017-1-18 19:53 | 只看该作者
本帖最后由 lxa0 于 2017-1-18 19:54 编辑

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

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

使用道具 举报

板凳
ID:185779 发表于 2017-4-3 17:21 | 只看该作者
有没验证过性能如何?
回复

使用道具 举报

地板
ID:216120 发表于 2017-6-30 15:42 | 只看该作者
有没有数显的呢
回复

使用道具 举报

5#
ID:216120 发表于 2017-6-30 15:43 | 只看该作者
有没有数显呢
回复

使用道具 举报

6#
ID:220082 发表于 2017-7-16 17:21 | 只看该作者

有没有数显的呢
回复

使用道具 举报

7#
ID:223986 发表于 2017-8-2 11:32 | 只看该作者
楼主可否直接上电路图看看啊??
回复

使用道具 举报

8#
ID:151000 发表于 2017-8-6 08:56 | 只看该作者
楼主只有程序吗?能不能把原理图也分享出来呢?谢谢!
回复

使用道具 举报

9#
ID:239098 发表于 2017-10-15 00:23 | 只看该作者
楼主上图预览
回复

使用道具 举报

10#
ID:159139 发表于 2017-10-17 10:38 来自手机 | 只看该作者
下载学习学习,谢谢分享。
回复

使用道具 举报

11#
ID:249545 发表于 2017-12-9 11:04 | 只看该作者
老师你好,请给我们同学贴完整电路图吧
回复

使用道具 举报

12#
ID:137704 发表于 2017-12-14 15:26 | 只看该作者
老师你好,请给我们同学贴完整电路图吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表