标题: 基于51单片机的数控电源全部资料分享 [打印本页]

作者: subobo    时间: 2018-8-25 20:03
标题: 基于51单片机的数控电源全部资料分享
制作出来的实物图如下:


数控电源电路原理图如下:


单片机数控电源源程序:
  1. #include "reg52.h"

  2. //宏定义
  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. //按键定义
  6. sbit KEY1= P2^0;
  7. sbit KEY2= P2^1;
  8. sbit KEY3= P2^2;
  9. sbit KEY4= P2^3;

  10. //数码管定义
  11. sbit W1= P2^4;
  12. sbit W2= P2^5;
  13. sbit W3= P2^6;
  14. sbit W4= P2^7;

  15. //DAC定义
  16. sbit  CS_5615=P3^2;
  17. sbit CLK_5615=P3^3;
  18. sbit DAT_5615=P3^4;

  19. //报警指示定义
  20. sbit beep = P3^6;
  21. sbit Duan = P3^7;

  22. uint  U;
  23. bit flag=0;
  24. uint  a=0;

  25. uchar code table[]=
  26. {
  27.         0xC0,/*0*/
  28.         0xF9,/*1*/
  29.         0xA4,/*2*/
  30.         0xB0,/*3*/
  31.         0x99,/*4*/
  32.         0x92,/*5*/
  33.         0x82,/*6*/
  34.         0xF8,/*7*/
  35.         0x80,/*8*/
  36.         0x90,/*9*/

  37. };        //共阳数码管段码表        没有小数点 0~9



  38. void delay_ms(uint z)                          //延时函数
  39. {
  40.   uint a,b;
  41.   for(a=z;a>0;a--)
  42.   for(b=125;b>0;b--);
  43. }

  44. void  shuma(uint buf)
  45. {
  46.         P0=table[buf%1000/100];
  47.         W1=0;
  48.         delay_ms(1);
  49.     P0=0xff;
  50.         W1=1;

  51.         P0=table[buf%100/10]&0x7f;
  52.     W2=0;
  53.         delay_ms(1);
  54.         P0=0xff;
  55.         W2=1;

  56.         P0=table[buf%10];
  57.         W3=0;
  58.         delay_ms(1);
  59.         P0=0xff;
  60.         W3=1;

  61.         P0=0xC1;
  62.         W4=0;
  63.         delay_ms(1);
  64.         P0=0xff;
  65.         W4=1;
  66. }

  67. void tlc_5615(uint buf)
  68. {
  69.         uint a,c;
  70.         c=buf;   
  71.     CS_5615=0;
  72.         for(a=16;a>0;a--)
  73.         {
  74.          DAT_5615=c>>15;      
  75.          c=c<<1;
  76.          CLK_5615=1;
  77.          CLK_5615=0;               
  78.     }
  79.         CLK_5615=1;
  80.         CLK_5615=0;
  81.         CLK_5615=1;
  82.         CLK_5615=0;
  83.         CS_5615=1;
  84. }

  85. //主函数
  86. void main(void)
  87.    {
  88.         U=0;
  89.         beep=0;
  90.         delay_ms(300);
  91.         beep=1;
  92.         while(1)
  93.         {
  94.                 tlc_5615(U*10);
  95.                 shuma(U);
  96.                 if(flag==0)
  97.                 {
  98.                         if(KEY1==0)
  99.                         {
  100.                                   delay_ms(5);
  101.                                 if(KEY1==0)
  102.                                 {
  103.                                  while(!KEY1);
  104.                                  if(U<120)U++;
  105.                                 }      
  106.                         }
  107.                         if(KEY2==0)
  108.                         {
  109.                         delay_ms(5);
  110.                         if(KEY2==0)
  111.                           {
  112.                             while(!KEY2);
  113.                                 if(U>0) U--;
  114.                           }
  115.                         }                       
  116.                         if(KEY3==0)
  117.                         {
  118.                         if(KEY3==0)
  119.                                 {
  120.                                         U=50;      
  121.                                 }      
  122.                         }      
  123.                         if(KEY4==0)
  124.                            {
  125.                        
  126.                            if(KEY4==0)
  127.                                 {
  128.                                  U=0;
  129.                                 }      
  130.                               }
  131.                 }
  132.                 if(Duan==0)
  133.                 {
  134.                         delay_ms(10);
  135.                         if(Duan==0)
  136.                         {
  137.                                 flag=1; //过流标志置高
  138.                                 beep=0;
  139.                                 U=0;
  140.                                 tlc_5615(0);      
  141.                         }
  142.                    else
  143.                      {
  144.                           beep=1;
  145.                          }               
  146.                 }                       
  147.         }
  148. }

复制代码



作者: qing112233    时间: 2019-4-22 11:01
楼主有这个仿真图嘛,我老是画不对劲
作者: legendss13    时间: 2019-4-24 10:50
楼主求个全部资料 谢谢

作者: q240609182    时间: 2019-4-24 10:59
感谢楼主的分享
作者: 鱼通水透    时间: 2019-5-9 22:12
有时间学习下
作者: m182892    时间: 2019-5-10 08:36
这种资料要定要带完整原理图和源程序,不然做成产品也调不通。
作者: 单片机老司机    时间: 2019-11-20 21:18
谢谢分享
作者: 龙强    时间: 2019-11-24 13:08
好东西
作者: t20ily    时间: 2019-11-25 11:09
谢谢分享
作者: jiangwu    时间: 2020-3-7 10:53
楼主求个全部资料 谢谢
作者: .0.    时间: 2020-3-11 11:40
谢谢分享
作者: a1091182805    时间: 2020-4-5 12:10
感谢大佬,不过想问问大佬有源文件嘛,我画的图经常报错。
作者: lsx116    时间: 2021-11-29 16:23
这样的降压效率太低发热量太大 还是用BUCK 的靠谱
作者: 芙蓉电器    时间: 2021-11-30 08:28
键控改成编码器是不是更好用点呢?
作者: subobo    时间: 2021-12-24 17:58
做得成功呀,我就经常做了卖
作者: yhgwork    时间: 2022-3-20 00:58
不错的电源




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