电设报告 - 图文(3)

2019-06-02 14:00

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xf0, 0xf0, 0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

//------------->>>>>>>>>>>>>>>>>步进电机1用的延时函数及其他函数声明

#define CPU_F ((double)24000000) #definedelay_us(x)

__delay_cycles((long)(CPU_F*(double)x/1000000.0)) #definedelay_ms(x)

__delay_cycles((long)(CPU_F*(double)x/1000.0)) staticintstep_index1; // staticintstep_index2; //

voiddelay(unsignedintendcount); //延时函数,延时endcount个0.5ms

voiddelay_nms1(unsignedint n); voiddelay_5ms1(void);

voiddelay_nms(unsignedint n); voiddelay_5ms(void); //P2口延时函数

voiddelay_nms2(unsignedint n);

voiddelay_5ms2(void);

staticinta1; //a1=0用于在探测到金属时停止步进电机

/////////////////////////////////////两个步进电机控制程序////////////////////////////////////////////////////////////////////////

voidmotor2(unsignedint a2);//P4口用于垂直往前走 voidmotor4(unsignedint a4);//P4口用于垂直往后推 voidmotor21(unsignedint a21);//P2口用于水平左走 //a3用于步进电机右转时间角度

voidmotor22(unsignedint a22); //P2口用于水平右走 //a4用于步进电机后退时间角度

//LDC1000变量定义配置及函数声明

//________________________________________*****************************************>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

staticuint8_ttxlen; staticuint8_trxlen; staticuint8_t *txbuf; staticuint8_t *rxbuf; staticuint8_ttxaddr;

staticuint8_twordbuf[2];

uint8_tproximtyData[2]; uint8_tfrequencyData[3];

unsignedintproximtyDataMIN;

unsignedintproxin;//存储最小RP数据 unsignedintfrequencyDataMIN;

unsignedintproximtyDataMAX;

unsignedintfrequencyDataMAX;

unsignedintproximtyDataTEMP; unsignedintfrequencyDataTEMP;

#define RPMIN 0x3A #define RPMAX 0x13

char ab1=1; //用于水平和垂直电机转动,为0时停止所有电机,代表此//试验一程序找到了一个金属物体,如需进一步测量,执行后面的程序

int ab2=1; //用于选择水平电机左转或右转 char ab3=1; //用于停止水平电机转动,为0是停止水平扫描电机,代表在水平扫描时找到了一个金属物体

unsignedintproxin = 4600; //是否找到金属物体的大小判断数值界限,此数值需根据现场调试具体实际数值确定

voidscan(void) {

inti;

Dogs102x6_clearScreen(); //清屏

spi_readBytes(LDC1000_CMD_PROXLSB,&proximtyData[0],2);

spi_readBytes(LDC1000_CMD_FREQCTRLSB,&frequencyData[0],3);

proximtyDataMAX = ((unsignedchar) proximtyData[1]<<8) + proximtyData [0]; frequencyDataMAX = ((unsignedchar)frequencyData[1]<<8) + frequencyData[0];

proximtyDataMIN = proximtyDataMAX; frequencyDataMIN = frequencyDataMAX;

for (i=0;i<50;i++) {

spi_readBytes(LDC1000_CMD_PROXLSB,&proximtyData[0],2);

spi_readBytes(LDC1000_CMD_FREQCTRLSB,&frequencyData[0],3);

proximtyDataTEMP = ((unsignedchar)proximtyData[1]<<8) + proximtyData [0]; frequencyDataTEMP = ((unsignedchar)frequencyData[1]<<8) + frequencyData[0];

if (proximtyDataTEMP

if (proximtyDataTEMP>proximtyDataMAX) proximtyDataMAX = proximtyDataTEMP; if (frequencyDataTEMP>frequencyDataMAX) frequencyDataMAX = frequencyDataTEMP; }

Trans_val(proximtyDataMIN,1);

BIT5; BIT5;

+ BIT5);

Trans_val(proximtyDataMAX,2); Trans_val(frequencyDataMIN,3); Trans_val(frequencyDataMAX,4); if(proximtyDataMIN<10000) {

if(proximtyDataMIN> 4600) {

P1DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + P1OUT |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + P8DIR |= BIT1 + BIT2; P8OUT |= BIT1 + BIT2; ab3 = 0; ab1 = 0; P7DIR |=BIT0; P7OUT |=BIT0; while (1) {

P7OUT ^=BIT0;

_delay_cycles(8000); } } else {

P1OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4

P8OUT &= ~(BIT1 + BIT2); ab3 = 1; ab1 = 1;


电设报告 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:江苏无锡金桥双语实验学校2016小升初考试语文真题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: