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

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

?? have_current_motor.c

?? 小液晶1602驅動程序是一個不錯的驅動程序,是經過了本人的實現可行的程序
?? C
字號:

#include"F240REGS.H"

//@@@@@@@@@@@@@液晶顯示程蠤@@@@@@@@@@@@@@@@@@@@@@
#define NOP()  asm(" nop")

#define lcd_data_port PEDATDIR  //八位數據
#define lcd_data_ddr  PEDATDIR    //引腳方向定義
#define lcd_busy_pin  PEDATDIR 
#define lcd_busy_ddr  PEDATDIR 
#define lcd_control_port PCDATDIR 
#define lcd_control_ddr  PCDATDIR 

#define lcd_RS_DAT 0x0004  //PORTC^2  
#define lcd_RW_DAT 0x0008  //PORTC^3     
#define lcd_EN_DAT 0x0010  //PORTC^4    

#define lcd_RS_DIR 0x0400  //PORTC^2    
#define lcd_RW_DIR 0x0800  //PORTC^3  
#define lcd_EN_DIR 0x1000  //PORTC^4  

#define busy 0x8000   //LCD_DB7 

#define busy_dat  0x0080

unsigned char number[10]={'0','1','2','3','4','5','6','7','8','9'};
int a,b,c,d,e,m,n,o,p;
//<<<<<<<<<<<<<<<<<<<<<位置控制<<<<<<<<<<<<<<<<<<<<<<<<<<<<<,  
 long increment=0, new_place_error=0, set_place=200000;   //PI 增量
 long summation=0, x_x=0;    //纍加值

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.>


//>>>>>>>>>>>>>>>>>>>>速度定義>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
unsigned int  adc_new,adc_i,adc_sum,v_top=2500; 
unsigned int  temp, temp1, temp2,temp3,i_temp=0,sum_temp=0;
//int Kp=3,Ki=5;//Kp=0.464,Ki=0.265;
int now_error=0, old_error=0, speed_i=0, old_speed_i=0; 
int   set_v, old_set_v;
long increment;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
unsigned int adv_temp,adv_i=0,adv_dsp;
unsigned long adv_sum=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
unsigned int C_i=0, C=0, I_now=0;     //電機電流顯示定義
         int I_er=0,  old_I_er=0, I_c=0, max_c=1020, now_pwm, old_pwm; 
         
unsigned int  old_temp=0;

unsigned char turn=1;
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
int n_duty=0,nkp=22,nki=18;
int i_duty=0,ikp=31,iki=28;
/*8888888888888888888888888888888888888888(AVR中的定義)88888888888
#define lcd_data_port PORTB
#define lcd_data_ddr DDRB
#define lcd_busy_pin PINB 
#define lcd_busy_ddr DDRB 
#define lcd_control_port PORTD 
#define lcd_control_ddr DDRD 

#define lcd_RS 0x01    
//PORTD^0 
#define lcd_RW 0x02    
//PORTD^1 
#define lcd_EN 0x60   
//PORTD^2 
#define busy 0x80    
//LCD_DB7-PORTB^2 

//8888888888888888888888888888888888888888888888888888888888888888888*/
/*----------------------------------函數聲明------------------------------------------*/ 
void lcd_init_portCD(void); 
void lcd_init(void); 
void lcd_write_command(unsigned char command,unsigned char wait_en); 
void lcd_write_data(unsigned char char_data); 
void wait_enable(void); 
void lcd_set_xy( unsigned char x, unsigned char y ); 
void display_a_char(unsigned char x,unsigned char y,unsigned char char_data); 
void display_a_string(unsigned char x,unsigned char y,unsigned char *ptr);
void delay(unsigned int i); 
void delay_1ms(void ); 
void delay_nms(unsigned int n) ; 
void port_init(void);
void ad_init(void);
void cpu_init(void);
void timer1_init(void);
void timer2_init(void); 
void timer3_init(void);   


/*****************************************************************
光標命令 
lcd_write_command(0x0e,0);//光標開 
lcd_write_command(0x0d,0);//光標所在字符閃爍   
lcd_write_command(0x0c,0); //光標關  
**********************************************************/ 

/*------------------------------------液晶驅動函數-------------------------------------*/ 
void lcd_init_portCD(void) 
{ 
   lcd_data_port=0xffff;   //output high
   lcd_data_ddr|=0xff00;   //output 
   lcd_control_port|=0x1C1c;  
   lcd_control_ddr|=0x1C1c; 
} 

