本科毕业设计报告书--基于单片机的电子指南针设计_第1页
本科毕业设计报告书--基于单片机的电子指南针设计_第2页
本科毕业设计报告书--基于单片机的电子指南针设计_第3页
本科毕业设计报告书--基于单片机的电子指南针设计_第4页
本科毕业设计报告书--基于单片机的电子指南针设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、 学科分类号 0806 本科生毕业设计报告书题目(中文): 基于单片机的电子指南针设计 (英文): The Design of Electronic Compass Based on MCU 学生姓名: 学号: 系别:物理与信息工程系 专业:通信工程 指导教师: 起止日期:2011年12月2012年5月2012年5月18日怀化学院本科毕业设计报告书诚信声明作者郑重声明:所呈交的本科毕业设计,是在指导老师的指导下,独立进行研究所取得的成果,成果不存在知识产权争议。除文中已经注明引用的内容外,报告书中不含任何其他个人或集体已经发表或撰写过的成果。对毕业设计做出重要贡献的个人和集体均已在文中以明确的

2、方式标明。本声明的法律结果由作者承担。本科毕业设计报告书作者签名:年 月 日目 录摘要 关键词 Abstract Key words1 引言 12 系统总体方案设计 32.1系统总体框图 32.2 信号采集处理的原理 43 硬件电路设计 73.1 主控电路 73.2 串口通信电路 103.3 指南针模块和接口电路 113.4 实时时钟电路 143.5 液晶显示电路 153.6 按键输入电路 164 软件设计 174.1 主监控程序 174.2 实时时钟驱动 184.3 人机界面驱动 194.3.1 液晶模块驱到 194.3.2 键盘驱动 194.4指南针模块驱动 195 测试结果 206 总结

3、 21参考文献 22致 谢 23附 录 24基于单片机的电子指南针设计摘 要指南针是我国的四大发明之一,早期的指南针采用了磁化指针和方位盘的组合方式,这样的指南针携带起来很不方便,且指示灵敏度上有一定不足,准确性很差。本文通过对电子指南针基本工作原理的研究分析,采用磁阻(GMR)传感器采集某一方向磁场强度,然后通过MCU控制器对其进行处理并显示上传,达到了显示当前所指方向的目的。实际测试指南针模块精度达到1°,能够在LCD上显示当前方位,并能通过键盘控制上传数据到上位机。这样的指南针精度更高,更智能,在大大提高了精度的同时,也降低了成本和设计难度。关键词电子指南针;磁阻传感器;单片机

4、;液晶显示器The Design of Electronic Compass Based on MCUAbstractOne of the China's four great inventions is a compass, early compass pointer and orientation using magnetic disk combination, it is not convenient to carry such a compass. and instructions to have insufficient sensitivity and accuracy is

5、 poor. This article through to the electronic compass basic on working principle of research and analysis, using magnetic resistance (GMR) sensors to collect a certain direction magnetic field intensity, and then through the MCU controller for the treatment and display the upload to display the curr

6、ent pointed direction of purpose. The actual test compass module, up to 1 ° accuracy, it can be displayed on LCD and the current position, and through the keyboard control upload data to the PC. Such a compass not only higher accuracy, more intelligent, greatly improving the accuracy, but also

7、reduce the cost and difficulty of design.Key wordsElectronic Compass; GMR; MCU; LCD1引言指南针是用以判别方位的一种简单仪器,又称指北针。指南针的前身是中国古代四大发明之一的司南。主要组成部分是一根装在轴上可以自由转动的磁针。磁针在地磁场作用下能保持在磁子午线的切线方向上。磁针的北极指向地理的北极,利用这一性能可以辨别方向。中国是世界上公认发明指南针的国家。指南针的发明是我国汉族劳动人民在长期的实践中对物体磁性认识的结果。由于生产劳动,人们接触了磁铁矿,开始了对磁性质的了解。人们首先发现了磁石吸引铁的性质,后来又

