51单片机超声波模块的C语言程序_第1页
51单片机超声波模块的C语言程序_第2页
51单片机超声波模块的C语言程序_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/超声波模块程序 /超声波模块程序/Trig = P2A0/Echo = P3A2#include <reg52.h>#define uchar unsigned char#define uint unsigned intint time;int succeed_flag;uchar timeL;uchar timeH;sbit Trig=Pl A0;sbit Echo=P3A2;uchar codetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code tablel=0,l,2,3,4,5,6,7;/v

2、oid delay(uint z)uint x,y;for(x=z;x>0;x)for(y=110;y>0;y-);/void delay_20us()uchar a ;for(a=0;a< 100;a+);/ /*/显示数据转换程序void display(uint temp)uchar ge,shi,bai;bai=temp/100;shi=(temp% 100)/ 10;ge=temp%10;P2=tablel2;PO=tablege;delay(l);P2=tablell;PO=tableshi;delay(l);P2=tablel0;PO=tablebai;dela

3、y(l);/ /*void main()uint distance;/ test =0;Trig=O; /首先拉低脉冲输入引脚TMOD=OxlO;/定时器1, 16位工作方式while(l)EA=O;/关总中断Trig= 1;/超声波输入端delay_20us(); /延时 20usTrig=O;/产生一个20us的脉冲while(Echo=0); /等待Echo回波引脚变高电平succeed_flag=O; /清测量成功标志EA=1;EXO=1;/打开外部中断0TH1=O;/定时器1清零TL1=O;/定时器1清零TF1=O;/计数溢出标志TR1 = 1;/启动定时器1delay(20);/等

4、待测量的结果TR1=O;/关闭定时器1EXO=O;/关闭外部中断0if(succeed_flag= 1)time=timeH*256+timeL;distance=time*O.0172; /厘米if(succeed_flag=O)distance=0;/没有回波则清零/test = !test;/测试灯变化display(distance);/ /*/外部中断0,用做判断回波电平void exter() interrupt 0 / 外部中断 0 是 0 号timeH =TH1;/取出定时器的值timeL =TL1;/取出定时器的值succeed_flag= 1;/至成功测量的标志/ /*/定

5、时器1中断,用做超声波测距计时void timer 1() interrupt 3 / /TH1=O;TL1=O;1602液晶显示的超声波模块程序接口程序里边都有、#include<reg52 .h>/# includ e<d elay. h >#include < in trins. h>#define uchar unsigned char#define uint unsigned int sbit lcdrs=P2A3;sb辻 lcden=P2A2;sb辻trig=P2A0;/超声波发送/sbit echo=P3A2;/超声波接受/PODB0-DB7u

6、char dis=,Disp_HC-SR04n;uchar num=M0123456789"uint distance;void delay(uint z) uint x,y;for(x=z;x>0;x)for(y=121;y>0;y-);void HC_init()TMOD=0x09;TRO=1;THO=O;TLO=O;uint HC_jisuan()uint dist,timer; timer=THO; timer<<=8;/晶振11.0592MHz距离timer=timer | TLO;dist=timer/53;cm=微秒 us/58return di

7、st;/I个机器周期是12个时钟周期 timer* 12/(58* 11.0592)=timer/53void HC_run()uint tempH=OxOO,tempL=OxOO;THO=O;TLO=O;trig=O;tri歹 1 ;delay(l);trig=O;while(THO-tempH!=O | |TLO- tempL!=O) | | (THO=O&&TLO=O)tempH=THO;tempL=TLO;delay(l);void lcd_write_com(uchar com) /LCD 写指令lcdrs=O;PO=com;delay(l);lcden=l;dela

8、y(l);lcden=O;void lcd_write_data(uchar date) /LCD 写数据lcdrs= 1;PO=date;delay(l);lcden=l;delay(l);lcden=O;void lcd_init() /LCD 初始化lcden=O;lcd_wr it e_com (0x38); lcd_wr it e_com (0x0 c); lcd_write_com(0x06); lcd_write_com(0x01);void lcd_display(uchar temp)uint i;lcd_wr it e_com (0x8 2);for(i=0;i<12

9、;i+)lcd_write_data(dis i);Icd_write_com(0x80+0x41); lcd_write_data('D'); lcd_write_data('i');lcd_wr it e_d ata (* s1); lcd_write_data('t'); lcd_wr 让 c_dQtQ(Q);1 c d_ wr i t e_d a t a (1 nr);lc d_wr i t e_d ata (1 c1; lcd_write_data(, e*); lcd_write_data(':'); lcd_write_data(numtemp/100); lcd_write_data(numtemp/10%10); lcd_write_data(numtemp% 10); lcd_wr 让 c_dQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论