//液晶初始化 
void lcd_init(void) 
{ 
   delay_nms(15); 
   lcd_write_command(0x38,0);//顯示模式設置三次(此時不管lcd空閑與否) 
   delay_nms(5); 
   lcd_write_command(0x38,1); 
   delay_nms(5); 
   lcd_write_command(0x38,1); 
   delay_nms(5); 
    
   lcd_write_command(0x38,1);//顯示模式設置(從此之后均需lcd空閑) 
   lcd_write_command(0x08,1);//顯示關閉 
   lcd_write_command(0x01,1);//顯示清屏 
   lcd_write_command(0x06,1);//顯示光標移動設置 
   lcd_write_command(0x0c,1);//顯示開及光標設置 
} 

//寫指令函數: E=高脈沖 RS=0 RW=0 
void lcd_write_command(unsigned char command,unsigned char wait_en)//command為指令,wait_en指定是否要檢測LCD忙信號 
{ 
   if(wait_en) wait_enable();//若wait_en為1,則要檢測LCD忙信號,等待其空閑 
   lcd_control_port&=~lcd_RS_DAT;//RS=0,命令 
   lcd_control_port&=~lcd_RW_DAT;//RW=0,寫操作
   lcd_control_port&=~lcd_EN_DAT;//E=0,下面給LCD一個高脈沖 
  delay(2);
  lcd_data_port=command|0xff00;
   delay(2);
   lcd_control_port|=lcd_EN_DAT;//E=1 
  delay(10); 
   lcd_control_port&=~lcd_EN_DAT;//重設E=0
} 

//寫數據函數: E =高脈沖 RS=1 RW=0 
void lcd_write_data(unsigned char char_data) 
{ 
   wait_enable();//等待LCD空閑 
   lcd_control_port|=lcd_RS_DAT;//RS=1 
   lcd_control_port&=~lcd_RW_DAT;//RW=0 
   lcd_control_port&=~lcd_EN_DAT;//E=0,下面給LCD一個高脈沖 
   delay(2);
    lcd_data_port=char_data|0xff00;
	  delay(2);
   lcd_control_port|=lcd_EN_DAT;//E=1 
  delay(10);
   lcd_control_port&=~lcd_EN_DAT;//重設E=0 
} 

//正常讀寫操作之前必須檢測LCD控制器狀態:E=1 RS=0 RW=1;DB7: 0 LCD控制器空閑,1 LCD控制器忙。 
//檢測忙信號,等待LCD空閑函數 
void wait_enable(void) 
{ 
   lcd_busy_ddr&=~busy;//設置busy口為輸入 
   lcd_control_port&=~lcd_RS_DAT;//RS=0 
   lcd_control_port|=lcd_RW_DAT;//RW=1 
   lcd_control_port&=~lcd_EN_DAT;//E=0,下面給LCD一個高脈沖 
   delay(2); 
   lcd_control_port|=lcd_EN_DAT;//E=1
   delay(10);
   while(lcd_busy_pin&busy_dat);//等待LCD_DB7為0 
   delay(2);
   lcd_control_port&=~lcd_EN_DAT;//重設E=0 
  delay(2);
   lcd_busy_ddr|=busy;//設置busy口為輸出 
} 
/**LCD_set_xy:設置LCD顯示的起始位置輸入參數:x、y :  
                    顯示字符串的位置,X:0-15,Y:0-1 
                    LCD第一行顯示寄存器地址:0X80-0X8F 
                    LCD第一行顯示寄存器地址:0XC0-0XCF   ***/ 
void lcd_set_xy( unsigned char x, unsigned char y ) 
{ 
    unsigned char address; 
    if (y == 0)  
       address = 0x80 + x; 
    else  
        address = 0xc0 + x; 
    lcd_write_command(address,1);//一定需要檢查忙信號,所以為1 
} 
//顯示一個字符函數 
void display_a_char(unsigned char x,unsigned char y,unsigned char char_data)//char_data為要顯示的字符 
{ 
    lcd_set_xy(x,y); 
    lcd_write_data(char_data); 
} 

//指定一行顯示連續字符串:0顯示在第一行,1顯示在第二行,注字符串不能長于16個字符 
//顯示一行連續字符串函數 

