为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

stc89c52超声波测距程序

2019-02-23 8页 doc 19KB 53阅读

用户头像

is_597436

暂无简介

举报
stc89c52超声波测距程序#include #include sbit RX=P2^7; //rx对应trig sbit TX=P2^6; //tx对应echo #define uint unsigned int #define uchar unsigned char sbitrs=P2^0; //lcd管脚连接 sbitlcden=P2^2; sbitrw=P2^1; void write_com(uchar com);//lcd写命令和数据声明函数voidwrite_date(uchar date); unsignedint ...
stc89c52超声波测距程序
#include #include sbit RX=P2^7; //rx对应trig sbit TX=P2^6; //tx对应echo #define uint unsigned int #define uchar unsigned char sbitrs=P2^0; //lcd管脚连接 sbitlcden=P2^2; sbitrw=P2^1; void write_com(uchar com);//lcd写命令和数据声明函数voidwrite_date(uchar date); unsignedint time=0; unsigned long S=0 , flag=0; //s表距离 unsigned char disbuff[4] ={ 0,0,0,0,}; void delay(uint z)//1ms延时 { uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void Conut(void) //计算距离 { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; //算出来是CM if((S>=700)||flag==1) //超出测量范围显示“-” { flag=0; write_com(0x80); for(i=0;i<3;i++) {write_date(0x30+disbuff[i]);//0x30是0的地址delay(5); } } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10 %10; write_com(0x80); for(i=0;i<3;i++) {write_date(0x30+disbuff[i]); delay(5); } } } void write_com(uchar com) //lcd写命令 { rs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date) //lcd写数据 { rs=1; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void StartModule() //启动模块 { TX=1; //启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } void init()//初始化函数 { lcden=0; rw=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80+0x40); for(i=0;i<15;i++); write_com(0x80); for(i=0;i<3;i++) {write_date('a'); delay(5);} TMOD=0X01; //设T0为方式1,GATE=1; TH0=0; TL0=0; EA=1; //开启总中断 ET0=1; //允许T0中断 TR0=0; } void main() { init(); while(1) { TH0=0; TL0=0; while(1) { StartModule(); while(!RX); //当RX为零时等待 TR0=1; //开启计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数 Conut(); //计算 delay(80); //80MS } } } voidexter() interrupt 1 { flag=1; }
/
本文档为【stc89c52超声波测距程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索