freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于51單片機控制步進電機畢業(yè)設計論文(編輯修改稿)

2024-07-25 00:12 本頁面
 

【文章內容簡介】 (RS)、讀寫控制引腳(R/W)、使能引腳(E),數(shù)據(jù)總線引腳(D0D7)。RS引腳是內部寄存器選擇引腳,當RS=0時,總線將連接到內部寄存器的指令寄存器IR;當RS=1,總線將連接數(shù)據(jù)寄存器DR。讀寫控制引腳(R/W)的作用是控制總線方向。當R/W=0時,總線將由微處理器輸入到顯示屏控制器內部,以進行數(shù)據(jù)寫入;當R/W=1時,總線會由LCD控制器內部讀取數(shù)據(jù)。使能引腳是控制液晶顯示面板的使能信號,為負邊沿觸發(fā)。數(shù)據(jù)總線引腳,顧名思義,就是控制數(shù)據(jù)輸入。 位移越界報警電路 圖48 位移越界報警電路在步進電機位移定位控制過程中,位移總會有一個界限范圍,當給步進電機輸入的目的坐標超過位置范圍時,其系統(tǒng)就會啟動報警提示電路。此報警電路是由蜂鳴器與三極管構成,當引腳為低電平時,蜂鳴器會開始振動,從而發(fā)出聲音。當重新設置合理的目的位置時,警報提示消失,步進電機開始正常運行。 狀態(tài)指示燈顯示電路 圖49 狀態(tài)指示燈這里的狀態(tài)顯示指示燈總共分為四種,分別是系統(tǒng)運行指示燈、運行速度反饋指示燈、角度設定功能指示燈、位移設定功能指示燈。當系統(tǒng)處于運行情況時,指示燈亮,否則處于熄滅的狀態(tài)。當步進電機實時運行速度在正常范圍時,指示燈處于熄滅的狀態(tài),若實時速度高于正常范圍,則會燈亮。當系統(tǒng)處于角度設定的功能狀態(tài)時,其相應的指示燈會亮;當系統(tǒng)處于位移設定的功能狀態(tài)時,那么位移設定的指示燈就會亮。通過這樣的設計,能夠有效看到現(xiàn)在系統(tǒng)的各個狀態(tài),便于對系統(tǒng)各個運行狀態(tài)的監(jiān)視。當系統(tǒng)出現(xiàn)故障,對于維護起來,也會變得更加高效。 第五章 步進電機控制系統(tǒng)軟件設計通過系統(tǒng)分析可以看出,實現(xiàn)系統(tǒng)功能可以采用查詢法與中斷法。由于隨時有可能輸入加速、減速信號和停止信號,因而采用中斷方式效率最高,包括兩個外部中斷和一個定時器中斷,其余系統(tǒng)功能主要是通過查詢法完成,為了保證系統(tǒng)功能能夠及時有效執(zhí)行,在主函數(shù)下選擇具有循環(huán)函數(shù)的地方,將相應的功能函數(shù)嵌入其中,這樣最大保證程序能夠及時掃描到。主程序設計內容包括系統(tǒng)參數(shù)初始化、系統(tǒng)狀態(tài)實時顯示、定時器及外部中斷設置以及各種功能開關狀態(tài)的檢測判斷等等。其中系統(tǒng)初始狀態(tài)的設置內容嵌套在啟動函數(shù)里,當啟動按鍵按完之后,初始化函數(shù)以及顯示函數(shù)依次執(zhí)行。功能函數(shù)嵌套在等待循環(huán)內,有利于系統(tǒng)能夠及時有效掃描到相應的功能按鍵。以下是主函數(shù)程序框圖及代碼。圖51 主函數(shù)流程圖void main(){ while(1) { StateOn()。 //啟動 if(k3) //只在啟動時候顯示一次的標志 { inti_lcd()。 //LCD初始化 DoSpeed()。 //速度換算 DoAngle()。 //角度換算 DoDistance()。 //位移計算 ShowState()。 //LCD顯示 k3=0。 } TR1=1。 //打開計時器1功能 for(i=0。i2。i++) { while(!TimerFlagamp。amp。state) //脈沖等待 { SetAngle()。 //角度設定 Direction_Set()。 //方向設定 while(!distanceset) //保證位移設定狀態(tài)的連續(xù)性 { Distance_Set()。 //位移設定 } } P0_1=~P0_1。 //產生脈沖 TimerFlag=0。 } } }當主函數(shù)一直循環(huán)運行時,可由外部中斷按鍵函數(shù)進行速度控制,計數(shù)器開始計數(shù),當相應時間到達,其時間標志會置1,這樣通過計時器可以控制脈沖的間隔,從而控制脈沖的產生頻率。 LCD顯示程序設計對于一個良好的系統(tǒng),顯示模塊至關重要,它能直觀且實時反映出系統(tǒng)狀態(tài)。此仿真系統(tǒng)采用的是LM041L顯示屏[28],每行可顯示16個5*7點陣字符,這里總共有4行顯示,分別是步進電動機的轉速、旋轉方向、角度設定以及位移設置,以下是程序流程圖及部分代碼程序。 圖52 顯示程序流程圖void inti_lcd() //設置LCD初始化方式{ write_inst(0x38)。 //設置功能 write_inst(0x01)。 //清除顯示屏 write_inst(0x0f)。 //關閉顯示內容 write_inst(0x06)。 //設置輸入模式 write_inst(0x0c)。 //設置顯示功能}unsigned char check_BF(void) //檢查此時LCD是否忙碌{ int a。start: //GO循環(huán)標志 RS=0。 //RS=0,RW=1表示讀取BF及AC RW=1。 E=0。 //禁止讀寫功能 for(a=0。a2。a++)。 E=1。 //開啟讀寫功能 P1=0xff。 if(BF==0) //判斷忙碌標志 return 0。 else goto start。}void write_inst(char inst) //寫入指令函數(shù) { check_BF()。 //檢查是否忙碌 LCDP=inst。 //讀入MPU指令 RS=0。RW=0。E=0。 E=1。 //寫入指令 check_BF()。}void write_char(char chardata) //寫入數(shù)據(jù)函數(shù){ check_BF()。 //檢查是否忙碌 LCDP=chardata。 //讀入字符 RS=1。 RW=0。E=0。E=1。 //寫入數(shù)據(jù)}下面就是抽取一段顯示函數(shù)的代碼,顯示函數(shù)的執(zhí)行離不開上面幾個功能設置函數(shù),如下:void ShowState() //顯示狀態(tài)與速度{ int i。 write_inst(0x80)。 //寫入指令函數(shù),作用是顯示位置的起始設置 for(i=0。SpeedChar[i]!=39。\039。i++) //速度顯示的數(shù)組 { write_char(SpeedChar[i])。 //寫入速度數(shù)組值 } write_inst(0x8d)。 //寫入指令函數(shù) for(i=0。SPEED[i]!=39。\039。i++) { write_char(SPEED[i])。 //速度顯示的數(shù)組} } 對于步進電機而言,它的一切運行都離不開脈沖,當外界脈沖頻率變大時,它的運行速度就會成比例的上升。這里控制的原理是根據(jù)外部中斷的次數(shù),將其數(shù)值放到存儲區(qū)。定時器通過不同的數(shù)值,然后就能相應改變間隔時間,這樣就有效控制了脈沖間隔時間,即發(fā)送頻率,進而改變電機轉速。以下是部分程序:void SpeedUp() interrupt 0 //外部中斷0:加速程序{ if(state==1) //判斷系統(tǒng)運行狀態(tài) { if(RunSpeed30) //限制轉速范圍 RunSpeed=RunSpeed10。 //按鍵改變的大小 DoSpeed()。 //速度計算的函數(shù) write_inst(0x01)。 //清除顯示屏 ShowState()。 //LCD顯示函數(shù) } if (RunSpeed=55) //判定是否處于運行高速狀態(tài) LED_SP=0。 else LED_SP=1。 }void SpeedDowm() interrupt 2 //中斷1:減速程序{ if(state==1) { if(RunSpeed250) //限制轉速范圍 RunSpeed=RunSpeed+10。 //按鍵改變的大小 DoSpeed()。 //速度計算的函數(shù) write_inst(0x01)。 ShowState()。 //LCD顯示函數(shù) } if (RunSpeed=55) //判定是否處于運行高速狀態(tài) LED_SP=0。 else LED_SP=1。 }步進電機實際旋轉方向由繞組的電流勵滋順序決定,在此驅動電路中,L297的引腳“CW/CCW”。當改變單片機引腳的電平,此時,L297的引腳“CW/CCW”電平也會隨之變化。通過這樣的設計原理,就可以利用程序函數(shù),達到控制步進電機正反轉的要求。下面是部分程序:void Direction_Set(void) //方向設定函數(shù){ if(~direction) //檢測按鍵是否按下 { flag=!flag。 //方向標志 if(flagamp。amp。state) //按鍵奇數(shù)次為正轉 { RunState=RIGHT_RUN。 //正轉 P0_0=1。 } else if(state) //按鍵偶數(shù)次為反轉 { RunState=LEFT_RUN。 //反轉 P0_0=0。 } write_inst(0x01)。 ShowState()。 //顯示旋轉狀態(tài) } while(~direction)。 //等待按鍵振動結束} } }此程序設計出發(fā)點是通過設定好固定角度的大小,然后讓步進電機運行相同的角度,用于模擬步進電機的實際應用。對于一個步進電機而言,步距角是固定的。在正常運行的情況下,當給定一個目的角度,步進電機就可以驅動執(zhí)行機構精確地運行到固定角度,同時不需要任何反饋機制就能精確地運行,結束之后程序鎖定。在實際應用中,就可以帶動執(zhí)行機構鎖定一個設定方位進行運動。void SetAngle(void) //角度設定函數(shù) { unsigned char i; if(~Angle_SET) { while(!Angle_SET)。 //去按鍵抖動 while(Angle_SETamp。amp。state) //等待設定角度 { TYPEDEF_KEY value = NULL。 value = GetKey()。 //掃描按鍵函數(shù) switch(value) //選擇按鍵值 { case KEY_Add: //量值增加 if(angle==360) //限制角度范圍 angle=0。 else angle+=30。 //設置按鍵改變的大小 DoAngle()。 //計算角度 write_inst(0x01)。 // 清除顯示屏 ShowState()。 // 顯示函數(shù) break。 case KEY_Reduce: //量值減少 if(angle==0) //限制角度范圍 angle=360。 else angle=30。 //設置按鍵改變的大小 DoAngle()。 //計算角度 write_inst(0x01)。 // 清除顯示屏 ShowState()。 // 顯示函數(shù) break。 default: break。 } } num=angle/ 。 //設定角度換算成脈沖 for(i=0。inum。i++) //步進電機開始隨著脈沖執(zhí)
點擊復制文檔內容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1