單片機(jī)12V數(shù)控電源-設(shè)計(jì)應(yīng)用_第1頁(yè)
單片機(jī)12V數(shù)控電源-設(shè)計(jì)應(yīng)用_第2頁(yè)
單片機(jī)12V數(shù)控電源-設(shè)計(jì)應(yīng)用_第3頁(yè)
單片機(jī)12V數(shù)控電源-設(shè)計(jì)應(yīng)用_第4頁(yè)
單片機(jī)12V數(shù)控電源-設(shè)計(jì)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯單片機(jī)12V數(shù)控電源-設(shè)計(jì)應(yīng)用這次做的數(shù)控電源設(shè)計(jì)思想沒(méi)什么新意,就是一個(gè)數(shù)模轉(zhuǎn)換(ADC0809)和一個(gè)模數(shù)轉(zhuǎn)換(DAC0832),再加上兩個(gè)單片機(jī)分別控制0809和0832,組成一個(gè)反饋網(wǎng)絡(luò),來(lái)得到輸入的數(shù)字相對(duì)應(yīng)的電壓,電壓范圍很小,只有0~12.75V.顯示部分采用四段共陰數(shù)碼管整塊板子做出來(lái)之后有10*7cm那么大,用洞洞板焊的.實(shí)測(cè)電路輸出精度+/-0.05V在12V范圍內(nèi).

硬件設(shè)計(jì):塊單片機(jī)P0口接數(shù)碼管代碼段的驅(qū)動(dòng),P2.4~P2.7接四位的位選線,P2.0~P2.3節(jié)四個(gè)獨(dú)立操作按鍵[模式][加][減][確定],P1口接ADC0809的八位數(shù)據(jù)輸出.P3.0~P3.3口接0809的控制線.P3.5~P3.7和第二塊單片機(jī)的P2.0,P2.1,P2.2相連,用來(lái)控制數(shù)模輸出增減.三根控制線作用分別為[輸出改變?cè)试S控制Control_1][增減信號(hào)Control_2][增減速度控制Control_speed]第二塊單片機(jī)除了前面的三根控制線,就只剩下和DAC0832的控制線了,看電路圖.

用0832輸出控制LM317可調(diào)三端穩(wěn)壓器的輸出電壓:

DAC0809所需時(shí)鐘脈沖由NE555產(chǎn)生

系統(tǒng)電源:5V12VGND-12V程序清單:塊單片機(jī):(接0809,四段數(shù)碼管,四個(gè)獨(dú)立按鍵)#include#defineucharunsignedcharinti=0,a=0;//定義循環(huán)算子ucharhold=5;//當(dāng)前操作數(shù)[0-led1][1-led2][2-led3][3-led4][4-快速調(diào)節(jié)][5-無(wú)]ucharGet_data=0;//模數(shù)轉(zhuǎn)換得到的結(jié)果intGet_data2=0;//將Get_data*5用以方便轉(zhuǎn)化(做電壓表時(shí)用)//ucharled[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};//陽(yáng)極驅(qū)動(dòng)不帶小數(shù)點(diǎn)ucharled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};//陰極驅(qū)動(dòng)//ucharpoint[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x00};//陽(yáng)極驅(qū)動(dòng)帶小數(shù)點(diǎn)ucharpoint[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xFF};ucharV_list[]={30,36,60,66,90,100,120,180,240};//電壓值列表ucharV_index=6;//預(yù)置電壓索引.ucharnum[4]={10,5,0,0};//顯示緩存ucharV_num=100;//顯示的電壓對(duì)應(yīng)在0~255電之間的值,預(yù)置壓數(shù)5Vuchartime=0;//控制模數(shù)轉(zhuǎn)換頻率變量uchartimes=0;//控制按鍵允許速度變量ucharscan_grant=1;//允許輸入ucharhide_flag=0;//隱藏標(biāo)志[0隱藏][1顯示]和hold配合用于控制某一位數(shù)碼管的亮滅ucharhide_time=0;//用于控制數(shù)碼管閃爍快慢//ucharzhengshu,xiaoshu_1,xiaoshu_2;voiddelay(ints);voidkey_mode();voidkey_add();voidkey_sub();voidkey_confirm();voiddisplay();voidADC();voidconvert();//將get_data填入到num[]數(shù)組中voidscan_key();//鍵盤掃描函數(shù)voidcompare();//比較函數(shù)(Control_1Control_2)[00-正確][11-加][10減]//定義位選線sbitled_1=P2^7;sbitled_2=P2^6;sbitled_3=P2^5;sbitled_4=P2^4;sbitmode=P2^0;sbitadd=P2^1;sbitsub=P2^2;sbitconfirm=P2^3;//0809四根控制線sbitALE=P3^0;sbitSTART=P3^1;sbitOE=P3^2;sbitEOC=P3^3;//兩根控制線sbitControl_1=P3^6;//變化控制線[1變化][0不變]sbitControl_2=P3^7;//增減控制線[1增][0減]sbitControl_speed=P3^5;//控制變化速度sbitclose=P3^4;//當(dāng)電壓穩(wěn)定時(shí)為0;voidmain(){//初始化led_1=0;led_2=0;led_3=0;led_4=0;//初始化定時(shí)器TMOD=0x01;//定時(shí)器0,方式1TH0=0x3c;TL0=0xb0;ET0=1;//允許定時(shí)器0中斷TR0=1;//啟動(dòng)定時(shí)器0運(yùn)行EA=1;//全部中斷允許Control_1=0;Control_2=0;while(1){time++;if(time=10){time=0;//掃描鍵盤if(hold==5){ADC();//模數(shù)轉(zhuǎn)換compare();//轉(zhuǎn)換結(jié)果比較,修改控制變量}else{Control_1=0;Control_2=0;}}if(scan_grant==0){scan_key();convert();scan_grant=1;EA=1;}hide_time++;if(hide_time=80){hide_time=0;if(hide_flag==1){hide_flag=0;}else{hide_flag=1;}}display();}}//延時(shí)函數(shù)voiddelay(ints){for(i=0;i{}}//按鍵處理voidkey_mode(){delay(1000);if(mode==0){hold++;if(hold=6){hold=1;}}}voidkey_add()//加函數(shù){delay(1000);if(add==0){if(hold==0)//當(dāng)前操作數(shù)[0-led1即num[0]]{}if(hold==1)//當(dāng)前操作數(shù)[1-led2即num[1]]{if(V_num=235){V_num=V_num+20;}//加1V}if(hold==2)//當(dāng)前操作數(shù)[2-led3即num[2]]{if(V_num=253){V_num=V_num+2;}//加0.1V}if(hold==3)//當(dāng)前操作數(shù)[3-led4即num[3]]{if(V_num=254){V_num++;}//加0.05V}if(hold==4)//當(dāng)前操作數(shù)[4-快速調(diào)節(jié)即V_index]{if(V_index=7){V_index++;}V_num=V_list[V_index];}if(hold==5)//當(dāng)前操作數(shù)[5-無(wú)]{}}}voidkey_sub()//減函數(shù){delay(1000);if(sub==0){if(hold==0)//當(dāng)前操作數(shù)[0-led1即num[0]]{}if(hold==1)//當(dāng)前操作數(shù)[1-led2即num[1]]{if(V_num=20){V_num=V_num-20;}//減1V}if(hold==2)//當(dāng)前操作數(shù)[2-led3即num[2]]{if(V_num=2){V_num=V_num-2;}//減0.1V}if(hold==3)//當(dāng)前操作數(shù)[3-led4即num[3]]{if(V_num=1){V_num--;}//減0.05V}if(hold==4)//當(dāng)前操作數(shù)[4-快速調(diào)節(jié)即V_index]{if(V_index=1){V_index--;}V_num=V_list[V_index];}if(hold==5)//當(dāng)前操作數(shù)[5-無(wú)]{}}}voidkey_confirm(){delay(1000);if(confirm==0){hold=5;}}//voiddisplay(){/*led_1=1;if(num[0]==0)//如果位是0的話就不顯示,led[10]是空{(diào)P0=led[10];}else{P0=led[num[0]];}delay(100);led_1=0;P0=0xFF;led_2=1;P0=point[num[1]];delay(100);led_2=0;P0=0xFF;led_3=1;P0=led[num[2]];delay(100);led_3=0;P0=0xFF;led_4=1;P0=led[num[3]];delay(100);led_4=0;P0=0xFF;*/if(hide_flag==1){if(hold==4){delay(400);return;}if(hold!=1){led_1=1;if(num[0]==0)//如果位是0的話就不顯示,led[10]是空{(diào)P0=led[10];}else{P0=led[num[0]];}delay(100);led_1=0;P0=0xFF;led_2=1;P0=point[num[1]];delay(100);led_2=0;P0=0xFF;}if(hold!=2){led_3=1;P0=led[num[2]];delay(100);led_3=0;P0=0xFF;}if(hold!=3){led_4=1;P0=led[num[3]];delay(100);led_4=0;P0=0xFF;}}if(hide_flag==0){led_1=1;if(num[0]==0)//如果位是0的話就不顯示,led[10]是空{(diào)P0=led[10];}else{P0=led[num[0]];}delay(100);led_1=0;P0=0xFF;led_2=1;P0=point[num[1]];delay(100);led_2=0;P0=0xFF;led_3=1;P0=led[num[2]];delay(100);led_3=0;P0=0xFF;led_4=1;P0=led[num[3]];delay(100);led_4=0;P0=0xFF;}}voidADC(){START=0;OE=0;START=1;delay(65);START=0;while(EOC==1){}OE=1;delay(65);Get_data=P1;OE=0;//convert();}voidconvert(){//基準(zhǔn)電壓要為12.8V/*Get_data2=Get_data*5;num[0]=Get_data2/1000;Get_data2=Get_data2%1000;num[1]=Get_data2/100;Get_data2=Get_data2%100;num[2]=Get_data2/10;Get_data2=Get_data2%10;num[3]=Get_data2;*/Get_data2=V_num*5;//Get_data2=Get_data*5;num[0]=Get_data2/1000;Get_data2=Get_data2%1000;num[1]=Get_data2/100;Get_data2=Get_data2%100;num[2]=Get_data2/10;Get_data2=Get_data2%10;num[3]=Get_data2;}voidscan_key()//鍵盤掃描后函數(shù)分配{if(mode==0)key_mode();if(add==0)key_add();if(sub==0)key_sub();if(confirm==0)key_confirm();}voidcompare()//比較函數(shù)(Control_1Control_2)[00-正確][11-加][10減]{Control_1=0;Control_2=0;if(V_num(Get_data-1)){Control_1=1;Control_2=0;if((Get_data-V_num)=10){Control_speed=1;close=1;}else{Control_speed=0;close=0;}}if(V_num(Get_data+1)){Control_1=1;Control_2=1;if((V_num-Get_data)=10){Control_speed=1;close=1;}else{Control_speed=0;close=0;}}}//中斷函數(shù)://定時(shí)器中斷T0用于消除按鍵等待//定時(shí)器中斷T1用于進(jìn)入AD轉(zhuǎn)換函數(shù)////定時(shí)器中斷服務(wù)程序//定時(shí)器0工作方式1//任務(wù)://1:限定進(jìn)入按鍵掃描程序的時(shí)間間隔,避免在短時(shí)間內(nèi)多次進(jìn)入鍵盤掃描而造成誤操作//voidclear_key()interrupt1using1{times=times+1;if(times==7)//這個(gè)數(shù)字決定了按鍵上限速度.{times=0;scan_grant=0;//允許輸入EA=0;}TH0=0x3c;//計(jì)數(shù)器初值重載TL0=0xb0;}第二塊單片機(jī)(接0832)#include#defineucharunsignedcharinti;sbitCS12=P3^0;//控制線sbitWR12=P3^1;//控制線sbitled=P2^2;//控制led亮滅sbitControl_1=P2^1;//變化控制線1[1變化][0不變]sbitControl_2=P2^

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論