8、发现了磁石的指向性。经过多方面的实验和研究,终于发明了实用的指南针。最早的指南针是用天然磁体做成的,据古书记载,远在春秋战国时期,由于正处在奴隶制社会向封建社会过渡的大变革时期,生产力有了很大的发展,特别是农业生产更是兴盛发达,因而促使了采矿业、冶炼业的发展。在长期的生产实践中,人们从铁矿石中认识了磁石。它是用天然磁石制成的。样子象一把汤勺,圆底,可以放在平滑的“地盘”上并保持平衡,且可以自由旋转。当它静止的时候,勺柄就会指向南方。古人称它为“司南”。司南由青铜盘和天然磁体制成的磁勺组成,青铜盘上刻有二十四向,置磁勺于盘中心圆面上,静止时,勺尾指向为南。但司南也有许多缺陷,天然磁体不易找到,在

9、加工时容易因打击、受热而失磁。所以司南的磁性比较弱,而且它与地盘接触处要非常光滑,否则会因转动摩擦阻力过大,而难于旋转,无法达到预期的指南效果。而且司南有一定的体积和重量,携带很不方便,使得司南长期未得到广泛应用。随着人们对指南针原理认识的不断深入,指南针也由先前笨重的“司南”发展到现在的便携式的指南针。但其基本构造是没有改变的,都是属于机械的指针式,其指示的机械结构基本上没有改变,都是利用某种支撑使得磁针能够受到地磁场的影响而自由的旋转。由于机械的先天因素导致了指针式指南针在便携性、灵敏度、精度以及使用寿命上都有一定的限制。由于国内外电子技术的飞速发展,特别是在磁传感器和专用芯片(ASIC)

10、上的发展使能指南针的基本实现机理有了质的改变,不再是机械结构而采用了磁场传感器和专用处理器对磁场进行测量和处理后指示方向,这就是当前应用较为广泛的电子式指南针。电子指南针全部采用固态元件,可以用简单的方法与其它电子系统进行连接,完成新产品的开发。电子指南针具有体积小、精度高、稳定性好等特点,因为它的这些优异性,在工业、军事、生活等领域都有着广泛的应用,并且它可以替代旧式的针式指南针或罗盘式指南针。本课题针对电子指南针的各个功能部件对电子指南针的关键部分做了详细的研究。采用单片机做为系统的核心控制芯片,而单片机的接口是数字信号的,想要它能够处理地球的磁场状况,必须要把磁场信号转化成电信号(电压或

11、电流),然后经过模数转换,把模拟的电信号转化成单片机可以处理的数字信号。把所得的数字信息通过主控制器进行处理,然后用人机界面表现出来,供我们来读取和应用。电子指南针系统是一个典型的单片机系统,了解其工作原理及其信号处理流程有利于研究更加复杂的嵌入式系统,特别是系统中采用进口的磁传感器及其相关信号的采集芯片更是有利于研究磁场传感器的实现机理,以便将其更加广泛的应用。2 系统总体方案设计2.1 系统总体框图本系统采用磁阻(GMR)传感器采集磁场强度,然后把磁场强度转换成数字量,单片机再对这些数字量进行处理,最后将处理得到的结果进行显示。电子指南针的系统主要由前端磁阻传感器、磁场测量专用转换芯片、单

12、片控制器、辅助扩展电路、键盘、显示模块以及系统电源几个部分组成1,系统结构如图2.1所示。整个系统中前端的磁阻传感器负责测量地磁场的大小并将磁场的变化转化为微弱的电流的变化,专用的磁场测量芯片负责把磁阻传感器变化的电流(模拟量)转换成微控制器可以识别的数字量,然后将该数字信号即采集到的数据通过SPI总线上传给微控制器。微控制器将表征当前磁场大小的数字量按照方位进行归一化等处理后通过直观的LCD进行方位显示,同时可以通过键盘控制微控制器进行相应的操作,如将转换后的数据通过串口的形式发送到上位机。整个系统中还包含了实时时钟等一些辅助电路,使整个系统功能得到进一步的扩展,这使得电子指南针更具备实用价