void display_a_string(unsigned char x,unsigned char y,unsigned char *ptr) 
{ 
//ptr:指向無符號字符型變量的指針變量,指針也就是地址,指字符串數組的首指針 
    lcd_set_xy(x,y); 
   while(*ptr)//當ptr='\0'(空指針null)跳出循環 
    { 
     lcd_write_data(*ptr);//*ptr,指向該地址的內容 
     ptr++; 
    } 
} 

/*---------------------------------------延時函數-------------------------------------*/ 
void delay(unsigned int i)    //第一次6US,以后就是2US一次
{
     unsigned int j;
    for(j=1;j<i;j++)
    { asm(" nop"); }
}

void delay_nms(unsigned   int i)  //每一次1MS
{
     unsigned  int j;
     for(j=1;j<=i;j++)
    {  delay(456); }
}

void delay_1ms(void)
{
    delay_nms(1);
}


//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

/*
void INT_enable();
void INT_disable();
void cpu_init(void) ;
void port_init(void);
void   timer2_init(void);
void   timer3_init(void);
void   timer1_init(void);
void ad_init(void);*/

 main()
{
  
   cpu_init();
   port_init();
   delay_nms(5);  
   lcd_init_portCD(); 
   delay_nms(5);
   lcd_init(); 
   delay_nms(5);
   timer1_init();
   timer2_init();
   timer3_init();
   ad_init();
  /*display_a_char(0,0,'8'); 
  display_a_char(1,0,'e'); 
  display_a_char(2,0,'t'); 
  display_a_char(3,0,'y'); */

       
   for(;;)
   {/*
    delay(2); //2.5us  delay(10) 7.5us
	PADATDIR|=(1<<2);
    delay(2);            
     PADATDIR&=~(1<<2); 
	 */
	// temp = 1234;

      a=temp3/1000;
      b=temp3%1000/100;
      c=temp3%100/10;
      d=temp3%10;
      display_a_char(0,0,number[a]); 
      display_a_char(1,0,number[b]); 
      display_a_char(2,0,number[c]); 
      display_a_char(3,0,number[d]);
	 
     
      m=adv_temp/1000;
      n=adv_temp%1000/100;
      o=adv_temp%100/10;
      p=adv_temp%10;
      display_a_char(7,0,number[m]); 
      display_a_char(8,0,number[n]); 
      display_a_char(9,0,number[o]); 
      display_a_char(10,0,number[p]); 
     
 //*****************電流顯示**************     
      a=C_i/1000;
      b=C_i%1000/100;
      c=C_i%100/10;
      d=C_i%10;
      display_a_char(0,1,number[a]); 
      display_a_char(1,1,number[b]); 
      display_a_char(2,1,number[c]); 
      display_a_char(3,1,number[d]);   
        
        
        
      a=I_c/1000;
      b=I_c%1000/100;
      c=I_c%100/10;
      d=I_c%10;
      display_a_char(6,1,number[a]); 
      display_a_char(7,1,number[b]); 
      display_a_char(8,1,number[c]); 
      display_a_char(9,1,number[d]); 
	  delay_nms(500) ; 
	  }
         
   
}
//==============I/o初始化=========
//E port as LCD data
//C2 as RS, c3 as R/W, c4 as E
//eva as pwm output
void port_init(void)
{
     MCRA=0xfffb;  //enable qep and pwm1~6 寫一使能特殊功能,寫0使能I/O功能
     //MCRB=0X0000;      
     MCRC=0x0000;
	PCDATDIR=0x1c00;  /*高八位是方向,C2~C4口輸出,低八位是數據*/
     PEDATDIR=0xff00;  /*高八位是方向,E口輸出,低八位是數據*/
   //  PBDATDIR=0X0000;
    // PCDATDIR=0X0000;
    // PDDATDIR=0X0000;
     PADATDIR|=0X0404;  //A2 as output,high
    // PEDATDIR&=~(1<<2);
     PFDATDIR=0X0000;
        
}

//=============AD轉換=============
void ad_init(void)
{
    EVAIFRA=0XFFFF;  //標志位清零
    GPTCONA=0X0100;  //觸發AD---週期中斷標誌
	MAXCONV=0X01;    //選擇2個通道
	CHSELSEQ1=0X030;//選用通道3&&0
	ADCTRL1=0X0900;   //ADC控制寄存器1,采樣時間設置,雙排序,啟/停模式
	ADCTRL2=0X0500;  //用SEQ1,中EVA啟動
}
/*********************************/


//=========中斷開關=======
void INT_enable()
{
     asm(" clrc INTM");   //中斷允許
}

