激光测距仪程序.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

。等待下次

等待下

次脉冲

系统上电

配置MCU、配置TDC、配置LCD

扫描按键,等待按键按下

由P1口产生占空比为50%、周期为10ms的脉冲段

开启TDC的start口TDC进入测量状态

完成测量测量溢出

**

判断中断

读寄存器状态看测量是正常还是溢出

正常溢出

读数据

等待下一次脉冲到来

完成100次脉冲发射

判断数据存储器是否全为零

是否

LCD显示MUC数据处理LCD显示距离

errorornotoscale

#include<reg51.h>

#include<stdio>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

#definelucharunsignedlongchar

#defineluintunsignedlongint

端口设置程序===============/

SbitSPISSN=P1.3;

SbitSPISCK=P1.4;

SbitSPI_SI=P1.5;

SbitSPI_SO=P1.6;

SbitSbitSbitSbit

INT=P1.7;

RS=P0.5;

RW=P0.6;

E=P0.7;

//========----SPI通信函数声明===----=------=//

VoidSPI_enable(Void);

VoidSPI_close(Void);

VoidSPI_sendone(Void);VoidSPI_sendzero(Void);VoidSPI_write8(uchar);

VoidSPI_write32(uchar);LucharSPI_read16(void);LucharSPI_read32(void);VoidGP2_peizhi(Void);

//SPI片选,使能开

//SPI使能关

//发送一位数据1

//发送一位数据0

//写8位数据

//写32位数据

//读16位数据

//读32位数据

//TDC-gp2配置

//========--==LCD通信函数声明=

VoidLCD_wdate(uchar);//写数据

VoidLCD_wcommand(uchar);//写指令

VoidLCD_delay(uint);//延时程序

VoidLCD_peizhi(Void);//LCD配置

//====---=---=脉冲产生函数声明==----------=--=//

Voidfire_gene(void);//脉冲产生

//========-===数据处理函数声明==--=---=--===//

Doublefloataver(Ucharsample[],Uchari)//时间数据转化为距离//========--==数据显示函数===-----=====-=//

VoidLCD_xianshi(uchardate[],uchari)//显示程序

//======-=--==主函数入口=====-==-===--==//

Voidmain()

Doublefloatlength:

Ucharss[6]://5为有效距离数据ASCALL码

UintR=100;//采样频率

ucharStat;//TDC数据状态字

Ucharsample[100];//采样数据

Ucharerror[]="notoscale";//显示超出量程

Uinti=0;

GP2_peizhi();//上电配置TDC_GP2

LCD_peizhi();//上电配置LDC

TOMD=0x11;//设置TO、T1工作在模式2

TH1=0xFC;

TL1=0x78;//定时器1产生5ms定时

While(p1.0);//扫描键盘,等待按下

Whlie(R--)

TR1=1;//启动定时器1

fire_gene(void);//产生5ms脉冲

While(!p1.7);//扫描中断口,等待测量完成

SPI_write32(0xb4);//写入读状态寄存器指令

Stat=SPI_read16(0;/

文档评论(0)

chenzehao888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档