版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件設(shè)計設(shè)計的完整代碼見附錄二。3.1主程序設(shè)計3.1.1主程序設(shè)計流程圖對于51單片機(jī),根據(jù)其編程原理及性質(zhì),按照邏輯關(guān)系,對系統(tǒng)進(jìn)行初始化。然后輸出系統(tǒng)的預(yù)設(shè)值通過按鍵掃描更新數(shù)模轉(zhuǎn)換輸出設(shè)定,實(shí)現(xiàn)按鍵控制輸出電壓。A/D轉(zhuǎn)換使用AT89C51單片機(jī)內(nèi)部自帶的模塊。圖12主程序流程圖3.1.2單片機(jī)主程序初始化unsignedchari1=0; TMOD=0x01; //設(shè)置定時器0工作模式為方式1 TH0=(65535-1000)/256; //設(shè)置定時器初始值1ms TL0=(65535-1000)%256; EA=1;//開總中斷 ET0=1; TR0=1;//啟動T03.2按鍵掃描3.2.1按鍵流程圖圖13按鍵流程圖3.2.2按鍵程序按鍵的定義根據(jù)硬件設(shè)計中的引腳設(shè)置,定義按鍵,代碼如下。sbitKEY1=P1^0;sbitKEY2=P1^1;sbitKEY3=P1^2;按鍵編程示例,以按鍵1為例,完整代碼見附錄一。if(KEY1==0) {delayms(20); if(KEY1==0) {if(U<180*n) //比最大電壓小,可以繼續(xù)加 U=U+n; ChangeVol(); i1=0; while(KEY1==0)//長按按鍵 {if(i1<100){i1++;delayms(50);}//長按時間判斷 else {if(U<180*n) U=U+n; //比最大電壓小,可以繼續(xù)加 ChangeVol(); //改變輸出電壓 delayms(500);}};} //延時(3)延時掃描為了防止按鍵的抖動造成主程序誤判,因此設(shè)計程序,使得經(jīng)過一段時間(毫秒級)后,再對按鍵進(jìn)行掃描。voiddelayms(uintms) { uchari; while(ms--) {for(i=0;i<120;i++); }}3.3數(shù)碼管動態(tài)掃描voidTimer0()interrupt1 //定時器0中斷,數(shù)碼管動態(tài)掃描顯示{ TH0=(65535-1000)/256; TL0=(65535-1000)%256; switch(st) //依次掃描4位數(shù)碼管{case0:st=1;W1=1;W2=1;W3=1;W4=1;P0=DSYC[bai];W1=0;break;case1:st=2;W1=1;W2=1;W3=1;W4=1;P0=DSYC[shi]|0x20;W2=0;break;case2:st=3;W1=1;W2=1;W3=1;W4=1;P0=DSYC[ge];W3=0;break;case3:st=0;W1=1;W2=1;W3=1;W4=1;P0=DSYC[17];W4=0;break;}}附錄附錄一:代碼#include"reg51.h"http://宏定義#defineucharunsignedchar#defineuintunsignedint//按鍵定義sbitKEY1=P1^0;sbitKEY2=P1^1;sbitKEY3=P1^2;//數(shù)碼管定義sbitW1=P2^4;sbitW2=P2^5;sbitW3=P2^6;sbitW4=P2^7;//DAC定義sbitCS_5615=P2^2;sbitCLK_5615=P2^1;sbitDAT_5615=P2^0;uintU;uinta=0;unsignedcharbai=0,shi=0,ge=0,st=0;unsignedcharn=1;unsignedintbuf=0;unsignedcharcodeDSYC[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x5e,0x38,0x77,0x73};voiddelayms(uintms) //延時{ uchari; while(ms--) { for(i=0;i<120;i++); }}voidTimer0()interrupt1 //定時器0中斷,數(shù)碼管動態(tài)掃描顯示{ TH0=(65535-1000)/256; TL0=(65535-1000)%256; switch(st) //依次掃描4位數(shù)碼管{case0:st=1;W1=1;W2=1;W3=1;W4=1;P0=DSYC[bai];W1=0;break;case1:st=2;W1=1;W2=1;W3=1;W4=1;P0=DSYC[shi]|0x20;W2=0;break;case2:st=3;W1=1;W2=1;W3=1;W4=1;P0=DSYC[ge];W3=0;break;case3:st=0;W1=1;W2=1;W3=1;W4=1;P0=DSYC[17];W4=0;break;}} voidtlc_5615(uintbuf) //DA轉(zhuǎn)換輸出{ uinta,c; c=buf;CS_5615=0; for(a=16;a>0;a--) //傳送16位數(shù)據(jù) {DAT_5615=c>>15;c=c<<1;CLK_5615=1;CLK_5615=0; } CLK_5615=1; //CLK信號為1 CLK_5615=0; CLK_5615=1; CLK_5615=0; CS_5615=1; //CS信號為1}voidChangeVol(void) //更改輸出電壓值{ tlc_5615(U); //DA輸出電壓值 buf=U/n*10; //計算顯示值 bai=buf/1000; //顯示值最高位 shi=buf%1000/100; //顯示值次高位 ge=buf%100/10; //顯示值第3位}//主函數(shù)voidmain(void){ unsignedchari1=0; TMOD=0x01; //設(shè)置定時器0工作模式 TH0=(65535-1000)/256; //設(shè)置定時器初始值1ms TL0=(65535-1000)%256; EA=1; ET0=1; TR0=1; //U=0; U=50*n; //默認(rèn)輸出電壓5V ChangeVol(); while(1) { if(KEY1==0) //按鍵1,加按鍵 { delayms(20); //延時防抖 if(KEY1==0) { if(U<180*n) //比最大電壓小,可以繼續(xù)加 U=U+n; ChangeVol(); i1=0; while(KEY1==0)//長按按鍵 { if(i1<100){i1++;delayms(50);}//長按時間判斷 else { if(U<180*n) U=U+n; //比最大電壓小,可以繼續(xù)加 ChangeVol(); //改變輸出電壓 delayms(500); //延時 }};}} if(KEY2==0) { delayms(20);//延時防抖 if(KEY2==0) { if(U>0) //比0大,可以繼續(xù)遞減 U=U-n; ChangeVol(); i1=0; while(KEY2==0) //長按按鍵 { if(i1<100){i1++;delayms(50);} //長按時間判斷 else { if(U>0) U=U-n; //比0大,可以繼續(xù)遞減
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南昆明市石林彝族自治縣第一期城鎮(zhèn)公益性崗位招聘6人備考題庫及完整答案詳解1套
- 2026山東第一醫(yī)科大學(xué)附屬眼科醫(yī)院(山東省眼科醫(yī)院)招聘博士研究生人員5人備考題庫及1套完整答案詳解
- 2026安徽省面向西安電子科技大學(xué)選調(diào)生招錄備考題庫及答案詳解(考點(diǎn)梳理)
- 2026四川大學(xué)校醫(yī)院人才招聘備考考試題庫及答案解析
- 2026上半年安徽事業(yè)單位聯(lián)考當(dāng)涂縣招聘43人參考考試題庫及答案解析
- 2026廣西崇左市憑祥市看守所公益性崗位人員招聘1人備考題庫含答案詳解
- 2026上半年黑龍江省神經(jīng)精神病醫(yī)院招聘40人考試參考試題及答案解析
- 2026山東事業(yè)單位統(tǒng)考壽光市招聘30人備考題庫參考答案詳解
- 2026貴州銅仁石阡縣事業(yè)單位公開招聘工作人員118人考試參考題庫及答案解析
- 2026廣東中山市阜沙鎮(zhèn)第一幼兒園招聘體育非編教師1人備考題庫及1套完整答案詳解
- 警用偵查無人機(jī)偵查技術(shù)在反偷獵中的應(yīng)用分析報告
- 礦井突水機(jī)理研究-洞察及研究
- 2025-2026秋“1530”安全教育記錄表
- 藥物警戒基礎(chǔ)知識全員培訓(xùn)
- 骨密度檢測的臨床意義
- 鉆探原始班報表試行版
- 腸菌移植治療炎癥性腸病專家共識(2025)解讀
- T/CPPC 1032-2021建筑生產(chǎn)資源分供商評價規(guī)范
- 機(jī)耕合同協(xié)議書范本簡單
- 送車免責(zé)合同協(xié)議書模板
- 外科學(xué)重癥監(jiān)測治療與復(fù)蘇
評論
0/150
提交評論