找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4986|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機數(shù)控直流電源課程設(shè)計論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:202306 發(fā)表于 2017-5-19 12:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

分享一個單片機數(shù)控直流電源課程設(shè)計


  • 方案論證與選擇

方案一:原理框圖如圖1所示,采用數(shù)字邏輯控制。通過“+”、“-”兩鍵操作,控制可逆計數(shù)器分別作加、減計數(shù),可逆計數(shù)器的二進制數(shù)字輸出一路用于驅(qū)動數(shù)顯電路,指示電源輸出電壓的大小值;另一路進入D/A轉(zhuǎn)換電路,將數(shù)字量按比例轉(zhuǎn)換成模擬電壓,然后經(jīng)過射極跟隨器控制調(diào)整輸出級輸出所需的穩(wěn)定電壓。該方案能夠完成基本要求,發(fā)揮部分受到限制。

圖一  方案一示意圖

方案二原理框圖如圖2所示,采用8051單片機產(chǎn)生波形,D/A轉(zhuǎn)換器將其轉(zhuǎn)化為模擬電壓,再經(jīng)過放大器放大。由單片機的軟件實現(xiàn)電壓的步進增減、對鍵盤的自動掃描等功能。該方案靈活性大,易于擴展,需要專用的譯碼驅(qū)動芯片。

圖二  方案二示意圖

方案三:數(shù)控部分同方案二,原理框圖如圖三。用74LS164作驅(qū)動器,由單片機軟件控制數(shù)碼顯示,軟件還附有顯示器的自動刷新及電路的過零保護等功能。該方案具有方案二的所有優(yōu)點,而降低了對芯片的要求,提高了系統(tǒng)的可靠性。

圖三 方案三示意圖

綜上所述,選用方案三。

二.分析與參數(shù)計算

1DAC0832簡介

DAC0832是一款采用CMOS工藝制成的單片電流輸出型8位數(shù) / 模轉(zhuǎn)換器,圖四是它的邏輯框圖和引腳排列。DAC0832有三種工作方式:不帶緩沖工作方式,單緩沖工作方式,雙緩沖工作方式。

圖四 DAC0832的邏輯框圖和引腳排列

2.步進01.V的實現(xiàn)

因為輸出電壓量程為10V,VREF基準電壓范圍為-10V---+10V,基準電壓可以為5.12V,這樣在DAC0832的8腳輸出電壓的分辨率為:

即D/A輸入數(shù)據(jù)端每增加1,電壓增加0.02V。D/A的電壓輸出端接放大器OP27

的輸入端,放大器的放大倍數(shù)為5 ,才能得到輸出電壓的電壓分辨率:

0.02V×5=0.1V

這樣當調(diào)節(jié)電壓的時候,以每次0.1V的梯度增加或者降低電壓。

三.硬件電路圖

1.波形轉(zhuǎn)換與放大部分

選用51系列的單片機產(chǎn)生和控制波形。數(shù)模轉(zhuǎn)換器用的是DAC0832,本方案中DAC0832采用單緩沖模式。
電路如圖五所示,P0口和DAC0832的數(shù)據(jù)口直接相連, 接地,DAC數(shù)據(jù)寄存器處于直通狀態(tài),ILE=1, 連接后接P2.0。在選中該片的地址(=0)時,寫入數(shù)字量,該數(shù)字信號就立即傳送到DAC輸入寄存器,并直通至DAC數(shù)據(jù)寄存器,經(jīng)過短暫的建立時間,即可以獲得相應(yīng)的模擬電壓。 寫入操作結(jié)束, 和立即變?yōu)楦唠娖,寫入的?shù)據(jù)被輸入寄存器鎖存,直到再次寫入刷新。

圖五 波形產(chǎn)生與轉(zhuǎn)換電路

圖六  電流放大電路

  







2.鍵盤與數(shù)碼顯示部分電路如圖七

圖七   鍵盤與顯示電路


3.穩(wěn)壓電源部分

電源部分輸出+5V,+15V,-15V電壓供給系統(tǒng),另外還制作+5.12V直流穩(wěn)壓電源做DAC0832的VERF的基準電壓。

.軟件設(shè)計與流程

1.軟件介紹

軟件部分采用模塊化程序設(shè)計的方法編寫,系統(tǒng)軟件由主控制程序、數(shù)碼顯示子程序、鍵盤服務(wù)子程序組成。還添加了自動掃描鍵盤、顯示器的自動刷新、過零保護的功能。編程中C函數(shù)和匯編函數(shù)相互調(diào)用。










2.程序流程圖如圖九所示

 軟件流程圖



五.程序如下


  1. #include
  2. #define uchar unsigned char
  3. sbit dp=P1^4;
  4. sbit sh=P1^5;
  5. void delay(unsigned int t);
  6. uchar Getkey(void);
  7. void Disp(uchar n);
  8. uchar Disptab[10]={0x11,0x7d,0x23,0x29,0x4d,0x89,0x81,0x3d,0x1,0x9};
  9. main()
  10. {   uchar key;
  11.     char Vol1=0x00,Vol2=0x00;
  12.     Disp(Disptab[Vol2]);
  13.               Disp(Disptab[Vol1]-1);
  14.               P0=0x00;
  15.     while(1)
  16.               {   key=Getkey();
  17.                             switch(key)
  18.                             { case 0x01:break;
  19.                                           case 0x02:break;
  20.                                           case 0x04:if(Vol1==0&&Vol2==0)break;
  21.                                                     Vol2--;
  22.                                                     if(Vol2<0)
  23.                       { Vol2=9;Vol1--; }
  24.                       Disp(Disptab[Vol2]);
  25.                                           Disp(Disptab[Vol1]-1);
  26.                                           P0=4.3*(Vol1*10+Vol2);
  27.                                                     break;
  28.                                           case 0x08:if(Vol1==9&&Vol2==9)break;
  29.                                                     Vol2++;
  30.                                                     if(Vol2==10)
  31.                                                     { Vol2=0x00;Vol1++; }
  32.                       Disp(Disptab[Vol2]);
  33.                                           Disp(Disptab[Vol1]-1);
  34.                                           P0=4.3*(Vol1*10+Vol2);
  35.                       break;
  36.                                           default:break; }              } }
  37. uchar Getkey(void)
  38. {uchar key;
  39.     P1|=0x0f;
  40.               if(!(~(P1|0xf0))) return 0x00;
  41.               delay(0x20);
  42.     if(!(~(P1|0xf0))) return 0x00;
  43.               key=~(P1|0xf0);
  44.               while(~(P1|0xf0));
  45.               return key; }
  46. void delay(unsigned int t)
  47. { while(--t); }
  48. void Disp(uchar n)
  49. ……………………

  50. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
完整課程設(shè)計論文下載(word格式 可編輯):
數(shù)控直流電源.doc (457 KB, 下載次數(shù): 38)


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

使用道具 舉報

沙發(fā)
ID:212829 發(fā)表于 2017-9-13 00:21 | 只看該作者
好東西,收藏一下
回復(fù)

使用道具 舉報

板凳
ID:232783 發(fā)表于 2017-9-13 03:36 | 只看該作者

 好東西,收藏一下
回復(fù)

使用道具 舉報

地板
ID:212411 發(fā)表于 2017-10-10 10:14 來自手機 | 只看該作者
可以好用
回復(fù)

使用道具 舉報

5#
ID:249545 發(fā)表于 2017-12-9 14:22 | 只看該作者
就是量程是0-10V,感覺是太小了.
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表