单片机系统代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

系统程序:#includereg51.h#defineuncharunsignedcharintdistance;sbitTrig=P3^0;sbitEcho=P3^1;sbityaokong=P3^3;sbitzuo=P1^0;sbityou=P1^1;sbitqian=P1^2;sbithou=P1^3;sbitmotor11=P1^4;sbitmotor12=P1^5;sbitmotor21=P1^6;sbitmotor22=P1^7;sbitRS=P3^5;//LCDRSsbitRW=P3^6;//LCDRWsbitE=P3^7;//LCDEuncharcodestr1[]={Nextbar:cm};uncharcodestr2[]={SetDistance:15cm};//定义显示缓冲unchardatadisData[5];//百、十、个、小数位uncharstate,cnt;bitsec;voiddelay1s(intn){inti,j,k;for(i=0;in;i++)for(j=0;j200;j++)for(k=0;k550;k++);}voidinit_t0(){TMOD=0X11;IE=0X82;TR0=1;}voidt0()interrupt1{if(++cnt2){cnt=0;sec=1;}}voiddelay(){unchari,j;for(i=0;i10;i++)for(j=0;j250;j++);}voiddelay1ms(intm){inti,j;for(i=0;im;i++)for(j=0;j110;j++);}voidYaokong(void){if(zuo){motor11=1;motor12=0;motor21=0;motor22=1;}if(you){motor11=1;motor12=0;motor21=0;motor22=1;delay1s(2);}if(qian){motor11=1;motor12=0;motor21=0;motor22=1;delay1s(2);}if(yaokong){motor11=1;motor12=0;motor21=0;motor22=1;delay1s(2);}}voidWrite_Com(unsignedcharcom)//写入指令函数{delay1ms(5);RS=0;RW=0;E=0;P2=com;delay1ms(5);E=1;delay1ms(5);E=0;}voidWrite_Dat(unsignedchardat)//写入数据函数{delay1ms(5);RS=1;RW=0;E=0;P2=dat;delay1ms(5);E=1;delay1ms(5);E=0;}voidInit_LCD()//初始化{delay1ms(5);//稍微延时,等待LCD进入工作状态Write_Com(0x38);//8位2行16*2delay1ms(1);Write_Com(0x08);//光标归位调用写控制指令子函数,并用实参00001000代替形参com//0x08表示设置为关显示、不显示光标、光标不闪烁delay1ms(1);Write_Com(0x01);//清显示delay1ms(1);Write_Com(0x06);//文字不动,光标右移delay1ms(1);Write_Com(0x0c);//显示开/关光标开闪烁开delay1ms(1);}voiddisplay_str(unsignedchar*p)//lcd显示字符串子函数{while(*p!='\0')//测试是否等于'\0',即判断是否结尾{Write_Dat(*p);//显示指针所指的字符串p++;delay1ms(1);}}voidinit_play()//初始化显示子函数{Init_LCD();//调用lcd初始化置子函数,对LCD进行初始化Write_Com(0x80);//调用写控制指令子函数,并用实参10000000代替形参com//并将数据指针定位到第一行第一个字符处display_str(str1);//从第一行第一个字符处显示字符串str1Write_Com(0xc0);//调用写控制指令子函数,并用实参10000000代替形参com并将数据指针定位到第二行第一个字符处display_str(str2);//从第二行第一个字符处显示字符串str2}voiddisplay_distance(){disData[0]=distance/1000+'0';//百位数字符0的十六进制是0x30disData[1]=distance/100%10+'0';//十位数disData[2]=distance/10%10+'0';//个位数disData[3]=distance%10+'0';//小数if(disData[0]==0x30){disData[0]=0x20;//如果百位为0,不显示空格键if(disData[1]==0x30){disData[1]=0x20;//如果百位为0,十位为0也不显示}}Write_Com(0x80+0x09);//定位数据指针的位置:第一行第七个字符处Write_Dat(disData[0]);//显示百位Write_Com(0x80+0x0a);//定位数据指针的位置:第一行第八个字符处Write_Dat(disData[1]);//显示十位Write_Com(0x80+0x0b);//定位数据指针的位置:第一行第九个字符处Write_Dat(disData[2]);//显示个位Write_Com(0x80+0x0c);//定位数据指针的位置:第二行第十个字符处Write_Dat(0x2e);//显示小数点Write_Com(0x80+0x0d);//定位数据指针的位置:第二行第十一个字符处Write_Dat(disData[3]);//显示小数位}voidtest(){Trig=1;TF1=0;TH1=0xff;TL1=-10;TR1=1;while(!TF1);TR1=0;Trig=0;TF1=0;}voidmain(){init_t0();init_play();while(1){if(sec){sec=0;test();while(!Echo);TH1=0;TL1=0;TR1=1;while(Echo&&!TF1);TR1=0;distance=(TH1*256.0+TL1)*0.17;display_distance();if(yaokong){Yaokong();}if(distance150){motor11=1;motor12=0;motor21=0;motor22=1;}else{motor11=1;motor12=1;motor21=1;motor22=1;}}}}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功