久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5339|回復: 5
打印 上一主題 下一主題
收起左側

簡易單片機數控直流穩壓電壓源設計

[復制鏈接]
跳轉到指定樓層
樓主
本系統以直流電壓源為核心,ATC89S52 單片機為主控制器,通過鍵盤來設置直流電源的輸出電壓,設置步進等級可達0.1V,輸出電壓范圍為0—9.9V,輸出電流為500mA,并 由數碼管顯示輸出電壓值。由“+”、“-”兩鍵分別控制輸出電壓步進增減,并且輸出電 壓可預置在0~9.9V 之間的任意一個值。擴展輸出電壓種類后可輸出三角波、梯形波、鋸齒波、方波等波形。本系統由單片機程控輸出數字信號,經過D/A 轉換器(DA0832)輸出模擬電流量,再經過運算放大器隔離放大輸出模擬電壓量,控制穩壓芯片LM7805 電壓的變化而輸出不同的電壓。實際測試結果表明本系統輸出電壓值精確度較高。本系統實際應用于需要高穩定度小功率恒壓源的領域。


. 基本功能實現:
(1) 可輸出電壓:范圍0~+9.9V,步進0.1V,紋波不大于10mV;
(2) 可輸出電壓值由數碼管顯示;
(3) 由“+”、“-”兩鍵分別控制輸出電壓步進增減;
(4) 為實現上述幾部件工作,自制一穩壓直流電源,輸出輸出± 15v,+5v;

2.擴展功能與創新:
(1)輸出電壓可預置在0~9.9V之間的任意一個值;
   (2)擴展輸出電壓種類(比如三角波等);
(3)最大輸出電流可達1.5A;
(4)負載電流在0~1.5A間變化時輸出電壓的變化量不超過0.1V;      
(5)設計并制作一個電子負載,用于測試上述電源的負載調整率,電子負載恒定電流的可調范圍為0.1A~1.5A。


單片機源程序如下:
#include<reg52.h>
#define uint unsigned int      //無符號字符  8位
#define uchar unsigned char    //無符號整數  16位
sbit dula=P2^6;        //鎖存器段選
sbit wela=P2^7;        //鎖存器位選
sbit lcdrs=P3^1;        //1602數據命令選擇
sbit lcden=P3^0;       //1602使能信號端
sbit key1=P2^3;        //+鍵
sbit key2=P2^2;        //-鍵
sbit key3=P2^1;        //波產生鍵
sbit key0=P2^0;        //功能鍵
sbit wr_da=P2^5;        //DAC選通
uchar num,num0,num1,zsys,xsys,bxsz;
uchar code table_x[]={    //編碼表  無點數碼管顯示      
0x3f,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0f,0x7f,0x5f};
uchar code table_z[]={    //編碼表 帶點數碼管顯示
0xbf,0x8c,0xf6,0xde,0xcd,0xdb,0xfb,0x8f,0xff,0xdf};

void delay(uint z);  

void display_bjys(uchar zsys,uchar xsys);
void display_bxsz(uchar bxsz);
void trigle();
void trap();
void saw();
void square();
void keycan_bjys();
void keycan_bxsz();
void write_com(uchar com);
void write_date(uchar date);
void init_kjhm();
void init_bjhm();
void init_yshm();
void init_bxxzhm();
void init_trigle();
void init_trap();
void init_saw();
void init_square();
void init();
void main()
{  init_kjhm();
  init();          //初始化子程序
  while(1)
    {     dula=1;
      P1=0x3f;
      dula=0;
      wela=1;
      P1=0xf0;
      wela=0;
      if(key1==0||key2==0)
        {    if(key0==0)
            init_bjhm();
          if(key0!=0)
            init_yshm();
          while(1)
            {  keycan_bjys();
              if(key3==0)
                {  dula=1;
                  P1=0xff;
                  dula=0;
                  wela=1;
                  P1=0xff;
                  wela=0;}
              if(key3==0)
                break;
            }
        }      
         if(key3==0)
        {  init_bxxzhm();
          while(1)
            {  keycan_bxsz();
              if(key1==0||key2==0)
                {  dula=1;
                  P1=0xff;
                  dula=0;
                  wela=1;
                  P1=0xff;
                  wela=0;
                }
              if(key1==0||key2==0)
                break;
            }
        }     
    }   
}
void delay(uint z)      //延時函數
{  uint x,y;
  for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}
void display_bjys(uchar zsys,uchar xsys)  //預設&步進  數
{    dula=1;
    P1=table_z[zsys];
    dula=0;
    P1=0xff;
    wela=1;
    P1=0xfe;
    wela=0;
    delay(1);
    dula=1;
    P1=table_x[xsys];
    dula=0;
    P1=0xff;
    wela=1;
    P1=0xfd;
    wela=0;
    delay(1);

}
void display_bxsz(uchar bxsz)  //波形設置   數碼管掃描子函數
{    dula=1;
    P1=table_x[bxsz];
    dula=0;
    P1=0xff;
    wela=1;
    P1=0xf0;
    wela=0;
    delay(1);
}

