收藏 分销(赏)

基于合泰单片机无线鼠标智能小车控制.doc

上传人:丰**** 文档编号:3906410 上传时间:2024-07-23 格式:DOC 页数:10 大小:36.54KB
下载 相关 举报
基于合泰单片机无线鼠标智能小车控制.doc_第1页
第1页 / 共10页
基于合泰单片机无线鼠标智能小车控制.doc_第2页
第2页 / 共10页
基于合泰单片机无线鼠标智能小车控制.doc_第3页
第3页 / 共10页
基于合泰单片机无线鼠标智能小车控制.doc_第4页
第4页 / 共10页
基于合泰单片机无线鼠标智能小车控制.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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 RX_ADR_W

2、IDTH 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,83。3,66。7

3、,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(nRF24L01)相关地址的宏

4、定义*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 #define RX_ADDR_P3 0x0D

5、 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; unsigned char IN1,IN2,IN3,IN4

6、;/对应芯片如向前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;ix;i+)GCC_DELAY(200000);/*小车控制函数*/void car_qian()_pcs2=0b00100000;/STM0 C5 pwm_pcc5=0;_pcp

7、u5=1;_pcs3=0b00000000;/STM0 C6 0_pcc6=0;_pc6=0;void car_hou()_pcs2=0b00000000;/STM0 C5 0_pcc5=1;_pcpu5=0;_pcs3=0b00000001;/STM0 C6 pwm_pcc6=0;_pcpu6=1;void car_zuo()_pds0=0b00000001;/STM3 D0 pwm_pdc0=0;_pdpu=1;_pds1=0b00000000;/STM3 D3 0_pdc3=0;_pd3=0;void car_you()_pds0=0b00000000;/STM3 D0 0_pdc0=1

8、;_pdpu0=0;_pds1=0b00010000;/STM D3 pwm_pdc3=0;_pdpu3=1;void car_stop()_pcs2=0x00;_pcs3=0x00;_pds0=0x00;_pds1=0x00;_pcc6=0;_pc6=0;_pcc5=1;_pcpu5=0;_pdc0=1;_pdpu0=0;_pdc3=0;_pd3=0;void car_clear() /清楚上次位移端口影响_pcs2=0x00;_pcs3=0x00;_pds0=0x00;_pds1=0x00;GCC_DELAY(20);/*pwm占空比*void pwm_gs()if(m5)m=5;if(m

9、1)m=1;switch(m)case 1: _tm0al = 0x00;_tm0ah = 0x01; _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;bre

10、ak;case 5: _tm0al = 0x00;_tm0ah = 0x03; _tm3al = 0x00; _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; /pa36 配置为输出io口无线模块配置_pas0=0x00;_pac1=1;_papu1=1;_pas3=0x00;_pac7=1;_papu7=1;_pcs1=0x00;_pcc2=0; /写一个字节到nrf2

11、4l01,同时从nrf24l01读出一个字节/*uchar SPI_RW(uchar data) uchar 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 _

12、pa4=0; / .then set SCK low again return(temp); / return 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

13、 communication return(reg_val); / return register value/写数据到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 nR

14、F24L01 status uuchar/用于读数据/*uchar SPI_Read_Buf(uchar reg, 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(

15、0); _pa6=1; return(status2); / return nRF24L01 status 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

16、(void) _pa5=0; SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / 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

17、 receive payload fromRX_FIFO buffer revale =1; /读取数据完成标志 SPI_RW_Reg(WRITE_REG+STATUS,sta); /接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 return revale;/发送txbuf中数据/*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

18、_buf, TX_PLOAD_WIDTH); SPI_RW_Reg(WRITE_REG + CONFIG, 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 +

19、RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); / 写接收端地址 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字节

20、 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); /设置发射速率为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实验

21、测得7。784M_tm0c1=0b10101000; /工作模式输出模式高有效同相向上计数(p匹配双pwm输出模式)/ _tm0c2=0b10101000;/工作模式输出模式高有效同相边沿对齐/_tm0al = 0x80;/a/_tm0ah = 0x02;/a_tm0c0 =(1 7);/运行定时器_tm0c0 = (1 =20)num=0;if(zuo=11)zuo=0; car_zuo(); delay200ms(10);car_clear();car_stop();if(you=11)you=0; car_you(); delay200ms(10);car_clear();car_stop();if(qian=11)qian=0; car_qian();delay200ms(10);car_clear();car_stop();if(hou=11)hou=0; car_hou(); delay200ms(10);car_clear();car_stop();else led=0;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服