/*******超声波测距程序*******/#include #include#define uchar unsigned char#define uint unsigned intsbit rs = P2^4;sbit rw = P2^5;sbit en = P2^6;sbit tr = P3^2; sbit ec = P1^0; uint distance = 0; uchar count;void delayms(uint x){ uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--);}void write_com(uchar com){ rs = 0; rw = 0; en = 0; P0 = com; delayms(2); en = 1; delayms(5); en = 0; delayms(2);}void write_dat(uchar dat){ rs = 1; rw = 0; en = 0; P0 = dat; delayms(2); en = 1; delayms(5); en = 0; delayms(2);}void Init_1602(){write_com(0x38);delayms(5);write_com(0x0c);delayms(5);write_com(0x06);delayms(5);write_com(0x01);delayms(5);}void Init_TIMER0(){TMOD = 0x01; TL0 = 0x66;TH0 = 0xfc; ET0 = 1; EA = 1; }void Init_mk(){tr =1; ec = 1;count = 0;distance = 0;}void init_fs(){ ec= 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); ec = 0;}void jsdistance(){uint y;TR0 = 1;while(tr);TR0 = 0;y = TH0*256+TL0;y = y - 0xfc66;distance = y + 1000 * count;TL0 = 0x66;TH0 = 0xfc;delayms(30);distance = 0.340 * distance / 2;} void display(){ uchar qian,bai,shi,ge; qian= (distance / 1000); bai= (distance / 100) % 10; shi = (distance / 10) % 10; ge = distance % 10; write_com(0x80+0x40+4); write_dat(0x30+qian); write_dat(0x30+bai); write_dat(0x30+shi); write_dat('.'); write_dat(0x30+ge); write_dat('C'); write_dat('M'); }void write_hz(uchar *p){ while(*p != 0) write_dat(*p++); delayms(500);}void main(){ rw = 0;Init_1602();Init_TIMER0();Init_mk();while(1){ init_fs(); while(tr == 0) { ; } jsdistance(); display(); Init_mk(); delayms(10); write_com(0x80); write_hz("****distance****"); } }void TIMER0() interrupt 1{TF0 = 0;TL0 = 0x66;TH0 = 0xfc;count++;if(count == 18){ TR0 =0; TL0 = 0x66; TH0 = 0xfc; count = 0;}}
导读:目前正在解读《超声波测距程序》的相关信息,《超声波测距程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《超声波测距程序》的详细说明。
简介:超声波测距程序。
提醒:《超声波测距程序》最后刷新时间 2024-03-14 01:05:38,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《超声波测距程序》该内容的真实性请自行鉴别。