標題: 基于51單片機的數(shù)控電源全部資料分享 [打印本頁]

作者: subobo    時間: 2018-8-25 20:03
標題: 基于51單片機的數(shù)控電源全部資料分享
制作出來的實物圖如下:


數(shù)控電源電路原理圖如下:


單片機數(shù)控電源源程序:
  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. //數(shù)碼管定義
  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. };        //共陽數(shù)碼管段碼表        沒有小數(shù)點 0~9



  38. void delay_ms(uint z)                          //延時函數(shù)
  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. //主函數(shù)
  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
這種資料要定要帶完整原理圖和源程序,不然做成產(chǎn)品也調(diào)不通。
作者: 單片機老司機    時間: 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
感謝大佬,不過想問問大佬有源文件嘛,我畫的圖經(jīng)常報錯。
作者: lsx116    時間: 2021-11-29 16:23
這樣的降壓效率太低發(fā)熱量太大 還是用BUCK 的靠譜
作者: 芙蓉電器    時間: 2021-11-30 08:28
鍵控改成編碼器是不是更好用點呢?
作者: subobo    時間: 2021-12-24 17:58
做得成功呀,我就經(jīng)常做了賣
作者: yhgwork    時間: 2022-3-20 00:58
不錯的電源




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1