資源簡(jiǎn)介
MSP430 四驅(qū)PID速度調(diào)節(jié) 藍(lán)牙小車代碼程序
通過(guò)PID算法,PWM控制可以任意準(zhǔn)確調(diào)節(jié)小車速度,勻速運(yùn)動(dòng),自動(dòng)調(diào)節(jié),直線行走

代碼片段和文件信息
/********************************************************************/
//延時(shí)函數(shù),IAR自帶,經(jīng)常使用到
#define?CPU_F?((double)8000000)???//外部高頻晶振8MHZ
//#define?CPU_F?((double)32768)???//外部低頻晶振32.768KHZ
#define?delay_us(x)?__delay_cycles((long)(CPU_F*(double)x/1000000.0))?
#define?delay_ms(x)?__delay_cycles((long)(CPU_F*(double)x/1000.0))?
//串口波特率計(jì)算,當(dāng)BRCLK=CPU_F時(shí)用下面的公式可以計(jì)算,否則要根據(jù)設(shè)置加入分頻系數(shù)
#define?baud???????????9600????????????????????????????????//設(shè)置波特率的大小
#define?baud_setting???(uint)((ulong)CPU_F/((ulong)baud))??//波特率計(jì)算公式
#define?baud_h?????????(uchar)(baud_setting>>8)????????????//提取高位
#define?baud_l?????????(uchar)(baud_setting)???????????????//低位
//自定義數(shù)據(jù)結(jié)構(gòu),方便使用
#define?uchar?unsigned?char
#define?uint??unsigned?int
#define?ulong?unsigned?long
unsigned?int?A1A2A3A4TEMP;
unsigned?char?Flag=0;????????????????????//標(biāo)志變量
void?Data_do(uint?temp_d)
{
??uint?temp_1temp_2;
??A1=temp_d/1000;???????????????????????//分出千,百,十,和個(gè)位
??temp_1=temp_d%1000;
??A2=temp_1/100;
??temp_2=temp_1%100;
??A3=temp_2/10;
??A4=temp_2%10;
}
void?ADC_Init()
{
??P6SEL|=0x01;????????????????????????????????????//選擇ADC通道
??ADC12CTL0|=?ADC12ON?+?SHT0_2?+?REF2_5V?+?REFON;?//ADC電源控制開(kāi),16個(gè)CLK,內(nèi)部基8準(zhǔn)2.5V
??ADC12CTL1|=?ADC12SSEL1?+?ADC12SSEL0;????????????//SMCLK做時(shí)鐘源
??ADC12MCTL0=?SREF0?+?INCH_0;?????????????????????//參考控制位及通道選擇,這里選擇通道0
??ADC12IE|=?0x01;?????????????????????????????????//中斷允許
??ADC12CTL0|=?ENC;????????????????????????????????//使能轉(zhuǎn)換器
}
#pragma?vector=ADC_VECTOR
__interrupt?void?ADC12ISR(void)
{
??
??while((ADC12CTL1&0x01)==1);???????????//如果ADC忙,則等待,否則讀取ADC轉(zhuǎn)換數(shù)值
??Flag?=?1;?????????????????????????????//標(biāo)志置1
??TEMP?=?ADC12MEM0;?????????????????????//讀取ADC轉(zhuǎn)換值
??Data_do(TEMP);????????????????????????//處理ADC值,用于顯示
??
??/*LCD_write_char(11A1+0x30);
??LCD_write_char(21A2+0x30);
??LCD_write_char(31A3+0x30);
??LCD_write_char(41A4+0x30);?*/???????????//顯示ADC的數(shù)據(jù)
??
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????202??2019-08-04?09:14??pid藍(lán)牙小車\01.eww
?????文件???????2111??2019-09-04?14:43??pid藍(lán)牙小車\car.c
?????文件??????17913??2019-08-04?11:02??pid藍(lán)牙小車\Debug\Exe\比賽設(shè)計(jì)小車.d43
?????文件??????17658??2019-09-16?21:35??pid藍(lán)牙小車\Debug\Exe\比賽設(shè)計(jì)小車.txt
?????文件?????112310??2019-09-16?21:35??pid藍(lán)牙小車\Debug\Obj\main.r43
?????文件????????157??2019-09-16?21:38??pid藍(lán)牙小車\Debug\Obj\比賽設(shè)計(jì)小車.pbd
?????文件??????13139??2019-07-12?11:51??pid藍(lán)牙小車\gpio.h
?????文件???????6736??2019-09-16?21:35??pid藍(lán)牙小車\main.c
?????文件???????6978??2019-08-05?08:17??pid藍(lán)牙小車\oled.c
?????文件???????1713??2019-08-05?08:17??pid藍(lán)牙小車\oled.h
?????文件??????13822??2019-09-04?14:21??pid藍(lán)牙小車\oledfont.h
?????文件???????5041??2019-08-13?22:11??pid藍(lán)牙小車\PID.h
?????文件???????3644??2019-09-16?21:38??pid藍(lán)牙小車\settings\01.wsdt
?????文件????????861??2019-09-16?21:15??pid藍(lán)牙小車\settings\比賽設(shè)計(jì)小車.cspy.bat
?????文件?????????63??2019-09-16?21:38??pid藍(lán)牙小車\settings\比賽設(shè)計(jì)小車.dbgdt
?????文件????????486??2019-09-16?21:38??pid藍(lán)牙小車\settings\比賽設(shè)計(jì)小車.dni
?????文件???????2862??2019-09-16?21:38??pid藍(lán)牙小車\比賽設(shè)計(jì)小車.dep
?????文件??????50290??2019-08-04?11:19??pid藍(lán)牙小車\比賽設(shè)計(jì)小車.ewp
?????目錄??????????0??2020-07-04?13:25??pid藍(lán)牙小車\Debug\Exe
?????目錄??????????0??2019-08-04?09:14??pid藍(lán)牙小車\Debug\List
?????目錄??????????0??2020-07-04?13:25??pid藍(lán)牙小車\Debug\Obj
?????目錄??????????0??2020-07-04?13:25??pid藍(lán)牙小車\Debug
?????目錄??????????0??2020-07-04?13:26??pid藍(lán)牙小車\settings
?????目錄??????????0??2020-07-04?13:26??pid藍(lán)牙小車
-----------?---------??----------?-----??----
???????????????255986????????????????????24
評(píng)論
共有 條評(píng)論