《超声波测距程序》由会员分享,可在线阅读,更多相关《超声波测距程序(6页珍藏版)》请在金锄头文库上搜索。
1、lcd_wcom(0xce);单位是厘米 / lcd_wdat(c);lcd_wdat(m);/*定时器0初始化,用于计算响应信号时间*/void init_t0()TMOD=0x01;TL0=0x66;TH0=0xfc;/1msET0=1;EA=1;/*超声波模块触发信号*/void trigger。trig=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
2、();_nop_();_nop_();_nop_();trig=1; /*超声波模块相应端口初始化函数*/void init_measuring()trig=1;echo=1;count=0;/*超声波模块距离测试函数*/void measuring。uchar l;uint h,y;TR0 = 1;while(echo=1);TR0 = 0;l = TL0;h = TH0;y = (h 8) + l;y = y - 0xfc66;us 部分distance = y + 1000 * count;计算总时间,单位是微秒TL0 = 0x66;TH0 = 0xfc;delayt(30);/*超声波
3、模块测量结果显示函数*/void display(uint x)uchar qian,bai,shi,ge;qian=x/1000;bai=(x/100)%10;shi=(x/10)%10;ge=x%10;lcd_wcom(0x80+0x49);/ 单位是厘米lcd_wdat(tableqian);lcd_wdat(tablebai);lcd_wdat(tableshi);lcd_wcom(0x80+0x4d);lcd_wdat(tablege);/*主函数*/void main() lcd_init();液晶初始化init_t0();定时器0初始化init_measuring(); 超声波相应端口初始化while(1)lcd_xianshi();液晶显示特定字符trigger();触发超声波启动while(echo=0)等待回声;measuring。;进行距离测量display(distance);对测量结果进行显示init_measuring();超声波相应端口初始化delayt(600);每次测量间隔60ms/中断服务函数 void T_0()interrupt 1(TF0 = 0;TL0 = 0x66;TH0 = 0xfc;count+;if(count=18)(TR0 =0;TL0 = 0x66;TH0 = 0xfc;count = 0;