基于电磁寻迹的智能竞速小车系统设计 docx(8)

2019-08-31 20:07

长春工业大学本科毕业设计(论文)

定时器1的工作方式为方式1

TH0=(65536-1500)/256; //求模定时器0初值为1.5mS中断 18.432M时TH0=0xfa,TL0=0x00

TL0=(65536-1500)%6; //求余

ET0=1; //开定时器0中断 TR0=1; //启动定时器0

TH1=0xfc; //定时器1为1mS中断 18.432M时TH1=0xfd,TL1=0x75

TL1=0x18; ET1=1; TR1=1; TH2 = 0xb1; TL2 = 0xe0; RCAP2H = 0xb1; RCAP2L = 0xe0; T2CON = 0x04;

ET2=1; TR2=1; EX0=1; IT0=1; EA=1; }

void exint0() interrupt 0 {

if(csbz==1) {

l298a=1; l298b=1; l298c=0;

EX0=0; zdbz=1; P36=0; } }

//

//开定时器1中断 //启动定时器1 //T2是20ms定时器 //开定时器2中断 //开定时器2中断 //允许外部中断0中断 //低电平中断 //开总中断 //外部中断0,作用是终点线判别 //终点测试标志 //电机正传 //停止电机 //禁止外部中断0中断 //终点标志 32

长春工业大学本科毕业设计(论文)

void timer0() interrupt 1 using 1 //定时器0中断服务程序 定时器0与定时器2负责舵机控制 {

TR0=0; //关闭定时器0 duoji=0; //舵机控制口 TH0=(65536-pluse)/256; //求模 TL0=(65536-pluse)%6; //求余 }

void timer1() interrupt 3 using 2 //定时器1中断服务程序 负责pwm调速 {

TH1=0xfc; //定时器1为1mS中断 18.432M时TH1=0xfd,TL1=0x75

TL1=0x18; //

zdjsq1++; //中断次数计数器+1 zdjsq2++; //中断次数计数器+1 if(zdjsq1<=pwma) {

l298c=1; //电机转动 } else {

l298c=0; }

if(zdjsq1>10) zdjsq1=0; }

void timer2(void) interrupt 5 using 3 //定时器2中断服务程序 定时器0与定时器2负责舵机控制 {

duoji=1; //舵机控制口 TF2=0;

TR0=1; //启动定时器0 }

33

长春工业大学本科毕业设计(论文)

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

// A/D转换测试程序

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

//AT89C/LE516AD 系列 MCU 的 A/D 转换功能。 时钟 11.0592MHz //转换结果以 16 进制形式输出到串行口,可以用串行口调试程序观察输出结果。

uchar get_AD_result(uchar channel) //channel=选择 A/D 当前通道 {

uchar AD_finished = 0; // 存储 A/D 转换标志 ADC_DATA = 0;

ADC_CONTR = channel; //选择 A/D 当前通道 delay5ms(); //使输入电压达到稳定

ADC_CONTR |= 0x08; //0000,1000 令 ADC_START = 1, 启动A/D转换 AD_finished = 0;

while ( AD_finished == 0 ) //等待A/D转换结束 {

AD_finished = (ADC_CONTR & 0x10); //0001,0000, ADC_FLAG ==1 测试A/D转换结束否 }

ADC_CONTR &= 0xF7; //1111,0111 令 ADC_START = 0, 关闭A/D转换,

return (ADC_DATA); // 返回 A/D 转换结果高8位 }

void main() {

uchar adsj0,adsj1,adsj2; uint adsj3;

P1 = P1 | 0x07; // 0000,0111,要设置为 A/D 转换的P1.0和P1.1口,先设为高 //?????????????????

34

长春工业大学本科毕业设计(论文)

P1_ADC_EN = 0x07; // 0000,0111, P1 的P1.0,P1.1设置为 A/D 转换输入脚 //?????????????????

// 断开P1.0,P1.1内部上拉电阻 begin(); //定时器初始化程序

while(zdjsq2!=2000) //开机延时=2秒 {

zdjsq1=0; }

zdjsq2=0;

while(1) {

adsj0=get_AD_result(0); if(adsj0>=50) {

pluse=1350; } pwma=5;

l298a=1; l298b=0; /* else {

if(adsj0>=40) { pwma=9; } else {

if(adsj0>=30) { pwma=8; } else

//????????????? //P1.0 为 A/D 当前通道, 测量结果 //电机正传 35

长春工业大学本科毕业设计(论文)

{

if(adsj0>=20) { pwma=7; } else {

if(adsj0>=10) { pwma=6; } else { pwma=5; } } } }

} */

adsj1=get_AD_result(1); //P1.1 为 A/D 当前通道, 测量结果 左侧传感器

if(adsj1>adsj0) //右侧传感器值大,偏左 {

if(adsj1>30) {

pluse=1100; //舵机右转 } else {

pluse=1350-(adsj1*8); }

zhuanwanbz=1; //转弯标志=1右转 }

adsj2=get_AD_result(2); //P1.2 为 A/D 当前通道, 测量结果

36


基于电磁寻迹的智能竞速小车系统设计 docx(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:药物合成反应复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: