




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于單片機的程控電源設(shè)計、項目背景直流穩(wěn)壓源是一種常見的電子儀器,其廣泛應(yīng)用于實驗教學(xué)和科學(xué)研究等領(lǐng)域。目前使用的直流穩(wěn)壓電源大部分存在諸多缺點,如輸 出不可調(diào),電壓不穩(wěn)定等等,因而導(dǎo)致實驗結(jié)果不精確。本次項目就 設(shè)計一個基于單片機控制的程控電源。描述:使用單片機輸出PWM去控制電源調(diào)壓模塊以控制電源電壓輸出,實現(xiàn)步進可調(diào)。項目參數(shù):1輸入電壓816V,如果輸入電壓低于8V或者高于16V,利用BEEP報警,并且關(guān)掉 PWM的輸出2輸出電壓614V,如果輸出電壓低于6V或者高于14V,利用BEEP報警,同樣關(guān)掉PWM的輸出3調(diào)壓分辨率0.25V4用按鍵輸入電壓預(yù)設(shè)值,然后通過按鍵的“ +”、“-
2、” 來步進調(diào)節(jié)電源的輸出,達到預(yù)設(shè)值允許的范圍內(nèi)5通過LM3037( LCD14432)來顯示當(dāng)前的電壓預(yù)設(shè)值,當(dāng)前電壓的輸出值以及分辨率二、項目概要分析1、硬件分析:、項目整體框架報饕www.yxarm.ne1單片機程控電路部分WWW yxarm net2、軟件分析:1)熟悉單片機的原理與應(yīng)用2)BEEP報警程序設(shè)計3)矩陣按鍵程序設(shè)計4)液晶顯示驅(qū)動程序設(shè)計5)產(chǎn)生PWM程序設(shè)計6)電壓反饋AD采樣程序設(shè)計三、系統(tǒng)分析1、硬件分析:1)單片機與BEEP、矩陣按鍵、LM3037液晶顯示以及 AD采樣轉(zhuǎn)換芯片的具體連接。RCSIZTTlTONTl NTOXI X:RD WRPIOT Pl I
3、TP12P13P14PISPittP17ICI加MM ppp ppp ppvcc GND KXDTXD ALLPPSHN01234567;一亠c-c-pppc-c-p4020jVfCPP31 TXDMETsrxATK9S5X(單片機控制芯片)(BEEP電路部分)映RS2JOQ oS6'rOOi" O 1屈kJ'"o-屈嚴六一"" O!jSlio "" o'COMW-,k.r- L,II_n_ddJ(矩陣按鍵輸入部分)U6DBODB1DB2DB3DB4DB5注意:畔£DB6DB7VDDVSSV0RSTP
4、SB4RS(CS) WZR(SID) E(SCLK)BLANC(LM3037液晶顯示部分)17VCC16LM7 Rxvcc)GND<a嚴 L'O CLKREF+REF-ANLG INVCCDO-VCCCLKCSGNDTLC549CD(TLC549CD A/D 轉(zhuǎn)換)2)程控電路部分原理圖:VCCISV vcc :VISOO HelOkQR1RTlOkOLM33B, M VD&U2A0RJ iDOknC2 護UF 0VDDTf.vqq :QI2k29 為2M132A 0C& /IQuF平C1HVC3 1QOnF* R« VA3knII iMpF C111
5、LH32UHlOttQKe/-A 剝-VRG1QW1051ca.U3B11-2、軟件分析:1)BEEP報警,P2八2引腳出現(xiàn)低電平,BEEP發(fā)出聲音。2)矩陣按鍵的掃描,采用逐行掃描模式,掃描每個按鍵是否 按下,并做鍵值處理。3)LM3037液晶的顯示,可以采用并行顯示或者串行顯示, 該液晶自帶中文字庫。4)AD549CD A/D轉(zhuǎn)換芯片驅(qū)動程序的編寫,5)定時器程序的編寫6)外部中斷程序的編寫7)PWM脈寬調(diào)制波的產(chǎn)生四、程序流程圖沽W分辨率:9.25:液品顯小笫:個界面:厶十盞4M報警.關(guān)閉PM,”*_按鍵輸入預(yù)設(shè)值,L產(chǎn)生P刪驅(qū)動信號;:AD循環(huán)采樣找顯小輸屯缶值::-&于14V
6、吐否人于預(yù) i殳值報警,關(guān)閉卩晞山+*f減少珊M信號寬f 度增大円$信號寬度"五、程序設(shè)計#include<reg52.h>#includevintrins.h>/*兩個常用的宏定義*/#define uint8 unsigned char#define uint16 unsigned int/*-AD采樣時使用的延時定義-*/#define Waitlus _nop_0;#define Wait2us Wait1us;Wait1us;#define Wait4us Wait2us;Wait2us;#define Wait10us Wait4us;Wait4us;W
7、ait2us;#define Wait20us Wait10us;Wait10us;sbit LED_Control = P 2八0;/*數(shù)碼管顯示函數(shù)的聲明*/void SEG_Dis p(uint8 dat);/*掃描按鍵的說明*/void KEY_Scan(void);/*延時函數(shù)的說明*/void Delay_ms(uint16 z);/*數(shù)碼管段選的定義*/sbit HC138_A0 = P 1八1;sbit HC138_A1 = P 1八2;sbit HC138_A2 = P 1八3;/*Icd14432的定義*/sbit RS = P 1八5;sbit RW = P 1八6;sb
8、it EN = P 1八7;bit BUSY(void);void Write_cmd(uint8 cmd);void Write_dat(uint8 dat);void LCD14432_lnit(void);void HZ_Dis p(uint8 *p);void LCD_Test();/*AD轉(zhuǎn)換的引腳定義*/sbit TIc549_Dout = P 2八3;sbit TIc549_CS = P 2八4;sbit Tlc549_Clock = P 2八2;uint8 Read_ADConvert(void);/*T0的函數(shù)聲明*/void Timer0_lnit(void);/*PWM
9、的輸出端口*/sbit PWM0 = P 1八2;void P WM_Out(uint8 rate);uint8 key_value=0;/ 按鍵值uint8 count = 0;/記錄定時次數(shù)uint8 counts = 0;/uint8 ratel = 50;uint8 flag = 0;/*09的數(shù)碼管斷碼表*/uint8SEG_data10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x 7f,0x6f;uint8 AD_Value5;int main(void)uint8 i=0;uint8 Convert_value=0;uint8 tem p
10、=0,tem p1=0,tem p2=0;LED_Control = 0;Timer0_Init();II初始化定時器0LCD14432_lnit();LCD_Test();while(1)/*本程序只顯示一位*/Convert_value = Read_ADConvert();Convert_value = Convert_value +0.5;temp = Convert_value /51;IItem p = tem p *2;tem p = (float)tem p *10;IItem p2 =(float) tem p%10;IItempi =(float) tem p/10;g =
11、 bbu(86<ke)ej)i!家扌僅岳ii+ii/(L=6e|j)J!:()ubosA3>I:(duje)ds!a93SII墓 S/i(.8.)ds!aZHII:(.A.hep-e)UM:(3duje)+oexohB p 一斜 UMIIOeP 一斜 UMII:(d luej+oexohB p 一斜 UMMirw WW/ 儀8XO)PUJO一斜UM:(.A.hep-e)UMA8 MirW探® :(en|BA-Ae>|+oexohBp-e)UM:(£8xo)pujopUMif(ratelv8)ratel = 8;flag = 0;II SEG_Disp(co
12、unt1);return 0;函數(shù)名稱:/*void SEG_Dis p( uint8 dat)函數(shù)功能:數(shù)碼管的顯示函數(shù)入口參數(shù):顯示 09出口參數(shù):調(diào)用模塊:MAIN*void SEG_Dis p(uint8 dat)P0 = SEG_datadat;HC138_A0 = 0;HC138_A1 = 0;HC138_A2 = 0;void KEY_Scan(void)uint8 tem p;P3 = 0xf0;/設(shè)置輸入輸出/*掃描第一行*/P3 = 0xfe;/第一行輸出 0temp = P3;/讀取P3的值temp = temp & 0xf0;/ 屏蔽高 4 位,if( tem
13、p!= 0xf0)判斷是否有鍵按下Delay_ms(100);if( tem p!= 0xf0)判斷是否有鍵按下switch(tem p)/做鍵值處理行,case 0xe0:key_value =1;break;case 0xd0:key_value =2;break;case 0xb0:key_value =3;break;case 0x70:key_value =4;break;/有鍵按下 /tem p = tem p & 0xf0;/如果沒有松開,不斷讀取 P3 口的值來作為while的判斷條件while(tem p!=0xf0)等待松開按鍵temp = P3;/讀取P3的值te
14、mP = temp & 0xf0;/ 屏蔽高 4 位,/判斷按鍵有沒有松開,如果按鍵松開程序繼續(xù)執(zhí)/*掃描第二行*/P3 = 0xfd;/第二行輸出0temp = P3;/讀取P3的值 temp = temp & 0xf0;/ 屏蔽高 4 位,if( tem p!= 0xf0)判斷是否有鍵按下Delay_ms(100);if( tem p!= 0xf0)判斷是否有鍵按下switch(tem p)/做鍵值處理case 0xe0:key_value = 5;break;case 0xb0: key_value = 7;break;case 0x70: key_value = 8;b
15、reak;/有鍵按下 /tem p = tem p & 0xf0;/判斷按鍵有沒有松開,如果按鍵松開程序繼續(xù)執(zhí)行,/如果沒有松開,不斷讀取 P3 口的值來作為while的判斷條件while(tem p!=0xf0)等待松開按鍵temP = P3;/讀取P3的值temP = temp & 0xf0;/ 屏蔽高 4 位,/*掃描第三行*/P3 = 0xfb;/第二行輸出0temp = P3;/讀取P3的值temp = temp & 0xf0;/ 屏蔽高 4 位,if( tem p!= 0xf0)判斷是否有鍵按下Delay_ms(100);if( tem p!= 0xf0)判
16、斷是否有鍵按下switch(tem p)/做鍵值處理case 0xe0:key_value = 9;break;case 0xd0:key_value = 0;break;case 0xb0:flag = 1;break;/"+"case 0x70:flag = 2;break;/"-"/有鍵按下/tem p = tem p & 0xf0;/判斷按鍵有沒有松開,如果按鍵松開程序繼續(xù)執(zhí)行,/如果沒有松開,不斷讀取 P3 口的值來作為while的判斷條件while(tem p!=0xf0)等待松開按鍵temp = P3;/讀取P3的值temP = t
17、emp & 0xf0;/ 屏蔽高 4 位,/*掃描第四行*/P3 = 0xf7;/第二行輸出 0temp = P3;/讀取P3的值 temP = temp & 0xf0;/ 屏蔽高 4 位,if( tem p!= 0xf0)判斷是否有鍵按下Delay_ms(100);行,if( tem p!= 0xf0)判斷是否有鍵按下switch(tem p)/做鍵值處理case 0xe0:key_value = 3;break;case 0xd0:key_value = 4;break;case 0xb0:key_value = 5;break;case 0x70:key_value =
18、6;break;/有鍵按下/tem p = tem p & 0xf0;/判斷按鍵有沒有松開,如果按鍵松開程序繼續(xù)執(zhí)/如果沒有松開,不斷讀取 P3 口的值來作為while的判斷條件while(tem p!=0xf0)等待松開按鍵temp = P3;/讀取P3的值temp = temp & 0xf0;/ 屏蔽高 4 位,bit BUSY(void)bit Bit;P0 = 0x00;RS = 0;RW = 1;EN = 1;Delay_ms(1);Bit = (bit)( P0 & 0x80);/最高位為忙信號位EN = 0;return Bit;void Write_cm
19、d(uint8 cmd)while(BUSY();RS = 0;/寫指令RW = 0;/寫操作EN = 0;/P0 = cmd;/發(fā)送命令Delay_ms(5);EN = 1;P0 = cmd;/發(fā)送命令Delay_ms(5);EN = 0;拉低EN/void Write_dat(uint8 dat) while(BUSY();RS = 1;RW = 0;EN = 0;P0 = dat;Delay_ms(5);EN = 1;P0 = dat;Delay_ms(5);EN = 0;void LCD14432_lnit(void)_nop_(); II 延時 1usWrite_cmd(0x30);
20、/使用基本指令集Delay_ms(5);Write_cmd(0x0c);II功能:顯示開關(guān) ON,游標(biāo)OFF,反白OFFDelay_ms(5);Write_cmd(0x01);清除顯示屏幕,把DDRAM位址計數(shù)器調(diào)整為"00H"Delay_ms(5);Write_cmd(0x06); /AC 自動加1,畫面不動1,畫面移動/ Write_cmd(0x07); /AC 自動加_nop_();/延時1usvoid Delay_ms(uint16 z)uint16 x,y;for(x=z;x>0;x-)for(y=124;y>0;y-);void Timer0_lni
21、t(void)TMOD = 0x01;/工作在方式/TH0 =(65535-50000)/256/TL0/TH0 =0x3C;定時器初值50ms/TL0 =0xAF;TH0 = 0xfe;/定時器初值0.5msTL0 =0x3c;EA = 1;/打開總開關(guān)ET0 = 1;/開T0中斷開關(guān)TR0 = 1;/啟動定時器void Timer0_IRQ()interr upt 1/TH0 =0x3C;/定時器初值50ms/TL0 =0xAF;/*TH0 =TL0 =0xfe;0x3c;count+;P WM_Out(rate1);if(count=20)count= 0;count1+;/定時器初值0
22、.5msif(count1=10)counti = 0;*/uint8 Read_ADConvert(void)uint8 i=0;/計數(shù)脈沖uint8 Convert_value = 0;/ 保存 AD 轉(zhuǎn)換的值/*參考時序編寫驅(qū)動程序*/Tlc549_Clock = 0;/ 初始化Tlc549_CS = 1;Wait2us;/延時2USTlc549_CS = 0;Wait2us;/延時2USfor(i=0;iv8;i+)/丟掉前面8個數(shù)據(jù)Tlc549_Clock = 1; Wait2us;Tlc549_Clock = 0;Tlc549_CS = 1;準(zhǔn)備轉(zhuǎn)換Wait20us;/等待轉(zhuǎn)換結(jié)束Wait20us;Tlc549_CS = 0;/準(zhǔn)備讀取AD數(shù)據(jù)for(i=0;iv8;i+)讀取數(shù)據(jù)(下降沿)Tlc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60156:2025 EN-FR Insulating liquids - Determination of the breakdown voltage at power frequency - Test method
- 環(huán)保行業(yè)廢棄物處理風(fēng)險協(xié)議
- 高級化妝品行業(yè)售后免責(zé)協(xié)議
- 建設(shè)工程施工協(xié)議(32篇)
- 上海手房買賣協(xié)議
- 臨時租車協(xié)議書
- 班班通設(shè)備管理和使用協(xié)議
- 物流配送中心建設(shè)委托代理合同
- 建筑工地安全施工責(zé)任與免責(zé)合同
- 房地產(chǎn)項目銷售居間合同
- 光伏電站小EPC規(guī)定合同范本
- 2024年01月江蘇2024年昆山鹿城村鎮(zhèn)銀行第三期校園招考筆試歷年參考題庫附帶答案詳解
- 建筑工程安全與管理
- 2025年內(nèi)蒙古機電職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024年05月齊魯銀行總行2024年社會招考筆試歷年參考題庫附帶答案詳解
- 浙江省紹興市2024-2025學(xué)年高一上學(xué)期期末調(diào)測英語試題(無答案)
- 幼兒園開學(xué)教師安全知識培訓(xùn)
- 《會展經(jīng)濟與策劃》課件
- 工廠廠區(qū)道路拆除實施方案
- 公寓管家培訓(xùn)課件
- 新大象版科學(xué)四年級下冊全冊教學(xué)設(shè)計
評論
0/150
提交評論