该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03

#include

#define k1 P3_4

#define csbout P3_5 //超声波发送

#define csbint P3_7 //超声波接收

#define csbc=0.034

#define bg P3_3

unsigned char csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,jpjs;//显示标识

unsigned char convert[10]=

{0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段码

unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;

bit cl;

void csbcj();

void delay(j); //延时函数

void scanLED(); //显示函数

void timeToBuffer(); //显示转换函数

void keyscan();

void k1cl();

void k2cl();

void k3cl();

void k4cl();

void offmsd();

void main() //主函数

{

EA=1; //开中断

TMOD=0x11; //设定时器0为计数,设定时器1定时

ET0=1; //定时器0中断允许

ET1=1; //定时器1中断允许

TH0=0x00;

TL0=0x00;

TH1=0x9E;

TL1=0x57;

csbds=0;

csbint=1;

csbout=1;

cl=0;

opto=0xff;

jpjs=0;

sj1=45;

sj2=200;

sj3=400;

k4cl();

TR1=1;

while(1)

{

keyscan();

if(jpjs<1)

{

csbcj();

if(s>sj3)

{

buffer[2]=0x76;

buffer[1]=0x76;

buffer[0]=0x76;

}

else if(s

{

buffer[2]=0x40;

buffer[1]=0x40;

buffer[0]=0x40;

}

else timeToBuffer();

}

else timeToBuffer(); //将值转换成LED段码

offmsd();

scanLED(); //显示函数

if(s

bg=0;

bg=1;

}

}

void scanLED() //显示功能模块

{

digit=0x04;

for( i=0; i<3; i++) //3位数显示

{

P3=~digit&opto; //依次显示各位数

P1=~buffer; //显示数据送P1口

delay(20); //延时处理

P1=0xff; //P1口置高电平(关闭)

if((P3&0x10)==0) //判断3位是否显示完

key=0;

digit>>=1; //循环右移1位

}

}

void timeToBuffer() //转换段码功能模块

{

xm0=s/100;

xm1=(s-100*xm0)/10;

xm2=s-100*xm0-10*xm1;

buffer[2]=convert[xm2];

buffer[1]=convert[xm1];

buffer[0]=convert[xm0];

}

void delay(i)

{

while(--i);

}

void timer1int (void) interrupt 3 using 2

{

TH1=0x9E;

TL1=0x57;

csbds++;

if(csbds>=40)

{

csbds=0;

cl=1;

}

}

void csbcj()

{

if(cl==1)

{

TR1=0;

TH0=0x00;

TL0=0x00;

i=10;

while(i--)

{

csbout=!csbout;

}

TR0=1;

i=mqs; //盲区

while(i--)

{

}

i=0;

while(csbint)

{

i++;

if(i>=2450) //上限值

csbint=0;

}

TR0=0;

TH1=0x9E;

TL1=0x57;

t=TH0;

t=t*256+TL0;

s=t*csbc/2;

TR1=1;

cl=0;

}

}

void keyscan() //健盘处理函数

{

xx=0;

if(k1!=1) // 判断开关是否按下

{

delay(400); //延时去抖动

if(k1!=1) // 判断开关是否按下

{

while(!k1)

{

delay(30);

xx++;

}

if(xx>2000)

{

jpjs++;

if(jpjs>4)

jpjs=0;

}

xx=0;

switch(jpjs)

{

case 1: k1cl();break;

case 2: k2cl();break;

case 3: k3cl();break;

case 4: k4cl();break;

}

}

}

}

void k1cl()

{

sj1=sj1+5;

if(sj1>100)

sj1=30;

s=sj1;

}

void k2cl()

{

sj2=sj2+5;

if(sj2>500)

sj2=40;

s=sj2;

}

void k3cl()

{

sj3=sj3+10;

if(sj3>500)

sj3=100;

s=sj3;

}

void k4cl()

{

sx1=sj1-1;

sx1=sx1/csbc;

mqs=sx1/4.5;

}

void offmsd()

{

if (buffer[0] == 0x3f)

buffer[0] = 0x00;

51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...相关推荐

  1. 测距必备,8个超声波测距方案,实时更可控

    由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现.利用超声波检测往往比较迅速.方便.计算简单.易于做到实时控制,并且 ...

  2. 51单片机c语言试题及答案,C51单片机期末试卷.doc

    单片机期末试卷 一.填空题(36分) 1.C语言程序总是从__________ 函数开始执行的. 2.C语言程序注释有两种方式:__________ ? ,__________ ? . 3.定时/计数 ...

  3. 单片机c51语言定义bool类型,C51单片机数据类型的具体定义及应用

    描述 先来简单说说C语言的标识符和关键字.标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句.数据类型.函数.变量.数组等等.C语言是大小字敏感的一种高级语言,如果我们要定义一个定时器1,可 ...

  4. c语言延时的算法,C51单片机延时时间的计算方法解析

    描述 C程序中可使用不同类型的变量来进行延时设计.经实验测试,使用unsignedchar类型具有比unsignedint更优化的代码,在使用时应该使用unsignedchar作为延时变量.以某晶振为 ...

  5. c语言模拟多级反馈队列调度算法实验报告,求助多级反馈队列调度算法的实现,哪位大神帮帮忙啊...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [问题描述] 多级反馈队列调度算法是操作系统中CPU处理机调度算法之一,该算法既能使高优先级的进程(任务)得到响应又能使短进程(任务)迅速完成.UNIX操 ...

  6. c语言2L,求助,R8C 2L 如何在C语言定位常数数组到绝对地址

    满意答案 spk000 推荐于 2016.08.28 采纳率:58%    等级:8 已帮助:311人 #include #include using namespace std; class Stu ...

  7. c语言组队,组队列问题。会做的高手帮帮忙啊

    算法实验题4.10 组队列问题 问题描述: 组队列是一个特殊的抽象数据类型,它所支持的运算类似于队列运算 具有附加的组属性.因此入队运算 Enqueue(x)与通常定义的运算不 eue(x)运算将元素 ...

  8. c语言程序输出一个桌子图案,几道程序题,请高手帮帮忙吧

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 else if( *ps>='0'&& *ps<='9')digital++; else if(____            ...

  9. basic与java,[求助]郁闷啊~!有没有会BASIC和JAVA的!帮帮忙呀!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 590 A(I,I)=A(I,I)-1 : NEXT I 600 FOR K=0 TO 1 : FOR J=0 TO 1 : AB(J)=A(K,J) : ...

最新文章

  1. python个人项目-个人项目 python实现
  2. 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)
  3. 捡到东西说给钱才给东西?算不算敲诈勒索……
  4. JavaScript消息框
  5. 橡胶支座抗压弹性模量计算公式_隔震支座的这些力学特性您都掌握了吗?
  6. Flash Builder4.7安装破解
  7. Fckeditor 2.4.2 php任意上传文件漏洞
  8. linux nfs iscsi,对比平台--iSCSI和NFS之间的区别
  9. vc c mysql_VC++ 利用 MySQL connector c 访问MySQL 数据库
  10. Kali 里边没有声声音 解决办法 有帮助的话给兄弟点个赞 感激不尽
  11. 异度之刃2 任务打杂店的帮手去哪获取纯洁石
  12. 【工具】Hosts文件详解
  13. python入门基础三之流程控制
  14. 计算机用户guest无法删除吗,win7怎样删除guest账户_win7删除guest账户的步骤
  15. IDEA mybatis 用户-订单-订单详情 → 互查
  16. 练琴时悟出的动态规划算法,帮我通关了《辐射4》
  17. 北航软件能力培养启发和下一步工作
  18. 喂奶的母亲怎样通过食疗来促进宝宝的健康(三)
  19. linux so自毁指令,iPhone自毁模式怎么设置 充电爆炸快捷指令设置自毁模式方法
  20. solidworks基础--移动、复制与拉伸

热门文章

  1. KingPaper初探Java之方法声明及重载
  2. [分享]技术改进方案模板
  3. UML中符号的意义(转)
  4. javascript2008
  5. ubutu14.04无法使用sudo,也无法切换到root用户去解决问题怎么办?
  6. Django 1.11 bootstrap样式文件无法加载问题解决
  7. idea中新增package总是嵌套的解决方法
  8. 同步等待异步操作,为什么Wait()在这里冻结程序
  9. Intellij Idea:导入Gradle项目 - 尚未定义JAVA_HOME
  10. 如何从Java中的字符串值获取枚举值?