亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 基于LPC2124的溫度模糊控制系統設計
?? C
字號:
/****************************************************************************
* File: main.c
* 功能:向LCD輸出計數值
****************************************************************************/
#include  "config.h"

#define rs (1<<9)
#define rw (1<<10)
#define en (1<<11)
#define busy (1<<7)	
#define ke 2
#define kec 2.5


uint8 e,ec;
fp32 ectemp,prelevel,etemp;
 uint8 temp=0;

uint8 fuzzycode[21][11]=
{
 {5,5,5,5,5,5,4,3,2,1,1},
 {5,5,5,5,5,5,4,2,2,1,1},
 {5,5,5,5,5,5,4,2,2,1,1},
 {5,5,5,5,5,5,4,2,1,1,1},
 {5,5,5,5,5,5,4,2,1,1,1},
 {5,5,5,5,5,5,4,2,1,1,1},
 {5,5,5,4,4,4,3,2,1,1,1},
 {5,5,5,4,4,4,3,2,1,1,1},
 {5,5,4,4,4,3,2,2,1,0,0},
 {5,5,4,4,3,2,1,1,1,0,0},
 {4,4,3,3,2,1,1,1,0,0,0},
 {3,3,2,2,1,1,1,0,0,0,0},
 {2,2,2,2,1,1,1,0,0,0,0},
 {2,2,2,1,1,0,0,0,0,0,0},
 {2,2,2,1,1,0,0,0,0,0,0},
 {1,1,1,1,1,0,0,0,0,0,0},
 {1,1,1,1,1,0,0,0,0,0,0},
 {1,1,1,1,1,0,0,0,0,0,0},
 {1,1,1,1,1,0,0,0,0,0,0},
 {1,1,1,1,1,0,0,0,0,0,0},
 {1,1,1,1,1,0,0,0,0,0,0}
};


uint8 BCD[7];			//十位二進制的顯示碼分別是千百十個位的顯示
uint32 ADC_Data;

void ShowInt(uint8 addr,uint16 num);
void ShowByte(uint8 addr,uint16 num);
uint32 AD_Convert(void) ;	

void fuzzy(void);
void PWM0(void);
void PWM1(void);
void PWM2(void);
void PWM3(void);
void PWM4(void);
void PWM5(void);
/****************************************************************************
* File: main()
* 功能:顯示計數值
****************************************************************************/
int  main(void)
{ 
    PINSEL0=0x00020000;
    PINSEL1=0x00000000;   
	IO0DIR=0x00cfffff;		//設置為輸出
	IO0CLR=0xeff;
	TargetInit();	
	   		
    ShowByte(0x80,0);
    ShowByte(0xc0,0);
   		
	fuzzy();
		
	return(0);
}



/****************************************************************************
* File:delay()
* 功能:延時
****************************************************************************/
void  delay(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<500; i++);
}

/****************************************************************************
* File:timer0_init
* 功能:定時器0初始化
****************************************************************************/
void timer0_init(void)
{//定時器計數器0設置,晶振為12M,1秒要運行1000000個周期,
	T0PR=0;		//預分頻寄存器
	T0MR0=Fpclk/20;		//匹配值
	T0MCR=0x00000003;		//開放匹配0中斷
	T0TCR=0x00000003;		//T0PC和T0TC復位
	T0TCR=0x00000001;		//T0PC和T0TC復位
}
void timer1_init(void)
{//定時器計數器0設置,晶振為12M,1秒要運行1000000個周期,
	T1PR=0;		//預分頻寄存器
	T1MR0=Fpclk/20;		//匹配值
	T1MCR=0x00000003;		//開放匹配0中斷
	T1TCR=0x00000003;		//T0PC和T0TC復位
	T1TCR=0x00000001;		//T0PC和T0TC復位
}
/****************************************************************************
* File:timerInt
* 功能:中斷處理程序
****************************************************************************/


