基于合泰单片机无线鼠标智能小车控制_第1页
基于合泰单片机无线鼠标智能小车控制_第2页
基于合泰单片机无线鼠标智能小车控制_第3页
基于合泰单片机无线鼠标智能小车控制_第4页
基于合泰单片机无线鼠标智能小车控制_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.#include HT66FU70A.h#define uchar unsigned char#define uint unsigned int#define led _pc2 /led/*NRF24L01端口宏定义*/#define MOSI _pa3/MOSI/#define SCK _pa4/SCK/#define CE _pa5 /CE/#define CSN _pa6 /CSN/#define MISO _pa1/MISO输入/#define IRQ _pa7 /IRQ输入/*NRF24L01*#define TX_ADR_WIDTH 5 / 5 字节宽度的发射地址#define

2、RX_ADR_WIDTH 5 / 5 字节宽度的接收地址#define TX_PLOAD_WIDTH 1 / 数据通道有效数据宽度#define RX_PLOAD_WIDTH 1 / 数据通道有效数据宽度uchar TX_ADDRESSTX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01; /发送地址uchar RX_ADDRESSRX_ADR_WIDTH= 0x34,0x43,0x10,0x10,0x01; /接收地址uchar gs10=0x00,0x01,0x80,0x01,0x00,0x02,0x80,0x02,0x00,0x03;/低字节高字节 占空比数组 1

3、,83.3,66.7,50,33.3/*NRF24L01相关命令的宏定义*#define READ_REG 0x00 / 读寄存器命令#define WRITE_REG 0x20 / 写寄存器命令#define RD_RX_PLOAD 0x61 / 读取接收数据命令#define WR_TX_PLOAD 0xA0 / 写待发数据指令#define FLUSH_TX 0xE1 / 冲洗发送FIFO指令#define FLUSH_RX 0xE2 / 冲洗接收FIFO指令#define REUSE_TX_PL 0xE3 / 定义重复装载数据命令#define NOP 0xFF / ?/*SPI(nR

4、F24L01)相关地址的宏定义*#define CONFIG 0x00 #define EN_AA 0x01 #define EN_RXADDR 0x02 #define SETUP_AW 0x03 #define SETUP_RETR 0x04 #define RF_CH 0x05 #define RF_SETUP 0x06 #define STATUS 0x07 #define OBSERVE_TX 0x08 #define CD 0x09 #define RX_ADDR_P0 0x0A #define RX_ADDR_P1 0x0B #define RX_ADDR_P2 0x0C #de

5、fine RX_ADDR_P3 0x0D #define RX_ADDR_P4 0x0E #define RX_ADDR_P5 0x0F #define TX_ADDR 0x10 #define RX_PW_P0 0x11 #define RX_PW_P1 0x12 #define RX_PW_P2 0x13 #define RX_PW_P3 0x14 #define RX_PW_P4 0x15 #define RX_PW_P5 0x16 #define FIFO_STATUS 0x17 /uuchar TxBuf2=;uchar RxBuf1;/*uchar sta;uchar m=3; u

6、nsigned char IN1,IN2,IN3,IN4;/对应芯片如向前1000void pwn_1();void car_qian();void car_hou();void car_zuo();void car_you();void car_stop();void time_init();void CAR_Q();void CAR_H();/*延迟函数ms*/void delay200ms(unsigned int x)unsigned int i;for(i=0;i5)m=5;if(m1)m=1;switch(m)case 1: _tm0al = 0x00;_tm0ah = 0x01;

7、 _tm3al = 0x00; _tm3ah = 0x01;break;case 2: _tm0al = 0x80;_tm0ah = 0x01; _tm3al = 0x80; _tm3ah = 0x01;break;case 3: _tm0al = 0x00;_tm0ah = 0x02; _tm3al = 0x00; _tm3ah = 0x02;break;case 4: _tm0al = 0x80;_tm0ah = 0x02; _tm3al = 0x80; _tm3ah = 0x02;break;case 5: _tm0al = 0x00;_tm0ah = 0x03; _tm3al = 0x

