- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
智能小车在PROTEUS下的仿真设计
#includereg52.h //头文件
#defineuchar unsignedchar //宏定义#defineuint unsignedint //宏定义sbitIN1=P2^0;
sbitIN2=P2^1;
sbitIN3=P2^6; //定义驱动sbitIN4=P2^7;
sbitEN1=P2^2;sbitEN2=P2^5;
sbitC0=P0^0; //右1传感器
sbitC1=P0^1; //右2传感器sbitC2=P0^2;//左2传感器sbitC3=P0^3;//左2传感器
sbitSTOP=P2^3;//障碍物传感器sbitQQ=P2^4;//扬声器
uchar code
table[]={0xbf,0x86,0x5b,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//定义表格
uchar si,fen,miao,shi,ge; //定义时:分:秒;和十位个位。
uchari,aa,bb,tt=0,ss=0;
voiddelay(uintz)//延时函数
{
uintx,y;for(x=z;x0;x--)
for(y=50;y0;y--);
}
voidinit()//对函数初始化
{
TMOD=0x11;
TH0=(65536-20000)/256; //TH0装初值TL0=(65536-20000)%256; //TL0装初值TH1=(65536-2000)/256; //TH1装初值TL1=(65536-2000)%256; //TL1装初值EA=1;
ET0=1;
ET1=1; //开中断TR0=1;
TR1=1;
P3=0x00;
P1=0x00;
}
voidtimer0()interrupt 1//T0中断函数
{
TH0=(65536-20000)/256; //TH0装初值
TL0=(65536-20000)%256; //TL0装初值
tt++,ss=1;if(tt==50)
{
tt=0;miao++;
if(miao==60)
{
fen++;miao=0;
}
if(fen==24)
{
fen=0,si++;
}
}
}
voidtimer1()interrupt3 //T1中断函数
{
TH1=(65536-2000)/256; //TH1装初值
TL1=(65536-2000)%256; //TL1装初值
if(aa==i)
{
EN1=1;
}
if(bb==9) //产生PWM波
{EN1=0,aa=0,bb=0;
}
aa++,bb++;
}
voidkeyscan()//键盘扫描
{
if(C0C1C2C3==1)
{
delay(6);if(C0C1C2C3==1)
{P3=0x00;
P1=0xbf;EN2=1,EN1=1,IN1=1,IN2=1;ET1=0;
miao=0,fen=0,si=0;while(C0C1C2C3==1);
}
}
}
voidmain()//主函数
{
IN1=1,IN2=0;EN2=1;
init();//调用初始化函数while(1)
{
P0=0XFF;
if(STOP==0)//有障碍物
{
EN2=1,EN1=1,IN1=1,IN2=1;ET1=0;QQ=0;
}
if(STOP==1)//无障碍物
{ QQ=1;ET1=1;IN1=1,IN2=0;EN2=1;
if(C0|C1|C2|C3==0)//没有脱轨
{
i=2;
}P0=0XFF;
if(C0|C1|C2|C3==1)//有脱轨
{
i=5;
if(C0==1) //右1传感器检测到黑线
{
IN3=1,IN4=0;
delay(5);
IN3=0,IN4=0;
}
if(C1==1)//右2传感器检测到黑线
{
IN3=1,IN4=0;
delay(15);
IN3=0,IN4=0;
}
if(C3==1)//左1传感器检测到黑线
{
IN3=0,IN4=1;
delay(5);
IN3=0,IN4=0;
}
if(C2==1)//左2传感器检测到黑线
{
IN3=0,IN4=1;
delay(15);
IN3=0,IN4=0;
}
}
}
if(ss==1)
{
ss=0;
shi=miao/10;//分离秒的十位ge=miao%10;//分离秒的个位P3=0xdf;
P1=table[ge];//显示秒的个位delay(5);
P3=0xef;
P1=table[shi];//显示秒的十位dela
文档评论(0)