void __irq timer0Int(void)
{   uint32 d; 
    d=AD_Convert();
    ShowInt(0x86,d);
    	
	VICVectAddr=0;
	T0IR=0x00000001;  
}
void __irq timer1Int(void)
{      
	fuzzy();
	
	VICVectAddr=0;
	T0IR=0x00000001;  
}
/****************************************************************************
* File:int_init()
* 功能:中斷初始化
****************************************************************************/
void int_init(void)
{   
	VICIntSelect=0x00000000;
	VICIntEnable=0x00000030;
	VICVectCntl0=0x00000024;
	VICVectAddr0=(int)timer0Int;
	VICVectCntl1=0x00000025;
	VICVectAddr1=(int)timer1Int;   
   
	
}

/****************************************************************************
* 名稱:ChkBusy()
* 功能:檢查總線是否忙
****************************************************************************/
void ChkBusy()
{
	IO0DIR=0xe00;
	while(1)
	{
		IO0CLR=rs;
		IO0SET=rw;
		IO0SET=en;
		if(!(IO0PIN & busy))break;
		IO0CLR=en;
	}
	IO0DIR=0xeff;
}
/****************************************************************************
* 名稱:WrOp()
* 功能:寫函數
****************************************************************************/
void WrOp(uint8 dat)
{
	ChkBusy();
	IO0CLR=rs;		//全部清零
	IO0CLR=rw;
	IO0CLR=0xff;		//先清零
	IO0SET=dat;		//再送數
	IO0SET=en;
	IO0CLR=en;
}
/****************************************************************************
* 名稱:WrDat()
* 功能:寫數據函數
****************************************************************************/
void WrDat(uint8 dat)	
{
	ChkBusy();
	IO0SET=rs;
	IO0CLR=rw;
	IO0CLR=0xff;		//先清零
	IO0SET=dat;		//再送數
	IO0SET=en;
	IO0CLR=en;
}
/****************************************************************************
* 名稱:lcd_init()
* 功能:lcd初始化函數
****************************************************************************/
void lcd_init(void)
{
	WrOp(0x38);			
	WrOp(0x06);			//光標加1
	WrOp(0x0c);			//開顯示
}
/****************************************************************************
* 名稱:DisText()
* 功能:顯示文本函數
****************************************************************************/
void DisText(uint8 addr,uint8 *p)
{
	WrOp(addr);
	while(*p !='\0')WrDat(*(p++));
}

/****************************************************************************
* 名稱:DisInt()
* 功能:顯示文本函數
****************************************************************************/

void ShowInt(uint8 addr,uint16 num)			//在addr處顯示數字num
{//將num轉化成五個BCD碼存放在全局數組BCD[5]中
	uint8 i;
	
	for(i=5;i>0;i--)       //將NUM數據轉化成ASCII碼,如521會轉化為00521
	{
       	  BCD[i-1]=(uint8)(num%10+0x30);     //取出最低位
       	  num/=10;                           //去掉最低位
    }
    i=0;
	while(BCD[i] ==0x30 && i<4) BCD[i++]=' ';    //NUM轉換成數組存放,沒有加上小數點
	BCD[5]='\0';
	
	 
	DisText(addr,BCD);
}
void ShowByte(uint8 addr,uint16 num)			//在addr處顯示數字num
{//將num轉化成五個BCD碼存放在全局數組BCD[5]中
	
	uint8  str1[]="MeasT:";
	uint8  str2[]="SetT:";
	if (addr==0x80){DisText(addr,str1);}
	if (addr==0xc0){DisText(addr,str2);}  
	
}



