版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE39設(shè)計、旅行、影視、攝影、科技、音樂、藝術(shù)、人文、出版、飲食、漫畫游戲夢想從相信開始創(chuàng)意從籌資起步基于單片機的直流電機測速、調(diào)速及顯示系統(tǒng)設(shè)計課程設(shè)計報告題目:基于單片機的直流電機測速、調(diào)速及顯示系統(tǒng)設(shè)計摘要本文主要研究了利用Quick51系列單片機控制PWM信號從而實現(xiàn)對直流電機轉(zhuǎn)速進行控制的方法。單片機具有體積小、功能強、成本低、應(yīng)用面廣泛等優(yōu)點,可以說,智能控制與自動控制的核心就是單片機。目前,一個學(xué)習(xí)與應(yīng)用單片機的高潮在全社會大規(guī)模地興起.學(xué)習(xí)單片機的最有效方法就是理論與實踐并重,本文用8051單片機自制了一個采用了專門的芯片組成了PWM信號的發(fā)生系統(tǒng),并且對PWM信號的原理、產(chǎn)生方法以及如何通過軟件編程對PWM信號占空比進行調(diào)節(jié),從而控制其輸入信號波形等均作了詳細的闡述。還對直流電機的速度進行了測量和顯示。關(guān)鍵詞:單片機、PWM、調(diào)速、測速、顯示系統(tǒng)目錄TOC\o”1—3”\h\z\u摘要 1HYPERLINK\l”_Toc277444798”目錄 2HYPERLINK\l”_Toc277444799”第一章 概述 3HYPERLINK\l”_Toc277444800"1。1 概述 3_Toc277444802”1.2。1SmartSOPC與Quick51 3_Toc277444804"第二章總體方案設(shè)計 5HYPERLINK\l”_Toc277444805”2.18051單片機簡介 6HYPERLINK\l”_Toc277444806”2.2PWM信號發(fā)生電路設(shè)計 12HYPERLINK\l”_Toc277444807"2.2.1PWM的基本原理 12HYPERLINK\l”_Toc277444808"2。3128*64液晶顯示 13_Toc277444810”3.1傳感器電路設(shè)計 14HYPERLINK\l”_Toc277444811”3。2信號處理電路設(shè)計 16HYPERLINK\l”_Toc277444812”3.3存儲器電路設(shè)計 17HYPERLINK\l”_Toc277444813"3。3.1I2C總線概述 17_Toc277444817”第四章軟件設(shè)計 20HYPERLINK\l”_Toc277444818”4.1系統(tǒng)軟件總流程圖 20HYPERLINK\l”_Toc277444819”4.2程序清單 21第五章結(jié)論與展望 31_Toc277444824”參考文獻 36\l”_Toc534483044”3.3.2存儲器電路圖3—12AT24CO2與單片機的接口電路
3.4顯示電路設(shè)計3.5PWM信號發(fā)生電路設(shè)計PWM波可以由具有PWM輸出的單片機通過編程來得以產(chǎn)生,也可以采用PWM專用芯片來實現(xiàn)。當PWM波的頻率太高時,它對直流電機驅(qū)動的功率管要求太高,而當它的頻率太低時,其產(chǎn)生的電磁噪聲就比較大,在實際應(yīng)用中,當PWM波的頻率在18KHz左右時,效果最好。在本系統(tǒng)內(nèi),采用了兩片4位數(shù)值比較器4585和一片12位串行計數(shù)器4040組成了PWM信號發(fā)生電路。兩片數(shù)值比較器4585,即圖上U2、U3的A組接12位串行4040計數(shù)輸出端Q2—Q9,而U2、U3的B組接到單片機的P1端口。只要改變P1端口的輸出值,那么就可以使得PWM信號的占空比發(fā)生變化,從而進行調(diào)速控制。12位串行計數(shù)器4040的計數(shù)輸入端CLK接到單片機C51晶振的振蕩輸出XTAL2。計數(shù)器4040每來8個脈沖,其輸出Q2—Q9加1,當計數(shù)值小于或者等于單片機P1端口輸出值X時,圖中U2的(A>B)輸出端保持為低電平,而當計數(shù)值大于單片機P1端口輸出值X時,圖中U2的(A〉B)輸出端為高電平。隨著計數(shù)值的增加,Q2—Q9由全“1"變?yōu)槿?”時,圖中U2的(A〉B)輸出端又變?yōu)榈碗娖?這樣就在U2的(A〉B)端得到了PWM的信號,它的占空比為(255—第四章軟件設(shè)計4.1系統(tǒng)軟件總流程圖開始開始設(shè)堆棧清標志清暫存清顯示T0初始化串行口初始化CPU開中斷掃描鍵盤速度采樣顯示圖4。1系統(tǒng)軟件主程序流程圖4。2程序清單/* LCD。C 128×64LCD驅(qū)動程序頭文件*/#ifndefLCD_H_#defineLCD_H_#include〈REG51。H>//定義背光控制信號sbitLCD_BL=P1^4;//點亮背光燈voidLcdLightOn();//熄滅背光燈voidLcdLightOff();//清屏voidLcdClear();//初始化voidLcdInit();//顯示ASCⅡ碼voidLcdPutChar(unsignedcharc);//顯示字符串voidLcdPuts(unsignedchar*s);#endif//LCD_H_/* LCD。C 128×64LCD驅(qū)動程序*/#include<INTRINS。H〉#include<ABSACC.H〉//#include"LCD。H”//定義屏幕光標(取值0~63,光標本身不可見)unsignedcharLcdCursor;inti,j;/*函數(shù):LcdLightOn()功能:點亮背光燈*/voidLcdLightOn(){ LCD_BL=1;}/*函數(shù):LcdLightOff()功能:熄滅背光燈*/voidLcdLightOff(){ LCD_BL=0;}/*函數(shù):LcdGetBF()功能:讀出狀態(tài)位BF返回: BF=1,表示忙,不可進行任何操作 BF=0,表示不忙,可以進行正常操作*/bitLcdGetBF(){ unsignedchardat; dat=XBYTE[0xD002]; //XBYTE的定義見<ABSACC。H〉 return(bit)(dat&0x80);}/*函數(shù):LcdWriteCmd()功能:向LCD發(fā)送命令參數(shù): cmd:命令字,詳見器件的數(shù)據(jù)手冊*/voidLcdWriteCmd(unsignedcharcmd){ while(LcdGetBF()); XBYTE[0xD000]=cmd;}/*函數(shù):LcdWriteDat()功能:向LCD寫入數(shù)據(jù)參數(shù):dat,要寫入的數(shù)據(jù)說明:目標地址由地址計數(shù)器AC隱含指定,寫完后AC自動加1*/voidLcdWriteDat(unsignedchardat){ while(LcdGetBF()); XBYTE[0xD001]=dat;}/*函數(shù):LcdReadDat()功能:從LCD讀出數(shù)據(jù)返回:讀出的數(shù)據(jù)*//*unsignedcharLcdReadDat(){ volatileunsignedchardat; while(LcdGetBF()); dat=XBYTE[0xD003]; dat=XBYTE[0xD003]; //需要連續(xù)執(zhí)行兩次才能夠讀出真正的數(shù)據(jù) returndat;}*//*函數(shù):LcdSetAC()功能:設(shè)置DDRAM(顯示數(shù)據(jù)RAM)的AC(地址計數(shù)器)值參數(shù): ac:地址計數(shù)器值,范圍0~63*/voidLcdSetAC(unsignedcharac){ ac&=0x3F; ac|=0x80; LcdWriteCmd(ac);}/*函數(shù):LcdClear()功能:LCD清屏,并使光標回到0*/voidLcdClear(){ LcdWriteCmd(0x01); //清屏命令 LcdCursor=0;}/*函數(shù):LcdDelay()功能:延時(t*100)個機器周期*/voidLcdDelay(unsignedchart){ unsignedcharn; do { n=49; while(--n!=0); }while(-—t!=0);}/*函數(shù):LcdInit()功能:LCD初始化*/voidLcdInit(){ LcdWriteCmd(0x30); //設(shè)置基本指令集 LcdDelay(3); LcdWriteCmd(0x30); //設(shè)置基本指令集(需要再執(zhí)行一次) LcdDelay(1); LcdWriteCmd(0x0C); //開啟顯示 LcdDelay(3); LcdClear(); //清屏 LcdDelay(250); LcdWriteCmd(0x06); //設(shè)置進入點 LcdDelay(10);}/*函數(shù):LcdCheckAC()功能:根據(jù)光標位置調(diào)整AC*/voidLcdCheckAC(){ switch(LcdCursor) { case16: LcdSetAC(16); break; case32: LcdSetAC(8); break; case48: LcdSetAC(24); break; case64: LcdCursor=0; LcdSetAC(0); break; default: break; }}/*函數(shù):LcdPutChar()功能:顯示ASCII碼參數(shù): c為可顯示的ASCII碼(0x20~0x7F)*/voidLcdPutChar(unsignedcharc){ LcdWriteDat(c); LcdCursor++; LcdCheckAC();}/*函數(shù):LcdPutHZ()功能:顯示漢字參數(shù): ch,cl:漢字編碼*/voidLcdPutHZ(unsignedcharch,unsignedcharcl){ if(LcdCursor&0x01) {//顯示漢字時,必須偶地址對準,即光標位置不能是奇數(shù) LcdPutChar('’); //額外輸出一個空格 } LcdWriteDat(ch); LcdWriteDat(cl); LcdCursor+=2; LcdCheckAC();}/*函數(shù):LcdPuts()功能:顯示字符串參數(shù): *s:要顯示的字符串(可同時包含ASCII碼和漢字)*/voidLcdPuts(unsignedchar*s){ unsignedcharch,cl; for(;;) { ch=*s++; if(ch==’\0’)break; if(ch<0x80) { LcdPutChar(ch); } else { cl=*s++; LcdPutHZ(ch,cl); } }}/* 顯示主程序*///#include”LCD.H"#include<REG51.H〉//#include"DELAY。H”/*包含延時函數(shù)的頭部文件delay_us();delay_ms();*//*函數(shù):Delay()延時1ms65.53st>0時,延時(t*0。001)st=0時。延時65.53s*//********************************************************/unsignedcharSD[4]={'1’,'2',’3’,'4'};//速度設(shè)定unsignedcharFK[4]={'2',’2’,'3’,'4’};//速度反饋intD=0;//方向控制中間變量 unsignedintPwm=0;//速度產(chǎn)生中間變量unsignedintp=0;unsignedintValue=0; unsignedintPwm_Value=0; unsignedintm;//unsignedinta,b,c,d;sbitKEY1=P2^0;sbitKEY2=P2^1;sbitKEY3=P2^2;sbitMotorA=P1^6;sbitMotorB=P1^7; bitSWTR;bitSWTF;unsignedintSWTV;#definePwm_MAX255voidDelay(unsignedintT){SWTV=T;SWTR=1;while(!SWTF);SWTR=0;SWTF=0;}voidKEY(){ if(KEY1==0) { Value=Value+1; } if(KEY2==0) { Value=Value-1; } if(KEY3==0) { if(D==0) { D=1; } else { D=0; } }}voidPWM_Init(){static unsignedchart=0; t++; if(t〉Pwm_MAX)t=0; if(t<=Pwm_Value) { Pwm=1; } else { Pwm=0; } if(D==0) { MotorA=0; MotorB=Pwm; } else { MotorA=Pwm; MotorB=0; }}voidShow_Value(unsignedcharCH[]){inti;for(i=0;i〈4;i++) { LcdPutChar(CH[i]); }}voidShow_Init(){LcdWriteCmd(0x80);LcdPuts("速度設(shè)定");LcdWriteCmd(0x90);LcdPuts("速度反饋");LcdWriteCmd(0x88);LcdPuts(”速度方向");LcdWriteCmd(0x98);LcdPuts("測控071”);LcdWriteCmd(0x9c);LcdPuts("14號");} voidT_int()//定時器初始化{TMOD&=0x00;TMOD=0x25;TH1=TL1=0xa4;TH0=TL0=0;ET1=1;TR1=1;EA=1;}voidMeasureSpeed(){TH0=TL0=0;TR0=1;Delay(2420);TR0=0;TF0=0;m=2*(TH0*255+TL0);if(m>Value){Pwm_Value=Pwm_Value-1;}if(m〈Value){Pwm_Value=Pwm_Value+1;}FK[3]=(m%10)+48;FK[2]=(m/10%10)+48;FK[1]=(m/100%10)+48;FK[0]=(m/1000%10)+48;SD[3]=(Value%10)+48;SD[2]=(Value/10%10)+48;SD[1]=(Value/100%10)+48;SD[0]=(Value/1000%10)+48;}voidmain(){ unsignedchari;MotorA=0; MotorB=0;EA=0; T_int();Delay(50);LcdInit();//LCD初始化/*****************************************/for(i=0;i〈2;i++) { LcdLightOff(); Delay(660); LcdLightOn(); Delay(660); }Delay(660);LcdClear();Delay(660);/****************************************/EA=1; Show_Init();Delay(20); Value=200;Pwm_Value=Value;for(;;) { KEY();//按鍵處理 MeasureSpeed(); LcdWriteCmd(0x94); Show_Value(FK); LcdWriteCmd(0x84); Show_Value(SD); LcdWriteCmd(0x8c); if(D==0) { LcdPuts("正向”); } if(D==1) { LcdPuts("反向"); } }}voidT1ZD()interrupt3{TR1=0; // KEY();//按鍵處理 PWM_Init();if(SWTR)//延時 { if(——SWTV==0)SWTF=1; }TR1=1;}第五章結(jié)論與展望本設(shè)計以8051為核心,利用單片機的運算和控制功能,并采用系統(tǒng)化LCD顯示模塊實時顯示所測速度的設(shè)計方案,以及串口數(shù)據(jù)存儲電路和系統(tǒng)軟件。傳感器也是實現(xiàn)測量與控制不可缺少的環(huán)節(jié),是測控系統(tǒng)的關(guān)鍵部件,如果沒有傳感器對原始被測信號進行準確可靠的捕捉和轉(zhuǎn)換,一切準確的測量和控制都將無法實現(xiàn)。工業(yè)生產(chǎn)過程的自動化測量和控制,幾乎主要依靠各種傳感器來檢測和控制生產(chǎn)過程中的各種參量,使設(shè)備和系統(tǒng)正常運行在最佳狀態(tài),從而保證生產(chǎn)的高效率和高質(zhì)量。本方案基本實現(xiàn)了直流電機的速度即時顯示,并可通過控制按鍵顯示速度,并通過PWM方波對直流電機的速度與轉(zhuǎn)向進行控制。這一方案可以在很多領(lǐng)域有很好的應(yīng)用,例如我們現(xiàn)在交通不可缺少的代步工具—-電動車的車速表,采用數(shù)字式顯示不僅一目了然,還很精確。隨著科技的不斷發(fā)展,傳感器的廣泛應(yīng)用,各種智能儀表都會采用數(shù)字式顯示,不僅讀取方便,而且精度更高,更可靠。附錄附一速度控制子程序voidT_int();//定時器初始化{Tmod=0x00;Tmod=0x25;TH1=TL1=0xa4;TH0=TL0=0;}voidDelay(unsignedintt}){SWTV=T;SWTR=1;WHILE(!SWTF);SWTR=0;SWTF=0}voidMeasureSpeed();//速度計算{intm;TH0=TL0=0TR0=1Delay(2500);TR0=0;TF0=0;m=TH0*255+TH0;//已知速度不吵過100a=m%10;b=m/10%10;c=m/100%10;d=m/1000%10;FK[3]=’a’;FK[3]=’b';FK[3]='c’;FK[3]='d’;}voidShow_init();{LcdWriteCmd(0x83);LcdPuts("速度方向");LcdWriteCmd();LcdPuts("速度設(shè)定”);LcdWriteCmd();//速度反饋}voidShowValue(){inti;for(i=0;i〈4;i++) { LcdPutChar(s++); }}voidT1ZD(){unsignedcharm=0;staticunsignedchart=0;TR1=0;t++;if(t〉=Pwm_MAX) t=0;if(t<=PwmVlue) { Pwm=1; }else { Pwm=0; }if(SWTR) { IF(--SWTV==0)SWTF=1; }TR1=1;if(m%4==0) { MeasureSpeed(); }}voidmain(){T_init();Show_init();while(1) { Lcd(); Delay(?);//更新速度由這里決定 }}void key()//速度加減處理 {if(key1==0) { PwmValue=PwmValue+2;//2由實際決定 }if(key2==0) { PwmValue=PwmValue—2; }if(key3==0)d=~d;}voidShow_Value(unsignedchar*s){inti;for(i=0;i〈4;i++) { LcdPutChar(*(s+i)) }}voidShow_Value(unsignedcharFK[])voidCopy_String(char*from,char*to){for(;*form!=’\0’;from++)}voidPwm(){staticunsignedchart=0; t++; if(t〉=Pwm_MAX)t=0; if(t〈=PwmValue)
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年餐飲酒店人力資源服務(wù)合同
- 2024年重型鏟車租賃協(xié)議樣本版B版
- 寫作文的書知乎
- 2025年度環(huán)境保護補償貿(mào)易融資協(xié)議3篇
- 2025年度醫(yī)療設(shè)備采購合同范本及售后服務(wù)條款3篇
- 濮陽石油化工職業(yè)技術(shù)學(xué)院《診斷治療學(xué)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南體育運動職業(yè)技術(shù)學(xué)院《兒科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢光谷職業(yè)學(xué)院《飼料學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 揚州環(huán)境資源職業(yè)技術(shù)學(xué)院《病原微生物免疫與健康》2023-2024學(xué)年第一學(xué)期期末試卷
- 基坑土方回填監(jiān)理旁站記錄表
- 2025年考研政治全套復(fù)習(xí)題庫及答案(全冊完整版)
- 3《歡歡喜喜慶國慶》說課稿-2024-2025學(xué)年道德與法治二年級上冊統(tǒng)編版
- 蓄勢聚能籌遠略揚帆破浪啟新航-在2025年務(wù)虛會上的講話提綱
- 先進集體發(fā)言稿
- 學(xué)生寒假心理健康教育心理調(diào)試過健康寒假課件
- 八年級地理(下冊星球版)復(fù)習(xí)提綱
- 新建3000只肉羊養(yǎng)殖基地建設(shè)項目可行性研究報告
- 山東省濟南市2023-2024學(xué)年高二上學(xué)期期末考試生物試題 附答案
- DB32T 3292-2017 大跨徑橋梁鋼橋面環(huán)氧瀝青混凝土鋪裝養(yǎng)護技術(shù)規(guī)程
- GB/T 44819-2024煤層自然發(fā)火標志氣體及臨界值確定方法
- 《MATLAB編程及應(yīng)用》全套教學(xué)課件
評論
0/150
提交評論