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

正文內(nèi)容

基于msp430單片機(jī)的電機(jī)調(diào)速系統(tǒng)-在線瀏覽

2025-01-15 15:26本頁面
  

【正文】 D 控制器是一種最優(yōu)控制。 PID 調(diào)節(jié)器個校正環(huán)節(jié)的作用: ( 1) 比例環(huán)節(jié):即時成比例的反應(yīng)控制系統(tǒng)的偏差信號 e( t),偏差一旦產(chǎn)生, 調(diào)節(jié)器立即產(chǎn)生控制作用以減少偏差。積分作用的強(qiáng)弱取決于積分時間,積分作用越弱,反之越強(qiáng)。 將 模擬信號 ??tr 、 ??te 、 ??tu 、 ??tc 在第 n 次 采樣 的數(shù)據(jù)分別用 )(nr 、 )(ne 、)(nu )(nc 表示 ,于是有 )()()( nrne ?? 從而可以推導(dǎo)出數(shù)字 PID 算法 : ? ? ? ? )1()2()1(2)()()1()()( ??????????? nuneneneKneKneneKnu dIp 將此式代入程序中調(diào)節(jié)好 pK 、 IK 、 dK 這三個參數(shù),從而 調(diào)節(jié) PWM 使 電機(jī)轉(zhuǎn)速達(dá)到設(shè)定值。 為了消除飽和積分的影響,我們 采用遇限削弱積分法: 一旦控制量進(jìn)入飽和區(qū),則停止進(jìn)行增大積分的運(yùn)算 。用 msp430 單片的 P2 口中斷來掃描鍵盤,當(dāng)有鍵按下時產(chǎn)生中斷,在中斷內(nèi)處理鍵值, 每 按一次記錄一個數(shù),將設(shè)定的 轉(zhuǎn)速記錄下四川理工學(xué)院挑戰(zhàn)杯論文 第 8 頁 共 32 頁 來,傳給 PID 函數(shù)進(jìn)行計算和控制。 程序 一 :鍵盤輸入檢測文件 include include define uint unsigned int define uchar unsigned char define SCAN_OUT P2OUT //4 4 鍵盤掃描端口,低 4 位是列線,高 4 位是行線 define SCAN_IN P2IN//采用逐列掃描的方法,無按鍵時,低 4 位輸出 1,高 4位輸出 0//當(dāng)有按鍵時,高 4 位輸出掃描電位,低 4 位輸入掃描結(jié)果 const uchar uca_RowScan[4]={0x7F,0xBF,0xDF,0xEF}。 void clear_row(uchar row) { uchar i=0。 //顯示地址 for(i=0。i++) Write_Data(0x20)。//顯示地址 } void Init_Keypad(void) { P2DIR |= 0xF0。 // ~ 輸出低電平 } /********************************* Scankey 鍵盤掃描函數(shù) 返回值 0~9 代表數(shù)值 0~9 10 代表刪除光標(biāo)左邊一位 11 代表確定鍵 12 表示輸入錯誤 *****************************/ uint ucKeyScan(void) { uchar ucTemp=0。//行號,列號 uchar key=0。 uchar i=0。 while(1) { while((P2INamp。 // Delay_Nms(5)。ucRow4。 //輸出掃描電位 ucTemp = P2INamp。 Delay_Nms(20)。 if(ucTemp==(P2INamp。break。break。break。break。break。0x0F) != 0x0f)//等待按鍵放開 Delay_Nms(25)。0x0F) != 0x0f)//等待按鍵放開 Delay_Nms(5)。break。break。break。break。break。break。break。break。break。break。break。break。break。break。break。break。 return speed1。 i=0。 i=1。 speed1 = speed1*10+key。//掃描狀態(tài)暫存 uchar ucRow=0,ucLine=0。//返回鍵值 Init_Keypad()。0x0F)== 0x0f)//等待按鍵按下 s { P2OUT = 0x00。 } for(ucRow=0。ucRow++)//列掃描 { P2OUT = uca_RowScan[ucRow]。0x0F。 if(ucTemp != 0x0F) {//判斷該列是否有按鍵按下 Delay_Nms(15)。0x0F)) { switch(ucTemp)//如果有,則判斷行號 四川理工學(xué)院挑戰(zhàn)杯論文 第 16 頁 共 32 頁 { case 0x0E: ucLine=1。 case 0x0D: ucLine=2。 case 0x0B: ucLine=3。 case 0x07: ucLine=4。 default: ucLine=5。 } } while((P2INamp。 while((P2INamp。 /****** 判斷鍵值 ******/ switch(ucLine+(ucRow+1)*10) { case 11: key=1。 case 12: key=2。 case 13: key=3。 case 14: key=3。 case 21: key=3。 case 22: key=3。 case 23: key=3。 case 24: key=3。 case 31: key=3。 case 32: key=3。 case 33: key=3。 case 34: key=3。 case 41: key=3。 case 42: key=3。 case 43: key=11。 case 44: key=10。 } if(key==1) { clear_row(0x94)。 k = key。 Write_Data(0x30+key)。 } else if(key==11) clear_row(0x94)。 } 四川理工學(xué)院挑戰(zhàn)杯論文 第 17 頁 共 32 頁 } } } 程序二: LCD12864 顯示文件 define uchar unsigned char define uint unsigned int void Delay_1ms(void)。 void Write_Cmd(uchar cod)。 void Ini_Lcd(void)。 void Disp_ND(uchar addr,uint thickness)。 void Draw_PM(const uchar *ptr)。 void display_str(uchar *str)。 uchar Read_Data()。 void dis_lin(uchar ystar,uchar xstar,uchar yend,uchar xend)。 typedef unsigned int uint。=~BIT0 // define LCD_RW_H P3OUT|=BIT1 // define LCD_RW_L P3OUTamp。=~BIT2 // void Delay_1ms(void) { uchar i。i 0。 } void Delay_Nms(uint n) { uint i。i 0。 } void Write_Cmd(uchar cmd) 四川理工學(xué)院挑戰(zhàn)杯論文 第 18 頁 共 32 頁 { uchar lcdtemp = 0。 LCD_RW_H。 do //判忙 { LCD_EN_H。 lcdtemp = LCD2MCU_Data。 } while(lcdtemp amp。 LCD_DataOut。 MCU2LCD_Data = cmd。 _NOP()。 } void Write_Data(uchar dat) { uchar lcdtemp = 0。 LCD_RW_H。 do //判忙 { LCD_EN_H。 lcdtemp = LCD2MCU_Data。 } while(lcdtemp amp。 LCD_DataOut。 LCD_RW_L。 LCD_EN_H。 LCD_EN_L。 //液晶控制端口設(shè)置為輸出 Delay_Nms(500)。 //基本指令集 Delay_1ms()。 // 地址歸位 Delay_1ms()。 //整體顯示打開 ,游標(biāo)關(guān)閉 Delay_1ms()。 //清除顯示 Delay_1ms()。 //游標(biāo)右移 Delay_1ms()。 //設(shè)定顯示的起始地址 } void Disp_HZ(uchar addr,const uchar * pt,uchar num) { uchar i。 for(i = 0。i++) Write_Data(*(pt++))。 uchar data=0。 LCD_RW_H。 do //判忙 { LCD_EN_H。 lcdtemp = LCD2MCU_Data。 } while(lcdtemp amp。 LCD_DataIn。 LCD_RW_H。 _NOP()。 _NOP()。 四川理工學(xué)院挑戰(zhàn)杯論文 第 20 頁 共 32 頁 return data。 Write_Cmd(0x34)。 for(j = 0。j++) { Write_Cmd(i++)。 for(k = 0。k++) { Write_Data(0x00)。 for(j = 0。j++) { Write_Cmd(i++)。 for(k = 0。k++) { Write_Data(0x00)。 //回到基本指令集 } /****************************** 在指定位置畫點 *******************************/ void Draw_TX(uchar Yaddr,uchar Xaddr) { uchar row,tier,tier_y。 Write_Cmd(0x34)。 //清屏 ,只能清除 DDRAM tier = Xaddr/16。 if(Yaddr32) row = Yaddr。 tier += 8。 //Y 地址 Write_Cmd(tier+0x80)。 //無效位 data[0] = Read_Data()。 Write_Cmd(row+0x80)。 //X 地址 if(tier_y8) {
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1