uint32 AD_Convert(void) 
{  
   uint32 data;
   
   
    // 進行ADC模塊設置,其中x<<n表示第n位設置為x(若x超過一位,則向高位順延)
    ADCR = (1 << 0)                     |		// SEL = 1 ,選擇通道0
           ((Fpclk / 1000000 - 1) << 8) | 		// CLKDIV = Fpclk / 1000000 - 1 ,即轉換時鐘為1MHz
           (0 << 16)                    |		// BURST = 0 ,軟件控制轉換操作
           (0 << 17)                    | 		// CLKS = 0 ,使用11clock轉換
           (1 << 21)                    | 		// PDN = 1 , 正常工作模式(非掉電轉換模式)
           (0 << 22)                    | 		// TEST1:0 = 00 ,正常工作模式(非測試模式)
           (1 << 24)                    | 		// START = 1 ,直接啟動ADC轉換
           (0 << 27);							// EDGE = 0 (CAP/MAT引腳下降沿觸發ADC轉換)
    delay(10);								
    ADC_Data = ADDR;							// 讀取ADC結果,并清除DONE標志位
   
    while(1)
    {  
        ADCR = (ADCR&0x00FFFF00)|0x01|(1 << 24);	// 設置通道1,并進行第一次轉換
        while( (ADDR&0x80000000)==0 );	            // 等待轉換結束
        ADCR = ADCR | (1 << 24);					// 再次啟運轉換
        while( (ADDR&0x80000000)==0 );              // 等待轉換結束
        ADC_Data = ADDR;							// 讀取ADC結果
        ADC_Data = (ADC_Data>>6) & 0x3FF;           // 提取AD轉換值
        ADC_Data = ADC_Data * 100/1024;                 // 數值轉換
       data=ADC_Data;
       
	  return(data); 
    }

}
void PWM0(void)
{  IO0DIR=1<<23|1<<8;
    IO0SET=1<<23;
          
          
          PWMMR0=Fpclk/2.5;                      //設置PWM周期
          PWMMR4=0;                      //設置PWM占空比
          PWMLER=0x11;
 }
void PWM1(void)
{   IO0DIR=1<<23|1<<8;
      IO0CLR=1<<23;    
          PWMMR0=Fpclk/2.5;                      //設置PWM周期
          PWMMR4=Fpclk/50;                      //設置PWM占空比
          PWMLER=0x11;
} 
void PWM2(void)
{   IO0DIR=1<<23|1<<8;
IO0CLR=1<<23;
      
          PWMMR0=Fpclk/2.5;                      //設置PWM周期
          PWMMR4=Fpclk/10;                      //設置PWM占空比
          PWMLER=0x11;
         }
  void PWM3(void)
 {  IO0DIR=1<<23|1<<8;
  IO0CLR=1<<23;
       
          PWMMR0=Fpclk/2.5;                      //設置PWM周期
          PWMMR4=Fpclk/5;                      //設置PWM占空比
          PWMLER=0x11;
         } 
void PWM4(void)
{   IO0DIR=1<<23|1<<8;
       IO0CLR=1<<23;
          PWMMR0=Fpclk/2.5;                      //設置PWM周期
          PWMMR4=Fpclk/3.3;                      //設置PWM占空比
          PWMLER=0x11;
         }
 void PWM5(void)
{  IO0DIR=1<<23|1<<8;
IO0CLR=1<<23;
          PWMMR0=Fpclk/2.5;                      //設置PWM周期
          PWMMR4=Fpclk/2.49;                      //設置PWM占空比
          PWMLER=0x11;
 }


