




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
黄河科技学院毕业论文 第 28 页 基于短距离无线技术的多媒体辅助手写技术的可行性研究摘 要本文提出一种由四线电阻触摸屏,AT89C51单片机,GSK无线收发模块,汉王高速汉字识别HW006芯片,USB接口模块组成的无线手写板设计与具体实现,给出了具体硬件电路图,也提供相应的程序流程图和对应的程序,实现了无线手写板与计算机之间的数据的无线传输。我们可以在无线手写板上书写的内容,通过汉王手写芯片转码传输给单片机,系统将手写笔画信息转化为电信号,通过识别模块转化为汉字GB2312内码(数字,符号,英文字母ASCll码),并将其通过串口通信将这些信号传输至单片机。实现内码转换传给计算机显示,实现了无线操控。该无线手写板体积小,能耗低,抗干扰强,成本低,性能高,适合广大的人群运用,也为其他简单的无线应用提供了一个可行方案。关键词:四线电阻触摸屏,AT89C51单片机,HW006芯片,USB20C,手写板Based On The Feasibility Study Of The Short-range Wireless Technology, Multimedia Assisted Handwriting Author: Fan Kuojun Tutor: Zhang JvqinAbstractThe paper provides the design and implementation of a four-wire resistive touch screen which is composed of AT89C51 microcontroller unit, GSK module, Hanwang high-speed character recognition HW006 chip, USB interface module, the specific hardware circuit is provided and the program. It also provides the program flow chart of the procedure and the corresponding, and achieves the transmission of data between a wireless table with computer. We can write in wireless tablet. The internal code can be transmitted to the microcontroller chip by Hanwang handwriting chip. The system will put handwriting stroke information into electrical signals. GB2312 Chinese character can be recognition by module transmit into the internal code. And through the serial port transmit these signals into communication to the microcontroller. So achieve a wireless control.It has small volume, low energy consumption of the wireless tablet, Strong anti-interference, low cost, High-performance, it is suitable for the majority of people to use. It also provides a viable program for other simple wireless applications. The system also provides a feasible scheme for other simple wireless applications.Key words: Four-wire resistive touch screen, AT89C51 MCU, HW006 Chip, USB20C, Drawing tablet目 录1 绪论11.1 无线手写技术背景及现状11.2 无线手写板的发展趋势11.3 无线手写板的分类及标准21.4 课题研究方法22 方案设计及模块介绍42.1 系统的总体方框图42.2 AT89C51单片机介绍42.2.1 AT89C51主要特性52.2.2 AT89C51管脚说明52.2.3 AT89C51振荡器特性72.3 HW006芯片介绍72.3.1 HW006主要功能72.3.2 HW006的通信协议82.3.3 HW006命令码的简单介绍82.4 无线收发模块NRF24L01P92.4.1 NRF24L01P简介92.4.2 NRF24L01P引脚功能描述102.5 USB20C模块介绍102.5.1 USB20C的主要特点102.5.2 USB20C模块引脚定义112.6 LM1117引脚功能123 硬件电路设计123.1 手写输入与识别123.2 发送端控制与信号处理133.3 接收端控制与信号处理144 无线手写板硬件电路程序设计154.1 NRF2041L01程序流程图154.2 控制程序17结论26致谢27参考文献281 绪 论1.1无线手写技术背景及现状现今社会的科学技术水平飞速发展,科学技术的发展带动了课堂教学模式的转变,从原来的老师、学生、计算机网络、投影仪、电子白板等多种现代化设备到综合一起的多媒体教学环境。但无论教学模式怎样转变,传统的黑板在教学中仍没有淡出教学的舞台,它经受住了全学科、全世界几个世纪的考验,有其挥之不去的独特优势。在传统教学模式中,信息在教师与学生之间双向流动,老师用自己的语言、表情以及肢体动作与学生进行交流,形成了“教师 学生 教师 学生”的闭环正反馈系统,使的教学效果事半功倍。随着电脑技术的发展,无线手写板逐渐成为人们的选择,近年来无线手写板在功能和文字书写辨识准确率上大幅提升,越来越多的人选择手写板来代替传统鼠标键盘,尤其是一些中老年消费者,对这类产品需求量大增。手写输入设备对计算机来说是一种输入设备,最常见的是手写板(也叫手写仪),其作用和键盘类似。当然,基本上只局限于输入文字或者绘画,也带有一些鼠标的功能。手写板一般是使用一只专门的笔,或者手指在特定的区域内书写文字。手写板通过各种方法将笔或者手指走过的轨迹记录下来,然后识别为文字。对于不喜欢使用键盘或者不习惯使用中文输入法的人来说是非常有用的,因为它不需要学习输入法。手写板还可以用于精确制图,例如可用于电路设计、CAD设计、图形设计、自由绘画以及文本和数据的输入等。手写板有的集成在键盘上,有的是单独使用,单独使用的手写板一般使用USB口或者串口。目前手写板种类很多,有兼具手写输入汉字和光标定位功能的,也有专用于屏幕光标精确定位以完成各种绘图功能的。1.2无线手写板的发展趋势从技术发展的角度说,更为重要的是手写板的性能。手写板主要分为三类电阻式压力板、电磁式感应板和近期发展的电容式触控板。目前电阻式压力手写板技术落后,几乎已经被市场淘汰。电磁式感应手写板是现在市场上的主流产品。电容式触控手写板作为市场的新力量,由于具有耐磨损、使用简便、敏感度高等优点,是以后手写板的发展趋势1。1.3无线手写板的分类及标准电阻压力式:电阻压力式手写板是由一层可变形的电阻薄膜和一层固定的电阻薄膜构成,中间由空气相隔离。其工作原理是:当用笔或手指接触手写板时,上层电阻受压变形并与下层电阻接触,下层电阻薄膜就能感应出笔或手指的位置。优点:原理简单、工艺不复杂、成本较低、价格也比较便宜。缺点:由于通过感应材料的变形判断位置,感应材料易疲劳,使用寿命较短。感触不是很灵敏,使用时压力不够则没有感应,压力太大时又易损坏感应板。电磁感应式:电磁式手写板是通过在手写板下方的布线电路通电后,在一定空间范围内形成电磁场,来感应带有线圈的笔尖的位置进行工作。这种技术目前被广泛使用,主要是由其良好的性能决定的。使用者可以用它进行流畅的书写,手感也很好,绘图很有用。电磁式感应板也有缺点:对电压要求高,如果使用电压达不到要求,就会出现工作不稳定或不能使用的情况。抗电磁干扰较差,易与其他电磁设备发生干扰。手写笔笔尖是活动部件,使用寿命短(一般为一年左右)。必须用手写笔才能工作,不能用手指直接操作。电容触控式:电容式手写板的工作原理是通过人体的电容来感知手指的位置,即当使用者的手指接触到触控板的瞬间,就在板的表面产生了一个电容。在触控板表面附着有一种传感矩阵,这种传感矩阵与一块特殊芯片一起,持续不断地跟踪着使用者手指电容的“轨迹”,经过内部一系列的处理,从而能够每时每刻精确定位手指的位置(X、Y坐标),同时测量由于手指与板间距离(压力大小)形成的电容值的变化,确定Z坐标,最终完成X、Y、Z坐标值的确定。因为电容式触控板所用的手写笔无需电源供给,特别适合于便携式产品。这种触控板是在图形板方式(Graphic Table Mode)下工作的,其X、Y坐标的精度可高达每毫米40点(即每英寸1000点)。1.4 课题研究方法1、经过查询大量文献资料,了解了短距离无线传输的通信协议,熟悉了无线手写板的组成。手写版系统在各模块协同工作下完成手写信息采集、手写信息识别,数据传输及内码识别显示等功能。2、高速汉字识别模块(HW006)转化为汉字GB2312内码(数字,符号,英文字母ASCII码),并将其通过串口通信将这些信号传输至单片机。这里汉字识别模块采用HW006,汉王HW006芯片支持6763个简体中文汉字(GB2312)、52个英文大小写字母、10个数字、还有常用符号的手写识别输入并提供了灵活的控制命令接口,完成三种工作模式及其参数的设置,支持异步串行通信接口行(UART),通信波特率9600、19200、38400、57600、115200可设置,方便与各种CPU配合使用。3、信号经过单片机(AT89C51)对其进行一定的格式转化后,通过无线发射模块进行射频发送。无线收发模块采用NRF24L01P,它是一种低功耗调频无线收发模块,工作电压为5V,工作在2400-2483HZ范围。4、在接收端,相对应的无线接收模块将接收到的射频信号处理为基带信号后传输给单片机,通过单片机与USB模块的数据通信后从USB接口进至Pc上位机,应用程序对汉字内码(数字、符号、英文字母ASCII码)进行汉别,最终显示用户庄手持端输人的信息。USB模块采用USB20C,这是一款USB2.0设备通用接口模块,应用程序通过调用该模块提供的函数,可以把相应的功能转变成模块硬件接口上的一系列脉冲和电平,发送到外围逻辑,进行指定的数据传输,从而极大地简化USB设备的设计工作。2 方案设计及模块介绍2.1系统的总体方框图在手持端进行手写输入后。系统将手写笔画信息转化为电信号,通过识别模块转化为汉字GB2312内码(数字,符号,英文字母ASCll码),并将其通过串口通信将这些信包传输至单片机。经过单片机对其进行一定的格式转化后,通过无线发射模块进行射频发送。在接收端,相对应的接收模块将接收到的射频信号处理为基带信号后传输给单片机,通过单片机与USB模块的数据通信后从USB接口进至PC上位机,应用程序对汉字内码(数字、符号、英文字母ASCII码)进行汉别,最终显示在用户手持端上。总体方框图如图2.1所示。手写输入无线发射模块无线接收模块单片机手写识别模块单片机USB模块PC机内码信息无线传输内码信息内码信息图2.1 总体方框图2.2 AT89C51单片机介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机2。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2.2。 图2.2 引脚图2.2.1 AT89C51主要特性AT89C51能与MCS-51兼容,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0MHz-24MHz,三级程序存储器锁定,1288位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。2.2.2 AT89C51管脚说明VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可接收8个TTL门电流。当P1口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(TTL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.2.3 AT89C51振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.3 HW006芯片介绍它是一款汉王手写芯片,它内置了触摸屏控制电路和对外的UART接口,同时提供了灵活的控制命令接口,可以满足触摸屏LCD分离型、触摸屏LCD一体型等不同情况下的各种应用需求。HW006如图2.3。图2. 3 HW006芯片2.3.1 HW006主要功能 支持6 763个简体中文(GB2312)、52个英文大小写字母、10个数字、12个常用符号的手写识别输入,并可自由组合,设置识别范围; 支持点击模式、手写模式和混合模式; 内嵌触摸屏控制硬件和软件,可直接与触摸屏相连接; 支持异步串行通信接口(UART),通信波特率可设置,便于与各种CPU进行通信; 在手写状态下,识别参数可设置。可见,HW006完全可以实现预想的功能。根据实际需要,选用混合模式。2.3.2 HW006的通信协议 HW006为从设备,主设备对该芯片发送控制命令,HW006可以执行相应的功能。(1)主设备向手写芯片发送命令格式如表2.1。表2.1 手写芯片发送命令1字节1字节命令码命令参数(2)手写芯片向主设备发送数据这里主要介绍混合模式下的数据格式,如表2.2所示。表2.2 混合模式数据格式1字节1字节1字节1字节1字节1字节1字节1字节XY属性XYEOF低字节高字节在混合模式下,手写芯片先发送轨迹坐标,属性表示该点的状态:0x00,落笔;0x05,移笔;OxOf,抬笔。EOF表示发送轨迹结束标志,其值为Oxff。之后发送识别字的编码,低字节在前,高字节在后。2.3.3 HW006命令码的简单介绍对HW006进行操作控制的主要命令码如表2.3所示。表2.3 HW006命令码命令码含义 参数说明0x03设置通信波特率0x01:9600bps0x02:19200bps0x03:38400bps0x04:57600bps0x05:115200bps0x10设置混合模式X1:手写区域左上角x值Y1:手写区域左上角y值X2:手写区域右下角x值Y2:手写区域右下角y值0x60设置识别自负的范围0x01:汉字0x02:数字 090x04:52个大小写英文母0x08:12个常用的符号 0x65设置识别字的个数0x010x0a:110个汉字0x6a设置识别等待时间0x000x04:300700 ms2.4无线收发模块NRF24L01P2.4.1 NRF24L01P简介无线收发模块NRF24L01P11简介是GSK调频无线接收模块,它采用2.4G无线收发IC设计的一款高性能模块,最高速率可达2MBPS,最大发射功率0dBm。NRF24L01P集成了所有与RF协议相关的高速信号处理部分。如:自动重发丢失数据包和自动残生应答信号等或用单片机的I/O口进行模拟,内部有FIFO可以与各种高低速位处理器接口,低成本,低功率,当工作在应答模式通信时,快速地控制传输及启动时间,极大地降低了电流消耗。使用内置PCB天线设计,开阔地1MBPS速率下,测试距离3050M米左右。NRF24L01P发射模块引脚如图2.4。图2.4 NRF24L01P引脚图2.4.2 NRF24L01P引脚功能描述表2.4 NRF2401P引脚功能描述引脚名称引脚功能描述1GND接地接地端2VIN电源电源3.3V3CE数字输入RX或TX模式选择4CSN数字输入SPI片选信号5SCK数字输入SPI时钟6MOSI数字输入从SPI数据输入脚7MISO数字输出从SPI数据输出脚8IRQ数字输出可屏蔽中断脚2.5 USB20C模块介绍USB20C模块是USB2.0设备通用接口模块,同时也兼容USB1.1标准,可以作为用户系统的嵌人式模块使用,用户无需了解USB协议及底层控制方法12。USB20C模块提供两种数据传输模式:地址IO模式和批量数据传输模式,两种数据传输模式共用数据总线。批量数据传输模式又可编程为异步DMA传输模式或同步DMA传输模式。USB20C以动态链接库(DLL)的形式提供了一系列API函数,应用程序通过调用这些函数可以把相应的功能转变成模块硬件接口上的一系列脉冲和电平,发送到外围逻辑进行指定的数据传输,从而极大地简化了USB设备的开发工作。2.5.1 USB20C的主要特点高性能标准USB接口器件,符合通用串行总线USB2.0规范;高速DMA读写控制,读写速度大于20 Mbits;系统驱动文件,DLL动态链接库,用户不必编写任何驱动程序;SMT工艺,低功耗系统,超小体积模块化设计,无需外接电源;简化的标准外部总线:8位双向数据总线,5位地址总线,9位读写控制总线; 配备I/C存储模块;提供48 MHz或者30 MHz的时钟输出;提供5V电源输出。2.5.2 USB20C模块引脚定义USB20C模块的引脚排列如图2.5所示。图2.5 USB20C引脚图模块提供了8位数据总线、5位地址总线、3位地址IO 控制信号、9位批量传输控制号,以及其他的辅助控制信号。引脚定义如下:其中1,5,7,11,13,20,21引脚是GND用于接地,2是PRD用于读地址,低电平有效,3是PWR用于写地址,低电平有效,4是PWAIT用于地址等待,低电平有效,6是CLKOUT时钟输出,8是DMARD用于读数据,低电平有效,当“输出”时,在此编号的上升沿把数据写入模块,9是DMAWR写数据,低电平有效,“输入”时在此编号的上升沿把数据写入模块,10和19是NC作用悬空,12是IFCLK用于接口时钟信号,可以由USB20C提供,也可以由外部逻辑提供,14是SCL用于外扩I2C存储器,15是SDA用于I2C数据,用于外扩I2C存储器,16-19,22-25是FD7-0用于8位双向DMA数据总线,27是FIFOF用于缓冲区满标志,低电平有效,一般在“输入”时用本信号,28是FIFOE用于缓冲区控标志,低电平有效,一般在“输出”时使用本信号,30是DMAING用于批量数据传输指示,1:指示与批量数据传输模式,0:指示工作与地址IO模式,31是DMAOE用于输出使能,低电平有效,32是DMADIR用于传输方向,1:从设备到主机,0:从主机到设备,33是PKTEND用于结束写,低电平有效,34是DMACS用于模块选通,低电平有效,35-39是FA4-0用于5位地址线,40是Vout提供外部设备使用电源。2.6 LM1117引脚功能 稳压模块LM1117只有3个引脚,如图2.6所示。引脚1是输入端;引脚2是地线端;引脚3是输出端。当输入端的电压是5V时,输出端的电压可以达到3.3V,从而实现稳压功能。图2.6 LM1117引脚图3 硬件电路设计3.1手写输入与识别手写识别模块的前端输入设备为四线电阻式触摸屏。发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。手写模板 四线电阻触摸屏串口发送4 Y(3)串口接收3电源2 X(4)复位1电源3.3VX(2)Y(1)图3.1 手写模块与触摸屏连接示意图控制器侦测到这一接触并计算出(X,Y)的位置,从而进行输入笔画的识别,并根据对内容的识别产生对应的二进制信息。手写识别模块与触摸屏的连接如图3.1。HW006模块采用电源为+3.3V,可以使用电池电源直接供电。3.2发送端控制与信号处理HW006在上电使用时需要先对其进行初始化,设置通信波特率、识别范围、等待时间等等,这些工作通过控制模块(单片机)对其写入控制命令字来完成。HW006与AT89C51单片机之间通过串口进行数据传输,设置波特率为9600,可以满足两个字节的汉字内码与ASCII码(扩充为两个字节)的准确及时传输。当手写模块检测到手写输人完毕(等待时间超过设定值之后),发起串口通信,单片机程序进入串口中断过程,两个字节的数据被存储在单片机RAM中进行进一步的编码处理3。图3.2 发送端控制信号处理当串口中断结束之后,单片机从RAM中提取出数据,将其按位送到P1.0口,通过无线发射模块发送。NRF24L01P是一种低功耗的调频无线发射模块,工作电压5V(可与AT89C51使用同一电源供电),采用频点419MHz。无线发射模块将原始的单片机输出信号直接经过调制后发送4。考虑到发送端的移动性和便携性,可采用电池电源供电。发送端手写模块HW006电源为+3.3V,而AT89C51与NRF24L01P使用的是+5V电源供电,可以使用较高电压的电池电源,再通过LM1117低压差线性稳压器(3.3V)分别得到+3.3V和+5V为它们供电。由于单片机的工作电压为5V,HW006的工作电压为3.3V,之间存在电压的不兼容;所以在双方进行串口通信时,通过电阻分压的方式解决这一问题5。发送端电路原理图如图3.2。3.3接收端控制与信号处理接收端使用与发送端对应的NRF24L01P线接收模块,将接收到的信号进行解调。接收端单片机的P3.0口作为数据线使用,单片机通过判断起始位(低电平)开始进行接收,按位将接收到的数据存人RAM中等待进一步处理6。图3.3 接收端电路图接收端通过USB接口与上位机PC进行通信,所使用的USB20C是一款USB20设备通用接口模块,应用程序通过调用该模块提供的函数,可以把相应的功能转变成模块硬件接口上的一系列脉冲和电平,发送到外围逻辑,进行指定的数据传输,从而极大地简化USB设备的设计工作7。模块提供两种数据传输模式:并行8位地址IO模式、批量数据传输模式。地址IO模式需要三个控制信号:PWR、PRD、PWAlT。PWR信号为地址写的写脉冲,是一个低电平脉冲,在通过USB接口向外部逻辑器件输出信号时使用,由函USB20C-OUTPUT、USB20C-MULTOUT、PUT产生PRD信号为地址读的读脉冲,是一个低电平脉冲,由函数USB20CINPUT、USB20C-ULTINPUT产生8。PWAIT当外部逻辑为单片机等慢速逻辑时,先由外部逻辑把本信号拉低,则模块在地址IO时会在PWR、PRD脉冲有效后会插入等待周期,等待外部逻辑执行完指定的读写后,外部逻辑把本信号拉高,模块检测到PWAIT=1后,结束PWR,PRD脉冲,外部逻辑检测到起地址读操作时,USB模块从单片机读取两个连续字节的数据通过判断低字节是否为全零来区分汉字内码与ACS码,调用不同的显示程序9。接收端电路图如图3.3。4 无线手写板硬件电路程序设计4.1 NRF2041L01程序流程图图4.1 发射程序流程图图4.2 接收程序流程图4.2控制程序控制程序如下:#includereg52.h#includeuart.h#define uchar unsigned char#define uint unsigned int/*/#define TX_ADDR_WITDH 5/发送地址宽度设置为5个字节#define RX_ADDR_WITDH 5/接收地址宽度设置为5个字节#define TX_DATA_WITDH 4 /发送数据宽度4个字节#define RX_DATA_WITDH 4 /接收数据宽度4个字节/*命令寄存器*/#define R_REGISTER 0x00/读取配置寄存器#define W_REGISTER 0x20/写配置寄存器#define R_RX_PAYLOAD 0x61/读取RX有效数据#define W_TX_PAYLOAD 0xa0/写TX有效数据#define FLUSH_TX 0xe1/清除TXFIFO寄存器#define FLUSH_RX 0xe2/清除RXFIFO寄存器#define REUSE_TX_PL 0xe3/重新使用上一包有效数据#define NOP 0xff/空操作/*寄存器地址*/#define CONFIG 0x00/配置寄存器#define EN_AA 0x01/使能自动应答#define EN_RXADDR 0x02/接收通道使能0-5个通道#define SETUP_AW 0x03/设置数据通道地址宽度3-5#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/数据通道0接收地址#define RX_ADDR_P1 0x0b/数据通道1接收地址#define RX_ADDR_P2 0x0c/数据通道2接收地址#define RX_ADDR_P3 0x0d/数据通道3接收地址#define RX_ADDR_P4 0x0e/数据通道4接收地址#define RX_ADDR_P5 0x0f/数据通道5接收地址#define TX_ADDR 0x10/发送地址#define RX_PW_P0 0x11/P0通道数据宽度设置#define RX_PW_P1 0x12/P1通道数据宽度设置#define RX_PW_P2 0x13/P2通道数据宽度设置#define RX_PW_P3 0x14/P3通道数据宽度设置#define RX_PW_P4 0x15/P4通道数据宽度设置#define RX_PW_P5 0x16/P5通道数据宽度设置#define FIFO_STATUS 0x17/FIFO状态寄存器/*相关函数声明*/void Delay(uint t);uchar NRFACK();uchar NRFSPI(uchar date);uchar NRFReadReg(uchar RegAddr);uchar NRFWriteReg(uchar RegAddr,uchar date);uchar NRFReadRxDate(uchar RegAddr,uchar *RxDate,uchar DateLen);uchar NRFWriteTxDate(uchar RegAddr,uchar *TxDate,uchar DateLen);uchar NRFRevDate(uchar *RevDate);void NRFSetTxMode(uchar *TxDate);void NRF24L01Int();void NRFSetRXMode();uchar CheckACK();extern uchar bdata sta;sbit CE=P10; /RX/TX模式选择端sbit IRQ=P15; /可屏蔽 中断端sbit CSN=P11; /SPI片选端/就是SSsbit MOSI=P13; /SPI主机输出从机输入端sbit MISO=P14; /SPI主机输出从机输出端sbit SCLK=P12; /SPI时钟端uchar RevTempDate5;/最后一位用来存放结束标志uchar code TxAddr=0x34,0x43,0x10,0x10,0x01;/发送地址/*延时函数*/void Delay(uint t) uint x,y; for(x=t;x0;x-) for(y=110;y0;y-);/*状态标志*/uchar bdata sta; /状态标志sbit RX_DR=sta6;sbit TX_DS=sta5;sbit MAX_RT=sta4;/*SPI时序函数*/uchar NRFSPI(uchar date) uchar i; for(i=0;i8;i+) / 循环8次 if(date&0x80) MOSI=1; else MOSI=0; / byte最高位输出到MOSI date=1; / 低一位移位到最高位 SCLK=1; if(MISO)=1; / 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据 date=0x01; / 读MISO到byte最低位 SCLK=0; / SCK置低 return(date); / 返回读出的一字节/*NRF24L01初始化函数*/void NRF24L01Int()Delay(2); /让系统什么都不干CE=0; /待机模式1 CSN=1; SCLK=0;IRQ=1; /*SPI读寄存器一字节函*/uchar NRFReadReg(uchar RegAddr) uchar BackDate; CSN=0; /启动时序 NRFSPI(RegAddr); /写寄存器地址 BackDate=NRFSPI(0x00); /写入读寄存器指令 CSN=1; return(BackDate); /返回状态/*SPI写寄存器一字节函数*/uchar NRFWriteReg(uchar RegAddr,uchar date) uchar BackDate; CSN=0; /启动时序 BackDate=NRFSPI(RegAddr);/写入地址 NRFSPI(date); /写入值 CSN=1; return(BackDate);/*SPI读取RXFIFO寄存器的值*/uchar NRFReadRxDate(uchar RegAddr,uchar *RxDate,uchar DateLen) /寄存器地址/写入数据存放变量/读取数据长度/用于发送 uchar BackDate,i;CSN=0;/启动时序BackDate=NRFSPI(RegAddr);/写入要读取的寄存器地址for(i=0;iDateLen;i+) /读取数据 RxDatei=NRFSPI(0); CSN=1; return(BackDate); /*SPI写入TXFIFO寄存器的值*/uchar NRFWriteTxDate(uchar RegAddr,uchar *TxDate,uchar DateLen) /寄存器地址/写入数据存放变量/读取数据长度/用于发送 uchar BackDate,i; CSN=0; BackDate=NRFSPI(RegAddr);/写入要写入寄存器的地址 for(i=0;iDateLen;i+)/写入数据 NRFSPI(*TxDate+); CSN=1; return(BackDate);/*NRF设置为发送模式并发送数据*/void NRFSetTxMode(uchar *TxDate) /发送模式 CE=0; NRFWriteTxDate(W_REGISTER+TX_ADDR,TxAddr,TX_ADDR_WITDH); /写寄存器指令+接收地址使能指令+接收地址+地址宽度NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH);/为了应答接收设备,接收通道0地址和发送地址相同NRFWriteTxDate(W_TX_PAYLOAD,TxDate,TX_DATA_WITDH);/写入数据 /*下面有关寄存器配置*/ NRFWriteReg(W_REGISTER+EN_AA,0x01); / 使能接收通道0自动应答 NRFWriteReg(W_REGISTER+EN_RXADDR,0x01); / 使能接收通道0 NRFWriteReg(W_REGISTER+SETUP_RETR,0x0a); / 自动重发延时等待250us+86us,自动重发10次 NRFWriteReg(W_REGISTER+RF_CH,0x40); / 选择射频通道0x4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管理制度的起源
- 地铁车站中立柱施工方案
- 矩形渠衬砌渠道施工方案
- 技术设备购销合同范本
- 重庆城市科技学院《坐具设计》2023-2024学年第二学期期末试卷
- 江西财经职业学院《医事争议处理法》2023-2024学年第一学期期末试卷
- 南昌航空大学《西语国家文化概况》2023-2024学年第二学期期末试卷
- 江西信息应用职业技术学院《数字逻辑基础》2023-2024学年第二学期期末试卷
- 石材幕墙维修施工方案
- 浙江工业职业技术学院《复合材料导论》2023-2024学年第二学期期末试卷
- 技术制作类科学教育活动的设计与组织指导课件
- 药事管理法律法规相关知识培训
- 地毯织造技艺(北京宫毯织造技艺)
- 第4章-选区激光熔化工艺及材料课件
- GB/T 3785.1-2023电声学声级计第1部分:规范
- 2023届高考写作指导:“寻找温暖”与“成为灯火”课件
- 2022年上海市工业技术学校招聘考试真题
- 长期护理保险技能比赛理论试题库300题(含各题型)
- 二重积分的概念与性质演示文稿
- 医院双重预防机制建设工作完成情况
- 大学生劳动教育通论知到章节答案智慧树2023年大连海洋大学
评论
0/150
提交评论