数字指南针的设计电子罗盘.docx_第1页
数字指南针的设计电子罗盘.docx_第2页
数字指南针的设计电子罗盘.docx_第3页
数字指南针的设计电子罗盘.docx_第4页
数字指南针的设计电子罗盘.docx_第5页
免费预览已结束,剩余33页可下载查看

下载本文档

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

文档简介

毕业论文题目数字指南针的设计 郑重声明本人的毕业论文(设计)是在指导教师李亚美的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。毕业论文(设计)作者(签名):年月日目录目录3摘要51绪论61.1课题背景61.2整体设计方案61.3MCU选型61.4传感器的选择71.5显示模块的选择81.6键盘校准模块的选择81.7电源管理模块的选择92 系统的硬件电路92.1 整体电路图如下图2.192.2 晶振电路102.3 复位电路102.4 传感器信号采集电路102.5 显示模块123系统软件的设计143.1 系统主程序设计144系统仿真与硬件调试154.1综合调试154.1.1检查排除明显硬件故障154.1.2遇到的问题154.1.3实物图155总结评价16参考文献18致谢19Abstract20附录21数字指南针的设计安志强摘要当前我国经济水平以较高的增长速率不断提高,人们对于各种电子设备的需求也不断提高。当旅游出行等各类场合下确定的方位信息都是很有必要的,一个完善合理电子罗盘不但可以实现人们经济实用要求,而且可以及时准确地告知人们当前的方位信息,对旅游出行时安全起着决定性作用。基于以上原因,本文设计了基于STC 89C52单片机电子罗盘,该系统主要有有微处理器、FM12864显示、按键调整、电源等模块构成。当方位传感器检测到当前的方位信息时,信号由传感器处理再到单片机进行处理显示。本文设计数字电子罗盘具有检测准确,FM12864显示,功能完善,应用可靠性高、使用结构简单等特点。论文首先介绍了数字电子罗盘的课题背景以及发展趋势,重点介绍了硬件设计电路和软件程序的设计,最后利用Keil uVision4编译了驱动单片机运行的C语言程序,并与Proteus进行联合仿真,验证设计的可行性,最后制作了实物并经过一系列调试可以达到预期设计效果。关键词数字电子罗盘单片机传感器381绪论 1.1课题背景随着科技发展和道路建设完善,汽车会给人们生活极大方便,汽车将会普及在我们生活中。电子罗盘定向系统将会出现每一辆汽车里;届时很多人会开自己的车旅游,回家,谈生意等等,当置于一个陌生的环境中,导航定向对于行车安全非常重要。所以,迫切需要研究出一种低功耗,便于携带,内置磁场感应器,系统稳定,并且能完成精确定向的微系统,而本课题设计就是研究出一个数字电子罗盘,专门解决这个问题而产生的。本设计系统基于单片机开发平台,选取磁阻传感器作为敏感元件,采用两轴设计和补偿设计方案,使用超低功耗控制器51单片机作为传感器数据计算方向的小型低功耗电子罗盘系统。 1.2整体设计方案本设计系统主要有三个主要的部分,分别为其STC89C52MCU控制器模块和传感器数据采集模块以及按键校准模块。控制器是数字指南系统的核心,它将传感器采集的信息进行处理比较判断,从而确定自己的方位。本设计通过GY26数字指南模块发送数字信号,单片机将信号经过处理运算后显示于LCD12864液晶显示屏。LCD12864液晶显示方向以及地磁偏角,且可按键修改校准GY26指南针的参数值。框架图如图1.1:STC89C52控制模块按键检测模块LCD12864液晶显示模块GY26数字指南针模块电源模块图1.1系统框架图1.3 MCU选型MCU是电子罗盘的核心,方位传感器将采集到信号经过处理后发送到单片机,单片机经过一系列处理比较确定方位信息并发出一系列控制信号。在本设计系统中需要单片机运算速度较快,同时,在能够满足实时显示当前方位的计算速度及接口功能要求的同时还要,要考虑价格,稳定性,以及稳定性。现在市场上单片机有很多类型。在本系统中控制核心单片机应达到的目标应有:1.有足够的内存支持系统的运行;2.应有丰富的外围电路支持系统的扩展;3.有强大的抗干扰能力;4.应有方便的调试环境与多样的编程语言。综合以上条件在测控系统中,使用51系列单片机是最理想的选择,因此在本设计我采用STC89C52单片机。STC89C52主要功能特性如下:工作电压: 5.5V - 3.5V(5V单片机);工作频率范围:040MHz;用户应用程序空间 4K/8K/16k/32K/64K字节;I/O口驱动能力均可达到20mA,但所有的不要超过120mA;1.4 传感器的选择传感器的选择通常有以下方案:方案一:GPS定位系统GPS(Global Positioning System)即全球定位系统,是由美国建立的一个卫星导航定位系统,利用该系统,用户可以在全球范围内实现全天候、连续、实时的三维导航定位和测速;另外,利用该系统,用户还能够进行高精度的时间传递和高精度的精密定位。现实生活中,GPS定位主要用于对移动的人、宠物、车及设备进行远程实时定位监控的一门技术。GPS定位是结合了GPS技术、无线通信技术、图像处理技术及GIS技术的定位技术。方案二:GY-26数字罗盘 GY-26是一款低成本平面数字罗盘模块输入电压低功耗小体积小其工作原理是通过磁传感器中两个相互垂直轴同时感应地球磁场的磁分量从而得出方位角度此罗盘以RS232协议及IIC协议与其他设备通信该产品精度高稳定性高并切具有重新标定的功能能够在任意位置得到准确的方位角其输出的波特率是9600bps,数据以询问方式输出具有硬铁校准功能磁偏角补偿功能适应不同的工作环境。经过以上方案比较,方案二更符合系统设计要求,硬件简便有效,并且经济合理,所以我采用了第二种设计方案。1.5 显示模块的选择在本设计中,需要有显示器实时显示方位的变化,从而实现人机交互。为了达成设计目标,有如下几个方案:方案一:利用数码管显示数据变化;方案二:利用LCD1602显示;方案三:利用LCD12864显示。每个方案都可完成设计任务,但主要区别是完成度与舒适度的问题。方案一:数码管要正常显示,就要用驱动电路来驱动数码管的各个段码。按驱动方式不同,可分为静态式与动态式两类。静态式编程简单,先是亮度高,占用I/O口较多,硬件线路复杂;动态式使用芯片较少,缺点是动态扫描占用CPU时间较多,显示器位数多时,会导致先是亮度降低。方案二:液晶显示屏LCD1602有微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,能够同时显示16x02即32个字符。但是LCD1602在强光下显示并不清晰,无法显示汉字使其在人机交互界面的选择上处于劣势。方案三:带中文字库的128X64是一种点阵图形液晶显示模块。它具有4位/8位并行、2线/3线串行多种接口方式;其内部含有国标一级、二级简体中文字库。可以同时显示84行1616点阵的汉字,也可以实现对图形的显示。该模块低电压低功耗,具有灵活的接线方式和简单、方便的操作指令,因此,利用它可以构成全中文人机交互图形界面,符合产品应用现状2。在本设计中需要显示的值较多,实现功能比较复杂,且以STC89C52为主控制器的系统来说,I/O口比较少,不可能支持大量数码管显示。LCD12864显示界面大,全汉字屏幕更加符合国内市场现状,同时经过比较也更加符合系统设计的要求。因此,在数据显示器的选择上选择方案三。1.6 键盘校准模块的选择由于需要对参数值进行设定,因此需要使用按键。方案一:使用独立式键盘。这是指直接用单片机的I/O 口线接按键,每个接口就一个按键构成一种功能。这样的电路灵活简单,软件结构编程容易。方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端,其特点是简单且不增加成本,这种按键适合按键数较多的场合。根据以上的论述,因本系统需要的按键不多,共需四个按键包括第一个为设置键、第二个为加键按一下加1、第三个为减键按一下减1,第四个为校正方位角,保证采集的正确性。设计要求简单。所以采用方案一独立式键盘即直接用I/O 口线构成的单个按键电路,这样电路配置灵活,软件结构简单。1.7电源管理模块的选择电源有两种方案:第一种:采用3节1.5 V干电池干串联可以得到4.5V。第二种:采用5V移动直流电源供电。根据系统设计要求我采用了第二种方案为系统供电,因为5V移动电源,供电电压稳定,使用时间较干电池长,且可持续使用,方便使用。2系统的硬件电路2.1 整体电路如下图2.1: 图2.1 整体电路图2.2晶振电路晶振电路需要接到STC89C52单片机的18,19引脚即XTAL1,XTAL2引脚,构成一个自激振荡器;同时为保证单片机正常工作需要匹配电容,一般选用2030pF的瓷片电容。振荡频率工作速度的要求,从几百KHz24MHz中选取某一频率,本系统频率选取11.0592MHz,瓷片电容选取30pF,设计电路如图2.2所示。图2.2晶振电路2.3复位电路计算机在启动运行时都需要复位,使中央处理器CPU 和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。图2.3 复位电路如图2.3所示,本次设计采用的复位方式是上电自动复位。复位电路需接到STC89C52单片机的第9引脚。在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平时间大于10ms,就可以使STC89C52单片机有效的复位。2.4传感器信号采集电路GY-26 是一款低成本平面数字罗盘模块。输入电压低,功耗小,体积小。其工作原理是通过磁传感器中两个相互垂直轴同时感应地球磁场的磁分量,从而得出方位角度,此罗盘以 RS232 协议,及 IIC 协议与其他设备通信。该产品精度高,稳定性高。并切具有重新标定的功能,能够在任意位置得到准确的方位角,其输出的波特率是 9600bps,数据以询问方式输出,具有硬铁校准功能磁偏角补偿功能,适应不同的工作。图2.4.1GY-26的外形与封装图2.4.2电气参数 GY26电路接到了P1.6,P1.7口,为保证GY26稳定的采集,需在SCLK和SDA引脚加上5.1K的上拉电阻,从而保证GY26正常输出数据。GY26电路图如下图2.4.3:图2.4.3GY26电路图2.5显示模块在本设计过程中,我选择LCD12864液晶屏来显示各种信息。它是一种图形点阵液晶显示器,主要采用动态驱动原理由行驱动器、控制器和列驱动器三部分组成128(列)64(行)的全点阵液晶显示,此显示器采用了 SMD 的硬封装方式,通过导电橡胶和压框连接 LCD,使其寿命长,连接可靠,可完成常用字符及图形显示,也可以显示84个(1616点阵)汉字。它通过外部MCU方便地实现对LCD驱动器和显示缓存的管理。其特点为8位80或Z80系列总线,内部有128个常用字符表,可管理外部扩展显示缓存64KB(本模块为32KB),并具有丰富的指令供MCU实现对LCD显示屏幕的操作与编辑11。其实物图如图2.5.1所示,其接口信号如下表2.5.2所示。图2.5.1LCD12864F液晶实物图引脚符号电平功能描述1 FG 0V 铁框地2 Vss 0V 信号地3 VDD5.0V 逻辑和LCD正驱动电源4 Vo -10VVoVDD对比度调节输入(内部负压时空接)5 /WR L 写信号6 /RD L 读信号7 /CE L 片选信号8 C/D H/L 指令数据选择(H: 指令 L:数据)9 /RESET L 复位(模块内已带上电复位电路,加电后可自动复位)1017DB1DB7H/L 数据总线0 (三态数据总线)18 FS H/L 字体选择 (H:6X8 点;L:8X8 点,图形方式时建议接低) 19 LED+ - LED 背光电源输入(+5V)或EL背光电源输入(AC80V)20 LED- - LED 背光电源输入负极表2.5.2 LCD12864液晶接口信号说明LCD12864液晶显示屏数据口引脚接到了P0口 ,RS,RW,EN引脚分别接到了P1.0,P1.1,P1.1引脚。同时在VL引脚加入2.2K电阻调节背光亮度。LCD12864的接线图如下图2.5.3所示。图2.5.3 LCD12864接线电路1.3设计任务分析3系统软件的设计程序设计是本次设计的另一重要环节。本次程序设计按照(1) 分析系统控制要求,确定算法:(2)根据算法画流程图:(3)编写程序的步骤设计了主程序、初始化程序、显示子程序、数据采集子程序和延时程序。3.1 系统主程序设计主程序流程图如下图3.1所示。首先进行程序的初始化工作,传感器开始信号的采集,采集到的信号发送给单片机,单片机经过一系列数据运算,处理,比较,发送数据到LCD12864进行显示。开始系统初始化读取传感器数据数据是否正常否是将数据转换为地磁角并判断方向LCD显示方向及地磁偏角数据结束图3.1主程序流程图4系统仿真与硬件调试4.1综合调试进行综合调试的时候应该先检查排除了明显的硬件故障,再进行软件和硬件的综合调试。4.1.1检查排除明显硬件故障第一步为目测,由于本设计的电路是手工焊接,因此对每一个焊点都要进行仔细的检查,检查是否有虚焊有毛剌等现象。第二步测试需要通过万用表。首先需要做的就是用万用表测试电源和地之间的是否短接了,这是最危险的问题,除此之外,还需要检查容易短接的引脚或者焊点。第三步为上电。上电是一套系统必要的一个步骤。经过上电首先检查电源芯片是否发热,发热就立即断电,其次在检查其他芯片,在下载程序看是否运行正常。第四步是联机检查。4.1.2遇到的问题在本系统中,供输入用的按键只有4个,要实现功能是容易的。但是,还要求实现修改数据功能时稳定可靠,对4按键系统而言在程序上是复杂的。如果从硬件上修改,一方面增加按键,另一方面拓展单片机引脚,可以有效减轻按键处理程序的复杂度、提高处理速度,但无疑增加了设备成本。实际上,4按键是实现上述所有功能的几乎最少按键数,因此在按键处理程序上是比较复杂的。其复杂性表现在:在液晶屏上实现对于数据修改并回显的功能时,不按固定步长循环增加的方法修改数据,而采用逐位数据独立修改的方法,为迅速修改数据提供极大便利的同时,必定会在软件上引入相应复杂的按键处理程序和页面管理调度方法。调试方法:模拟所遇故障情况以及电机运行情况,配合按键扫描识别,调用对应界面。4.1.3实物图如图4.1,为整体实物图,包括单片机最小系统,LCD12864显示电路,方为信号检测模块,可以实现自己方向的实时监测并显示。图4.1整体实物图5总结评价本系统设计以单片机 STC89C52作为控制核心,通过方位传感器实时采集方位信息并通过液晶LCD12864显示出来。本系统设计软硬件设计相结合,主要是把硬件设计作为载体,利用软件编写的算法作为控制主体。在整个设计中,运用了专业化、模块化和层次化的设计思想。首先,系统的硬件设计方案是根据系统要求给出了对应模块的设计方法,其中包括方位采集模块、键盘模块、显示模块等几个部分。这章节通过每个模块的功能的介绍选取了相应的芯片,并且给出了该芯片的模块电路设计方法。其次,在系统的软件设计方案中,将系统的控制程序进行了模块化编程设计。首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系,降低了程序复杂度,使程序设计、调试和维护等操作简单化。最后,在系统调试过程中,进行了Keil软件与Proteus软件的联调仿真,利用Altium Designer软件进行了原理图的设计。并进行了实物制作与测试能达到预期的目标。通过这次毕业设计,我复习了大学四年所学的很多知识,熟悉了很多电子集成电路的工作原理及用途,全面的熟练的学习Protel 99 SE的界面、基本组成以及使用环境等。重点学会简单电路原理图设计及绘制、原理图库元件的制作、复杂电路原路图的绘制、印刷电路板的设计环境、手工及自动化设计PCB、封装元件的制作等等。在整个设计中不仅使我复习学会了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。参考文献1李华.MCS一51系列单片机实用接口技术.北京航空航天大学出版社.2张毅坤等.单片微型计算机原理及应用.西安电子科技大学出版社.2006.3潘新民等.微型计算机控制技术.电子工业科技大学出版社.2003.4陈伟.MCS一51系列单片机实用子程序集锦.清华大学出版社.1993.5金峰妍.Locking device using mobile communication terminal apparatus compass and its method.CN.20056吴佑寿. Lab VIEW7实用教程.电子工业出版社.2007.7余成波.传感器与自动检测技术.高等教育出版社.20048刘迎春.传感器原理设计及应用.哈尔滨工业大学出社.9赵负图.数据采集与控制系统.北京科学技术出社.1987.10王若鲸.数据通信系统入门.人民邮电出版社.1984.11肖忠祥主编.数据采集原理.西北工业大学出版社.200311刘广玉.新型传感器技术及应用.北京航空航天大学出版社.1989.12张毅刚.MCS一51单片机应用设计.1990.13陈伟.MCS一51系列单片机实用子程序集锦.清华大学出版社.1993.14何立民.单片机实用文集.北京航空航天大学出版.1993.致谢经过半个学期的调查、材料组织、系统设计调试,最后的毕业论文编写,今天,我的毕业设计将要圆满完成,经过反复思量,写下最后的感谢,论文从选题、方案论证、课题的研究以及论文的撰写是在我的导师李亚美的悉心指导下完成的,他耐心听我表达自己的想法,同时给我指导正确的思路方法。在此表达感谢。同时也特别感谢我的家人、朋友和学长,他们在生活上给了我很大的资助和鼓励,是他们给了我努力学习的信心和力量。在毕业设计期间身边的学长给了我很多思路上的帮助,让我在很多细节上得到了提升,使我没有“走弯路”。另外,毕业设计的完成是综合知识的应用,我在此吸收了许多不同的想法观点,领会了不同的思考方式和角度,掌握了许多新知识。最后,不能忘记的是要感谢我的父母,因为他们的启蒙指导,最后,感谢所有关心我!支持我!帮助我的同学,祝你们在以后的道路中一帆风顺!The design of the Vehicle distance alarm systemAbstractCurrent our country economic level to a higher growth rate increasing, the demand for all kinds of electronic equipment has been improved.When tourism travel and other kinds of situations determine the orientation information is very be necessary, a perfect and reasonable people electronic compass can realize not only economic and practical requirements, and can inform peoples current location information, timely and accurate for tourism travel security plays a decisive role.Based on the above reasons, this paper designed the electronic compass based on STC 89 c52, this system mainly has a microprocessor, FM12864 display, buttons to adjust, power modules, etc.When the azimuth sensor detects the current location information, by the sensor signal processing to the single chip microcomputer for processing display.In this paper, design of digital electronic compass have accurate detection, FM12864 shows, perfect functions, application, high reliability, simple structure and so on.Paper first introduces the topic background and developing trend of digital electronic compass, mainly introduced the design of the hardware circuit and software program, finally using Keil uVision4 compiled driver microcontroller C language programs to run, and combined with Proteus simulation, verify the feasibility of the design, finally made a real and can achieve the expected design effect after a series of debugging.Key words car collision collision warning system MCU sensor附录1主程序部分程序void main() unsigned int i; delay(500); InitLcd(); EA=0; cnt=0; while(1) /循环 read_cmp(); /读出数据/-显示角度 dis_data=0; dis_data=BUF1; dis_data=8; dis_data|=BUF2; conversion(dis_data);ge=HEX_TO_ASCII(ge);shi=HEX_TO_ASCII(shi);bai=HEX_TO_ASCII(bai);qian=HEX_TO_ASCII(qian); DisplayOneChar(0,0,qian); DisplayOneChar(1,0,bai); DisplayOneChar(2,0,shi); DisplayOneChar(3,0,.); DisplayOneChar(4,0,ge); /-显示温度 dis_data=0; dis_data=BUF5; dis_data4095) /如果bit-12为1,即符号位为负DisplayOneChar(0,1,-); /显示负号dis_data&=0xefff; /清符号位 else DisplayOneChar(0,1, );/如果bit-12为0,空格,清空 conversion(dis_data);ge=HEX_TO_ASCII(ge);shi=HEX_TO_ASCII(shi);bai=HEX_TO_ASCII(bai);qian=HEX_TO_ASCII(qian); DisplayOneChar(1,1,qian); DisplayOneChar(2,1,bai); DisplayOneChar(3,1,shi); DisplayOneChar(4,1,.); DisplayOneChar(5,1,ge); DisplayOneChar(6,1,0XDF); /温度单位DisplayOneChar(7,1,C); /温度单位/-显示磁偏量dis_data1=0; dis_data1=BUF3; dis_data1=8; dis_data1|=BUF4; conversion(dis_data1);ge=HEX_TO_ASCII(ge);shi=HEX_TO_ASCII(shi);bai=HEX_TO_ASCII(bai);qian=HEX_TO_ASCII(qian); DisplayOneChar(7,0,qian); DisplayOneChar(8,0,bai); DisplayOneChar(9,0,shi); DisplayOneChar(10,0,.); DisplayOneChar(11,0,ge); /-显示校准等级 conversion(BUF7);ge=HEX_TO_ASCII(ge);shi=HEX_TO_ASCII(shi);bai=HEX_TO_ASCII(bai);qian=HEX_TO_ASCII(qian); DisplayOneChar(10,1,bai); DisplayOneChar(11,1,shi); DisplayOneChar(12,1,ge); /-按键检测 if(KEY_1=0) delay_10ms(); if(KEY_1=0) cal_on(); while(KEY_1=0)delay_10ms(); if(KEY_2=0) delay_10ms(); if(KEY_2=0) cal_off(); while(KEY_2=0)delay_10ms(); if(KEY_3=0) delay_10ms(); if(KEY_3=0) recovery_factory(); while(KEY_3=0)delay_10ms(); if(KEY_4=0) delay_10ms(); if(KEY_4=0) IIC_ADDR_Change(); while(KEY_4=0)delay_10ms(); for (i=0;i4000;i+); /*/void delay(unsigned int k)unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+);/*/void WaitForEnable(void)DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPort&0x80);LCM_EN=0;/*/void WriteCommandLCM(uchar CMD,uchar Attribc)if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*/void WriteDataLCM(uchar dataW)WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*/void InitLcd()WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);/*/void DisplayOneChar(uchar X,uchar Y,uchar DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);/*/*void DisplayListChar(uchar X,uchar Y,uchar code *DData)uchar ListLength=0; Y&=0x1; X&=0xF; while(X=15) DisplayOneChar(X,Y,DDataListLength);ListLength+; X+; */ /*/*void read_cmp(void) uchar i; AT24C04_Start(); /起始信号 AT24C04_SendByte(WriteDeviceAddress); /发送设备地址+写信号 AT24C04_SendByte(0x00); /0表示命令 AT24C04_SendByte(0x31); /发送一次测量角度 AT24C04_Stop(); /停止信号Delay5ms();Delay5ms();Delay5ms();Delay5ms();Delay5ms();Delay5ms();Delay5ms();Delay5ms(); /延时,实际应用中可以执行其他程序Delay5ms();Delay5ms();Delay5ms(); AT24C04_Start(); /起始信号 AT24C04_SendByte(WriteDeviceAddress); /发送设备地址+写信号 AT24C04_SendByte(0x00); /0表示命令 AT24C04_SendByte(0x35); /发送一次测量温度 AT24C04_Stop(); /停止信号 Delay5ms();Delay5ms();Delay5ms();Delay5ms();Delay5ms();Delay5ms(); /延时,实际应用中可以执行其他程序 AT24C04_Start(); /起始信号 AT24C04_SendByte(WriteDeviceAddress); /发送设备地址+写信号 AT24C04_SendByte(0x00); /发送存储单元地址,从0开始 AT24C04_Start(); /起始信号 AT24C04_SendByte(WriteDeviceAddress+1); /发送设备地址+读信号 for (i=0; i8; i+) BUFi = AT24C04_RecvByte(); if (i = 7) AT24C04_SendACK(1); /最后一个数据需要回NOACK else AT24C04_SendACK(0); /回应ACK AT24C04_Stop(); /停止信号2 FM12864部分程序 /* 函数名称: void write_commond(uchar com)* 功能描述: 对液晶写一个指令* 输入: uchar com */void write_commond(uchar com) /对液晶写一个指令CE = 0;CD = 1;R_D = 1;W_R = 0;P2 = com; _nop_();W_R = 1;CE = 1;CD = 0;/* 函数名称: void write_data(uchar dat)* 功能描述: 对液晶写一个数据*/void write_date(uchar dat) /对液晶写一个数据CE = 0;CD = 0;R_D = 1;W_R = 0;P2 = dat;_nop_();W_R = 1;CE = 1;CD = 1;/* 函数名称: void read_status(void)* 功能描述: 读液晶的当前状态*/unsigned char read_status()uchar status;R_D=0;W_R=1;CE=0;CD=1;status=P0;return (status);/* 函数名称: void check_status(void)* 功能描述: 判断液晶是否处于繁忙状态*/void check_status(void)uchar s;while(s&0x03)!=0x03) s=read_status();/等待位1,2置为。命令读写准备好。数据读写准备好/* 函数名称: void write_dc(uchar com,uchar dat)* 功能描述:对液晶写指令的同时写入一个数据* 输入: uchar com,uchar dat */ void write_dc(uchar com,uchar dat) /写一个指令和一个数据write_date(dat);check_status();write_commond(com);/* 函数名称: void write_ddc(uchar com,uchar dat1,

温馨提示

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

评论

0/150

提交评论