- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stc智能车控制程序
#include stc15.h
#include intrins.h
sfr P_SW1 =0xA2;
#define FOSC 110592000L
#define BAUD 9600
#define CCP_S0 0X10 //pwm
#define CCP_S1 0X20
typedef unsigned char uchar;
typedef unsigned int uint;
#define URMD 0 //0锛氫娇鐢ㄥ畾鏃跺櫒2浣滀负娉㈢壒鐜囧彂鐢熷櫒
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0X00
#define ADC_SPEEDL 0X20
#define ADC_SPEEDH 0X40
#define ADC_SPEEDHH 0X60
unsigned char speed=100; //缁欏畾閫熷害 瀹為檯涓洪┍鍔ㄧ數鏈簆wm鐨勫崰绌烘瘮
unsigned int duty=27,i; //椹卞姩鑸垫満PWM鍗犵┖姣?
//signed int delta_duty; //PD鎺у埗閲?鑸垫満杞悜鎺у埗鐨勫閲?
sbit steerPWM=P0^0; //鑸垫満椹卞姩鐨凱WM杈撳嚭
char a,b,c,d;
uchar ch=0;
int del;
sfr ADC_CONT=0XBC;
void InitUart();
void SendData(uchar dat);
void Delay(uint n);
void InitADC();
void delay1ms(unsigned int s)
{
unsigned int q;
while(s--)
for(q=117;q0;q--);
}
void TIMER_init(void) //瀹氭椂鍣ㄥ垵濮嬪寲
{
AUXR |= 0x80;
TMOD=0x22;
TL0=0xfc;
TH0=0xfc;
TR0=1;
ET0=1;
}
void PWM_port_init()
{
ACC=P_SW1; //xuan zhong mou 3 lu
ACC=~(CCP_S0|CCP_S1);
ACC|=CCP_S1;//p25
P_SW1=ACC;
CCON=0;
CL=0;
CH=0;
CMOD=0X02;
PCA_PWM0=0X00;
CCAP0L=speed;
CCAP0H=speed;
CCAPM0=0X42;
}
uchar getadcres(uchar ch)
{
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTRADC_FLAG));
ADC_CONTR=~ADC_FLAG;
return ADC_RES;
}
void showres(uchar ch)
{
SendData(ch);//鏄剧ず閫氶亾鍙?
SendData(getadcres(ch));
}
void main()
{
InitUart();
InitADC();
TIMER_init();
PWM_port_init();
CR=1; //鍏佽pca璁℃暟
EA = 1;
while(1)
{
showres(0);
showres(1);
showres(2);
showres(3);
a=getadcres(0);
b=getadcres(1);
c=getadcres(2);
d=getadcres(3);
if((b40)(c40))
duty=260;//涓洿璧?
if(((a5)(c10)))
duty=240; //left
if((d5)(b10))
duty=270; //right
}
}
//瀹氭椂鍣?涓柇
//鍦↖O涓婁骇鐢熷懆鏈熶负20ms鐨刾wm娉㈠舰椹卞姩鑸垫満
void T0_ISR(void) interrupt 1
{
static unsigned in
文档评论(0)