当前位置:首页 > 传感器 - 图文
程序代码
#include
//HC-SR04相关I/O设置 sbit TIRG=P3^4; //定义IO口,具体可以去查看原理图 sbit ECHO=P3^2; //定义IO口,具体可以去查看原理图 //--------------------------------------- bit flag =0; unsigned char k;
//---------------------------------------
void Delay1602(unsigned int t) {
unsigned int k; //定义一个16位寄存器用来做延时用 for(k=0;k void Timer0(void) interrupt 1 { flag=0; } void main(void) //主函数,单片机开机后就是从这个函数开始运行 { long S; unsigned int i; unsigned int Timeout; //***定时器Timer0初始化*** TMOD&=0xF0; //将TMOD的低4位定时器0控制部分清零 TMOD|=0x01; //设置定时器0为方式1 TMOD=0x01; TL0=0; //设置定时器0初值低8位 TH0=0; //设置定时器0初值高8位 TR0=0; //停止定时器0 ET0=1; //Timer0中断允许 //定时器Timer0设置了中断允许,此处要开全局中断 EA=1; //开全局中断 while(1) { TIRG=1; //发一个脉冲触发信号 i=4; //维持约17US,符合不低于10US的要求 while(i>0) //维持约17US,符合不低于10US的要求 i--; //维持约17US,符合不低于10US的要求 TIRG=0; //撤销触发信号 TR0=0; //关闭定时器 TL0=0; //设置定时器0初值低8位为0 TH0=0; //设置定时器0初值高8位为0 k=0; //清除溢出标志 flag=0; Timeout=0; while((ECHO==0)&&((Timeout++)<50000)); //等待回响高电平 TR0=1; //回响高电平来后启动定时器 Timeout=0; while((ECHO==1)&&((Timeout++)<50000)); //等待回响高电平结束后 TR0=0; //关闭定时器 S=((TH0*256+TL0)*0.5425)/58; if(flag==1||S>400) //超出测量范围灯全灭 { P0=0x00; //按字节方式写PO口I/O状态 P1_3=1; } else { if(S<50) P1_3=0; //按位方式写P1.3=0 P0=0x00; //按字节方式写PO口I/O状态 else { if(S>50&&S<100) P0=0x01; //按字节方式写PO口I/O状态 P1_3=1; if(200>S&&S>100) P0=0x03; //按字节方式写PO口I/O状态 P1_3=1; if(300>S&&S>200) P0=0x07; //按字节方式写PO口I/O状态 P1_3=1; if(400>S&&S>300) P0=0x0F; //按字节方式写PO口I/O状态 P1_3=1; } i=18000; while(i>0) i--; } }} //维持约77400US,符合不低于60MS的要求 //维持约77400US,符合不低于60MS的要求 //维持约77400US,符合不低于60MS的要求 实验心得: 通过此次课程设计,学习并了解到了许多关于传感器的知识,了解到传感器的应用是基于许多其他基础学科的知识上的。同时这次课程设计也大大的增加了我对传感器的兴趣,在接下来的学习中我一定会更加主动的去了解这门课的内容。
共分享92篇相关文档