- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品
精品
#include reg52.h //包括一个 52 标准内核的头文件
#define uchar unsigned char // 定义一下方便使用 #define uint unsigned int
#define ulong unsigned long
sbit Trig = P1A0; // sbit Echo =卩3人2; //
sbit test = P1A1; //
产生脉冲引脚 回波引脚 测试用引脚
uchar
SEG7[10]={~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90};//
0-9
uint distance[4]; // 测距接收缓冲区
uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; // 自定义寄存器
bit succeed_flag; // 测量成功标志
//******** 函数声明
void conversion(uint temp_data);
void delay_20us();
code
数码管
void main(void) // 主程序
{
uint distance_data,a,b;
uchar CONT_1;
i=0;
flag=0;
Trig=0;
//
首先拉低脉冲输入引脚
TMOD=0x11; //
定时器 0,定时器 1,16位工作
TR0=1;
//
启动定时器 0
IT0=0;
//
由高电平变低电平,触发外部中断
ET0=1;
//
打开定时器 0 中断
EX0=0;
//
关闭外部中断
EA=1;
//
打开总中断 0
test =0;
程序循环
//
while(1){
EA=0;
Trig=1;
delay_20us();
Trig=0; //
产生一个 20us 的脉冲,在 Trig 引脚
while(Echo==0); //
等待 Echo 回波引脚变高电平
succeed_flag=0; //
清测量成功标志
EX0=1; //
打开外部中断
TH1=0; //
定时器 1 清零
TL1=0; //
定时器 1 清零
TF1=0; //
TR1=1; //
启动定时器 1
EA=1;
while(TH1 30);//
TR1=0; //
EX0=0; //
等待测量的结果,周期 65.535 毫秒(可用中断实现) 关闭定时器 1 关闭外部中断
if(succeed_flag==1)
{ distance_data=outcomeH*256+outcomeL; distance_data= (distance_data*1.87)/100;
} //
秒*344 ) /2
// X
秒=0.0058*Y 米==》厘米=微秒/58
if(succeed_flag==0)
{
distance_data=0; //test = !test; //
为什么除以58等于厘米, Y米=(X
秒 =( 2*Y 米) /344 == 》 X
没有回波则清零
测试灯变化
******************************************
每循环 3 次就显示结果一次
*******************************************
a=distance_data; if(b==a) CONT_1=0; if(b!=a) CONT_1++; if(CONT_1=3)
{ CONT_1=0;b=a;
conversion(b);
}
}
}
//***************************************************************
// 外部中断 0,用做判断回波电平
INTO_() interrupt 0 //
{
outcomeH =TH1; // outcomeL =TL1; // succeed_flag=1; //
EX0=0; //
外部中断是 0 号
取出定时器的值 取出定时器的值 至成功测量的标志 关闭外部中断
}
//****************************************************************
// 定时器 0中断, 用做显示
timer0() interrupt 1 // 定时器 0 中断是 1 号 {
TH0=0xfd; // 写入定时器 0 初始值
TL0=0x77;
switch(flag)
{case 0x00:P0=ge; P2=0xfe;flag++;break; case 0x01:P0=shi;P2=0xfd;flag++;break; case 0x02:P0=ba
您可能关注的文档
最近下载
- 外研版初中英语单词总表(7~9年级).pdf VIP
- 第十三课 实现人生价值(课件)七年级道德与法治上册课件(统编版2024).pptx VIP
- 视频监控系统调试记录.xls VIP
- 2025至2030中国骨关节补充剂行业市场深度研究与战略咨询分析报告.docx
- 新版《建筑设计服务计费指导》.pdf VIP
- 如何写课例研究报告课件.ppt VIP
- 辽宁省单招考试题库.docx VIP
- 大学英语四级考试2024年12月真题(第一套)Part IV Translation.pptx VIP
- 国有企业党委书记2024-2025年生活会个人对照检查发言材料(四个带头+典型案例).docx VIP
- 北京市海淀区2024-2025学年四年级上册期末考试数学试卷(含答案).pdf VIP
原创力文档


文档评论(0)