void INT_disable()
{
     asm(" setc INTM");  //中斷禁止
}
/******************************/
//===========CPU初始化===========
void cpu_init(void)    
{
    asm(" setc SXM");  //符號位擴展有效
    asm(" clrc OVM");  //累加器中結果正常溢出
    asm(" clrc CNF");  //B0被配置成數據存儲空間
    INT_enable();     //開中斷
    SCSR1=0X02FE;   //2倍頻,15MHz*2=30MHz
    WDCR=0X00E8;   //禁止看門狗
    IMR=0x0003;    //中斷設置
    IFR=0XFFFF;    //清除中斷標志位:寫1清除
    WSGR &= 0xf800;     //禁止所有等待狀態
    
      
}

//==========定時器1初始化程序===============PWM
void timer1_init(void)
{
     //EVAIMRA=EVAIMRA|0x0080; //允許timer1的周期中斷
     //EVAIFRA=EVAIFRA&0X0080; //清除定時器1周期中斷標志
     T1CON=0X1046;           //timer1為連續增計數,不分頻,內部時鐘,
     COMCONA=0Xa600;        //周期重裝
	 CAPCONA = 0xe000;       // 使能QEP
     ACTRA=0X0001;           //PWM1高有效
     T1PR=1024;           //比較上限值,時鐘頻率30MHz,開關頻率29KHz
     CMPR1=10;           //比較初值
     //CMPR2=500;
    // CMPR3=900;
     T1CNT=0;           //TIMER1計數器清零
}
/*************************************/

//=============TIMER2_INIT=============QEP
void timer2_init(void)
{
     T2PR=0xffff;       //定時器最大值
     T2CON=0X1870;    //定向增/減計數,使能QEP
     T2CNT=0;         //計數器出始值為0
   
  //   EVAIMRB|=0X0001; //允許中斷
}

/*************************************/

