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

正文內(nèi)容

基于at89c52單片機(jī)的流量控制系統(tǒng)課程設(shè)計(jì)報(bào)告(仿真和實(shí)物實(shí)現(xiàn))-資料下載頁(yè)

2025-06-26 18:47本頁(yè)面
  

【正文】 /采樣周期1~50msuchar data tabArryA[3]={100}。 //積分分離值0%~100%uchar data tabArryQ0[4]={800}。 //給定值800~1000uchar data tabArryCurrentQ[3]={0}。uint data Ts,Td,Ti,PP,SetQ0,CurrentQ。float data En,En_1,En_2,AT,Kd,Ki,Kp,pp,pd,pi,pn,pn_1。float data SetQ,CurrentQ0。uchar AD0809() //AD轉(zhuǎn)換程序{ uchar result。 STARTAD=0。 while(ADBUSY==1)。 while(ADBUSY==0)。 result=ADRESULT。 return(result)。} void PID_Init() //PID系數(shù)初始化,無(wú)符號(hào)字符型轉(zhuǎn)化為浮點(diǎn)型{ uint i,j。 i=strlen(tabArryA)。 AT=0。 for(j=0。ji。j++) { AT+=(uint)(tabArryA[j]amp。0x0f)*pow(10,ij1)。 //更新采樣周期 } if(AT) AT=。 CurrentQ0=CurrentQ*。 En=(SetQ0CurrentQ0)/400。 Kp=。 Kd=Kp*Td/Ts。 Ki=Kp*Ts/Ti。}uchar PID_Process() //積分分離PID運(yùn)算{uchar PID_result。 PID_Init()。 pp=Kp*(EnEn_1)。 pi=Ki*En。 pd=Kd*(En2*En_1+En_2)。 if(abs(En)AT) //誤差超過(guò)積分分離值A(chǔ)則去掉積分作用 {pn=pn_1+pp+pd。 } else {pn=pn_1+pp+pd+pi。} if(pn1) pn=1。 //輸出限幅 if(pn0) pn=0。 En=En_1。 En_1=En_2。 pn_1=pn。 PID_result=pn*0xff。 return PID_result。 }void init_8279() //8279初始化{uchar s。 M8279_CON=0XDF。 do {s=M8279_CON。 }while(samp。0x80==1)。 M8279_CON=0X00。 M8279_CON=0X3f。}void delay(int ms) //延遲程序{ int i。 while(ms) { for(i = 0。 i i++) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 } }}/*檢查L(zhǎng)CD忙狀態(tài)*****************************************************//*lcd_busy為1時(shí),忙,等待。lcdbusy為0時(shí),閑,可寫指令與數(shù)據(jù)*********/bit lcd_busy(){ bit result。 LCD_RS = 0。 LCD_RW = 1。 LCD_EN = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result = (bit)(P0amp。0x80)。 LCD_EN = 0。 return result。 }/*寫指令數(shù)據(jù)到LCD **************************************************//*RS=L,RW=L,E=高脈沖,D0D7=指令碼。 *****************************/void lcd_wcmd(uchar cmd){ while(lcd_busy())。 LCD_RS = 0。 LCD_RW = 0。 LCD_EN = 0。 _nop_()。 _nop_()。 P0 = cmd。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCD_EN = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCD_EN = 0。 }/*寫顯示數(shù)據(jù)到LCD ***********************************************//*RS=H,RW=L,E=高脈沖,D0D7=數(shù)據(jù)。********************************/void lcd_wdat(uchar dat) { while(lcd_busy())。 LCD_RS = 1。 LCD_RW = 0。 LCD_EN = 0。 P0 = dat。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCD_EN = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 LCD_EN = 0。 }/****設(shè)定顯示位置 **************************************************/void lcd_pos(uchar pos){ lcd_wcmd(pos|0x80)。 //數(shù)據(jù)指針=80+地址變量}/** LCD初始化設(shè)定 ************************************************/void lcd_init(){ lcd_wcmd(0x38)。 //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay(5)。 lcd_wcmd(0x38)。 delay(5)。 lcd_wcmd(0x38)。 delay(5)。 lcd_wcmd(0x0f)。 //顯示開,開光標(biāo) delay(5)。 lcd_wcmd(0x06)。 //移動(dòng)光標(biāo) delay(5)。 lcd_wcmd(0x01)。 //清除LCD的顯示內(nèi)容 delay(5)。}void SETP() //設(shè)定比例帶P{uchar ch。 int i,j。 lcd_wcmd(0x06)。 lcd_pos(0)。 lcd_wdat(39。P39。)。 //顯示當(dāng)前比例帶 lcd_wdat(39。=39。)。 i=0。 while(tabArryP[i]==0x30) i++。 while(tabArryP[i] != 39。\039。) { lcd_wdat(tabArryP[i])。 i++。 } i=0。 lcd_pos(2)。 while((ch!=0x17)amp。amp。(i!=4)) {if(P3^2!=1) {M8279_CON=0x40。 //讀數(shù)字 ch=M8279_DATA。 ch=champ。0x3f。 switch(ch) {case 0x04:{tabArryP[i]=0x31。lcd_wdat(39。139。)。break。} case 0x0c:{tabArryP[i]=0x32。lcd_wdat(39。239。)。break。} case 0x14:{tabArryP[i]=0x33。lcd_wdat(39。339。)。break。} case 0x05:{tabArryP[i]=0x34。lcd_wdat(39。439。)。break。} case 0x0d:{tabArryP[i]=0x35。lcd_wdat(39。539。)。break。} case 0x15:{tabArryP[i]=0x36。lcd_wdat(39。639。)。break。} case 0x06:{tabArryP[i]=0x37。lcd_wdat(39。739。)。break。} case 0x0e:{tabArryP[i]=0x38。lcd_wdat(39。839。)。break。} case 0x16:{tabArryP[i]=0x39。lcd_wdat(39。939。)。break。} case 0x0f:{tabArryP[i]=0x30。lcd_wdat(39。039。)。break。} default:break。 } i++。 } } i=strlen(tabArryP)。 PP=0。 for(j=0。ji。j++) { PP+=(uint)(tabArryP[j]amp。0x0f)*pow(10,ij1)。 //更新比例帶的值 } if(pp1000) pp=1000。 if(pp1) pp=1。}void SETD() //設(shè)定微分時(shí)間Td{uchar ch。 int i,j。 lcd_wcmd(0x06)。 lcd_pos(0)。 lcd_wdat(39。T39。)。 lcd_wdat(39。d39。)。 //顯示當(dāng)前微分值 lcd_wdat(39。=39。)。 i=0。 while(tabArryD[i]==0x30) i++。 while(tabArryD[i] != 39。\039。) { lcd_wdat(tabArryD[i])。 i++。 } i=1。 while((ch!=0x17)amp。amp。(i!=3)) {if(P3^2!=1) {M8279_CON=0x40。 //讀數(shù)字 ch=M8279_DATA。 ch=champ。0x3f。 switch(ch) {case 0x04:{tabArryD[i]=0x31。lcd_wdat(39。139。)。break。} case 0x0c:{tabArryD[i]=0x32。lcd_wdat(39。239。)。break。} case 0x14:{tabArryD[i]=0x33。lcd_wdat(39。339。)。break。} case 0x05:{tabArryD[i]=0x34。lcd_wdat(39。439。)。break。} case 0x0d:{tabArryD[i]=0x35。lcd_wdat(39。539。)。break。} case 0x15:{tabArryD[i]=0x36。lcd_wdat(39。639。)。break。} case 0x06:{tabArryD[i]=0x37。lcd_wdat(39。739。)。break。} case 0x0e:{tabArryD[i]=0x38。lcd_wdat(39。839。)。break。} case 0x16:{tabArryD[i]=0x39。lcd_wdat(39。939。)。break。} case 0x0f:{tabArryD[i]=0x30。lcd_wdat(39。039。)。break。} default:break。 } i++。 } } i=strlen(tabArryD)。 Td=0。 for(j=0。ji。j++) { Td+=(uint)(tabArryD[j]amp。0x0f)*pow(10,ij1)。 //更新微分時(shí)間 } if(Td120) Td=120。}void SETI() //設(shè)定積分時(shí)間Ti{uchar ch。 int i,j。 lcd_wcmd(0x06)。 lcd_pos(0)。 lcd_wdat(39。T39。)。 lcd_wdat(39。i39。)。 //顯示當(dāng)前積分值 lcd_wdat(39。=39。)。 i=0。 while(tabArryI[i]==0x30) i++。 while(tabArryI[i] != 39。\039。) { lcd_wdat(tabArryI[i])。 i++。 } i=0。 lcd_pos(3)。 while((ch!=0x17)amp。amp。(i
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1