51单片机 HCSR04超声波测距仪 基础代码
时间:11-20
来源:互联网
点击:
>_<:超声波测距仪模块:
>_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子:
>_<:代码:
1 /***********************************************************************************************************/2 //HC-SR04 超声波测距模块 DEMO 程序3 //晶振:11。05924 //接线:模块TRIG接 P1.2 ECH0 接P1.15 //串口波特率96006 /***********************************************************************************************************/ 7 #include 8 #include9 #include 10 11 #define uchar unsigned char12 #define uint unsigned int 13 #define RX P1_114 #define TX P1_215 16 17 unsigned int time=0;18 unsigned int timer=0;19 float S=0;20 bit flag =0;21 22 23 /********************************************************/24 void Conut(void)25 {26 time=TH0*256+TL0;27 TH0=0;28 TL0=0;29 S=(time*1.87)/100; //算出来是CM30 if(flag==1) //超出测量31 {32 flag=0;33 printf("--\n"); 34 } 35 printf("S=%f\n",S); 36 }37 /********************************************************/ 38 void delayms(unsigned int ms)39 {40 unsigned char i=100,j;41 for(;ms;ms--)42 {43 while(--i)44 {45 j=10;46 while(--j);47 }48 }49 }50 /********************************************************/51 void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围52 {53 flag=1; //中断溢出标志54 }55 /********************************************************/56 void StartModule() //T1中断用来扫描数码管和计800MS启动模块57 {58 TX=1; //800MS 启动一次模块59 _nop_(); 60 _nop_(); 61 _nop_(); 62 _nop_(); 63 _nop_(); 64 _nop_(); 65 _nop_(); 66 _nop_(); 67 _nop_(); 68 _nop_(); 69 _nop_(); 70 _nop_(); 71 _nop_(); 72 _nop_(); 73 _nop_(); 74 _nop_(); 75 _nop_();76 _nop_(); 77 _nop_(); 78 _nop_(); 79 _nop_();80 TX=0;81 }82 /********************************************************/83 void main(void)84 { 85 TMOD=0x21; //设T0为方式1,GATE=1;86 SCON=0x50;87 TH1=0xFD;88 TL1=0xFD;89 TH0=0;90 TL0=0; 91 TR0=1; 92 ET0=1; //允许T0中断93 TR1=1; //开启定时器94 TI=1;95 96 EA=1; //开启总中断97 98 99 while(1)100 {101 StartModule();102 while(!RX); //当RX为零时等待103 TR0=1; //开启计数104 while(RX); //当RX为1计数并等待105 TR0=0; //关闭计数106 Conut(); //计算107 delayms(10); //100MS108 }109 }
51单片机HCSR04超声波测距仪基础代 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)