/*************************************/
void timer3_init()
{
    // T3PR=937;       //定時1MS
     T3PR=1875;       //定時2MS
     T3CON=0X1540;    //增計數

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合亚洲91| 国产中文字幕精品| 中文字幕国产一区二区| 精品黑人一区二区三区久久 | 亚洲欧洲美洲综合色网| 国产欧美一区二区精品忘忧草 | 国产黄色精品视频| 激情综合色播五月| 国内外成人在线视频| 国产毛片精品视频| 国产电影精品久久禁18| 国产·精品毛片| youjizz久久| 色综合久久综合网欧美综合网| 99国产麻豆精品| 在线精品视频免费观看| 欧美人狂配大交3d怪物一区| 91精品国产高清一区二区三区 | 亚洲三级久久久| 一区二区三区四区中文字幕| 亚洲国产美国国产综合一区二区| 依依成人精品视频| 日韩成人一级大片| 国产一区二区网址| 99re热这里只有精品免费视频| 色狠狠色噜噜噜综合网| 欧美一级欧美三级在线观看| 久久青草国产手机看片福利盒子| 日韩美女视频一区二区| 日日摸夜夜添夜夜添国产精品| 极品美女销魂一区二区三区| 高清在线不卡av| 欧美日韩久久一区二区| 欧美精品一区男女天堂| 亚洲精品一区二区三区99| 国产精品久久久久婷婷| 亚洲va欧美va人人爽| 国产精品影视在线| 欧美亚洲一区二区在线| 久久综合色鬼综合色| 亚洲人快播电影网| 极品少妇xxxx精品少妇| 日本道免费精品一区二区三区| 欧美一级片在线看| 亚洲免费在线观看视频| 狠狠色丁香婷婷综合| 欧美体内she精高潮| 国产欧美精品在线观看| 日韩高清不卡在线| 91国产免费观看| 国产日产欧美精品一区二区三区| 午夜电影久久久| 色婷婷综合激情| 国产精品久久久久久久久动漫 | 日本精品一区二区三区高清 | 国产大陆亚洲精品国产| 欧美日韩国产三级| 最新欧美精品一区二区三区| 激情综合色丁香一区二区| 欧美日本高清视频在线观看| 亚洲视频一二区| 国产一区二区三区最好精华液| 欧美日韩国产大片| 亚洲精品乱码久久久久久黑人| 国产+成+人+亚洲欧洲自线| 欧美成人一区二区三区片免费 | 国产日韩v精品一区二区| 视频一区免费在线观看| 精品视频色一区| 亚洲最色的网站| 一本到不卡精品视频在线观看| 中文字幕免费不卡| 国产成人免费视频网站| 久久久欧美精品sm网站| 国产麻豆精品久久一二三| 欧美一区二区福利在线| 男人的天堂亚洲一区| 欧美色倩网站大全免费| 亚洲一区二区三区视频在线播放 | 蜜桃av一区二区三区电影| 奇米精品一区二区三区四区| 99久久久国产精品| 中文字幕一区视频| 99re热这里只有精品免费视频| 国产精品欧美久久久久一区二区| 国产成人精品网址| 欧美国产精品一区二区三区| 懂色av中文字幕一区二区三区 | 风间由美一区二区三区在线观看 | 国产精品久久久久久久久动漫| 丁香亚洲综合激情啪啪综合| 日本一区二区三区dvd视频在线| 成人午夜激情视频| 一区二区三区在线看| 欧美日韩国产美| 蜜芽一区二区三区| 国产女人aaa级久久久级| 成人福利视频在线看| 亚洲综合久久久久| 日韩一级高清毛片| 国产成人av一区二区三区在线| 中文字幕高清一区| 欧美性感一区二区三区| 久草精品在线观看| 中文字幕五月欧美| 4438x亚洲最大成人网| 国内精品视频一区二区三区八戒| 国产精品网站一区| 欧美亚洲国产一区二区三区va| 麻豆精品一区二区综合av| 国产精品人人做人人爽人人添| 欧美主播一区二区三区| 欧美aa在线视频| 亚洲视频一区二区免费在线观看| 欧美一区二区三区四区高清| 国产成人亚洲精品青草天美| 一区二区三区欧美日| 精品国产亚洲一区二区三区在线观看| 国产精品66部| 日韩精品成人一区二区三区| 国产精品素人一区二区| 欧美一区二区性放荡片| 972aa.com艺术欧美| 麻豆成人91精品二区三区| 亚洲美女屁股眼交| 国产午夜精品一区二区| 这里只有精品电影| 91成人看片片| www.欧美.com| 国产综合色产在线精品| 午夜精品视频在线观看| 成人欧美一区二区三区黑人麻豆| 精品久久人人做人人爱| 欧美日韩在线三级| 一本色道久久综合亚洲精品按摩| 国产美女精品在线| 久久99精品国产麻豆婷婷洗澡| 亚洲va欧美va国产va天堂影院| 亚洲色欲色欲www| 日韩一区二区三区视频在线观看 | 91九色02白丝porn| 成人夜色视频网站在线观看| 日韩高清一区在线| 丝袜诱惑亚洲看片| 亚洲一级二级三级| 亚洲另类春色国产| 成人欧美一区二区三区视频网页| 国产日本一区二区| 久久免费精品国产久精品久久久久| 欧美精品三级日韩久久| 欧美日韩性生活| 欧美精品高清视频| 欧美日韩另类一区| 欧美精品v国产精品v日韩精品| 欧美撒尿777hd撒尿| 欧美日韩在线观看一区二区| 欧洲精品一区二区| 欧美日韩一区小说| 欧美一区二区三区视频免费| 制服丝袜亚洲网站| 欧美大肚乱孕交hd孕妇| 欧美mv日韩mv亚洲| 国产欧美一二三区| 自拍av一区二区三区| 中文字幕一区二区日韩精品绯色| 中文字幕日韩一区| 亚洲三级视频在线观看| 亚洲福利电影网| 美国毛片一区二区| 国产美女视频91| 99re亚洲国产精品| 欧美日韩一区三区四区| 日韩久久精品一区| 亚洲国产精品成人久久综合一区 | 欧美日韩精品一区二区| 51精品视频一区二区三区| 欧美成人精品高清在线播放| 久久女同精品一区二区| 中文字幕亚洲精品在线观看 | 日韩电影在线观看一区| 久久国产精品无码网站| 国产高清亚洲一区| 久久伊人中文字幕| 亚洲欧美中日韩| 天堂va蜜桃一区二区三区| 国内成人免费视频| 色综合色狠狠综合色| 日韩美女在线视频| 亚洲天堂2014| 国产一区二区在线影院| 在线看不卡av| 国产欧美日韩在线观看| 亚洲成av人片观看| 国产麻豆视频一区| 欧美日韩一区视频| 国产精品国产三级国产aⅴ原创| 日韩精品欧美精品| 9i在线看片成人免费| 欧美va在线播放| 亚洲夂夂婷婷色拍ww47|