基于单片机的音乐盒的设计毕业设计方案_第1页
基于单片机的音乐盒的设计毕业设计方案_第2页
基于单片机的音乐盒的设计毕业设计方案_第3页
基于单片机的音乐盒的设计毕业设计方案_第4页
基于单片机的音乐盒的设计毕业设计方案_第5页
已阅读5页,还剩40页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

摘要:伴随人类社会不停繁荣和发展,大家对本身生活品质要求也变得越来越高,在听觉方面传统音乐盒能带给大家更多只是美好回想,而因为单片机含有体积小、成本低、运算快和功耗小等特点得到了大家越来越广泛利用。本设计是一个基于STC89C52系列单片机音乐盒,依据单片机技术及原理,经过硬件电路制作和软件编译,设计制作出一个插卡式音乐盒。该音乐盒关键是由按键电路、继电器电路、LCD显示电路和扬声器组成。使用五个按键控制音乐盒,分别用来控制音乐盒播放/暂停,复位,切换上一曲/下一曲,本音乐盒利用优盘共存有五首歌曲。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,以后下载进51单片机中使用。关键词:单片机音乐盒LCDAbstractWiththecontinuousdevelopmentofhumansociety,people'squalityoflifedemandsareincreasinglyhigh,thetraditionalmusicboxintheauditoryaspecttobringpeoplemoregoodmemories,butduetothemicrocomputerhastheadvantagesofsmallvolume,lowcost,lowpowerconsumptionandfastoperationhasbeenmoreandmoreextensiveuse.ThedesignisbasedonthemusicboxSTC89C52SeriesMCU,basedonsinglechipmicrocomputerprinciple,thehardwarecircuitandsoftwarecompilation,designedtoproduceaplug-inmusicbox.Themusicboxiscomposedofakeycircuit,arelaycircuit,LCDdisplaycircuitandaloudspeaker.Theuseoffourbuttonscontrolthemusicboxes,musicboxeswereusedtocontroltheplay/pause,switchona/thenextsong,themusicboxusingtheUSBcoexistwithfivesongs.ThedesignofprogrammingonthemusicboxanddebugsourcecodeusingKEILprogrammingsoftware,thendownloadinto51singlechipprocessor.Keywords:SCMMusicBoxLCD 目次TOC\o"1-3"\h\u27406目次 3170511引言 4181021.1音乐盒意义 4227971.2研究内容 5187542.1系统总体框架图 6146922.2音乐盒设计原理 6172632.3单片机芯片概述 7327443硬件电路设计 8155823.1单片机最小系统原理图 8267013.1.1复位电路 8211813.1.2晶振电路 9210303.1.3时钟电路 9186673.2LCD显示模块 9128123.3继电器模块 11187023.3.1电磁继电器工作原理和特征 1273743.3.2固态继电器工作原理和特征 12264743.3.3继电器关键产品技术参数 12177743.4按键模块 139053.5其它 13193814软件设计 1427924.1软件总体步骤图 14267794.2播放/暂停子程序 1557034.3LCD显示模块软件设计 1714.3.1LCD初始化函数 17241474.3.2LCD和继电器函数 1824615系统实现 19109445.1硬件调试 20121035.1.1按键控制实现 20140925.1.2LCD显示 21143645.1.3其它 218835总结 2213946致谢 2327965参考文件 2427755附录A元器件清单 2521035附录B源程序 261引言在进入二十一世纪后,单片机产品发展正朝着高性能和多品种方向,而且发展趋势是深入朝着CMOS化、小体积、低功耗、大容量、高性能、低价格和外围电路内装化等多个方面去发展。单片机应用关键意义还是在于它是从根本上改变了传统控制系统设计思想和设计方法。过去必需要由模拟电路或数字电路才能够实现大部分功效,现在已能完全能够用单片机经过软件方法来实现了。这种由软件去替换硬件控制技术也称之为微控制技术,这是传统控制技术一次革命。单片机能够说渗透到了我们生活各个方面,几乎难以找到哪个领域里没有单片机踪迹。导弹中导航装置,飞机里安装多种仪表控制,计算机里网络通讯和数据传输方面,工业自动化过程中实时控制和数据处理方面,生活中被广泛使用多种智能IC卡,民用高级轿车安全保障系统,摄像机、录像机、全自动洗衣机所包含控制方面,和远程控制玩具、电子宠物等等,这些全全部是离不开单片机。而伴伴随科学技术不停进步和社会连续发展,人类所接触更种信息也在不停增加而且信息变得越来越复杂。面对着浩如烟海繁杂信息,大家现在已经能利用计算机等工具快速、正确地对其进行快速处理,但要想将其处理完成信息立即、清楚地传输给其它人,还必需要寻求愈加卓越显示技术去实现它。而单片机技术和液晶显示技术结合,恰恰使得信息传输交流向着智能化可视化方向进行快速发展。1.1音乐盒意义音乐盒起源,能够追溯到中世纪欧洲文艺复兴时期。当初为了使教会钟塔报时,而将大小钟表装上了机械装置,被称之为“可发出声音组钟”。音乐盒已经有着300多年发展历史,是人类文明发展历史见证。传统音乐盒大多是机械音乐盒,其工作原理是经过齿轮来带动一个带有铁钉铁桶转动,铁桶上铁钉撞击用铁片制成琴键,从而发出声音。不过,机械式音乐盒体积较大,比较粗笨,而且发音单调。水和灰尘等外在原因,轻易使得内部金属发音条变形,从而会造成发音跑调。另外,机械音乐盒放音时为了能让音色稳定,必需要放平不能动摇,而且价格昂贵,不能够实现大批量生产。1.2研究内容利用STC89C52单片机,结合LCD显示模块、继电器驱动模块、音频解码电路,完成音乐盒播放;具体设计实现功效以下(1)经过按键控制多首音乐播放,并可经过按键选择一个开始,一个暂停,一个翻上首,一个翻下首;(2)经过显示电路显示播放歌曲名或编号;2系统总体设计2.1系统总体框架图音乐盒系统结构是以STC89C52单片机位控制关键,加上5个按键、继电器、扬声器、LCD显示模块组成。单片机负责接收按键输入,依据输入控制音乐播放曲目和LCD显示器显示歌曲名和扬声器发音。系统组成框图图2.1所表示。扬声器扬声器继电器显示模块音频解码音频解码STC89C52单片机按键图2-1系统总体框架图2.2音乐盒设计原理利用KEIL软件编音乐盒写程序,将编写好程序下载进51单片机内,利用单片机控制LCD显示歌曲名,以后将所需要播放歌曲放入U盘,利用由继电器控制音频解码电路来实现音乐播放,再经过按键实现上一首和下一首及暂停播放。2.3单片机芯片概述STC89C52是STC企业生产一个低功耗、高性能CMOS8位微控制器,含有8K在系统可编程Flash存放器。STC89C52使用经典MCS-51内核,但做了很多改善使得芯片含有传统51单片机不含有功效。在单芯片上,拥有灵巧8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效处理方案。含有以下标准功效:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中止,一个7向量4级中止结构(兼容传统515向量2级中止结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,许可RAM、定时器/计数器、串口、中止继续工作。掉电保护方法下,RAM内容被保留,振荡器被冻结,单片机一切工作停止,直到下一个中止或硬件复位为止。最高运作频率35MHz,6T/12T可选。原理图以下图2-2单片机引脚图3硬件电路设计3.1单片机最小系统原理图图3-1单片机最小系统原理图3.1.1复位电路复位电路:由两个电容串联电阻组成,由图3.1并结合"电容电压不能够突变"性质,能够知道,当系统一上电时,RST脚将会出现高电平,而且,这个高电平连续时间是由电路中RC值来决定.经典51单片机中当RST脚高电平连续两个机器周期以上时就将复位,所以,合适组合RC取值就能够确保可靠复位.通常教科书中推荐C取10u,R取8.2K.当然也还是有其它取法,但标准就是要让RC组合能够在RST脚上产生最少2个机械周期高电平.至于怎样具体得定量计算,能够参考实际电路分析相关书籍.a.复位操作复位是单片机里初始化操作。其关键功效是把PC初始化为0000H,使得单片机从0000H单元开始来实施程序。除了在进入系统正常初始化之外,当因为程序运行时犯错或是操作错误使系统处于死锁状态时,为了摆脱困境,也需要按复位键重新开启。b.复位信号RST引脚是复位信号输入端。复位信号是高电平时有效,其有效时间是应连续24个振荡周期(即二个机器周期)以上。若是使用频率为6MHz晶振,则其复位信号连续时间要超出4us才能够完成复位操作。3.1.2晶振电路晶振电路:经典晶振取11.0592MHz(因为是能够正确得到9600波特率和19200波特率,用在有串口通讯场所)/12MHz(产生正确uS级时歇,来方便定时操作)单片机:一片STC89C52/S51或其它51系列兼容单片机3.1.3时钟电路STC89C52内部有一个可用于组成振荡器高增益反相放大器,而引脚RXD和TXD分别是这个放大器输入端和输出端。时钟可由内部方法产生或外部方法产生。内部方法时钟电路在RXD和TXD引脚上可外接定时元件,而内部振荡器就能产生自激振荡。定时元件通常是采取石英晶体及电容组成并联谐振回路。晶体振荡频率能够在1.2~12MHz之间选择,通常电容值在5~30pF之间选择,电容值大小能够对频率起到微调作用。3.2LCD显示模块LCD原理图以下图图3-2LCD原理图LCD(LiquidCrystalDisplay)是利用液晶分子物理结构和光学特征来进行显示一个技术。液晶分子特征:液晶分子是一个介于固体和液体之间棒状结构大分子物质;而且在自然形态下,含有光学各向异性特点,在电(磁)场作用下,呈各向同性特点:下面以直视型简单多路TN/STNLCDPanel(液晶显示面板)基础结构来介绍LCD基础显示原理,示意图图图3-3LCD基础显示原理3.2.1LCD显示器特点a、显示质量高因为液晶显示器中每一个点在收到信号以后就会一直保持那种色彩和亮度,且恒定发光,而不会像阴极射线管显示器(CRT)那样要去不停刷新亮点。所以,液晶显示器不仅显示画质高而且绝对不会闪烁,能够把眼睛疲惫降到最低。b、没有电磁辐射传统显示器显示材料是荧光粉,是经过电子束撞击荧光粉来实现显示,当电子束在打到荧光粉上一刹那间是会产生强大电磁辐射,尽管现在有很多显示器产品在处理辐射问题上进行了很多比较有效处理,尽可能把辐射量降到最低水平,不过要根本消除是十分困难。相对来讲,液晶显示器在预防辐射方面是含有先天优势,因为它根本就不存在任何辐射。在电磁波防范方面,液晶显示器也是有自己独特优势,它采取了十分严格密封技术未来自驱动电路里少许电磁波封闭在了显示器中,然而一般显示器为了散发烧量需求,必需要尽可能地让内部电路和空气相接触,这么内部电路所产生电磁波也就大量地向外“泄漏”了。c、可视面积大对于尺寸相同显示器来讲,液晶显示器可视面积是要更大部分。液晶显示器可视面积和它对角线尺寸是相同。而阴极射线管显示器显像管前面板四面是有一英寸左右边框不能用于显示。d、应用范围广最初液晶显示器因为无法用来显示细腻字符,所以通常应用在电子表、计算器上。但伴随液晶显示技术不停发展和进步,字符显示开始变得越来越细腻起来,同时也开始支持基础彩色显示,并逐步被用于液晶电视、摄像机液晶显示器上、掌上游戏机上。3.3继电器模块继电器是一个由电子控制器件,它含有控制系统(又称之输入回路)和被控制系统(又称之输出回路),通常被应用于自动控制电路中,它实际上就是用较小电流去控制较大电流一个“自动开关”。所以在电路中起着自动调整、安全保护、转换电路等作用。3.3.1电磁继电器工作原理和特征电磁式继电器大全部是由铁芯、线圈、衔铁、触点簧片等组成。只需要在线圈两端加上一定电压,线圈中就会有一定电流经过,从而产生了电磁效应,而衔铁就将会在电磁力吸引作用下克服返回弹簧拉力吸向铁芯,以后带动衔铁动触点和静触点(常开触点)吸合。当线圈断电以后,电磁吸力也随之消失,衔铁就会在弹簧反作用力下返回原来位置,使动触点和原来静触点(常闭触点)相吸合。这么经过吸合、释放,从而达成了在电路之中导通、切断目标。而对于继电器中“常开、常闭”两触点,能够这么来区分:继电器线圈未通电时候处于断开状态静触点,称为“常开触点”;反之处于接通状态静触点称为“常闭触点”。3.3.2固态继电器工作原理和特征固态继电器是一个由两个接线端为输入端,另两个接线端作为输出端四端器件,中间是采取隔离器件实现输入输出电隔离。固态继电器按负载电源类型可分为交流型和直流型。按开关型式可将其分为常开型和常闭型。按隔离型式可将其分为混合型、变压器隔离型和光电隔离型,而以光电隔离型为最多。3.3.3继电器关键产品技术参数1、额定工作电压其是指继电器正常工作时候线圈所需要电压。依据继电器型号不一样,能够是交流电压,也能够是直流电压。2、直流电阻其是指继电器中线圈直流电阻,能够经过万能表测量。3、吸合电流其是指继电器能够产生吸合动作最小电流。当在正常使用时,给定电流必需要略大于吸合电流,这么继电器才能够稳定地工作。而对于线圈所加工作电压,通常是不要超出额定工作电压1.5倍,不然会产生较大电流而把线圈烧毁。4、释放电流其是指继电器产生释放动作最大电流。当继电器吸合状态电流减小到一定程度时,继电器就会恢复到未通电释放状态。这时电流远远小于吸合电流。5、触点切换电压和电流其是指继电器所许可加载电压和电流。它决定了继电器能够控制电压和电流大小,使用时不能超出此值,不然就会很轻易损坏继电器触点。3.4按键模块按键模块原理图以下:3-4按键原理图按键初步设计是由五个按键来完成全部操作,它们功效分别是:上一曲、下一曲、暂停、复位和控制复位。3.5其它扬声器是一个将电信号转变为声信号换能器件,扬声器性能优劣对音质造成影响很大。扬声器在音响设备中是一个最为微弱器件,而相对于音响效果而言,它又是一个最为关键部件。扬声器种类繁多,而且价格相差也很大。音频电能经过电磁,压电或静电效应,使其纸盆或膜片振动并和周围空气产生共振(共鸣)从而发出声音。低级塑料音箱因其箱体单薄而无法克服谐振,无音质可言(但也有部分设计好塑料音箱要远远好于劣质木质音箱);木制音箱降低了箱体谐振时所造成音染,音质要普遍好于塑料音箱,通常多媒体音箱全部是双单元二分频设计,一个较小扬声器用来负责中高音输出,而另一个较大扬声器则负责中低音输出。4软件设计4.1软件总体步骤图软件程序关键实现LCD显示模块、控制扬声器模块、按键模块等。LCD显示模块:用来显示播放歌曲名;扬声器模块:用来播放歌曲;按键模块:就是用来控制歌曲播放和暂停,和切换上一曲下一曲。主模块步骤图图4.1所表示:开始开始初始化初始化上一曲/下一曲上一曲/下一曲歌曲查询LCD显示LCD显示播放/暂停播放/暂停等候播放播放歌曲判定是否继续判定是否继续图4-1软件总体步骤图总体步骤图主程序:voidmain() { unsignedcharnum; chargequ1[11]="QiJiShiJie";//写入歌曲名 chargequ2[7]="QiuHua"; chargequ3[11]="ShenShenAi"; chargequ4[11]="TianLanLan"; chargequ5[17]="WoCongCaoYuanLai"; chargequ6[15]="ZhongGuoWeiDao"; chargequ7[11]="ZiYouZiZai"; chargequ8[6]="gequ8";单片机中写入歌曲名4.2播放/暂停子程序播放/暂停在程序利用内部中止T0口。将T0口设为计数中止并工作在方法2下。标识符初值赋值为R1=00H,计数初值设为TH0=0FFH,TL0=0FFH。当按键第一次产生中止信号时,播放/暂停子程序改变标志符R1,将其赋值为01H。此时播放器由暂停状态进入播放状态。当按键第二次产生中止信号时,播放/暂停子程序判定R1是否为02H后,将R1再次赋值为00H。此时,播放器由播放状态进入暂停状态。开始标识符R0=00HR0是否为00HR0是否为00H暂停播放播放播放播放/暂停将R0赋值00H将R0赋值01H将R0赋值01HR0是否为02HR0是否为02H图4-2播放步骤代码实现以下:POPDPL ;恢复现场POPDPHPOPACC SETBEA RETI;中止返回START_PAUSE:CPLF0 ;开始/暂停中止处理程序,将标置位取反JBF0,RETURN ;为1返回 SETBTR0 ;为0则播放RETURN:RETI;中止返回DELAY:MOV27H,26H ;音乐演奏控制D2:MOV28H,#125D3:MOV29H,#248DJNZ29H,$DJNZ28H,D3DJNZ27H,D2DJNZR2,DELAYRET4.3LCD显示模块软件设计4.3.1LCD初始化函数voidLCD_Init(void){LCD_Write_Com(0x38);/*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*显示关闭*/LCD_Write_Com(0x01);/*显示清屏*/LCD_Write_Com(0x06);/*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C);/*显示开及光标设置*/4.3.2LCD和继电器函数LCD_Write_String(5,0,"YinYueHe");while(1) { if(key0==0) { DelayMs(20);//延时 if(key0==0)//条件选择 {while(!key0); JiDianQi=0;//LCD显示和继电器控制扬声器同时 } } if(key1==0) { DelayMs(20); if(key1==0) {while(!key1); JiDianQi=1; } 5系统实现本设计实现是音乐盒播放和用LCD显示器显示播放曲目,系统硬件实现以下图所表示:图5-1歌曲切换图5-2歌曲切换5.1硬件调试5.1.1按键控制实现本设计中经过按键实现控制上一曲、下一曲、音乐暂停和音乐开始,以下图:图5-3显示电路实现5.1.2LCD显示本设计中利用LCD显示实现歌曲曲目标显示,以下图:图5-4LCD显示5.1.3其它软件部分关键是利用KEIL软件编写音乐盒单片机程序运行成功。图图5-5软件实现总结单片机音乐盒设计在经历了近两个月后最终基础完成了,在当初选择这个题目时认为一点思绪全部没有,以后在和老师讨论和向其它同学请教以后确定了以STC89C52单片机为基础数字音乐盒。音乐盒关键组成部分有LCD显示、单片机最小系统、继电器电路、扬声器组成;经过不停修改和完善音乐盒能够实现使用LCD显示播放歌曲名、用按键控制音乐播放/暂停和切换上一曲/下一曲,经过这次毕业设计我了解了怎样使用keil软件来编写所需要程序,怎么去合理设计一个电路,更收获了单独做一个设计所需要经验;这些全部是在此次设计中我所学到,让我受益匪浅。然而,伴伴随收获往往还有遗憾,在这次设计中我所做音乐盒还有部分瑕疵和还未实现功效;音乐盒是将放在U盘内歌曲经过音频解码后使用由继电器控制扬声器播放,不过,假如U盘内歌曲更换时,LCD显示必需要再次经过Keil软件来添加新歌曲曲名,不然就无法显示着一点是十分麻烦。而且在原来计划中,音乐盒播放时是想使用跑马灯来渲染,不过因为程序编写存在问题使得跑马灯设计失败。参考文件[1]罗亚非.凌阳16位单片机应用基础[M],北京:北京航空航天大学出版社,.[2]雷思孝.凌阳单片机原理及实用技术[M],西安电子科技大学,.[3]黄智伟.凌阳单片机课程设计指导[M],北京:北京航空航天大学出版社,.11.[4]李广弟,朱月秀,王秀山.单片机基础[M],北京:北京航空航天大学出版社,.7.[5]赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发和应用[M],西安:西安电子科技大学,.[6]李建忠.单片机原理及应用[M],西安电子科技大学出版社,.2.[7]康华光.模拟电子技术基础(第四版)[M],武汉:华中理工大学出版社,1999.[8]谭浩强.C语言程序设计(第二版)[M],北京:清华大学出版社,1991.[9]陈小忠,黄宁.单片机接口技术实用子程序[M],北京:北京人民邮电出版社,.[10]黄智伟.全国大学生电子设计竞赛系统设计[M],北京:北京航空航天大学出版社,.6.[11]贾立新,王涌.电子系统设计和实践[M],北京:清华大学出版社,.附录A元器件清单表1元器件清单STC89C521个LCD显示器1个扬声器1个继电器1个按键5个电源线1根附录B源程序#include<reg52.h>//包含头文件,通常情况不需要改动,头文件包含特殊功效寄存器定义#include<intrins.h>#defineRS_CLRRS=0#defineRS_SETRS=1#defineRW_CLRRW=0#defineRW_SETRW=1#defineEN_CLREN=0#defineEN_SETEN=1#define_Nop()_nop_()//定义空指令#defineDataPortP0sbitRS=P2^4;//定义端口sbitRW=P2^5;sbitEN=P2^6;sbitSDA=P2^1;//模拟I2C数据传送位sbitSCL=P2^0;//模拟I2C时钟控制位sbitkey0=P1^0;sbitkey1=P1^1;sbitkey2=P1^2;sbitkey3=P1^3;sbitJiDianQi=P1^4;bitack; //应答标志位voidDelayUs2x(unsignedchart);//函数申明voidDelayMs(unsignedchart);/*uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值范围是0~255这里使用晶振12M,正确延时请使用汇编,大致延时长度以下T=tx2+5uS*/voidDelayUs2x(unsignedchart){while(--t);}/*mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值范围是0~255这里使用晶振12M,正确延时请使用汇编*/voidDelayMs(unsignedchart){while(t--){//大致延时1mSDelayUs2x(245); DelayUs2x(245);}}/*开启总线*/voidStart_I2c(){SDA=1;//发送起始条件数据信号_Nop();SCL=1;_Nop();//起始条件建立时间大于4.7us,延时_Nop();_Nop();_Nop();_Nop();SDA=0;//发送起始信号_Nop();//起始条件锁定时间大于4μ_Nop();_Nop();_Nop();_Nop();SCL=0;//钳住I2C总线,准备发送或接收数据_Nop();_Nop();}/*结束总线*/voidStop_I2c(){SDA=0;//发送结束条件数据信号_Nop();//发送结束条件时钟信号SCL=1;//结束条件建立时间大于4μ_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;//发送I2C总线结束信号_Nop();_Nop();_Nop();_Nop();}/*字节数据传送函数函数原型:voidSendByte(unsignedcharc);功效:将数据c发送出去,能够是地址,也能够是数据,发完后等候应答,并对此状态位进行操作.(不应答或非应答全部使ack=0假)发送数据正常,ack=1;ack=0表示被控器无应答或损坏。*/voidSendByte(unsignedcharc){unsignedcharBitCnt;for(BitCnt=0;BitCnt<8;BitCnt++)//要传送数据长度为8位{if((c<<BitCnt)&0x80)SDA=1;//判定发送位elseSDA=0;_Nop();SCL=1;//置时钟线为高,通知被控器开始接收数据位_Nop();_Nop();//确保时钟高电平周期大于4μ_Nop();_Nop();_Nop();SCL=0;}_Nop();_Nop();SDA=1;//8位发送完后释放数据线,准备接收应答位_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();if(SDA==1)ack=0;elseack=1;//判定是否接收到应答信号SCL=0;_Nop();_Nop();}/*字节数据传送函数函数原型:unsignedcharRcvByte();功效:用来接收从器件传来数据,并判定总线错误(不发应答信号),发完后请用应答函数。*/ unsignedcharRcvByte(){unsignedcharretc;unsignedcharBitCnt;retc=0;SDA=1;//置数据线为输入方法for(BitCnt=0;BitCnt<8;BitCnt++){_Nop();SCL=0;//置时钟线为低,准备接收数据位_Nop();_Nop();//时钟低电平周期大于4.7us_Nop();_Nop();_Nop();SCL=1;//置时钟线为高使数据线上数据有效_Nop();_Nop();retc=retc<<1;if(SDA==1)retc=retc+1;//读数据位,接收数据位放入retc中_Nop();_Nop();}SCL=0;_Nop();_Nop();return(retc);}/*应答子函数原型:voidAck_I2c(void);*/voidAck_I2c(void){SDA=0;_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop();//时钟低电平周期大于4μ_Nop();_Nop();_Nop();SCL=0;//清时钟线,钳住I2C总线方便继续接收_Nop();_Nop();}/*非应答子函数原型:voidNoAck_I2c(void);*/voidNoAck_I2c(void){SDA=1;_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop();//时钟低电平周期大于4μ_Nop();_Nop();_Nop();SCL=0;//清时钟线,钳住I2C总线方便继续接收_Nop();_Nop();}/*向无子地址器件发送字节数据函数函数原型:bitISendByte(unsignedcharsla,ucahrc);功效:从开启总线到发送地址,数据,结束总线全过程,从器件地址sla.假如返回1表示操作成功,不然操作有误。注意:使用前必需已结束总线。*//*bitISendByte(unsignedcharsla,unsignedcharc){Start_I2c();//开启总线SendByte(sla);//发送器件地址if(ack==0)return(0);SendByte(c);//发送数据if(ack==0)return(0);Stop_I2c();//结束总线return(1);}*//*向有子地址器件发送多字节数据函数函数原型:bitISendStr(unsignedcharsla,unsignedcharsuba,ucahr*s,unsignedcharno);功效:从开启总线到发送地址,子地址,数据,结束总线全过程,从器件地址sla,子地址suba,发送内容是s指向内容,发送no个字节。假如返回1表示操作成功,不然操作有误。注意:使用前必需已结束总线。*/bitISendStr(unsignedcharsla,unsignedcharsuba,unsignedchar*s,unsignedcharno){unsignedchari;Start_I2c();//开启总线SendByte(sla);//发送器件地址if(ack==0)return(0);SendByte(suba);//发送器件子地址if(ack==0)return(0);for(i=0;i<no;i++){SendByte(*s);//发送数据DelayMs(1);if(ack==0)return(0);s++;}Stop_I2c();//结束总线return(1);}/*向无子地址器件读字节数据函数函数原型:bitIRcvByte(unsignedcharsla,ucahr*c);功效:从开启总线到发送地址,读数据,结束总线全过程,从器件地址sla,返回值在c.假如返回1表示操作成功,不然操作有误。注意:使用前必需已结束总线。*//*bitIRcvByte(unsignedcharsla,unsignedchar*c){Start_I2c();//开启总线SendByte(sla+1);//发送器件地址if(ack==0)return(0);*c=RcvByte();//读取数据NoAck_I2c();//发送非就答位Stop_I2c();//结束总线return(1);}*//*向有子地址器件读取多字节数据函数函数原型:bitISendStr(unsignedcharsla,unsignedcharsuba,ucahr*s,unsignedcharno);功效:从开启总线到发送地址,子地址,读数据,结束总线全过程,从器件地址sla,子地址suba,读出内容放入s指向存放区,读no个字节。假如返回1表示操作成功,不然操作有误。注意:使用前必需已结束总线。*/bitIRcvStr(unsignedcharsla,unsignedcharsuba,unsignedchar*s,unsignedcharno){unsignedchari;Start_I2c();//开启总线SendByte(sla);//发送器件地址if(ack==0)return(0);SendByte(suba);//发送器件子地址if(ack==0)return(0);Start_I2c();SendByte(sla+1);if(ack==0)return(0);for(i=0;i<no-1;i++){*s=RcvByte();//发送数据Ack_I2c();//发送就答位s++;}*s=RcvByte();NoAck_I2c();//发送非应位Stop_I2c();//结束总线return(1);}/*判忙函数*/bitLCD_Check_Busy(void){DataPort=0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return(bit)(DataPort&0x80);}/*写入命令函数*/voidLCD_Write_Com(unsignedcharcom){//while(LCD_Check_Busy());//忙则等候DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort=com;_nop_();EN_CLR;}/*写入数据函数*/voidLCD_Write_Data(unsignedcharData){//while(LCD_Check_Busy());//忙则等候DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort=Data;_nop_();EN_CLR;}/*清屏函数*/voidLCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*写入字符串函数*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==0) { LCD_Write_Com(0x80+x);//表示第一行 }else { LCD_Write_Com(0xC0+x);//表示第二行 }while(*s) {LCD_Write_Data(*s);s++; }}/*写入字符函数*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0) { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }LCD_Write_Data(Data);}/*

温馨提示

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

评论

0/150

提交评论