8、00; _tm3ah = 0x03;break;GCC_DELAY(10);time_init();void Mcu_init()_pas1=0x00;_pac3=0;_pas2=0x00;_pac4=0;_pas2=0x00;_pac5=0;_pas3=0x00;_pac6=0; /pa3-6 配置为输出io口无线模块配置_pas0=0x00;_pac1=1;_papu1=1;_pas3=0x00;_pac7=1;_papu7=1;_pcs1=0x00;_pcc2=0; /写一个字节到nrf24l01,同时从nrf24l01读出一个字节/*uchar SPI_RW(uchar data) u

9、char i,temp=0; for(i=0;i8;i+) / output 8-bit if(data & 0x80)=0x80) _pa3=1; / output uuchar, MSB to MOSI else _pa3=0; data = (data 1); / shift next bit into MSB. temp=1; _pa4=1; / Set SCK high. if(_pa1=1)temp+; / capture current MISO bit xiugai pa1 _pa4=0; / .then set SCK low again return(temp); / re

10、turn read uuchar/从reg寄存器读一个字节/*uchar SPI_Read(uchar reg) uchar reg_val; _pa6=0; / CSN low, initialize SPI communication. SPI_RW(reg); / Select register to read from. reg_val = SPI_RW(0); / .then read registervalue _pa6=1; / CSN high, terminate SPI communication return(reg_val); / return register val

11、ue/写数据到reg寄存器/*uchar SPI_RW_Reg(uchar reg, uchar value) uchar status1; _pa6=0; / CSN low, init SPI transaction status1 = SPI_RW(reg); / select register SPI_RW(value); / .and write value to it. _pa6=1; / CSN high again return(status1); / return nRF24L01 status uuchar/用于读数据/*uchar SPI_Read_Buf(uchar r

12、eg, uchar *pBuf, uchar uchars) uchar status2,uuchar_ctr; _pa6=0; / Set CSN low, init SPI tranaction status2 = SPI_RW(reg); / Select register to write to and read status uuchar for(uuchar_ctr=0;uuchar_ctruchars;uuchar_ctr+) pBufuuchar_ctr = SPI_RW(0); _pa6=1; return(status2); / return nRF24L01 status

13、 uuchar/用于写数据 /*uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars) uchar status1,uuchar_ctr; _pa6=0; /SPI使能 status1 = SPI_RW(reg); for(uuchar_ctr=0; uuchar_ctruchars; uuchar_ctr+) SPI_RW(*pBuf+); _pa6=1; /关闭SPI return(status1);void SetRX_Mode(void) _pa5=0; SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f)

14、; / IRQ收发完成中断响应,16位CRC,主接收 _pa5=1; GCC_DELAY(2000); /注意不能太小uchar nRF24L01_RxPacket(uchar* rx_buf) uchar revale=0; sta=SPI_Read(STATUS); / 读取状态寄存其来判断数据接收状况 if(sta&0x40) / 判断是否接收到数据 _pa5=0; /SPI使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH); / read receive payload fromRX_FIFO buffer revale =1; /读取

15、数据完成标志 SPI_RW_Reg(WRITE_REG+STATUS,sta); /接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 return revale;/发送tx-buf中数据/*void nRF24L01_TxPacket(uuchar *tx_buf) CE=0 ; SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); SPI_RW_Reg(WRITE_REG + CO

16、NFIG, 0x0e); CE=1; delay_us(100);*/void init_NRF24L01(void) GCC_DELAY(250); _pa5=0 ; / chip enable _pa6=1; / Spi disable _pa4=0; / Spi clock line init high SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 写本地地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 写接收端地址

17、SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / 频道0自动 ACK应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / 允许接收地址只有频道0,如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG + RF_CH, 0); / 设置信道工作为2.4GHZ,收发必须一致 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); /设置接收数据长度,本次设置为32字节 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /设置发射速率

18、为1MHZ,发射功率为最大值0dB SPI_RW_Reg(WRITE_REG + CONFIG, 0x0E); / IRQ收发完成中断响应,16位CRC ,主接收void time_init(void)/保持对应的I/O口的原来功能 _phs0 = 0; _tm0c0 = 0x00; /增强型TM(查找TM1C0寄存器),4分频 / _tm0dl = 0x00;/ _tm0dh = 0x00;_tm0c0=0b10010110; /7.784M 停止不分频关闭100 512P高三位 本来应该8m实验测得7.784M_tm0c1=0b10101000; /工作模式输出模式高有效同相向上计数(p匹配双pwm输出模式)/ _tm0c2=0b10101000;/工作模式输出模式高有效同相边沿对齐/_tm0al = 0x80;/a/_tm0ah = 0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论