13、值。电子指南针包含如下功能: 精确地显示所指的方向。 可以测量到的方向信息形象地显示在LCD液晶屏上。 可以通过按键对电子指南针进行实际的操作。 可将测量到的方向数据上传到PC上。 可以显示实时时间,更便于应用。2.2 信号采集处理的原理图 2.2 前端信号采集该部分主要完成对地磁场的测量、A/D转换以及对数据的封包。整个前端的信号处理流程如图2.2所示。整个磁阻传感器是系统中最前端的信号测量器件,传统的磁场测量都是采用了电感线圈的形式,在所设计的系统中,由于需要测量的是非常微弱的地磁场,地球表面赤道上的磁场强度在0.290.40高斯之间,两极处的强度略大,地磁北极约0.61高斯,南极约0.6

14、8高斯。传统的普通电感线圈的形式在如此微弱的磁场环境下感应产生的电流是非常微弱的,不便于A/D采样,增加了测量的难度。基于普通电感线圈测量的不足,所设计的系统采用了磁阻传感器来测量地址磁场的强度。磁阻传感器是根据电场和磁场的原理,当在铁磁合金薄带的长度方向施加一个电流时,如果在垂直于电流的方向再施加磁场,铁磁性材料中就有磁阻的非均质现象出现,从而引起合金带自身的阻值变化。如图2.3所示。图 2.3 磁阻传感器原理及其外形由图中我们可以看出当磁场变化时铁磁合金的电阻会跟着变化,如果此时的电流不变,那么铁磁合金两端的电压将发生变化,这样使用ADC就可以很方便的测量出当前对应的磁场大小。该传感器体积

15、非常小,测量精度高,最小分辨率可达0.00015高斯,测量地磁场已经足够。通过磁阻效应可以把磁场的变化转换成对应变化的电流,通过A/D转换就可以得到对应的数字量。ADC这部分主要有专用的磁场测量芯片来完成。本次设计中使用了著名PNI公司的PNI11096磁场测量ASIC,该芯片能够同时对3轴磁场强度(既X,Y,Z轴)进行测量。这样可以使用Z轴来进行倾角校正,提高测量精度。在整个指南针模块程序的设计过程中最主要的也就是其数据的处理,直接关系到系统的精度。在还没有处理之前从PNI11096读取的数据真实的反应了水平面内地磁场的分布情况,均匀转动指南针模块得到的地磁场强度分布,在不同的方向上是不同的

16、,经过归一化后,可以很好的将其归一化为圆,使得在各个方向上的磁场强度均匀,这样既可以方便进行角度计算又可以提高测量精度。指南针模块在第一次使用前都必须校正,系统上电时将模块的ADJUST引脚拉低即可进入校正状态,将模块在水平面内均匀的转动一周后校正结束。校正时主要调整的系数就是本地的磁偏角。将磁场强度归一化后,直接对X,Y轴的强度进行计算就可以得到当前方向与正东方向的夹角,如图2.8所示。从图5.7中可以看出夹角就是: (2.1) 图2.8 角度的计算3 硬件电路设计3.1 主控电路本次设计中采用了高速51内核MCU,具体型号为DS89C450,高速8051架构,每个机器周期一个时钟,最高频率

17、33MHz,单周期指令30ns,双数据指针,支持四种页面存储器访问模式。片内64KB闪存,在应用编程,可通过串口实现在系统编程,MOVX可访问的1KB SRAM。与8051系列端口兼容,四路双向,8位I/O端口,三个16位定时器,256字节暂存RAM。支持电源管理模式,可编程的时钟分频器,自动的硬件和软件退出低功耗。外设特性:两路全双工串口、可编程看门狗定时器、13个中断源、五级中断优先级、电源失效复位、电源失效早期预警中断和可降低EMI3。与51单片机相比,DS89C450还具有一些增强的功能。 DS89C450的引脚分配如图3.1所示。例如,DS89C450的P2口的某些位可以配置成特殊功

