手写绘图板的设计_第1页
手写绘图板的设计_第2页
手写绘图板的设计_第3页
手写绘图板的设计_第4页
手写绘图板的设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

本科生毕业设计论文题目手写绘图板的设计姓名学号班级年级专业学院指导教师完成时间作者声明本人以信誉郑重声明所呈交的学位毕业设计(论文),是本人在指导教师指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术规范和其他侵权行为。文中引用他人的文献、数据、图件、资料均已明确标注出,不包含他人成果及为获得东华理工大学或其他教育机构的学位或证书而使用过的材料。对本设计(论文)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本毕业设计(论文)引起的法律结果完全由本人承担。本毕业设计(论文)成果归东华理工大学所有。特此声明。毕业设计(论文)作者(签字)签字日期年月日本人声明该学位论文是本人指导学生完成的研究成果,已经审阅过论文的全部内容,并能够保证题目、关键词、摘要部分中英文内容的一致性和准确性。学位论文指导教师签名年月日手写绘图板的设计DESIGNOFHANDWRITINGBOARD摘要随着科技技术的发展,输入设备在不断的更新换代。其中,我们常见的输入设备有鼠标和键盘,但对于一些输入操作用鼠标或键盘操作时可能不方便,而手写板却能完美的解决这一问题,因此手写板在输入设备领域中也做出了巨大贡献。本课题是根据全国电子设计大赛G题的设计要求而做的一个手写绘图输入设备。硬件系统以ARM控制器STM3F103C8T6作为主控核心,由覆铜板、恒流源、TFT彩屏、按键,AD620放大电路、MOS开关电路等几部分组成。其中MOS开关电路用来控制电流经过覆铜板的方向,AD620放大电路用来放大采样到的微小电压信号。软件系统主要由主程序、监控程序、底层驱动程序以及各个功能函数等几部分组成。监控程序控制功能的切换与显示输出,各功能函数主要是实现本课题的各项功能要求。由于覆铜板的电阻非常小,故采用恒流源测量小电阻的方法测量覆铜板上的小电阻。通过软件控制MOS开关电路使恒流源对覆铜板的X、Y方向分时单独供流,然后由表笔对覆铜板进行电压采样,同时把采样到的信号经放大电路放大,由处理器内置的12位AD对其进行转换,最后通过查表的算法实现覆铜板的坐标定位。有了坐标后,其它功能均能通过各种软件算法而得出。如画线画圆采用了BRESENHAM(布兰森汉姆)算法。本系统由软件控制硬件各模块谐调工作,通过软件处理最后实现了表笔接触判定、左右识别、象限识别、坐标定位、画线、画圆以及书写等功能。关键字覆铜板;恒流源;MOS开关选择;显示;STM32F103C8T6;ABSTRACTWITHTHEDEVELOPMENTOFITTECHNOLOGY,INPUTDEVICESARECONSTANTLYUPGRADINGAMONGTHEM,THECOMMONINPUTDEVICEISMOUSEANDKEYBOARD,BUTITMAYBEINCONVENIENTFORSOMEINPUTOPERATION,ANDTHEHANDWRITINGBOARDWASABLETOPERFECTLYSOLVETHISPROBLEM,SOTHEHANDWRITINGBOARDALSOMADEAGREATCONTRIBUTIONININPUTFIELDTHISTHESISISBASEDONTHENATIONALELECTRONICDESIGNCOMPETITIONGTITLEDESIGNREQUIREMENTSANDDOADRAWINGHANDWRITINGINPUTDEVICEHARDWARESYSTEMWITHSTM3F103C8T6ASTHEMASTERCONTROLLER,BYTHECOPPERBOARD,CONSTANTCURRENTSOURCE,TFTCOLORSCREEN,BUTTONS,AD620AMPLIFIERCIRCUIT,MOSSWITCHCIRCUITCOMPOSEDMOSSWITCHCIRCUITWHICHISUSEDTOCONTROLTHEDIRECTIONOFCURRENTTHROUGHTHECOPPERBOARD,AD620SMALLVOLTAGESIGNALAMPLIFICATIONCIRCUITFORAMPLIFYINGSAMPLEDSIGNSOFTWARESYSTEMCONSISTSOFTHEMAINPROGRAM,THEMONITORINGPROGRAM,THEUNDERLYINGDRIVERSANDVARIOUSFUNCTIONSMONITORINGPROGRAMCONTROLENCHFUNCTIONSANDDISPLAYOUTPUTSWITCH,EACHFUNCTIONISMAINLYAFUNCTIONOFTHEVARIOUSFUNCTIONSREQUIREDTOACHIEVETHISTOPICBECUASETHERESISTANCEOFCOPPERBOARDISVERYSMALL,SO,WEUSECONSTANTCURRENTSOURCEMEASUREMENTMETHODTOMEASURINGTHERESISTANCEONTHECOPPERBOARDMOSSWITCHINGCIRCUITCONTROLLEDBYSOFTWARESOTHATTHECONSTANTCURRENTSOURCETHROUGHCOPPERBOARDSXORYDIRECTIONSFORSHARINGASINGLESTREAM,ANDTHENUSEPENTOSAMPLEDTHEVOLTAGEOFCOPPERBOARD,WHILETHESAMPLINGSIGNALAMPLIFIEDBYTHEAMPLIFIERCIRCUIT,AFTERBYTHEPROCESSOR12BITADCONVERTTHEM,ANDFINALLYREALIZECOORDINATEPOSITIONINGCOPPERBOARDBYLOOKUPTABLEALGORITHMWITHTHECOORDINATES,THEOTHERFUNCTIONSWHICHCANCOMETHROUGHAVARIETYOFSOFTWAREALGORITHMSPICTURESQUECIRCLELINEUSESBRESENHAMALGORITHMTHESYSTEMISCONTROLLEDBYSOFTWAREANDINORDERHARDWAREMODULESWORKINHARMONYTOREALIZETHEFUNCTIONOFPENTOUCHSOFTWAREPROCESSING,ABOUTIDENTIFICATION,QUADRANTIDENTIFICATION,POSITIONINGCOORDINATES,DRAWLINES,DRAWCIRCLESANDWRITINGFUNCTIONSANDSOONKEYWORDSCOPPERBOARDCONSTANTCURRENTSOURCEMOSSWITCHDISPLAYSSTM32F103C8T6目录摘要IIIABSTRACTIII绪论3第1章系统原理与组成311系统要求312系统方案论证313系统原理组成3第2章系统硬件设计321硬件各模块的设计3第3章系统软件的设计331软件系统的组成332软件设计总体思路333主程序的设计3331处理器的资源分配3332主程序设计334监控程序的设计335AD转换程序的设计3351STM32内置AD的特性3352ADC的设计3353ADC数据的处理336接触判定程序设计337坐标定位程序设计338左右识别程序设计339象限识别程序设计3310画线功能程序设计3311画圆功能程序设计3312书写功能的实现3第4章系统调试与误差分析341系统硬件方法342软件测试3421主程序的调试3422功能程序的调试343系统误差分析3结论3致谢3参考文献3附录一原理图3附录二部分主要程序代码3绪论随着计算机技术的发展,输入设备更新换代速度非常之快,手写板亦是如此。它经历了电阻式、电磁式以及电容式三个时代。手写板同键盘和鼠标一样都是计算机输入设备,它由一支探测表笔和一块板子组成,其构造就好比画家的画板和画笔,唯一的区别是他们制作材料不同,其中手写板是由精密的电子产品制作,而画家的画板与画笔是由木头制作。在没有手写板的时候,我们都是采用鼠标代替表笔来画画,比如便用电脑里的画图软件。用它来绘画时,我们操作不是很灵活,线画的也不是很直,效果也不好,这样,一款良好的手写绘图板就很好的派上用场,让我们找到在纸上画画的感觉。当今社会上出现了很多的手写绘图板。从实现技术的角度来说,它先后经历了电阻式时代、电磁式时代以及电容式时代。它可以分为电磁式手写板、电阻式手写板和近几年出现的电容式手写板。就目前社会,电阻式手写板几乎已淘汰,电磁式手写板在前几年还是比较流行,现在的主流产品是电容式手写板,它作为市场的新力量,具有耐磨损、敏感度高、使用简便等优点。相信再过几年它也会被其它新技术取缔。这三种手写板如下1电阻式手写板,它由一固定的电阻薄和一层可变形的电阻薄膜组成,中间相隔一定距离,用空气填充。其工作原理是表笔或手指接触手写板时,上层变形电阻膜与下层固定电阻膜在接触点接触,下层电阻膜就能感应出表笔的位置。优点原理简单、工艺简单、成本低。缺点1)由于它是通过感应材料的变形才能判断位置,材料容易疲劳,使用寿命较短。2)感触不是很灵敏,如果使用时它时,若压力不够则没有感应,若压力过大时又容易损伤感应板。同时,长时间用力使用它会让人感觉很疲劳。2电磁式手写板,它是通过对手写板下方的布线通电,使其在一定空间范围内产生电磁,然后来感应带有线圈的表笔头的位置。优点性能好、手感好、使用者可以进行顺畅的书写。缺点1)对电压要求高,而且相对耗电量也大。2)电磁式感应板抗电磁干扰较差。3电容式手写板,它是通过人体的电容来感知手指所处的位置,当使用手指接触到手写板时就会在板上产生一个电容。通过电容与四周电容比可确定当前表笔接触位置。与电阻式和电磁式手写板相比而言,它表现出了更加良好的性能。轻触即可感应出位置,用手指与表笔都可以操作,使用方便。本课题以手写绘图板为研究对象,它作为2013年全国电子设计大赛G题,足矣看出它是一项科学技术上的创新,是一种新型的绘图输入设备。它采用普通的覆铜板作为输入设备,通过CPU对表笔探测到的信号进行处理以实现覆铜板的坐标定位,从而实现手写绘图的功能。本课题硬件设计上的难点在于对覆铜板上小电阻的测量,而软件的难点在于坐标定位处理上。本文主要阐述了手写绘图板的软件部分。最后设计出来的产品具有制作简单、廉价、操作简单等特点,是一款良好的输入设备。第1章系统原理与组成11系统要求利用普通的PCB覆铜板设计并制作一个手写绘图输入设备。构成框图如图1所示。其中覆铜板尺寸为15CM10CM,其四角采用普通导线连接到电路,一根连接导线的普通表笔从电路中引出。表笔可与覆铜板表面任意位置接触,电路要求能检测出表笔与铜箔的接触,并测量触点位置,进而实现手写绘图功能。图1构成框图需要完成的要求接触判定功能表笔接触铜箔表面时,给出明确显。左右识别功能表笔接触后,能判断出表笔处于覆铜板的左边还在右边。象限识别功能表笔接触后,能给出表笔位置所处象限。坐标定位功能正确显示坐标位置,坐标值的分辨率小于等于6M。画线功能能在覆铜板上实现画线功能。画圆功能10秒内完成一次画圆动作。书写功能能在覆铜板上实现任意绘图书写功能。12系统方案论证本课题归根到底可以看成是一个小电阻的测量,对此,本文讨论了如下几个方案方案一采用电阻屏的原理,用TSC2046芯片来采集数据并判断坐标,其原理图如图2所示A1B2C3D4关关关JDIN2CS3DCLK4DOUT16X6X7Y8Y9VCC5PENIRQ15BUSY1VCC114VREF13IN412IN311GND10TSC2046VCCVCCBUSYPEN_POINTDINCSCLKDOUT图2TSC2046采样原理图使用TSC2046芯片,由于它自带定位功能,故通过程序控制可实现对覆铜板定位。表笔接芯片PEN_POINT引脚,当表笔接触覆铜板时会产生一个中断,中断处理程序中使用算法可得出表笔所点的位置。但是由于覆铜板的电阻率太小,比起TSC2046用在电阻屏里的ITO材料电阻率可以忽略不计,故此方案不可采用。方案二将覆铜板看成小电阻,用测量电压变化方法实现,采用电桥法测量覆铜板上小电阻上的电压。该方案对电源和桥臂电阻精度的要求都很高,而且容易受环境因素的影响,同样,表笔接触的方式与用力的大小对电压均会造成较大的影响,很难实现,故不采用。方案三采用恒流源的方法,将覆铜板的4个角与恒流源串联,通过MOS开关电路选择性导通覆铜板的两角让恒流源电流流过,实现分时采集不同方向的压降。该方案最主要是要做出一个输出稳定的恒流源,因为覆铜板上的电阻很小,所以要求放大电路精度高且放大倍数适当。此方案电路框图如图3所示A1B2C3D4关关关U1关关关MOS关关_CBMOS关关_AD关关关关MOS关关_CBMOS关关_AD关关AD_关关图3恒流源方案图综合以上三种方案,我们选择方案三作为本系统的采样方案。13系统原理组成本系统由STM32F103C8T6主控制器、恒流源、采样模块、信号处理,按键模块与显示模块组成。首先由恒流源对覆铜板两对角分别单独供流,在任一对角通过电流时,接着采样模块通过探测表笔对覆铜板进行电压采样,把采样到的电压信号交于信号处理模块进行处理,主要是对信号进行适当的放大,再通过控制器内置的AD对信号进形转换。对转换得出的AD值通过软件算法比较与分析最后可实现接触判定、左右识别、象限识别、坐标定位、画线、画圆、书写等功能,每个功能下的显示都由程序同步实现。系统框图如图4所示图4系统框图第2章系统硬件设计21硬件各模块的设计1主控电路的设计本系统采用STM32F103C8T6作为主控制器,它内含两个12位逐次逼近型ADC,64KB的FLASH,20KB的SRAM,具有72MHZ的高工作频率,各项配置均符合本设计要求,由其构成的最小系统电路图见附录一。2恒流源的设计采用TL431与LM358构成恒流源,输出约500MA。TL431主要作用是为LM358提供一个基准电压,可通过调节滑动变阻器R6使得LM358A的3号引脚的电压稳在9V左右,因此R9上能得到稳定的3V压降,使得电路恒定输出大小为500MA的电流。图中LM358A与B构成恒流源,能根据负载大小自动调节,使电流输出稳定。其原理图见附录一。3MOS开关电路的设计采用P沟道的IRF9640和N沟道的IRFSZ44A作为MOS开关元件,由于处理器输出电位为33V,不足以驱动MOS的开启,故增加了三极管驱动电路驱动12V来开启MOS管。其中电路图中A_SEL端接主控器的GPIOB3,作为一个电流通断控制使能位,这样可以节省系统的功耗,当它为高电平时,三极管Q7导通,于是MOS管Q5的栅极被拉低,该MOS的源极比栅极约高9V,MOS导通,电流流向覆铜板。反之则电流切断,不能流向覆铜板。当AD_SAMPLE为高、BC_SAMPLE为低时Q10、Q4导通、Q3、Q11截止,电流从A处进,与此同时Q6、Q9导通,Q8、Q12截止,电流可从D口出来,再经AD620,达到覆铜板AD方向通电流的目的。当两控制脚电位各发生改变时,则电流从C进B出,达到CB通电流的目的。总之,当AD_SAMPLE为高、BC_SAMPLE为低时,AD通电流;AD_SAMPLE为低、BC_SAMPLE为高时,CB通电流。MOS开关电路见附录一。4放大电路的设计采用集成芯片AD620接成差分放大模式,这样有效的减少了共模对输出的影响。同向端接表笔,反向端接MOS开关电路中的AD620端(等效地)。其有放大公式如下所示放大电路原理图见附录一。5电源模块的设计本系统中用到了12V、5V、5V、33V四种直流电压,其中12V由220V交流经桥氏整流滤波后由电压集成芯片7812转换而得。5V由12V经7805转换得到,5V由5V经ICL7660芯片转换得出,33V由5V经AM1117得到。电路原理图见附录一。6显示模块的设计本系统采用18寸的TFT彩屏作出显示输出设备,由于它的显示是对像素点的操作,恰好与本课题中的坐标能一一对应,在实现各功能上较易实现且人机交换界面美观。它的接口是一个20PIN的排针,故把20PIN引脚分别对应的接到处理器的IO口或电源与地即可组成显示电路,通过软件驱动可显示出各功能的显示效果。接口电路如下图5所示。NC1VCC2NC3CS4RS5RST6D07D18D29D310D411D512D613D714RD15WR16CS17NC18VCC19GND206TFTLCD_CSLCD_RSLCD_WRLCD_RDLCD_CSLCD_RSTD0D1D2D3D4D5D6D75V5VGND图5显示接口电路7按键的设计本课题中使用了两个按键,一个为功能切换键,另一个为功能执行键。均采用上拉的方法。键未按下时,处理器端口读到的值为1,处之刚为0,其电路由下图6所示。33VR151KKEY_INS1关关关关关33VR151KKEY_IN2S2关关关关关图6按键电路第3章系统软件的设计31软件系统的组成手写绘图板的软件主要由主程序、AD采集程序、监控程序、显示程序和功能实现算法程序组成。AD采集程序是对覆铜板上压降的采集与转换;显示程序主要是对各项功能完成显示,同时还为本设计提供显示主界面,提供人机交互功能;监控程序是完成整个手写绘图软件合理的正常运行,在程序中它起到监控与控制作用。功能算法程序主要是实现各功能。如图7是系统软件的组成。图7系统软件组成图软件部分都是采用C语言编写,由主程序调用各个功能子函数模块以实现手写绘图板的功能需求。监控程序起到功能切换作用,它是由按键程序实现。32软件设计总体思路软件部分主要由按键处理、AD采集、TFT驱动、坐标处理、左右识别处理、象限识别处理、画线GPIOA_PIN_1功能切换键输入端GPIOA_PIN_2功能执行键输入端GPIOA_PIN_8TFT彩屏读控制(LCD_RD)GPIOA_PIN_11TFT彩屏写控制(LCD_WR)GPIOB_PIN_0TFT彩屏复位(LCD_RST)GPIOB_PIN_1TFT彩屏片选控制位(LCD_CS)GPIOB_PIN_2TFT彩屏数据/命令制位(LCD_RS)GPIOB_PIN_3MOS选择电路中电流全能位(CURRENT_EN)GPIOB_PIN_4MOS选择电路中覆铜板AD方向控制位(AD_SAMPLE)GPIOB_PIN_5MOS选择电路中覆铜板CB方向控制位(CB_SAMPLE)GPIOB_PIN_8GPIOB_PIN_15TFT彩屏8位数据通道(LCD_DATA)332主程序设计主程序的功能主要是对变量、GPIO口、ADC、彩屏等进行初始化,同时,在初始化后,立即显示出系统主界面,提供交互界面。主界面效果图如图8所示。显示主界后进入一个死循环,在循环中,内含监控程序与AD采集,监控程序对功能号进行判断,当有按键按下,刚进功能切换,进而执行相应的功能子程序,主程序流程图如下图9所示。主程序源代码见附录二。图8主界面效果图图9主程序流程图34监控程序的设计本程序中,通过对按键电路中KEY_IN(GPIOA_PIN_1)脚状态不断的扫描,若有键按下,则对按键值进行加1处理,当按键值大于5时,重新初始始按键值为0,实现7个功能的循环转换。其中,按电路如图10所示S1KEY关关关关关33VR151KKEY_IN图10按键电路常见的按键代码编写均有去抖动处理,即,若有键按下时,稍作延时然后再判断是否有键按下。由于按键一直按下的话,按键值则会一直执行1处理,想要得到一个稳定的按键功能值要多次偿试才能得到,因此,按键动作一次只作一次1处理成为本程序实现的重点。下面有两种处理方法方法1通过判松键的方法来实现按键动作一次只作一次加处理,但是这样做对程序的实时性有很大的影响,如在键一直按下时,程序在做一个死程序,即等待按键松开,这样,严重影响了程序运行时间,因此,此方法不作考虑。方法2按键处理中增加了一个标志位,用其与当前读键状态两者综合可实现每按一次键只作一次处理且按键是否松开没影响。达到的高效快速的效果。其实现代码如下VOIDKEY_PROVOIDIFGPIO_READINPUTDATABITGPIOA,GPIO_PIN_1/去抖处理IFGPIO_READINPUTDATABITGPIOA,GPIO_PIN_1/有键按下,标志赋1KEY_VALUE/功能号1IFKEY_VALUE6KEY_VALUE0/总共7个功能,若键值超过6,恢复为0IFGPIO_READINPUTDATABITGPIOA,GPIO_PIN_1KEY_MARK0/没按下,标志为0当读按键端口的为0时表示有键按下,立即把标志位改为1,若此键不松,再键键按下时,即使读到的端口值为0,但标志位值已改变,判键处理是认为不成立的,这样就可跳过按键值1处理。有效的避免了按键值持续的加1处理。当按键松开时,读到铵键端口值为1,立即把标志位赋,为下次按键作准备。这样处理,能够做到只作一次处理与一直不松键时占用CPU时间,且不影响其它程序的正常运行,恰到好处。35AD转换程序的设计351STM32内置AD的特性它是一个12位的逐次逼型AD模拟数字转换,其转换时钟速度最高可达14MHZ,可过编程控制采样时间。固定转换时间为125个时钟,最快输出数据速率可达1MHZ(包括信号采样时间和转换时间)。有18个通道供ADC使用,与GPIO引脚功能复用,其引脚共用表如下表所示。ADC1ADC2ADC3ADC1ADC2ADC3通道0PA0PA0PA0通道9PB1PB1通道1PA1PA1PA1通道10PC0PC0PC0通道2PA2PA2PA2通道11PC1PC1PC1通道3PA3PA3PA3通道12PC2PC2PC2通道4PA4PA4PF6通道13PC3PC3PC3通道5PA5PA5PF7通道14PC4PC4通道6PA6PA6PF8通道15PC5PC5通道7PA7PA7PF9通道16温度传感器通道8PB0PB0PF10通道17内部参照电压各通道的A/D转换可以设置为扫描、连续、单次或间断模式运行。结果可采用左边对齐或右对齐方式保存。它的主要特征有12位的分辨率、具有单次和连续转换模式、转换结束或注入转换结束或发生模拟看门狗事件时产生中断、自带校准、通道0到通道N的自扫描模式、内嵌数据一致的数据对齐、通道间采样间隔可编程控制、ADC转换速率1MHZ、规则转换和注入转换均有外部触发选项、间断模式、带2个ADC的器件可用双重模式、ADC供电要求24V到36V、ADC输入范围VREFVINVREF、规则通道转换期间有DMA请求产生。352ADC的设计本设计使用内置ADC1。采用通道0(GPIOA_PIN_0)作为采样输入口,工作于独立模式,并规定模数转换工作在扫描模式和单次转换模式,数据以右对齐方式对齐。由于它的参考电压为33V,而覆铜采集的电压很小,因此放大器所放大后的最大采集电压要求低于33V,经硬件设计,我们可以调节使得最大采集后电压放大为2V左右,因此我们每次采集的结果在02483范围内。我们采用主程序对ADC初始化并使能它,但不开启ADC转换。初始化流程如下图11所示图11ADC初始化流程图初始化代码如下所示VOIDADC1_CONFIGVOIDADC_INITTYPEDEFADC_INITSTRUCTURE/定义ADC结构体RCC_APB2PERIPHCLOCKCMDRCC_APB2PERIPH_ADC1,ENABLE/使能ADC1时钟ADC_DEINITADC1/复位ADC1,将外设ADC1的全部寄存器重设为缺省值ADC_INITSTRUCTUREADC_MODEADC_MODE_INDEPENDENT/ADC1工作在独立模式ADC_INITSTRUCTUREADC_SCANCONVMODEDISABLE/模数转换工作在非扫描模式ADC_INITSTRUCTUREADC_CONTINUOUSCONVMODEDISABLE/模数转换工作在单次模式ADC_INITSTRUCTUREADC_EXTERNALTRIGCONVADC_EXTERNALTRIGCONV_NONE/转换由软件而不是外部触发启动ADC_INITSTRUCTUREADC_DATAALIGNADC_DATAALIGN_RIGHT/ADC数据右对齐ADC_INITSTRUCTUREADC_NBROFCHANNEL1/转换的ADC通道的数目为1ADC_INITADC1,/把以上参数初始化ADC_INITSTRUCTUREADC_CMDADC1,ENABLE/使能ADC1/重置ADC1的校准寄存器/ADC_RESETCALIBRATIONADC1/获取ADC重置校准寄存器的状态/WHILEADC_GETRESETCALIBRATIONSTATUSADC1ADC_STARTCALIBRATIONADC1/开始校准ADC1/WHILEADC_GETCALIBRATIONSTATUSADC1/等待校准完成353ADC数据的处理ADC数据处理程序中,我们采用平均值滤波的方法对其滤波,即读取10个AD值去除最大值与最小值再求平均的方法。由于整个课题我们只是对AD值比较,故不需把AD值换算成电压显示。每读一个AD值前,都对ADC1开启转换,待转换结束后读出AD值。采用右移3位处理来求平均值,这样省去了除法运算,有效的节省程序执行时间,能提高系统软件的工作效率,为后续画圆功能在10内完成打下基础。其程序设计流程如图12所示图12ADC数据处理流程图ADC数据处理程序源代码如下所示UINTADC_FILTERVOIDVU16ADC_VALUE0FORADC_SAMPLE_CNT0ADC_SAMPLE_CNTADC_VALUE_MAXADC_VALUE_MAXADC_DATAADC_VALUEADC_DATAIFADC_SAMPLE_CNT9ADC_VALUEADC_VALUE_MIN/去最小值ADC_VALUEADC_VALUE_MAX/去最大值ADC_VALUE3/求平均值ADC_VALUE_MAX0ADC_VALUE_MIN0RETURNADC_VALUE36接触判定程序设计由于主程序设计中,AD是一直处理采集模式下,若表笔没有与覆铜板接触时,这时AD所转换得到的AD值很大,当表笔与覆铜板接触时,表笔采集到的AD会明显下降很多,我们通过一个临界值作为比较来区分表笔的接触与否,若AD值高于这个临界值时,则判定表笔没有接触,反之则接触。这样做存在一定的误差,但总体来说,能实现本课题中所有功能。功能实现源代码见附录二。37坐标定位程序设计本功能程序设计前,我们首先对覆铜板AD方向单独通电流,然后运用AD采集函数对覆铜板进行采样。在X轴方向从左到右依次间隔5MS采集一次AD集,每采集一次AD值并按顺序记录下来,由于X方向长为15CM,故有30个数据,我们把这30个数据保存于X_SAMPLE_VALUE30中。同理,对CB方向单独通电流,从下到上采集出Y方向20个数据保存于Y_SAMPLE_VALUE20中。做好这项工作后,接下来就是坐标的软件设计。由于本系统硬件部分采用了MOS开关换流控制电路,因此,确定一点的坐标需分2步实现。第一步,确定X轴位置,首先通过主控器控制覆铜板AD方向通电流,然后判断表笔是否接触,若接触,进行AD采样,采集到的值是X方向压降,通过循环查询事先对X方向每5MM采集所保存下来的X_SAMPLE_VALUE30数组,若第I次所查询到的值与采样值相差在一定的范围内时,我们就认为I为该点的横坐标。第二步,确定Y轴位置,控制覆铜板CB方向通电流,再判表笔是否接触,若接触,用同样的方法可以得出J为纵坐标。程序设计流程如右图13所示。彩屏上对点位置的显示方法由于我们是采用屏上一部分代替覆铜板的外形大小,它是一块为12080相素区域,由于覆铜板横向30点,因此相素跨度为4,所以我们得到的坐标要乘以4再送给TFT显示点函数,同样,纵向也是如此。这样算后的坐标为我们在彩屏上像素坐标,调用亮点驱动函数点亮该相素点即可。彩屏上显示覆铜板的坐标值方法由于程序上所得到的坐标值为0开始的坐标,没有负坐标,因此,我们采用换算的方法实现由于为5MM为精度,因此横向具有15CM/5MM30个值,所得到的值X15就为横坐标的坐标值,纵坐标亦是如此,Y10就是纵坐标值。把这两个值通过彩屏写字符函数在屏幕上显示出来。本功能程序代码见附录二。图13坐标定位程序流程图38左右识别程序设计思路为了区别左右,我们需要一个临界值作比较,本程序取覆铜板中心位置的X坐标值作为临界值,通过对表笔X方向坐标值与X方向中心坐标值的比较从而实现左右判定的功能。由于坐标是从左到右依次从029,故理想中心X坐标为15,若值大于15,则接触点为覆铜板右边,反之为左边。相等则认为在Y轴上,本课题中对此暂不作考虑。程序设计首先用表笔接触覆铜板中心位置,调用坐标功能把中心位置的坐标保存于X_CENTER_VALUE,Y_CENTER_VALUE中,然后再把表笔接触所需判定的位置。采集得出所要判断点的坐标值,若X方向坐标值大于X_CENTER_VALUE,则该点位于右边,反之则该点位置左边。左右功能程序设计中,出于要判定的只有左与右,故我们只作了两次判定处理,若需要进行第三次判定接触点位置,刚需重新对中心位置坐标事先处理。然后才可进行第三次与第四次判定。具体流程如图14所示上述程序设计中,实际操作分为三步第一步表笔接触覆铜板中心位置,第二步是判定下一点要知道的接触点位置图14左右识别程序流程图,第三次同第二步。若想进行多点判定,则操作过程重复这三步即可。程序完成需要表笔对覆铜板接触三次,否则程序不会退出。本功能程序代码见附录二。39象限识别程序设计思路为了区别四个象限,我们采用原点坐标值与当前判定点的坐标值比较的方法来实现。当表笔X方向坐标值比X原点坐标值大时,则象限位于1或4象限,与此同时再比较Y方向坐标值以确定具体象限,当Y方向坐标值大于Y坐标原点值时,刚该点位于1象限,反之位于4象限。同理,当表笔X方向坐标值比X原点坐标值小时,刚象限位于2或3象限,与此同时,当Y方向坐标值大于Y坐标原点值时,刚该点位于2象限,反之位于3象限。程序设计首先用表笔接触覆铜板中心位置,调用坐标功能函数把中心位置的坐标保存于X_CENTER_VALUE,Y_CENTER_VALUE中,然后再把表笔接触所需判定的位置。采集得出所要判断点的坐标值,若X方向坐标值大于X_CENTER_VALUE,同时,若Y方向的坐标值大于Y_CENTER_VALUE则该点位于1象限,若Y方向的坐标值小于Y_CENTER_VALUE则该点位于4象限,同样的方法可判定当前接触点的位置是位于2象限还是3象限。本功能程序的程序设计流程如图15所示。图15象限识别程序流程图本功能程序设计与左右功能程序设计一样,唯一区别是操作分五步,即第一步为表笔接触覆铜板的中心点,第二至第五步为确定四次象限,依次循环。310画线功能程序设计画线原理本设计中画线采用BRESENHAM算法实现,即两点确定一线,它是根据直线的斜率来确定或选择变量在X递增1个单位时,Y方向的递增是0还是1,它取决于理想直线与最近网格点位置的距离。这一距离称为“偏差”。若所求直线的斜率大于1/2,则它与Y方向较近,Y方向的递增则为1。如果直线小于1/2,则正好相反且Y方向的递增值为0。假设偏差项的初值为05,这样假设方便斜率与05的比较,如果直线的斜率比05大,那么斜率加上偏差值的结果大于0,则Y方向递增是1,反之,Y方向递增是0。对于偏差项的计算,它有一个固定的公式(BRESENHAM偏差判别式)EEK,其中E为偏差项,K为两点所确定的直线斜率。当偏差项1时,必须将它减去1,以始终保证误差项在01之间。它的算法的流程图如图16所示。图16BRESENHAM画线流程图图17画线功能程序流程图本功能程序中,首先通过求坐标函数得到起点坐标(X1,Y1)和终点坐标(X2,Y2),然后比较X2X1与Y2Y1的大小。如果X2X1为0时,则直接以Y起点到终点依次加1作为Y坐标,X坐标为X1,直接调用画点函数即可画出一条平行Y轴的直线。同理,Y2Y1为0时,画平行X轴方向的直线程序设计也一样。如果X2X1与Y2Y1均不为0时,采用BRESENHAM算法绘制直线,画线功能实现程序设计流程图如上图17所示。311画圆功能程序设计画圆的算法与画线一样,首先通过求坐标函数把前后两点坐标得出,我们以第一点坐标作为圆的中心,第二点与第一点之间的距离作为半径R,然后再通过中心画圆法画出一个圆。由于圆的方程为XXYYRR,同画线算法一样,通过比较横坐标与纵坐标的大小,来确定下一点X、Y的坐标。方法同画线,只不过比较是在圆内还是圆外。采用1/8画圆的方法,利用对称实现完整圆的绘制。通过这样算法,我们就得到了从起点到终点的所有坐标,每得到一个坐标时,对称就得到了8个坐标,我们都将这些坐标显示出来,当1/8圆算法完结束时,我们彩屏上对应的圆也显示出来了。本设计中,画圆的软件设计流程如图18所示图18画圆程序流程图图19书写功能程序流程图312书写功能的实现书写功能程序作为本设计中,可以说是最容易实现的。采用求坐标函数,每采集到一个坐标,彩屏上就把对应的坐标显示出来,考滤到是书写,因此笔提起时,就得退出书写,以此作为循环条件,若表笔接触覆铜板,执行书写,AD求坐标进行死循环,每得到一个坐标就对应的显示该点,从而达到连续书写功能,若表笔一提起,死循环条件不满足,刚退出书写。功能程序设计流程如上图图19所示。程序代码见附录二。第4章系统调试与误差分析41系统硬件方法硬件的测试分模块进行测试,首先对恒流源电路测试,我们采用实验室6位半高精度万用表测量其电流值,主要通过改变负载的大小观看电流是否会发生改变来验证恒流源工作是否正常。对于MOS开关电路测试,我们外接33V压给AD_SAMPLE,0V电压给CB_SAMPLE脚,然后用万用表的二极管档测MOS管Q4的S极与MOS管Q6的D极是否导通(也就是AD方向),若导通,万用表测会发出响声,同理可测出CB方向选择导通情况。对于放大电路测试,我们给一个MV级别的电压经AD放大电路,然后用万用表测其输出电压,若输出电压比上输入电压大约为电路所放大的倍数,测电路正常。42软件测试软件调试的主要方法是使用JLINK使程序在硬件电路在线调试或直接把程序下载到处理器中观看效果,在这一调试过程中及时发现错误并对软件的错误的地方进行修改。本课题的程序设计是分模块进行的,故调试也采用这种方式进行。当每一个模块分别调试成功后,最后将他们融合在一起进行综合调试,使各个程序块之间能够协调工作,互不干扰。421主程序的调试该部分调试主要是看主程序中监控程序中变量改变后程序能否正确的调用相应的功能函数。在此,我们发现了一个问题当按键值改变后,程序进入了相应的功能部分中,但是再按键,功能值不能改变,程序一直停在此功能中。原因分析由于程序中,我们每个功能程序前面都有一个判接触,若表笔没接触则一直等待笔表接触,而我们功能程序结束后,若功能没切换则又会重新回到该功能,因此进入了一个等待接触死循环。我们再按键的话是起不了作用。解决办法采用一个执行按键,当功能切换键按下后,必须按了执行键后才能执行相应的功能子函数,且该功能有且只能执行一次,若要再次执行需再次按下执行键。程序设计方法同监控程序中按键处理。我们以功能1即左右识别程序为例,修改后代码如下CASE1IFGPIO_READINPUTDATABITGPIOA,GPIO_PIN_2/去抖处理IFGPIO_READINPUTDATABITGPIOA,GPIO_PIN_2/有键按下,执行标志赋1LEFT_RIGHT/执行左右功能函数IFGPIO_READINPUTDATABITGPIOA,GPIO_PIN_1EXCUTE_MARK0/没按下,执行标志为0BREAK422功能程序的调试对每个功能调试时,屏蔽其它功能只让本功能单独工作,按照程序流程操作,例如左右功能程序,我们先用表笔接触覆铜板中心,然后再用表笔接触其它位置,若彩屏上能给出正确的显示,则该功能正确。同理,其它功能程序调试也一样。在出现发问题,我采用的是JLINK对程序调试,查看程序变量变化或程序是否卡在一处停止了,然后根据出现的问题修改代码,从而实现各功能。43系统误差分析1)由于MOS管开关电路是使覆铜板的对角方向导通而不是真正的X、Y方向,因此电流经过时覆铜板的电场分布不均,采样会存在误差,影响坐标的定位。2)恒流源不是很稳定,输出存在抖动,影响AD的采集准备性。3)坐标定位算法中,采用了查表比较,若差值在一定范围内时则认识为该点,这样做是一种估计,导致误差产生。结论经过一个多月的初期准备,两个多礼拜的日夜奋战,在自己努力与同学的帮助下,完成了手写绘图板这一课题的硬件与软件设计工作。本课题的软件设计涉及STM32其本IO口的配置使用、ADC的转换以及TFT彩屏驱动等功能的程序设计与使用。硬件涉及了恒流源测测小电阻。本次课题虽然功能均做出来了,但存在许多问题,例如1)在执行左右识别功能时要每三次表笔接触覆铜板才能执行完本功能,否则不能切换功能;2)必须按下执行键时才能执行相应的功能且每执行一次功能后还得再按一次执行键才能继续本功能,做不到功能执续运行。这些存在的问题在今后自己还会去改善它。通过这次毕业设计,让我又一次加深了对C语言、单片机、STM32以及数字电路,模拟电路等专业知识理解。对PROTEL99SE画板软件以及AUTOCAD制图软件有了更熟练的撑握。我们能够在短时间内完成课题的设计与调试,很大程度上是得到了李跃忠老师的大力支持,他提出了很多关于手写绘图板信号采集方案,对放大电路等选择提供了宝贵意见。本课题做完后它最后具备的主要功能有1)能判断表笔与覆铜板是否接触;2)对表笔接触覆铜板左右能给出判断;3)能对表笔所接触的位置进行象限识别;4)具有覆铜板坐标定位功能且精度为5MM;5)能在覆铜板实现两点画线;6)能在覆铜板实现两点画圆;7)能在覆铜板上实现任意书写且彩屏同步其轨迹功能。本设计中存在许多的不足之处,它还有很大改进和完善的空间,特别是部分功能的程序算法与编写方法上有诸多不足,望各位老师与同学给予指正。致谢厉经一个多月的时间,终于把这篇论文写完,在论文的写作过程中遇到了很多的问题,在老师和同学们的帮助下,所有问题均完美的解决。首先,在课题采样方案选择上,远在深圳实习的我把自己临时想到的一个方案与我的论文指导老师李跃忠老师进行了沟通,它提出了此方案的不足之处与用途,最后尽管该方案没有采用,但是老师能百忙中抽出时间与我进行讨论,我对此表示非常感觉。在我把方案定好与原理图画出来时,他又对我进行了无私的指导和帮助;在论文修改与改进方面,他同样给了我很大的帮助;对于工作方便,他同样对我提供了很多建议与帮助,对于能有这样的一位优秀的指导老师指导我,我表示非常的荣幸,非常感谢您。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。最后感谢这篇论文中所涉及到的各位学者,如果没有各位的研究成果,我也很难完成本篇论文。由于水平有限,所写论文中难免有不足之处,恳请各位老师和学友批评和指正。参考文献1陈志旺等STM32嵌入式微控制器快速上手M,2012,电子工业出版社2黄智伟等ARM微控制器应用设计与实践M,2012,北京航空航天大学出版社3ARMCORTESM3TECHNICALREFERONCEMANUAL,2005,ARMLIMITEDCORP4谭浩强C程序设计M,1991,清华大学出版社5GYTF018LB35B0MDATASHEET,2008,SHENGZHENGUANGYUANTECHNOLOGYCO,LTD6ICL7660,ICL7660ADATASHEET,2005,INTERSILAMERICASINC7马建国等电子系统设计M,2004,高等教育出版社8谭志中等电阻网络模型M,2008,西安电子科技大学出版社9于海生等计算机控制技术M,2007,机械工业出版社10周航慈等智能仪器原理与设计M2005,北京航空航天大学出版社11童诗白等模拟电子技术基础第三版M,2001,高等教育出版社附录一原理图最小系统VBAT1VSS_123VSS_235VSS_347VSSA8VDD_124VDD_236VDD_348VDDA9PB0/ADC_IN8/TIM3_CH318PB1/ADC_IN9/TIM3_CH419PB2/BOOT120PB3/JTD0/TIM2_CH2/SPI1_SCK39PB4/JRST/TIM3_CH1/SPI1_MISO40PB5/TIM3_CH2/SPI1_MOSI41PB6/I2C1_SCL/TIM4_CH1/USART1_TX42PB7/I2C1_SDA/TIM4_CH2/USART1_RX43PB8/TIM4_CH3/I2C1_SCL/CANRX45PB9/TIM4_CH4/I2C1_SDA/CANTX46PB10/I2C2_SCL/USART3_TX/TIM1_CH321PB11/I2C2_SDA/USART3_RX/TIM2_CH422PB12/SPI2_NSS/I2C2_SMBA/USART3_CK/TIMI_BKIN25PB13/SPI2_SCK/USART3_CTS/TIMI_CH1N26PB14/SPI2_MISO/USART3_RTS/TIMI_CH2N27PB15/SPI2_MOSI/TIMI_CH3N28PA0/WKUP/USART2_STS/ADC_IN0/TIM2_CH1_ETR10PA1/USART2_RTS/ADC_IN1/TIM2_CH211PA2/USART2_TX/ADC_IN2/TIM2_CH312PA3/USART2_RX/ADC_IN3/TIM2_CH413PA4/SPI1_NSS/USART2_CK/ADC_IN414PA5/SPI1_SCK/ADC_IN515PA6/SPI1_MISO/ADC_IN6/TIM3_CH116PA7/SPI1_MOSI/ADC_IN7/TIM3_CH217PA8/USART1_CK/TIM1_CH1/MCO29PA9/USART1_TX/TIM1_CH230PA10/USART1_RX/TIM1_CH331PA11/USART1_CTS/USBDM/CANRX/TIM1_CH432PA12/USART1_RTS/USBDP/CANTX/TIM1_ETR33PA13/JTMS_SWDAT34PA14/TCK_SWCLK37PA15/TDI/TIM2_CH1/SPI1_NSS38PC13/TAMPER_RTC2PC14/OSC32_IN3PC15/OSC32_OUT4PD0/OSC_IN5PD1/OSC_OUT6BOOT044NRST7U1STM32F103C8T6X132768X280MHZC1510PC1610PC1722PC2122PC2010UFS

温馨提示

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

评论

0/150

提交评论