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

正文內(nèi)容

畢業(yè)設(shè)計(論文)-基于at89c51單片機的步進電機控制系統(tǒng)-資料下載頁

2025-06-28 11:17本頁面
  

【正文】 //停止指示燈sbit led4=P2^3。 //啟動指示燈sbit led5=P2^4。 //連續(xù)運行指示燈sbit led6=P2^5。 //單步運行指示燈unsigned char dispbuf[]={0,0,0,0}。 //顯示緩沖區(qū)unsigned char key。unsigned char keycount。 //記錄數(shù)字按鍵的次數(shù)unsigned char count,count1。 //周期記錄unsigned char speedflag。 //速度控制unsigned char speedtemp。/******************************位交換函數(shù)**************************///用于從鍵盤輸入步數(shù)時,每輸入一個數(shù)就將高低位進行交換并送入顯示緩區(qū)void change(unsigned char *p,unsigned char count) { while(count0) { *(p+count)=*(p+count1)。 count。 } }/***************************Xms 延時函數(shù)*************************///用與產(chǎn)生任意 ms 延時時間void delay(unsigned int ms) { unsigned int i,j。 for (j=0。jms。j++) for (i=0。i120。i++)。}/*****************************顯示函數(shù)****************************/void display(void){ unsigned char i。 for(i=0。i4。i++) //發(fā)送4位數(shù)據(jù) { SBUF=table[dispbuf[i]]。 while(!TI)。 //判斷數(shù)據(jù)是否發(fā)送完TI=0。 //軟件清0 }}/**************************初始化函數(shù)****************************///功能:對T0、中斷進行初始化,同時對步進電機狀態(tài)和數(shù)碼管顯示進行初始//化void init(void){ TMOD=0x01。 TH0=(6553660000) / 256。 TL0=(6553660000) % 256。 dispbuf[0]=0。 dispbuf[1]=0。 dispbuf[2]=0。 dispbuf[3]=0。 IE=0x82。 //允許T0、INT0和INT1中斷 rest=0。 //不復(fù)位 state=0。 //停止 keycount=0。 //允許輸入步數(shù) speedflag=25。 P2=0x00。 zf=0。 //正轉(zhuǎn)控制 led1=1。 //正轉(zhuǎn)指示燈 led3=1。 //停止指示燈 display()。 //初始化狀態(tài)顯示 }/*************************數(shù)字按鍵處理函數(shù)*************************///功能:判斷是否為數(shù)字按鍵,若為數(shù)字按鍵則調(diào)用位交換行數(shù),并送顯示緩//沖區(qū)void keypro(void){ if((key=0)amp。(key10)) //判斷按鍵是否為數(shù)字按鍵 { if(keycount4) { change(dispbuf,keycount)。 //調(diào)用位交換函數(shù) dispbuf[0]=key。 keycount++。 display()。 } else keycount=4。 } }/**************************判斷按鍵是否松開************************/void keyloosen(void){ unsigned char temp。 temp=P1。 temp=tempamp。0xf0。 while(temp!=0xf0) { temp=P1。 temp=tempamp。0xf0。 }}/*****************************鍵盤掃描函數(shù)*************************///功能:根據(jù)鍵值執(zhí)行相應(yīng)的功能,按鍵功能包或0~9的數(shù)字按鍵、啟動按鍵、//停止按鍵、正轉(zhuǎn)按鍵、反轉(zhuǎn)按鍵、復(fù)位按鍵(用于當(dāng)輸入有誤時對輸入狀態(tài)//進行復(fù)位)void keyscan(void) { unsigned char temp。 P1=0xfe。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { delay(15)。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { temp=P1。 temp=tempamp。0xf0。 switch(temp) { case 0xe0: //0 key=0。 break。 case 0xd0: //1 key=1。 break。 case 0xb0: //2 key=2。 break。 case 0x70: //3 key=3。 break。 default: //多個按鍵同時按下時該次按鍵無效 key=20。 break。 } keypro()。 //調(diào)用數(shù)字按鍵處理函數(shù) } keyloosen()。 //判斷按鍵是否松開 } P1=0xfd。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { delay(15)。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { temp=P1。 temp=tempamp。0xf0。 switch(temp) { case 0xe0: //4 key=4。 break。 case 0xd0: //5 key=5。 break。 case 0xb0: //6 key=6。 break。 case 0x70: //7 key=7。 break。 default: //多個按鍵同時按下時該次按鍵無效 key=20。 break。 } keypro()。 //調(diào)用數(shù)字按鍵處理函數(shù) } keyloosen()。 //判斷按鍵是否松開 } P1=0xfb。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { delay(15)。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { temp=P1。 temp=tempamp。0xf0。 switch(temp) { case 0xe0: //8 key=8。 break。 case 0xd0: //9 key=9。 break。 case 0xb0: //啟動按鍵 key=10。 state=1。 //置啟動狀態(tài)標志位為1 break。 case 0x70: //停止按鍵 key=11。 state=0。 //置啟動狀態(tài)標志位為0 break。 default: //多個按鍵同時按下時該次按鍵無效 key=20。 break。 } keypro()。 //調(diào)用數(shù)字按鍵處理函數(shù) } keyloosen()。 //判斷按鍵是否松開 } P1=0xf7。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { delay(15)。 temp=P1。 temp=tempamp。0xf0。 if(temp!=0xf0) { temp=P1。 temp=tempamp。0xf0。 switch(temp) { case 0xe0: //正轉(zhuǎn)按鍵 led1=1。 //正轉(zhuǎn)指示燈亮 led2=0。 //反轉(zhuǎn)指示燈滅 zf=0。 //正轉(zhuǎn)控制信號 break。 case 0xd0: //反轉(zhuǎn)按鍵 led1=0。 //正轉(zhuǎn)指示燈滅 led2=1。 //反轉(zhuǎn)指示燈亮 zf=1。 //反轉(zhuǎn)控制信號 break。 case 0xb0: //復(fù)位按鍵 rest=1。 //置復(fù)位狀態(tài)位為1 break。 case 0x70: //連續(xù)運行按鍵 break。 } } keyloosen()。 //判斷按鍵是否松開 } }/**************************調(diào)速范圍控制函數(shù)************************/// 功能:調(diào)速范圍控制在2599 r/min,防止步進電機因速度太高發(fā)生失步void speedrange(void) { if(speedflag=25) speedflag=25。 else { if(speedflag=99) speedflag=99。 }}/*****************************調(diào)速函數(shù)*****************************///功能:根據(jù)輸入的步數(shù)是否大于100,再確定是否需要進行調(diào)速,若步數(shù)大//于100,則加速,當(dāng)步數(shù)小于100后就減速;當(dāng)輸入步數(shù)小于100,則以最低//設(shè)定的最低速度運行void changespeed(void){ if((dispbuf[3]==0)amp。(dispbuf[2]==0)) //判斷千位和十位是否都為0,即步數(shù)//是否小于100 speedflag。 //步數(shù)小于100減速 else speedflag++。 //步數(shù)大于100加速 speedrange()。 //判斷是否超出調(diào)速范圍}/***************************步數(shù)減一函數(shù)***************************/void stepdec(void){ if(dispbuf[0]==0) { if((dispbuf[1]!=0)|(dispbuf[2]!=0)|(dispbuf[3]!=0)) { dispbuf[0]=9。 if(dispbuf[1]==0) { if((dispbuf[2]!=0)|(dispbuf[3]!=0)) { dispbuf[1]=9。 if(dispbuf[2
點擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1