18、能来使用,像P20,P21,P22可以配置成SPI总线接口。SPI接口可以配置成主模式,配置方法可参照表31。 表31 SPI接口配置端口增强功能SS(从模式选择输入)接高电平P20MOSI(主模式数据输出从模式数据输入)P21MISO(主模式数据输入从模式数据输出)P22SCK(主时钟输出从时钟输入)由表31可知,主/从模式的选取是直接通过接高电平来决定,低电平为从模式,高电平为主模式。在本设计中选择主模式,P2口的0到2口作为SPI接口使用,与前端的磁场强度采集模块相连。液晶模块的接口主要接在P0口各P2口上,P0口用来传输数据和地址,P2口用来控制液晶模块的工作情况。按键键盘和实时时钟模

19、块的接口主要接在P1上,实时时钟模块采用了IIC总线接口,接到P1口的1和2脚。1脚用来传输时钟信号,2脚用来传输数据信号。P1口剩下的3到8脚供按键键盘输入使用。整个系统的控制部分主要完成对指南针模块数据的读取和处理并将数据的处理结果通过控制人机界面显示出来,同时监控键盘的输入以便完成系统功能设定等操作。整个系统中各个模块对微控制器的端口占用比较少,指南针模块的接口采用了SPI总线的形式。LCD是系统中比较繁忙的器件之一,其接口采用了并口模式可以提高数据的传输速率,保证了液晶显示屏的及时刷新。DS89C450微控制器内部自带2个通用串行口直接引出即可用,由于系统需要和上位机(本系统中为PC机

20、)进行数据通信,接口电平需要转换使其满足RS-232标准4。控制部分电路如图 3.1所示,其中包含了微控制器、LCD接口电路、端口上拉电阻、系统时钟电路和指南针模块接口电路。 图3.1 系统控制电路图 3.2 系统时钟和复位电路整个微控制系统中采用了无源晶振的形式发生MCU所需要的时钟信号。具体电路如图3.2所示。时钟电路中的两个电容用作补偿,使得晶振更容易起振,频率更加稳定。系统的复位采用了上电复的形式,上电过程中微控制器复位引脚保证10ms以上的高电平就能可靠的将微控制器复位5。3.2 串口通信电路图 3.3 串口通信电路在本次设计任务中采用了串口作为系统与外界的通信接口,串口通讯对单片机

21、而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。通信部分电路图3.3所示。由于单片机的TTL电平和RS-232协议的电平不同,需要MAX232进行电平的转换。在本次设计中还充分利用了串口的DTS信号作为单片机串口编程功能使能信号。整个通过串口DTR引脚控制在系统编程6。电路如图3.4所示。 由于DS89C450提供在系统编程,可以很方便的通过串口对单片机内部的FLASH进行刷新。由于DS89C450进入在系统编程需要几个条件:1 复位引脚电平为高; EA引脚为低电平;PSEN 引脚为低电平图3.4 串口逻辑电路3.3 指南针模块和接口电路本次设计中采用

22、了FAD_DCM_SPI指南针模块。该模块采用的正是PNI11096和SEN-R65传感器组合的设计方案。在整个PNI11096信号处理电路中包含了3个主要的部分:1 前端信号处理:由于地磁场非常的微弱,使用SEN-R65传感器转换后其信号也是非常的微弱。那么需要在信号采集前端加入信号放大和滤波整形电路2,这样使得A/D能够准确测量当前磁场大小,如2.4所示。图 2.4 磁阻传感器的驱动 A/D转换电路:这部分主要完成对SEN-R65磁阻传感器输出的模拟信号进行A/D转换。 数据接口电路:这部分组要完成对A/D转换后得到的数据进行格式封装,并在上位MCU的控制下进行数据传输。整个PNI1109

