毕业设计C语言程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include<12864b.h>
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit l1 = P2^0;
sbit l2 = P2^1;
sbit l3 = P2^2;
sbit r1 = P2^3;
sbit r2 = P2^4;
sbit r3 = P2^5;
sbit l4 = P2^6;
sbit r4 = P2^7;
sbit tr = P1^3;
sbit ec = P1^4;
char code table[]={"0123456789"};
char da[10];
uint s=0,time=0,f=0,a=0,j=0,k=0,lv=25,rv=25,n=0,d_t=0,d_t1=0,b=0,a1=0,juli=0; void fuzhi(int m);
void state ();
void delay(int i)
{
char j=0;
for(;i>0;i--)
for(j=0;j<125;j++);
}
void init()
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TH1=0;
TL1=0;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TMOD=0x11;
P1=P1&0xe7;
}
void fuzhi(int m)
{
da[0]=m/1000;
da[1]=m/100%10;
da[2]=m/10%10;
da[3]=m%10;
}
void chao()
{
tr=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
tr=0;
while(!ec);
TR1=1;
while(ec);
TR1=0;
juli=(b*65536+(TH1*256+TL1))*0.017;
TH1=0;b=0;TL1=0;
}
void jiyu()
{
hanzi_Disp(0,0,"毕业设计智能小车");
hanzi_Disp(1,0,"信科一班王峰作品");
hanzi_Disp(2,0,"lv=");
hanzi_Disp(2,4,"rv=");
hanzi_Disp(3,0,"距离:");
hanzi_Disp(3,5,"(cm)");
}
void main()
{
char i=0;
init();
Lcd_Init();
jiyu();
while(1)
{
chao();
delay(20);
fuzhi(juli);
Lcd_WriteCmd(0x9b); //写地址
for(i=0;i<4;i++)
{
Lcd_WriteData(table[da[i]]);
delay(10);
}
fuzhi(lv);
Lcd_WriteCmd(0x8a); //写地址
for(i=0;i<2;i++)
{
Lcd_WriteData(table[da[i+2]]);
delay(10);
}
fuzhi(rv);
Lcd_WriteCmd(0x8e); //写地址
for(i=0;i<2;i++)
{
Lcd_WriteData(table[da[i+2]]);
delay(10);
}
if(juli<20)
{
switch (P2&0xc0)
{
case 0x0:lv=rv=juli*2;;n=1;d_t=3;break;
case 0x40:lv=rv=juli*2;;n=2;d_t=3;break;
case 0x80:lv=rv=juli*2;;n=3;d_t=3;break;
case 0xc0:lv=rv=juli*2;;n=4;d_t=3;break; // default:a+=5;
}
}
else
{
switch (P2&0xc0)
{
case 0x0:lv=40;rv=40;n=1;d_t=3;break;
case 0x40:lv=40;rv=40;n=2;d_t=3;break;
case 0x80:lv=40;rv=40;n=3;d_t=3;break;
case 0xc0:lv=40;rv=40;n=4;d_t=3;break; // default:a+=5;
}
}
state ();
}
}
void state ()
{
d_t1=f;
while(1)
{
switch (n)
{
case 0:l1=1;l2=1;r1=1;r2=1;break; // 停
case 1:l1=0;l2=1;r1=0;r2=1;break; // 前
case 2:l1=0;l2=1;r1=1;r2=1;break; // 前左
case 3:l1=1;l2=1;r1=0;r2=1;break; // 前右
case 4:l1=1;l2=0;r1=1;r2=0;break; // 后
case 5:l1=1;l2=1;r1=1;r2=0;break; // 后左
case 6:l1=1;l2=0;r1=1;r2=1;break; // 后右
case 7:l1=0;l2=1;r1=1;r2=0;break; // 右旋
case 8:l1=1;l2=0;r1=0;r2=1;break; // 右旋
}
if(d_t==0)break;
}
}
void time0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
a++;
if(a==10){a=0;f++;if(d_t1+d_t==f)d_t=0;}