void fuzzy(void)
{ 
   uint8 U;
  
     uint8 setlevel;
     fp32 nowlevelc;
 IO0DIR=1<<23;
  while(1)
     {  if((IO0PIN&0x00300000)!=0x00300000)
		delay(10);
		if((IO0PIN&0x00300000)!=0x00300000)
			{
			if((IO0PIN&0x00300000)==0x00200000)
				temp++;				
			if((IO0PIN&0x00300000)==0x00100000)
				temp--;
		 while((IO0PIN&0x00300000)!=0x00300000);
        ShowInt(0xc6,temp);		
		}	 
 
		
   
    setlevel=temp;
    nowlevelc=AD_Convert();
    etemp=nowlevelc-setlevel;            
    ectemp=10*(nowlevelc-prelevel);
    prelevel=nowlevelc;
 
 
 if(etemp>=5){e=5*ke+10; }
 else if(etemp<=-5){e=-5*ke+10;}
 else  {e=etemp*ke+10;}
 if(ectemp>=2) {ec=2*kec+5;}
 else if(ectemp<=-2)  {ec=-2*kec+5;}
 else
   {
    if(ectemp<=-1.5){ec=-2*kec+5;}
    else if(ectemp>-1.5 && ectemp<=-0.5) {ec=-1*kec+5;}
	else if(ectemp>-0.5 && ectemp<=0.5){ec=5;}
    else if(ectemp>0.5 && ectemp<1.5) {ec=kec+5;}
	else  {ec=2*kec+5;} 
   }
  
    U=fuzzycode[e][ec];
   
    if (U==0){PWM0();}
    if (U==1){PWM1();}
    if (U==2){PWM2();}
    if (U==3){PWM3();}
    if (U==4){PWM4();}
    if (U==5){PWM5();}
    
  }
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频免费在线| 精品亚洲欧美一区| 91精品久久久久久蜜臀| 国产精一区二区三区| 亚洲欧美日韩国产一区二区三区| 欧美午夜不卡在线观看免费| 国产精品456| 青青草伊人久久| 亚洲免费在线视频| 久久午夜国产精品| 欧美一区二区三区免费| 91精彩视频在线观看| 国产乱国产乱300精品| 蜜臀av一区二区在线免费观看| 中文字幕亚洲综合久久菠萝蜜| 2021久久国产精品不只是精品| 在线播放中文一区| 欧美视频日韩视频| 91久久精品一区二区| 97久久超碰精品国产| 国产91富婆露脸刺激对白| 蜜臀久久99精品久久久久久9| 夜夜嗨av一区二区三区| 中文av一区特黄| 中文字幕一区二区三区四区不卡| 26uuu欧美| 欧美精品一区二区久久婷婷| 日韩你懂的在线观看| 日本久久电影网| 欧美午夜视频网站| 欧美成人bangbros| 中文字幕亚洲精品在线观看| 亚洲女同ⅹxx女同tv| 日本不卡一区二区| 麻豆高清免费国产一区| 国产精品一二三| 色香色香欲天天天影视综合网| 色婷婷av一区二区三区之一色屋| 91精品国产手机| 国产精品免费久久久久| 亚洲va韩国va欧美va| 国产精品99久久久久久久女警 | www.亚洲国产| 欧美高清视频www夜色资源网| 久久无码av三级| 亚洲影院在线观看| 国产精品资源在线看| 欧美视频一二三区| 国产精品美女久久久久aⅴ国产馆| 日韩精品1区2区3区| 99国产精品99久久久久久| 中文字幕欧美国产| 日韩三级在线观看| 亚洲人成网站色在线观看| 国内精品久久久久影院薰衣草 | 亚洲图片一区二区| 亚洲国产一区二区三区青草影视| 国产九色sp调教91| 日韩欧美一区二区三区在线| 成人美女视频在线观看18| 欧美一区二区三区系列电影| 国产一区二区三区综合| 久久久久久久国产精品影院| 99九九99九九九视频精品| 裸体健美xxxx欧美裸体表演| 国产精品免费观看视频| 欧美精品1区2区3区| 久久爱www久久做| 欧美色图片你懂的| 亚洲精品日韩综合观看成人91| 成人h精品动漫一区二区三区| 欧美电影免费观看高清完整版在线 | 成人精品视频一区二区三区尤物| 91久久奴性调教| 亚洲午夜国产一区99re久久| 菠萝蜜视频在线观看一区| 久久综合久久久久88| 国产精品一区二区黑丝| 国产精品久久久久四虎| aaa欧美色吧激情视频| 五月激情六月综合| 在线观看日韩电影| 1024成人网色www| 麻豆一区二区三区| 欧美少妇性性性| 男女性色大片免费观看一区二区 | 一区二区三区四区在线| 777奇米成人网| 正在播放一区二区| 日韩视频免费观看高清在线视频| 欧美性大战久久久久久久| 9i在线看片成人免费| 不卡av在线网| 在线看不卡av| 成人理论电影网| 日韩制服丝袜先锋影音| 国产午夜精品一区二区三区视频| 色综合久久综合中文综合网| 午夜精品久久久久影视| 国产精品欧美经典| 国产亚洲一本大道中文在线| 欧美日韩高清在线| 欧美日韩欧美一区二区| 日韩国产欧美一区二区三区| 午夜欧美电影在线观看| 日本乱人伦一区| 亚洲男人的天堂av| 色吧成人激情小说| 中文字幕综合网| 在线精品视频免费播放| 亚洲国产日韩av| 在线不卡免费欧美| 日本不卡中文字幕| 2017欧美狠狠色| 国产成人啪免费观看软件| 国产日产欧美一区二区视频| 国产黄色成人av| 国产精品看片你懂得| 成人av免费在线播放| 中文字幕一区在线| 色综合天天综合网国产成人综合天| 悠悠色在线精品| 欧美日韩成人综合在线一区二区| 免费三级欧美电影| 久久久精品国产99久久精品芒果| 成人性视频免费网站| 亚洲视频小说图片| 欧美日韩国产欧美日美国产精品| 奇米精品一区二区三区在线观看一| 精品福利av导航| 成人黄色a**站在线观看| 亚洲视频精选在线| 欧美精品三级日韩久久| 久久成人精品无人区| 国产精品三级av在线播放| 在线观看国产日韩| 精品一区二区在线视频| 国产精品久久久久一区| 欧美亚洲国产一区在线观看网站| 日韩中文字幕麻豆| 国产欧美日韩在线看| 91精彩视频在线| 极品美女销魂一区二区三区| 综合久久国产九一剧情麻豆| 欧美日韩国产精选| 国产成人8x视频一区二区| 亚洲一区二区三区四区五区中文| 欧美mv日韩mv国产网站app| a级高清视频欧美日韩| 天堂精品中文字幕在线| 久久久久久久综合| 欧美色视频一区| 国产一区999| 午夜免费欧美电影| 国产视频亚洲色图| 欧美久久婷婷综合色| 成人动漫一区二区三区| 欧美a级理论片| 国产精品久久久久久久久动漫 | 国产一区二区三区精品欧美日韩一区二区三区 | 欧美三级资源在线| 国产精品综合网| 五月婷婷另类国产| 日本一区二区三区在线不卡| 69精品人人人人| 一本色道a无线码一区v| 国产一区二区三区四区五区美女 | 久久99精品久久久久| 亚洲精品视频自拍| 欧美激情一区二区三区四区| 欧美一激情一区二区三区| 91蜜桃视频在线| 国产伦精品一区二区三区免费| 五月激情丁香一区二区三区| 国产精品乱码人人做人人爱| 欧美大黄免费观看| 欧美日韩视频一区二区| 91麻豆国产精品久久| 国产高清精品久久久久| 久热成人在线视频| 三级亚洲高清视频| 亚洲一区视频在线观看视频| 中文字幕一区二区在线观看| 26uuu国产日韩综合| 在线播放一区二区三区| 91精品福利视频| 色综合久久综合| 97精品久久久午夜一区二区三区| 国产一区二区精品在线观看| 日本aⅴ免费视频一区二区三区| 亚洲一区二区av电影| 亚洲少妇最新在线视频| 国产精品久久久久永久免费观看| 亚洲精品一区在线观看| 欧美一区二区成人6969| 4438成人网| 91麻豆精品国产91久久久| 欧美日韩一区二区三区四区| 欧美在线免费观看亚洲| 色噜噜狠狠色综合欧洲selulu|