23、6和传感器的连接电路如图2.5所示。图 2.5 PNI11096传感器原理图该芯片内部集成了3轴传感器驱动电路,可以测量X,Y,Z三轴的磁场强度,Z轴的磁场强度可以用来校正水平面,使得X,Y轴的测量更为的精确。为了模块化,所以该模块把PNI11096芯片的输出信号经过处理后封装成特定的数据报文格式通过SPI总线形式对外提供。经过模块封装的数据格式如下表。表 32 指南针模块数据包格式bit10bit 3 bit 9bit 2bit 1ACK数据ACK地址角度数据范围:十六进制(0x000x167),转换成十进制为(0359)。图 3.5 SPI总线时序SPI(Serial Peripheral

24、 Interface-串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需34位数据线和控制即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、816位地址线、23位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接

25、口器件和I/O口线,提高设计的可靠性。SPI总线的时序如图3.5所示。3.4 实时时钟电路系统采用了PCF8583实时时钟芯片为系统提供实时时钟。PCF8583是一款基于静态CMOS RAM的实时时钟芯片,该芯片采用了I2C总线接口。图 3.6 实时时钟电路整个PCF8583的操作都是基于其内建的CMOS RAM,通过对其不同地址的RAM的操作可以实现不同的功能。其内部的256字节的RAM区域被分为了几个功能区以完成不同的操作。由于本次使用的DS89C450内部没有I2C控制器,所以直接使用了芯片的I/O口模拟了I2C时序7。整个时钟部分电路如图3.6所示。PCF8583采用了I2C总线的形式

26、与外界传输数据。I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。其时序结构如图3.7所示。图 3.7 I2C总线时序3.5 液晶显示电路本次设计采用了160×128点阵的单色液晶显示屏(LCD)作为系统的显示界面,具体的型号为PG160128,该LCM采用了T6963C控图3.8 LCD内部结构图制芯片作为显示控制核心。微控制器只需要对T6963C芯片进行操作便可以完成对LCD屏的相关操作8,使用非常方便。模块内部原理如图3.8。整个LCM中T6963C负责对LCD行列驱动芯片T6A40和T6A

27、39进行控制。微控制器只需要按照T6963给定的指令格式进行相应的操作即可。T6963提供10种控制命令,其数据和指令的读写时序如图3.9所示。图 3.9 T6963读写时序3.6 按键输入电路图 3.10 键盘电路系统采用了5键输入以实现系统功能的设定,如系统时间的调整和菜单的选择。由于系统中的其他模块对微控制器的端口占用较少还有很多没有使用的端口,键盘连接上直接采用了每个按键占用一个端口的形式,如图3.10所示,电路的中的几个电阻属于上拉电阻,保证在没有输入的情况下端口电平稳定为高,同时也可以达到省电的目的。键盘的读取采用扫描的形式,当检测到有按键按下时,消抖动后进行键值判断9。以上是系统

28、各个硬件部分的阐述,以下是整个系统的总电路。系统总电路中包含了系统主控制电路、指南针模块、实时时钟、通信电路及其逻辑控制电路,扩展接口和相关辅助电路。在进行系统PCB的器件方位布置和走线时,特别注意了通信电路和信号采集电路的隔离。LCD部的干扰比较大在进行器件放置时,将容易受到干扰的器件排布到其他区域,并采取一定的隔离措施。4 软件设计4.1 主监控程序整个监控系统中各个模块间存在一定的先后顺序且程序模块数量较少,为了减少系统的程序量,设计过程中系统的监控程序采用了传统的前后台方式。整个监控程序主要由指南针模块驱动、液晶显示驱动、实时时钟驱动和串口驱动组成10。整个系统监控程序流程如图4.1

29、系统监控程序流程图5.1所示。当系统上电后,最先执行的就是对系统各个部件进行初始化的代码,其中主要包括对系统内部定时器、实时时钟、LCD驱动、指南针模块以及对系统通信串口的初始化。系统初始化完成时对指南针模块进行读取,此时指南针模块将根据ADJUST端口的电平状态判定是否需要校正指南针,其后将得到的数据上传至微控制器,微控制器根据得到的数据驱动LCD进行相应的显示,随后微控制器将对系统键盘端口进行扫描,并根据扫描得到的键值进行相应的处理。前后台式的监控系统结构简单,但是其实时性较差。系统中由于各个程序之间相互关联,且对实时性要求不是很高,前后台能够满足其要求。4.2 实时时钟驱动实时时钟为整个

30、系统的运行提供实时数据。本次设计采用的图 4.2 PCF8583驱动流程PCF8583实时时钟芯片采用的I2C接口,对它的所有操作直接通过对其内部线性的CMOS RAM区进行操作即可即对PCF8583的操作主要是通过I2 通过I2C总线对其内部RAM进行读写11。整个驱动流程如图4.2所示。4.3 人机界面驱动4.3.1 液晶模块驱动液晶显示驱动处于系统的最后端,属于人机交互界面。直观的液图 4.3 LCM驱动程序架构晶显示能够使得系统更容易操控。本次设计采用了PG160128 点阵的 LCM模块。整个LCM驱动的构架图如4.3所示。采用层次设计的驱动可以很好的移植到不同的处理器。4.3.2

31、键盘驱动系统中将按键电路中按键、分别与单片机的P13、P14、P15、P16、P17引脚进行连接,此按键是低电平有效,当有键按下时,与按键相连接的单片机引脚检测到这个信号,然后进行相应的处理后再输出12。4.4指南针模块驱动 本次设计采用的是FAD_DCMP_SPI指南针模块。模块采用SPI接口与MCU进行数据交换。整个模块驱动包括了读取PNI11096数据、处理数据、封装数据和通过SPI时序发送数据几个部分。程序的流程如图4.4所示图4.4 指南针模块内部数据处理流程5 测试结果 在测试过程中,移动指南针模块到不同的方向都能较为正确的将测量到的方向信息形象地显示在LCD液晶屏上。由于接入了实

32、时实钟模块,在LCD液晶屏上也能正确的显示当前的日期和时间。同时,通过键盘成功的调节了日期和时间,也能控制电子指南针进行实际的操作。通过串口也能将测量到的方向数据上传到上位机PC上。但是焊接技术不是非常的过硬,导致系统的稳性和抗干扰能力不是很好,同时实际测量到的方向角度总是有1到2度的误差。6 总结 经过一个多月的努力,我终于设计出了一个简易的电子指南针。 所设计的系统中包含了磁场传感器、微控制器、显示部件、输入部件和实时时钟等部分,微控制器通过对磁场传感器配套的ASIC进行读取获得当前方向地磁场的强度,通过一定的运算后由液晶显示器显示出来,并可以通过微控制器的串口和上位机建立连接进行数据的传

33、输。 在课题的制作过程中,我也遇到了很多问题。在硬件上,有些芯片的性能不是很了解,到网上又找不到相应的芯片资料,只能自己慢慢地摸索。也正是这样的一个过程,使我对芯片更加地了解,原理更加的明白,进一步的巩固了我的专业知识。在软件方面,最主要的问题就是当前方向与正东方夹角的获取。经过向老师同学的请教,明白了在软件编程时要非常注重硬件电路。因为软件是建立在硬件的基础上的。同时一个正确的软件程序也能帮助检测硬件电路是否有问题。在整个研究开发的过程中,我始终保持着认真,仔细的态度,不断提高自己的硬件系统设计各软件设计的能力,看到自己的劳动有了成果,我感到非常的高兴。但因为个人在知识面和能力方面还有限,再

34、加上条件的限制,我所完成的只是整个系统的一部分,电子指南针的采样精度和抗干扰能力等各项技术指标的提高、诸多功能的完善还需要进一步的研究和开发,此外在完成基本功能的基础上,还需要努力提高软件的效率、硬件系统的稳定性、进一步降低系统功耗等。参考文献1 黄志伟编著. 全国大学生电子设计竞赛系统设计M. 北京: 北京航空航天大学出版社, 2006.2 佐藤一朗. 集成运算运算放大器电路设计实用手册M. 北京: 北京航空航天大学出版社, 1989.高吉祥.3 余锡存,曹国华.单片机原理及接口技术.西安:西安电子科技大学出版社. 2007. 4 高吉祥. 全国大学生电子设计竞赛培训系列教程之基本技能训练与

35、单元电路设计M. 北京:电子工业出版社,2007 5 高吉祥. 高频电子技术第二版M.北京:电子工业出版社,2008.6 Bonnie Baker. 嵌入式系统中的模拟设计M, 北京: 北京航空航天大学出版社. 2006.7 王新贤.通用集成电路速查手册M.济南:山东科学技术出版社,2002.8 蒋璇,臧纯华.数字系统设计与PLD应用第二版M. 北京:电子工业出版社,2005.9 模拟电子技术第二版M.北京:电子工业出版社,2008. 10 谭浩强. c程序设计(第三版).清华大学出版社. 北京:2009.11 付家才.单片机实验与实践M.北京:高等教育出版社,2006.12 郭天祥. 51单

36、片机C语言教程. 北京:电子工业出版社.2009. 37致 谢在本论文完成之际,我首先要向我的指导老师瞿军表达我最诚挚的谢意,感谢瞿老师在整个毕业设计过程中耐心细致的指导! 这次毕业论文能够得以顺利完成,并非我一人之功劳,是所有指导过我的老师,帮助过我的同学和一直关心支持着我的家人对我的教诲、帮助和鼓励的结果。我要在这里对他们表示深深的谢意!感谢我的父母,他们不仅培养了我对中国传统文化的浓厚的兴趣,让我在漫长的人生旅途中使心灵有了虔敬的归依,而且也为我能够顺利的完成毕业论文提供了巨大的支持与帮助。在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷殷期望!我一定会好好孝敬和报答他们!最

37、后,向所有关心我的亲人、师长和朋友们表示深深的谢意。附录:/*模块名称:测试主程序*/#include <reg52.h>#include <stdio.h>#include <math.h> #include "DriverT6963.h" /* T6963驱动库 */#include "DataBase.h"#include "PCF8583.h"#include "UART.h"unsigned char GblCnt = 0;unsigned char T0IRQCNT

38、= 0;unsigned char oldtempx, oldtempy;unsigned int Angle;unsigned char keyflag = 0;extern unsigned char COMBUF10; /* 定义接收缓冲区*/unsigned char COMCNT=0;/*函数名称:delay()*函数功能:软件延迟*入口参数:延迟时间倍数*出口参数:无*具体资源:无*调用程序:无*备 注:延时不精确*/void delay(unsigned int time) unsigned int i,j; for (i=0; i<time; i+) for (j=0;

39、j<1700; j+); /*函数名称:DisCurTime()*函数功能:在指定位置显示实时芯片内的时间*入口参数:显示位置x, y坐标 *出口参数:无*具体资源:无*调用程序:ReadPCF8583(), DisStr()*/ void DisCurTime(unsigned char x, unsigned char y) unsigned char time3;unsigned char dispBuff9;ReadPCF8583(0x02, 3, time);dispBuff8 = '0' /* 在数组最后单元放入标识符以便判断内容结束 */ dispBuff7

40、 = (time0 & 0x0f) + '0' /* 提取秒个位 */dispBuff6 = (time0 >> 4) + '0' /* 提取秒十位 */dispBuff5 = ':'dispBuff4 = (time1 & 0x0f) + '0' /* 提取分个位 */dispBuff3 = (time1 >> 4) + '0' /* 提取分十位 */dispBuff2 = ':'dispBuff1 = (time2 & 0x0f) + '0

41、' /* 提取时个位 */dispBuff0 = (time2 >> 4) & 0x03) + '0' /* 提取时十位 */DispStr(y*20+x, dispBuff);/*函数名称:DisCurDate()*函数功能:在指定位置显示实时芯片内的日期*入口参数:显示位置x, y坐标*出口参数:无*具体资源:无*调用程序:ReadPCF8583(), DisStr()*/void DisCurDate(unsigned char x, unsigned char y) unsigned char Date2;unsigned char DisB

42、uf11;ReadPCF8583(0x05, 2, Date); /* 获取PCF8583的日期 */ DisBuf4 = (Date0 & 0x0f) + '0' /* 提取日个位 */DisBuf3 = (Date0 >> 4) & 0x03) + '0' /* 提取日十位 */DisBuf2 = '/'DisBuf1 = (Date1 & 0x0f) + '0' /* 提取月个位 */DisBuf0 = (Date1 >> 4) & 0x01) + '0'

