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

正文內(nèi)容

課程設(shè)計--基于at89c52的pwm直流電機(jī)調(diào)速系統(tǒng)設(shè)計含全套資料-資料下載頁

2024-11-07 22:45本頁面
  

【正文】 *******************************/ define true 1 define false 0 define MOTO_ON MOTO_LEFT = false。\ MOTO_RIGHT = true define MOTO_OFF MOTO_LEFT = true。\ MOTO_RIGHT = true /********************************************* * 全局變量定義 *********************************************/ code u8 DisCode[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xff}。 u8 PWMpercent = 0。 u8 DisNum[4] = {0x0a, 0x0a, 0x0a, 0x00}。 u8 DisPosition = 0。 u8 SecCount = 0。 u8 u10msNum = 0。 BOOL b10msEvent = false。 BOOL b100msEvent = false。 BOOL b1secEvent = false。 BOOL MotoStart = false。 BOOL MotoRun = false。 30 void Key_Prosess(void)。 void Dynamic_Display(void)。 void Speed_Display(void)。 /********************************************* * 主函數(shù) *********************************************/ main() { TMOD = 0x01。 TH0 = T0HIGH。 TL0 = T0LOWW。 TR0 = 1。 ET0 = 1。 EA = 1。 P1 = 0x00。 while(1) { if(true == b10msEvent) //10 毫秒定時標(biāo)志 { b10msEvent = false。 Key_Prosess()。 //按鍵掃描 Dynamic_Display()。 //動態(tài)顯示 if(true == MotoStart) //如果電機(jī)啟動 { if(true == MotoRun) { if(u10msNum == 0) //如果電機(jī)轉(zhuǎn)動時間到 ,停止電機(jī) { MotoRun = false。 MOTO_OFF。 } } if(true == b1secEvent) //PWM 周期為 1 秒 ,1 秒鐘時間到 ,開始下一個周期 { b1secEvent = false。 MotoRun = true。 MOTO_ON。 u10msNum = PWMpercent。 } 31 } } } } /********************************************* * 清顯示 *********************************************/ void Num_Clear(void) { u8 i。 for(i=0。 i3。 i++) { DisNum[i] = 0x0a。 } DisNum[3] = 0x00。 } /********************************************* * 讀鍵值 *********************************************/ u8 Key_Scan(void) { if(KEY_ON_PIN == false) return KEY_ON_VALUE。 if(KEY_INC_PIN == false) return KEY_INC_VALUE。 if(KEY_DEC_PIN == false) return KEY_DEC_VALUE。 return KEY_NULL。 } /********************************************* * 按鍵狀態(tài)掃描 *********************************************/ u8 GetKey(void) { static u8 KeyState = KEY_STATE_INIT。 static u8 KeyTimeCount = 0。 static u8 LastKey = KEY_NULL。 //保存按鍵釋放時候的鍵值 u8 KeyTemp = KEY_NULL 。 KeyTemp = Key_Scan()。 switch(KeyState) { case KEY_STATE_INIT: //初始狀態(tài) 32 if(KEY_NULL != KeyTemp) //有鍵按下 { KeyState = KEY_STATE_WOBBLE。 //進(jìn)入消抖 } break。 case KEY_STATE_WOBBLE: //消抖 KeyState = KEY_STATE_PRESS。 break。 case KEY_STATE_PRESS: if(KEY_NULL != KeyTemp) { LastKey = KeyTemp。 //保存鍵值 ,以便在釋放按鍵狀態(tài)返回鍵值 KeyTemp |= KEY_DOWN。 //按鍵按下 KeyState = KEY_STATE_LONG。 } else { KeyState = KEY_STATE_INIT。 } break。 case KEY_STATE_LONG: if(KEY_NULL != KeyTemp) { if(++KeyTimeCount = KEY_LONG_PERIOD) { KeyTimeCount = 0。 KeyState = KEY_STATE_CONTINUE。 } } else { KeyState = KEY_STATE_RELEASE。 } break。 case KEY_STATE_CONTINUE: if(KEY_NULL != (KeyTemp)) { if(++KeyTimeCount = KEY_CONTINUE_PERIOD) { KeyTimeCount = 0。 33 KeyTemp |= KEY_CONTINUE。 //連擊按鍵事件發(fā)生 } } else { KeyState = KEY_STATE_RELEASE。 } break。 case KEY_STATE_RELEASE: LastKey |= KEY_UP。 //按鍵釋放 KeyTemp = LastKey。 KeyState = KEY_STATE_INIT。 break。 default: break。 } return KeyTemp。 } /********************************************* * 按鍵功能處理 *********************************************/ void Key_Prosess(void) { u8 KeyData。 KeyData = GetKey()。 switch(KeyData) { case KEY_ON: //開關(guān)電機(jī) if(true == MotoStart) { MotoStart = false。 Num_Clear()。 MOTO_OFF。 MotoRun = false。 PWMpercent= 0。 } else { MotoStart = true。 MOTO_ON。 34 MotoStart = true。 MotoRun = true。 u10msNum = PWMpercent = 1。 } break。 case KEY_INC: //單步增加 case KEY_INC_CON: //連續(xù)增加 if((PWMpercent 100) amp。amp。 MotoStart) //PWM 從 1%~100% PWMpercent++。 break。 case KEY_DEC: //單步減小 case KEY_DEC_CON: //連續(xù)減小 if((PWMpercent 1) amp。amp。 MotoStart) //PWM 從 1%~100% PWMpercent。 break。 default: break。 } Speed_Display()。 } /********************************************* * 速度轉(zhuǎn)換成十進(jìn)制數(shù) *********************************************/ void Speed_Display(void) { u8 i。 DisNum[1] = PWMpercent / 100。 DisNum[2] = PWMpercent % 100 / 10。 DisNum[3] = PWMpercent % 10。 for(i=1。 i3。 i++) { if(DisNum[i] != 0) break。 DisNum[i] = 0x0a。 } } /********************************************* * 動態(tài)顯示速度百分比 *********************************************/ void Dynamic_Display(void) 35 { static u8 DisPinOn = 0x01。 DisPinOn = 1。 if(DisPinOn == 0x10) { DisPosition = 0。 DisPinOn = 0x01。 } P0 = 0xff。 P1 = DisPinOn。 P0 = DisCode[DisNum[DisPosition++]]。 } /********************************************* * 定時器 0中斷 *********************************************/ void timer0(void) interrupt 1 { TH0 = T0HIGH。 TL0 = T0LOWW。 b10msEvent = true。 //10 毫秒中斷 if(++SecCount == 100) { SecCount = 0。 b1secEvent = true。 //1 秒到時 } } 36 附錄 B 設(shè)計任務(wù)分配 隊 員 設(shè)計任務(wù) 鮑鵬展 ? 資料 整理 ? 硬件電路設(shè)計 ? 程序編寫 調(diào)試 ? 設(shè)計報告 編寫 ? PPT 審核 呂君令 ? 搜索 資料 ? 電路繪制 ? PPT 編輯 劉佳欣 ? 搜索資料 ? 電路繪制 ? PPT 編輯
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1