void keycan_bjys()          //預設&步進   按鍵掃描
{  if(key1==0)           //按key1鍵加數
    {
      delay(5);
      if(key1==0)
        {  num++;
          if(num==100)
            num=0;
        }
      while(!key1);
      delay(5);
      while(!key1);
    }
    if(key2==0)         //按key2鍵減數
    {  delay(5);
      if(key2==0)
        {  num--;
          if(num==-1)
            num=99;
        }
      while(!key2);
      delay(5);
      while(!key2);
    }
    zsys=num/10;
    xsys=num%10;
    display_bjys(zsys,xsys);     
     
  if(key0==0)         //預設功能
        {  P0=num;   
      wr_da=0;
      delay(1);
    }
}
void keycan_bxsz()          //波形  按鍵掃描
{
  if(key3==0)         

    {  delay(5);
      if(key3==0)
        {  num1++;//num1自加   選擇波形
          if(num1==5)
          num1=1;   
          bxsz=num1;
          display_bxsz(bxsz);   
          while(!key3);
          delay(5);
          while(!key3);
        }     
      if(key0==0)//功能鍵按下  確定波形輸出
        {  if(num1==1)
            {  init_trigle();
              while(1)
                {  trigle();
                  if(key0!=0)
                    break;
   
                }
              }
          if(num1==2)
            {  init_trap();
              while(1)
                {  trap();   
                  if(key0!=0)
                    break;
   
                }      
            }
          if(num1==3)
            {  init_saw();
              while(1)
                {  saw();
                  if(key0!=0)
                    break;
   
                }     
            }
          if(num1==4)
            {  init_square();
              while(1)
                {  square();
                  if(key0!=0)
                    break;
   
                }     
            }
        }
    }
}

void init_kjhm()                  //初始化 1   開機顯示畫面函數
{     dula=0;
wela=0;
        lcden=0;
        write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);

  
  write_com(0x80+0x40);

  }

void init_bjhm()          //初始化2   步進電壓畫面顯示函數
{     dula=0;
  wela=0;
         lcden=0;
         write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);

  write_com(0x80+0x40);

}
void init_yshm()          //初始化3   預設電壓畫面顯示函數
{      dula=0;
  wela=0;
     lcden=0;
     write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);

  write_com(0x80+0x40);

}
void init_bxxzhm()    //初始化4   波形設置畫面顯示函數
{     dula=0;
  wela=0;
     lcden=0;
     write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);

  write_com(0x80+0x40);
  write_date(':');
      delay(50);
}
void init_trigle()       //初始化5  三角波輸出顯示畫面函數
{     dula=0;
  wela=0;
     lcden=0;
     write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);

  write_com(0x80+0x40);

}
void init_trap()      //初始化6   梯形波輸出顯示畫面函數
{     dula=0;
  wela=0;
     lcden=0;
     write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);


  write_date(':');
  write_com(0x80+0x40);
  
      delay(50);
    }

void init_saw()          //初始化7  鋸齒波輸出顯示畫面函數
{     dula=0;
  wela=0;
     lcden=0;
     write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);

  write_com(0x80+0x40);

}
void init_square()       //初始化8  方波輸出顯示畫面函數
{     dula=0;
  wela=0;
     lcden=0;
     write_com(0x38);
  write_com(0x0e);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);
  
  write_com(0x80+0x40);

}
void init()     //初始化子函數
{  wela=0;
  dula=0;
  num=0;
  num1=0;
  P0=0;
  wr_da=0;
  delay(1);
  wr_da=1;
  delay(1);
  key0=1;
}


全部資料51hei下載地址:
簡易數控穩壓電源.zip (2.36 MB, 下載次數: 71)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:156220 發表于 2019-4-12 08:43 | 只看該作者
電路圖有沒有
回復

使用道具 舉報

板凳
ID:582891 發表于 2019-7-14 18:46 | 只看該作者
太贊了
回復

使用道具 舉報

地板
ID:282095 發表于 2019-7-15 09:21 | 只看該作者
電源設計是個好東西
回復

使用道具 舉報

5#
ID:56665 發表于 2019-7-15 18:49 | 只看該作者
這個電源用的什么芯片,是開關電源還是線性電源。
回復

使用道具 舉報

6#
ID:729886 發表于 2020-5-7 07:56 | 只看該作者
數控電源有電路圖就更好了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频网 | 国产成人影院 | 一级片成人 | 亚洲久在线 | 久久久精品一区二区 | 午夜激情网 | 亚洲精品一区二区 | 久久综合色综合 | 久久久不卡网国产精品一区 | 91伦理片 | 欧美日韩最新 | 亚洲精品视频久久 | 亚洲欧美日韩久久 | 久久久久久久久久久久久久国产 | 成人av观看 | 欧洲精品在线观看 | 97精品国产97久久久久久免费 | www.99re| 色综合一区二区 | 精品视频在线一区 | 久久久久免费观看 | 四虎成人精品永久免费av九九 | 成人看片在线观看 | 国产农村妇女精品一区 | 国产成人精品免高潮在线观看 | 欧美a级成人淫片免费看 | 男插女下体视频 | 久久精品小视频 | 美国a级毛片免费视频 | 亚洲欧美日韩中文在线 | 久久精品久久久久久 | 一级a毛片| 日韩欧美电影在线 | 欧美一区二区在线免费观看 | 久久久久国产一区二区三区 | 亚洲精品色 | 午夜天堂| 欧美激情a∨在线视频播放 成人免费共享视频 | 日本高清中文字幕 | 国产成人精品在线播放 | 麻豆a级片|