43、; /* 提取月十位*/DisBuf5 = '/' DisBuf6 = '2' DisBuf7 = '0' DisBuf8 = '0' DisBuf9 = '8' DisBuf10= '0' /* 在数组最后单元放入标识符以便判断内容结束*/ DispStr(y*20+x, DisBuf);/*函数名称:DisClock()*函数功能:绘制钟面*入口参数:显示位置 *出口参数:无*具体资源:无*调用程序:Circle(), Line(), WriteEN(), EasyCH() */void Dra

44、wClock(unsigned char x, unsigned char y, unsigned char r) Circle(x, y, r); Line(x, y-r, x, y-r+5, 0); /* 绘制0点处竖线 */ Line(x, y+r, x, y+r-5, 0); /* 绘制6点处竖线 */ Line(x-r, y, x-r+5, y, 0); /* 绘制9点处竖线 */ Line(x+r, y, x+r-5, y, 0); /* 绘制3点处竖线 */ WriteEN(198,'E'); WriteEN(273,'S'); WriteEN(1

45、89,'W'); WriteEN(93,'N'); EasyCH(3, 1, fang); EasyCH(3, 2, wei);/*函数名称:GraphicTest()*函数功能:显示子函数测试程序*入口参数:无*出口参数:无*具体资源:无*调用程序:显示子函数*/void GraphicTest(void) Circle(80, 63, 60);Rectangle(0, 0, 159, 127, 0);Triangle(0, 0, 20, 30, 120, 50);Line(0, 0, 159, 127, 0);Line(0, 127, 159, 0, 1);

46、/*函数名称:DisMain() *函数功能:主显示界面*入口参数:显示位置*出口参数:无 *具体资源:无*调用程序:无*备 注:仅用作测试使用*/void DisMain(void) Rectangle(0, 22, 159, 127, 0); DrawClock(113, 70, 45); Line(0, 115, 159, 115, 0); Line(64, 22, 64, 115, 0);/*函数名称:DisCurDirc()*函数功能:显示当前方位指针*入口参数:显示角度*出口参数:无*具体资源:无*调用程序:WriteEN(), Line()*/void DisCurDirc(un

47、signed int Dir) unsigned char tempx, tempy; unsigned char Dir1, Dir2, Dir3; Dir1 = Dir/100 +'0' /* 提取其各位*/ Dir2 = (Dir%100)/10 + '0' Dir3 = (Dir%100)%10 + '0' WriteEN(122, Dir1); WriteEN(123, Dir2); WriteEN(124, Dir3); Dir = Dir/3; /* 不满3的倍数的按3的倍数算 */ tempx = DirTbl(Dir<<1); tempy = DirTbl(Dir<<1)+1); LineClr(113, 70, oldtempx,

温馨提示

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

评论

0/150

提交评论