机电一体化系统设计课件(第7章)中国电力出版社王丁剖析
* (P60x20)(P60x10)即表示后四路寻迹的右边第一、二位寻迹压黑线,此种情况下即表示小车左中偏,然后重新调整PWM值对小车进行调整 当P6=0x80,用二进制表示,即后四路传感器的右边第四位压黑线,此种情况下即表示小车右大偏,然后重新调整PWM值对小车进行调整 * if(P60x10) { PWM0_set(240); PWM1_set(210); } } } } * 当P6=0x10,用二进制表示,即前四路传感器的右边第一位压黑线,此种情况下即表示小车左大偏,然后重新调整PWM值对小车进行调整 * 循迹反馈形成分析 b=1 b=2 b=3 b=4 * 垂线 检测 偏移 检测 占空 比 L298 驱动 车轮 轨迹 TCRT 循迹 * (9)LCD控制 void sendc(uchar c)//给lcd送命令 { P4=c; lcdrs=0;//RS=L lcdrw=0;//RW=L EA=0;//关中断 delay1ms(1); lcdcs=0;//E的高脉冲 lcdcs=1;//E的高脉冲 * delay1ms(1); lcdrw=1; P4=0xff;//先置1,后读取 delay1ms(1); EA=1; //开中断 } * void sendd(uchar c)//给lcd送数据 { EA=0; P4=c; lcdrs=1; lcdrw=0; delay1ms(1); lcdcs=1; lcdcs=0; lcdcs=1; delay1ms(1); * lcdrw=1; P4=0xff;//先置1,后读取 lcdrs=0; delay1ms(1); while(P4=0x80); lcdcs=0; lcdcs=1; EA=1; /* if(c==c) delay1ms(3);*/ } * void lcd_pos(uchar pos)//显示地址定位函数 { sendc(pos|0x80); } * void lcd_ini(void)//lcd初始化函数 { delay1ms(100); lcdcs=1; delay1ms(5); lcdrs=0; delay1ms(5); lcdrw=0; delay1ms(5); * sendc(0x38);//8位,2行,5*7字体 delay1ms(30); sendc(0x38);//8位,2行,5*7字体 delay1ms(30); sendc(0x38);//8位,2行,5*7字体 delay1ms(30); sendc(0x08);//显示开,光标关;不闪 delay1ms(30); sendc(0x01);//清屏 delay1ms(30); * // sendc(0x01);//清屏 // delay1ms(30); sendc(0x06);// delay1ms(30); sendc(0x0C);// delay1ms(30); } * (10)第一次显示 void lcddisplay1(void)//显示主函数 { uchar i=0; uchar line1[]={once:550ml}; uchar line2[]={all:550ml}; sendc(0x01); i=0; lcd_pos(0x00);//容量显示 delay1ms(5); * while(line1[i]!=\0) { sendd(line1[i++]); delay1ms(10); } i=0; lcd_pos(0x40);//容量显示 delay1ms(5); while(line2[i]!=\0) { sendd(line2[i++]); delay1ms(10); } } * (11)第二次显示 void lcddisplay2(void)//显示主函数 { uchar i=0; uchar line1[]={twice:550ml}; uchar line2[]={all:1100ml}; sendc(0x01); lcd_pos(0x00);//容量显示 delay1ms(5); while(line1[i]!=\0)
原创力文档

文档评论(0)