• 大小: 41KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: tdc-gp2  激光测距  

资源简介

基于tdc-gp2的c8051单片机的激光测距测试程序,可以用,欢迎下载

资源截图

代码片段和文件信息

#include
#include
#define uchar unsigned char
#define uint unsigned int
#define sled_dm_port P0
unsigned long int M;
sbit LED =P1^3;
sbit SSN =P1^4;
sbit SCK =P1^7;
sbit SI =P1^5;
sbit SO =P1^6;
sbit INT =P2^3;//中断标志
sbit EN_START=P2^0;
sbit EN_STOP1=P2^1;
sbit EN_STOP2=P2^2;
sbit RST =P2^7;
sbit START =P3^4;
sbit STOP =P2^6;
uchar data0;data1;data2;data3;
uchar code smg[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0xff};    /*数码管0~9*/
uchar code sw[]={0x000x200x400x60}; //位选数组
void delay(void) //延时子函数
{
uchar ab;
    for(b=1;b>0;b--)
for(a=97;a>0;a--);
}
void display()  //数码管显示
{
P0=smg[data0];P3=sw[0];delay();
P0=smg[data1];P3=sw[1];delay();
P0=smg[data2];P3=sw[2];delay();
P0=smg[data3];P3=sw[3];delay();
}      
void spi_enable(void) //开启spi 通信将ssn 置低
{
SSN=0;//ssn 置低
_nop_();
}
void spi_disable(void) //关闭spi 通信将ssn 置高
{
SSN=1;//ssn 置高
_nop_();
}
void send_zero(void) //发送0
{
SCK=1;//SCK 高电平
_nop_();
SI=0;//SI-输出一个低平
_nop_();
SCK=0;//SCK 低平
_nop_();
}
void send_one(void) //发送1
{
SCK=1;//SCK 高电平
_nop_();
SI=1;//SI-输出一个高平
_nop_();
SCK=0;//SCK 低平
_nop_();
}
//=====================SPI 写数据=====================//
void spi_write8(uchar wbuf8) // spi 写入8 位数据
{
uchar cnttmp=0x80;
spi_enable();
for(cnt=8;cnt>0;cnt--)
{
if((wbuf8&tmp)!=0)
send_one();//发送1
else
send_zero();//发送0
tmp /=2; //tmp 右移一位
} //没有spi 关闭命令,测试程序中代码关闭!
}
//void spi_write16(uint wbuf16) // spi 写16 位数据
//{
//uchar cnt;
//uint tmp=0x8000;
//spi_enable();
//for(cnt=16;cnt>0;cnt--)
//{
//if((wbuf16&tmp)>0)
//send_one();//发送1
//else
//send_zero();//发送0
//tmp /=2; //tmp 右移一位
//}
//_nop_();
//spi_disable();
//}
void spi_write32(unsigned long wbuf32) // spi 写32 位数据
{
uchar cnt;
unsigned long tmp=0x80000000;
spi_enable();
for(cnt=32;cnt>0;cnt--)
{
if((wbuf32&tmp)!=0)
send_one();//送1
else
send_zero();//发送0
tmp /=2; //tmp 右移一位
}
_nop_();
spi_disable();
}
//=====================SPI 读数据=====================//
unsigned long spi_read32()
{
uchar cnt;
unsigned long tmp=0x80000000;
unsigned long int rbuf32=0x00000000;
spi_enable();
for(cnt=32;cnt>0;cnt--)
{
SCK=0;//SCK
_nop_();
if(SO==1)//P6.2 SO
rbuf32 |=tmp;
tmp /=2;
SCK=1;// SCK
_nop_();
}
_nop_();
spi_disable();
return(rbuf32);
}
//===========GP2 上电复位程序==================//
void GP2_RESET(void)
{
RST=1; //输出高平
_nop_();
RST=0; //输出低平
_nop_();
RST=1; //输出高平
_nop_();
}//给gp2RSTN 管脚一个Reset 的方波
//===========GP2 寄存器配置程序====================//
void GP2_init(void)
{
unsigned long REG0REG1REG2 REG3 REG4REG5;
uchar PU=0x50;
uchar init=0x70;
REG0=0x800c3000;//校准陶瓷晶振时间为8 个32k 周期244.14us.    0x80008420
//设置高速晶振上电后一直起振.设置测量范围1自动校准上升沿敏感
REG1=0x81014100;//预期stop1 脉冲数1 个.计算第一个stop1-start
REG2=0x82E00000;//开启所有中断源
REG3=0x83080000;//      
REG4=0x84200000;//
REG5=0x85080000;//
spi_write8(PU);//上电复位
_nop_();
spi_disable();
spi_write32(REG0);
_nop_();
spi_write

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-01-27 20:09  TDC\
     文件        6376  2005-03-22 15:22  TDC\STARTUP.A51
     文件       14048  2014-10-23 17:49  TDC\STARTUP.LST
     文件         749  2014-10-23 17:49  TDC\STARTUP.OBJ
     文件       15302  2015-01-07 20:30  TDC\tdc
     文件       11522  2015-01-07 20:30  TDC\tdc.LST
     文件       20605  2015-01-07 20:30  TDC\tdc.M51
     文件       17528  2015-01-07 20:30  TDC\tdc.OBJ
     文件        2196  2011-10-09 11:04  TDC\tdc.Uv2.bak
     文件          33  2015-01-07 20:30  TDC\tdc.__i
     文件        5571  2011-11-07 17:05  TDC\tdc.c
     文件        3007  2015-01-07 20:30  TDC\tdc.hex
     文件          54  2015-01-07 20:30  TDC\tdc.lnp
     文件        1295  2011-11-08 10:49  TDC\tdc.opt.bak
     文件         430  2015-01-07 20:30  TDC\tdc.plg
     文件       56522  2015-01-07 20:55  TDC\tdc.uvopt
     文件       13411  2014-10-23 17:51  TDC\tdc.uvproj
     文件        1297  2011-11-07 17:17  TDC\tdc_Opt.Bak
     文件        2192  2011-10-08 11:34  TDC\tdc_Uv2.Bak
     文件       57065  2015-01-05 16:29  TDC\tdc_uvopt.bak

评论

共有 条评论