




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要:随着人类社会的不断繁荣与发展,人们对自身生活品质的要求也变得越来越高,在听觉方面传统的音乐盒能带给人们的更多的只是美好的回忆,而由于单片机具有的体积小、成本低、运算快和功耗小等特点得到了人们越来越广泛的运用。本设计是一个基于STC89C52系列单片机的音乐盒,依据单片机技术及原理,通过硬件电路的制作以及软件编译,设计制作出一个插卡式音乐盒。该音乐盒主要是由按键电路、继电器电路、LCD显示电路以及扬声器组成。使用五个按键控制音乐盒,分别用来控制音乐盒的播放/暂停,复位,切换上一曲 /下一曲,本音乐盒利用优盘共存有五首歌曲。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,之后下载进5
2、1单片机中使用。关键词:单片机 音乐盒 LCD第41页共38页AbstractWith the con ti nu ous developme nt of huma n society, peoples quality of life dema nds are in creas in gly high, the traditi onal music box in the auditory aspectto bring people more good memories, but due to the microcomputer has the adva ntages of small volu
3、me, low cost, low power con sumpti on and fast operati on has bee n more and more extensive use. The design is based on the music box STC89C52 Series MCU, based on sin gle chip microcomputer prin ciple, the hardware circuit and software compilati on, desig ned to produce aplug-i n music box. The mus
4、ic box is composed of a key circuit, a relay circuit,LCD display circuit and a loudspeaker. The use of four butt ons con trol themusic boxes, music boxes were used to con trol the play / pause, switch on a /the next song, the music box using the USB coexist with five son gs. The desig n of program m
5、ing on the music box and debug source code using KEIL program ming software, the n dow nl oad into 51 sin gle chip processor.Keywords: SCM Music Box LCD目次 31引言 41.1 音乐盒的意义 41.2 研究内容 52.1系统总体框架图 62.2音乐盒的设计原理 62.3 单片机芯片概述 63硬件电路设计 83.1单片机最小系统原理图 83.1.1 复位电路 83.1.2 晶振电路 93.1.3时钟电路 93.2 LCD显示模块 93.3 继电器
6、模块 113.3.1电磁继电器的工作原理和特性 113.3.2 固态继电器的工作原理和特性 123.3.3 继电器主要产品技术参数 123.4按键模块 123.5 其它 134软件设计 144.1软件总体流程图 144.2播放/暂停子程序 154.3 LCD显示模块软件设计 174.3.1 LCD的初始化函数 174.3.2 LCD与继电器的函数 175系统实现 195.1硬件调试 205.1.1 按键控制的实现 205.1.2 LCD 显示 205.1.3 其他 21总结 22致谢 错误!未定义书签。参考文献 23附录A元器件清单 24附录B源程序 251引言在进入21世纪后,单片机产品的发
7、展正朝着高性能和多品种方向,并且发 展趋势是进一步朝着CMO化、小体积、低功耗、大容量、高性能、低价格以及 外围的电路内装化等几个方面去发展。单片机的应用的重要意义还是在于它是从 根本上改变了传统的控制系统设计思想和设计方法。 过去必须要由模拟电路或者 数字电路才可以实现的大部分的功能,现在已能完全可以用单片机通过软件的方 法来实现了。这种由软件去代替硬件的控制技术也称之为微控制技术,这是传统控制技术的一次革命。单片机可以说渗透到了我们生活的各个方面,几乎难以找到哪个领域里没有单片机的踪迹。导弹中的导航装置,飞机里安装的各种仪表的 控制,计算机里的网络通讯与数据传输方面, 工业自动化过程中实时
8、控制和数据 处理方面,生活中被广泛使用的各种智能 IC卡,民用的高档轿车的安全保障系 统,摄像机、录像机、全自动洗衣机所涉及的控制方面,以及远程控制的玩具、 电子宠物等等,这些全都是离不开单片机的。而伴随着科学技术的不断进步和社会的持续发展,人类所接触的更种信息也 在不断增加并且信息变得越来越复杂。 面对着浩如烟海的繁杂信息,人们目前已 经能利用计算机等工具快速、精准地对其进行快速处理,但要想将其处理完毕的 信息及时、清晰地传递给其他人,还必须要寻找更加卓越的显示技术去实现它。 而单片机技术与液晶显示技术的结合,恰恰使得信息的传输交流向着智能化可视 化方向进行快速发展。1.1 音乐盒的意义音乐
9、盒的起源,可以追溯到中世纪欧洲文艺复兴时期。 当时为了使教会的钟 塔报时,而将大小的钟表装上了机械装置,被称之为“可发出声音的组钟” 。音 乐盒已有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒大多是机械音乐盒,其工作的原理是通过齿轮来带动一个带有 铁钉的铁桶转动,铁桶上的铁钉撞击用铁片制成的琴键,从而发出声音。但是, 机械式的音乐盒体积较大,比较笨重,并且发音单调。水和灰尘等外在因素,容 易使得内部金属发音条变形,从而会造成发音跑调。此外,机械音乐盒放音时为 了能让音色稳定,必须要放平不能动摇,而且价格昂贵,不能够实现大批量生产。1.2 研究内容利用STC89C52单片机,结
10、合LCD显示模块、继电器驱动模块、音频解码 电路,完成音乐盒的播放;具体设计实现的功能如下(1)通过按键控制多首音乐播放,并可通过按键选择一个开始,一个暂停, 一个翻上首,一个翻下首;(2)通过显示电路显示播放歌曲名或编号;2系统总体设计2.1系统总体框架图音乐盒的系统结构是以STC89C5单片机位控制核心,加上5个按键、继电 器、扬声器、LCD显示模块组成。单片机负责接收按键的输入,根据输入控制音 乐播放曲目和LCD显示屏显示歌曲名以及扬声器发音。系统组成框图如图2.1所示。图2-1系统总体框架图2.2音乐盒的设计原理利用KEIL软件编音乐盒写程序,将编写好的程序下载进51单片机内,利用单片
11、机控制LCD显示歌曲名,之后将所需要播放的歌曲放入 U盘,利用由继电 器控制音频解码电路来实现音乐的播放,再通过按键实现上一首和下一首及暂停 播放。2.3单片机芯片概述STC89C5是STC公司生产的一种低功耗、高性能CMOS位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的 改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C5为众多嵌入式控制应用系统提供高 灵活、超有效的解决方案。 具有以下标准功能:8k字节Flash,512字节RAM 32位I/O 口线,看门狗定时器
12、,内置4KBEEPRO,MMAX81(复位电路,3个16位 定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向 量2级中断结构),全双工串行口。另外STC89C52可降至OHz静态逻辑操作, 支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM定时器 /计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率 35MHz 6T/12T可选。原理图如下1XpT39S643212i6S巧0023PPO42p22p5opcx-c6 7 o op p2 o p52p1 o2 2p p8
13、9C52图2-2单片机引脚图3硬件电路设计3.1单片机最小系统原理图C 1 2 _3 5 6 7 p E 7 6 $ 4 3 ycpocpopo就期P0网P0订心呻P2P2腔P2巴2 1 O2 2 2 p p PQ 1 2 3 4 5 6 7ITccCE2 3 4 5 6 T r*r2l plplplPLplplplplRSRXTX已刃PJP3珀巴 mO1U259C图3-1单片机最小系统原理图3.1.1复位电路复位电路:由两个电容串联电阻构成,由图3.1并结合电容电压不能够突变 的性质,可以知道,当系统一上电时,RST脚将会出现高电平,并且,这个高电平持 续的时间是由电路中的RCB来决定的典型
14、的51单片机中当RS脚的高电平持续 两个机器周期以上时就将复位,所以,适当的组合RC的取值就可以保证可靠的复 位.一般教科书中推荐C取10u,R取8.2K.当然也还是有其他取法的,但原则就是 要让RC勺组合可以在RS脚上产生至少2个机械周期的高电平.至于如何具体得定 量计算,可以参考实际电路分析相关书籍a.复位操作复位是单片机里的初始化操作。其主要的功能是把PC初始化为0000H,使得单片机从0000H单元开始来执行程序。除了在进入系统的正常初始化之外,当由 于程序运行时出错或是操作错误使系统处于死锁状态时,为了摆脱困境,也需要按复位键重新启动。b.复位信号RSTJI脚是复位信号的输入端。复位
15、信号是高电平时有效,其有效时间是应 持续24个振荡周期(即二个机器周期)以上。若是使用频率为6MH的晶振,贝U其复 位信号持续时间要超过4us才能够完成复位操作。3.1.2晶振电路晶振电路:典型的晶振取11.0592MHz(因为是可以准确的得到9600波特率和 19200波特率,用在有串口通讯的场合)/12MHz(产生精确的uS级时歇,来方便定时 操作)单片机:一片STC89C52/S5或其他51系列兼容单片机3.1.3时钟电路STC89C5内部有一个可用于构成振荡器的高增益反相放大器,而引脚RX与TXD别是这个放大器的输入端和输出端。时钟可由内部方式产生或外部方式产 生。内部方式的时钟电路在
16、RX和TX引脚上可外接定时元件,而内部振荡器就能 产生自激振荡。定时元件通常是采用石英晶体及电容组成的并联谐振回路。晶体的振荡频率可以在1.212MH之间选择,一般电容值在530pF之间选择,电容 值的大小可以对频率起到微调的作用。3.2 LCD显示模块LCD原理图如下图LCD一 ri s图3-2 LCD原理图LCD(Liquid Crystal Display)是利用液晶分子的物理结构以及光学特性来进行显示的一种技术。液晶分子的特性:液晶分子是一种介于固体和液体之间的 棒状结构的大分子物质;并且在自然形态下,具有光学各向异性的特点,在电(磁) 场的作用下,呈各向同性特点:下面以直视型的简单多
17、路TN/STN LCD Pan el(液晶显示面板)的基本结构来介绍LCD勺基本显示原理,示意图如图I分子Will玻璃基板间电圧叢任石基板间电压=交流电压图3-3 LCD的基本显示原理321 LCD显示屏的特点a、显示质量高由于液晶显示器中每一个点在收到信号之后就会一直保持那种色彩和亮度, 且恒定发光,而不会像阴极射线管显示器(CRT那样要去不断刷新亮点。因此, 液晶显示器不仅显示画质高而且绝对不会闪烁,可以把眼睛疲劳降到最低。b、没有电磁辐射传统的显示器的显示材料是荧光粉,是通过电子束撞击荧光粉来实现显示,当电子束在打到荧光粉上的一刹那间是会产生强大的电磁辐射的, 尽管目前有许 多的显示器产
18、品在处理辐射问题上进行了很多比较有效的处理, 尽可能的把辐射 量降到最低水平,但是要彻底消除是十分困难的。相对来讲,液晶显示器在防止 辐射方面是具有先天优势的,因为它根本就不存在任何辐射。在电磁波的防范方 面,液晶显示器也是有自己独特的优势,它采用了十分严格的密封技术将来自驱 动电路里的少量电磁波封闭在了显示器中,然而普通显示器为了散发热量的需 求,必须要尽可能地让内部的电路与空气相接触, 这样内部电路所产生的电磁波 也就大量地向外“泄漏”了。C、可视面积大对于尺寸相同的显示器来讲,液晶显示器的可视面积是要更大一些。 液晶显 示器的可视面积和它的对角线尺寸是相同的。 而阴极射线管显示器显像管前
19、面板 四周是有一英寸左右的边框不能用于显示的。d、应用范围广最初的液晶显示器因为无法用来显示细腻的字符,所以通常应用在电子表、 计算器上。但随着液晶显示技术的不断发展和进步,字符显示开始变得越来越细 腻起来,同时也开始支持基本的彩色显示, 并逐步被用于液晶电视、摄像机的液 晶显示器上、掌上游戏机上。3.3 继电器模块继电器是一种由电子控制的器件,它具有控制系统(又称之输入回路)和被 控制系统(又称之输出回路),通常被应用于自动控制电路中,它实际上就是用 较小的电流去控制较大电流的一种“自动开关”。所以在电路中起着自动调节、 安全保护、转换电路等作用。3.3.1电磁继电器的工作原理和特性电磁式继
20、电器大都是由铁芯、线圈、衔铁、触点簧片等组成的。只需要在线 圈两端加上一定的电压,线圈中就会有一定的电流经过,从而产生了电磁效应, 而衔铁就将会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,之后带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电之后,电磁的吸力也随之消 失,衔铁就会在弹簧的反作用力下返回原来的位置, 使动触点与原来的静触点(常 闭触点)相吸合。这样通过吸合、释放,从而达到了在电路之中的导通、切断的 目的。而对于继电器中的“常开、常闭”两触点,可以这样来区分:继电器线圈 未通电时候处于断开状态的静触点,称为“常开触点”;反之处于接通状态的静 触点称为“常闭触点”。332固态继
21、电器的工作原理和特性固态继电器是一种由两个接线端为输入端,另两个接线端作为输出端的四端 器件,中间是采用隔离器件实现输入输出的电隔离。固态继电器按负载电源类型可分为交流型和直流型。按开关型式可将其分为常开型和常闭型。按隔离型式可将其分为混合型、变压器隔离型和光电隔离型, 而以光电隔离型为最多。3.3.3继电器主要产品技术参数1、额定工作电压其是指继电器正常工作时候线圈所需要的电压。根据继电器的型号的不同, 可以是交流电压,也能够是直流电压。2、直流电阻其是指继电器中线圈的直流电阻,能够通过万能表测量。3、吸合电流其是指继电器能够产生吸合动作的最小电流。 当在正常使用时,给定的电流 必须要略大于
22、吸合电流,这样继电器才能够稳定地工作。而对于线圈所加的工作 电压,一般是不要超过额定工作电压的1.5倍,否则会产生较大的电流而把线圈 烧毁。4、释放电流其是指继电器产生释放动作的最大电流。 当继电器吸合状态的电流减小到一 定程度时,继电器就会恢复到未通电的释放状态。这时的电流远远小于吸合电流。5、触点切换电压和电流其是指继电器所允许加载的电压和电流。 它决定了继电器能够控制电压和电 流的大小,使用时不能超过此值,否则就会很容易损坏继电器的触点。3.4按键模块按键模块原理图如下:3-4按键原理图按键初步设计是由五个按键来完成所有的操作,它们的功能分别是: 曲、下一曲、暂停、复位和控制复位。3.5
23、 其它扬声器是一种将电信号转变为声信号的换能器件,扬声器的性能优劣对音质 造成的影响很大。扬声器在音响设备中是一个最为薄弱的器件, 而相对于音响效 果而言,它又是一个最为重要的部件。扬声器的种类繁多,而且价格相差也很大。 音频电能通过电磁,压电或者静电效应,使其纸盆或膜片振动并和周围的空气产 生共振(共鸣)从而发出声音。低档的塑料音箱因其箱体单薄而无法克服谐振,无音质可言 (但也有部分设计好 的塑料音箱要远远好于劣质的木质音箱);木制音箱降低了箱体谐振时所造成的 音染,音质要普遍好于塑料音箱,通常多媒体音箱都是双单元二分频设计的,一 个较小的扬声器用来负责中高音的输出,而另一个较大的扬声器则负
24、责中低音的 输出。4软件设计4.1软件总体流程图软件程序主要实现LCD显示模块、控制扬声器模块、按键模块等。LCD显示模块:用来显示播放的歌曲名;扬声器模块:用来播放歌曲;按键模块:就 是用来控制歌曲播放和暂停,以及切换上一曲下一曲。主模块流程图如图4.1所示:初始化歌曲查询LCD显示等待播放图4-1软件总体流程图总体流程图主程序:void mai n()un sig ned char num;char gequ111=QiJiShiJie; /写入歌曲名char gequ27=QiuHua;char gequ311=She nShe nAi;char gequ411=Tia nLanLan;
25、char gequ517=WoC on gCaoYua nLai;char gequ615=Zho ngGuoWeiDao;char gequ711=ZiYouZiZai;char gequ86=gequ8;单片机中写入的歌曲名4.2播放/暂停子程序播放/暂停在程序利用内部中断TO 口。将TO 口设为计数中断并工作在方式2下。标识符初值赋值为 R仁00H计数初值设为TH0=0FFH,TL0=0FFH当按键第 一次产生中断信号时,播放/暂停子程序改变标志符R1,将其赋值为01Ho此时 播放器由暂停状态进入播放状态。当按键第二次产生中断信号时,播放/暂停子程序判断R1是否为02H后,将R1再次赋值
26、为00耳 此时,播放器由播放状态进 入暂停状态。开始图4-2播放流程代码实现如下:POP DPL;恢复现场POP DPHPOP ACCSETB EARETI;中断返回START_PAUSE:CPL F0;开始/暂停中断处理程序,将标置位取反JB F0,RETURN;为1返回SETB TR0;为0则播放RETURN:RETI;中断返回DELAY: MOV 27H,26H;音乐演奏控制D2: MOV 28H,#125D3: MOV 29H,#248DJNZ 29H,$DJNZ 28H,D3DJNZ 27H,D2DJNZ R2QELAYRET4.3 LCD显示模块软件设计4.3.1 LCD的初始化函
27、数void LCDni t(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.2 LCD与继电器的函数LCD_Write_S
28、tri ng(5,0,Yi nYueHe);while (1)if(keyO=O) DelayMs(20); / 延时if(keyO=O) /条件选择while(!keyO);JiDia nQi=O; / LCD的显示和继电器控制扬声器的同步if(key1=0) DelayMs(20);if(key1=0)while(!key1);JiDia nQi=1;5系统实现本设计实现的是音乐盒的播放以及用 LCD显示屏显示播放曲目,系统的硬件实现如下图所示:图5-1歌曲切换图5-2歌曲切换5.1硬件调试5.1.1按键控制的实现本设计中通过按键实现控制上一曲、下一曲、音乐暂停和音乐开始,如下图:图5-3
29、显示电路的实现5.1.2 LCD 显示本设计中利用LCD显示实现歌曲曲目的显示,如下图:图5-4 LCD显示5.1.3其他软件部分主要是利用KEIL软件编写的音乐盒单片机程序的运行成功。如图1 訐 Pr.i. r . Fu 十z .k |SEGMENT:SENDS!R?TEXT 1WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESSSEGMENT: ?FR?_IRCVSTR?TEXT1* WAKNING LI6; UNCALLED 5EGI-TENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?F
30、R?LCD_CHECK_BUSY?TEXT1* WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY FROCESS SEGMENT: ?FR?_LCD_WRITE_CHAR?TEXT1Prograit Size:* 1 xdata0 codelSO?creating hex file from nc52n.c52n - 0 Error(3), 4 Warning(s、图5-5软件实现总结单片机音乐盒的设计在经历了近两个月后终于基本完成了,在当时选择这个题目时觉得一点思路都没有,之后在和老师讨论以及向其他同学请教之后确定了以 STC89C5单片机
31、为基础的数字音乐盒。音乐盒的主要组成部分有LCD显示、单片机最小系统、继电器电路、扬声器 组成;经过不断的修改与完善音乐盒可以实现使用 LCD显示播放的歌曲名、用按 键控制音乐的播放/暂停和切换上一曲/下一曲,通过这次的毕业设计我了解了如 何使用keil软件来编写所需要的程序,怎么去合理的设计一个电路,更收获了 单独做一个设计所需要的经验;这些都是在本次设计中我所学到的, 让我受益匪 浅。然而,伴随着收获的往往还有遗憾,在这次的设计中我所做的音乐盒还有一 些瑕疵和还未实现的功能;音乐盒是将放在U盘内的歌曲通过音频解码后使用由 继电器控制的扬声器播放的,但是,如果 U盘内的歌曲更换时,LCD的显
32、示必须 要再次通过Keil软件来添加新的歌曲曲名,否则就无法显示着一点是十分麻烦 的。而且在原来的计划中,音乐盒播放时是想使用跑马灯来渲染的,但是由于程 序编写存在问题使得跑马灯设计失败。参考文献1罗亚非凌阳16位单片机应用基础M,北京:北京航空航天大学出版社,2003.2雷思孝凌阳单片机原理及实用技术 M,西安电子科技大学,2004.3黄智伟.凌阳单片机课程设计指导M,北京:北京航空航天大学出版社,2006.11.4李广弟,朱月秀,王秀山.单片机基础M,北京:北京航空航天大学出版社,2001.7. 赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发与应用M,西安:西安电子科技大学,2000. 李
33、建忠.单片机原理及应用M,西安电子科技大学出版社,2008.2.7康华光.模拟电子技术基础(第四版)M,武汉:华中理工大学出版社,1999.8谭浩强.C语言程序设计(第二版)M,北京:清华大学出版社,1991.9陈小忠,黄宁.单片机接口技术实用子程序M,北京:北京人民邮电出版社,2005.10黄智伟.全国大学生电子设计竞赛系统设计M,北京:北京航空航天大学出版社,2006.6.11贾立新,王涌.电子系统设计与实践M,北京:清华大学出版社,2007.附录A元器件清单表1兀器件清单STC89C521个LCD显示屏1个扬声器1个继电器1个按键5个电源线1根附录B源程序#include/包含头文件,一
34、般情况不需要改动,头文件包含特殊功能寄存器的定义#in clude#defi ne RS_CLR RS=0#defi ne RS_SET RS=1#defi ne RW_CLR RW=0#defi ne RW_SET RW=1#defi ne EN_CLR EN=0#defi ne EN_SET EN=1定义空指令模拟I2C数据传送位模拟I2C时钟控制位#defi ne _Nop() _n op_()/ #defi ne DataPort P0sbit RS = P2A4; /定义端口sbit RW =卩2人5;sbit EN = P2A6;sbit SDA=P2A1;/sbit SCL=P2
35、A0;/ sbit key0=P1A0;sbit key仁P1;sbit key2=P1A2;sbit key3=P1A3;sbit JiDia nQi=P4;bit ack;/应答标志位void DelayUs2x(u nsig ned char t);/函数声明void DelayMs( un sig ned char t);/*uS延时函数,含有输入参数un sig ned char t ,无返回值un sig ned char是定义无符号字符变量,其值的范围是0255这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下T=tx2+5 uS*/ void DelayUs2x( un
36、 sig ned char t) while(-t);/*mS延时函数,含有输入参数un sig ned char t,无返回值un sig ned char是定义无符号字符变量,其值的范围是0255这里使用晶振12M,精确延时请使用汇编*/void DelayMs( un sig ned char t)while(t-)II大致延时1mSDelayUs2x(245);DelayUs2x(245);I*启动总线*/void Start_I2c()SDA=1;II发送起始条件的数据信号_Nop();SCL=1;Nop();II起始条件建立时间大于4.7us,延时_Nop();_Nop();_No
37、p();_Nop();SDA=0;II发送起始信号Nop();II起始条件锁定时间大于4卩_Nop();_Nop();_Nop();_Nop();SCL=0;II钳住I2C总线,准备发送或接收数据_Nop();_Nop();/*结束总线*/void Stop_l2c()SDA=0;/发送结束条件的数据信号_Nop();/发送结束条件的时钟信号SCL=1;/结束条件建立时间大于4卩_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; / 发送I2C总线结束信号_Nop();_Nop();_Nop();_Nop();/*字节数据传送函数函数原型:void SendBy
38、te(unsigned char c);,并对功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答 此状态位进行操作.(不应答或非应答都使ack=0假)发送数据正常,ack=1; ack=0void Sen dByte( un sig ned char c)un sig ned char BitC nt;for(BitC nt=O;BitC nt8;BitC nt+) / if(cBitC nt)&0x80)SDA=1; / else SDA=0;表示被控器无应答或损坏。*/要传送的数据长度为8位判断发送位_Nop();SCL=1;/_Nop();_Nop();/_Nop();_N
39、op();_Nop();SCL=0;_Nop();_Nop();SDA=1;8_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop(); if(SDA=1)ack=0;else ack=1; /SCL=0;_Nop();_Nop();置时钟线为高,通知被控器开始接收数据位保证时钟高电平周期大于 4 1位发送完后释放数据线,准备接收应答位判断是否接收到应答信号/*字节数据传送函数函数原型:unsigned char RcvByte();功能:用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数。*/un sig ned char RcvByte()
40、un sig ned char retc;un sig ned char BitC nt;retc=0;SDA=1;/置数据线为输入方式for(BitC nt=O;BitC nt8;BitC nt+)_Nop();SCL=0;/置时钟线为低,准备接收数据位_Nop();_Nop();/时钟低电平周期大于4.7us_Nop();_Nop();_Nop();SCL=1; /置时钟线为高使数据线上数据有效_Nop();_Nop();retc=retc1;retc 中if(SDA=1)retc=retc+1; /读数据位,接收的数据位放入_Nop();_Nop();SCL=0;_Nop();_Nop(
41、);return(retc);/*应答子函数原型:void Ack_l2c(void);*/void Ack_I2c(void)SDA=O;_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop();/时钟低电平周期大于4卩_Nop();_Nop();_Nop();SCL=O;/清时钟线,钳住I2C总线以便继续接收_Nop();_Nop();/*非应答子函数原型:void NoAck_l2c(void);*/void NoAck_I2c(void)SDA=1;_Nop();_Nop();_Nop();SCL=1;_Nop();时钟低电平周期大于4卩清时钟线,钳住I2C总线
42、以便继续接收_Nop();/_Nop();_Nop();_Nop();SCL=0;/_Nop();_Nop();/*向无子地址器件发送字节数据函数函数原型:bit ISendByte(unsigned char sla,ucahr c);功能:从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla.如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/*bit ISe ndByte( un sig ned char sla, un sig ned char c)Start_I2c();/启动总线Se ndByte(sla);/发送器件地址if(ack=O)return(
43、O);Se ndByte(c);/发送数据if(ack=0)return(0);Stop_l2c();/结束总线return(1);*/*向有子地址器件发送多字节数据函数函数原型 :bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);功能:从启动总线到发送地址,子地址 ,数据,结束总线的全过程,从器件地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/bit ISe ndStr( un sig ned cha
44、r sla, un sig ned char suba, un sig ned char *s, un sig ned char no)un sig ned char i;启动总线发送器件地址发送器件子地址发送数据结束总线Start_l2c();/Sen dByte(sla);/if(ack=O)return(O);Sen dByte(suba);/if(ack=0)return(0);for(i=0;i n o;i+)Se ndByte(*s);/DelayMs(1);if(ack=0)return(0); s+;Stop_I2c();/return(1);/*向无子地址器件读字节数据函数函
45、数原型:bit IRcvByte(unsigned char sla,ucahr *c);,从器件地功能:从启动总线到发送地址,读数据,结束总线的全过程址sla,返回值在c.如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/*bit IRcvByte( un sig ned char sla, un sig ned char *c) Start_I2c();/启动总线Sen dByte(sla+1);/发送器件地址if(ack=0)return(0);*c=RcvByte();/读取数据NoAck_l2c();/发送非就答位Stop_I2c();/结束总线return(1)
46、;*/*向有子地址器件读取多字节数据函数函数原型 :bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsignedchar no);功能:从启动总线到发送地址,子地址 ,读数据,结束总线的全过程,从器件 地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/bit IRcvStr(unsignedchar sla,unsignedchar suba,unsigned char *s,unsigned char no)un sig ned
47、 char i;Start_I2c();/Sen dByte(sla);/if(ack=O)return(O);Sen dByte(suba);/if(ack=0)return(0);Start_I2c();Sen dByte(sla+1); if(ack=0)return(0);for(i=0;i no _1;i+)*s=RcvByte();/Ack_l2c();/s+;*s=RcvByte();NoAck_I2c();/Stop_I2c();/return(1);/*判忙函数启动总线发送器件地址发送器件子地址发送数据发送就答位发送非应位结束总线*/bit LCD_Check_Busy(vo
48、id)DataPort= OxFF;RS_CLR;RW_SET;EN_CLR;_n op_();EN_SET;return (bit)(DataPort & 0x80);/*写入命令函数-*/void LCD_Write_Com (un sig ned char com)/ while(LCD_Check_Busy(); /忙则等待DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort= com;_n op_();EN_CLR;/*写入数据函数-*/void LCD_Write_Data(u nsig ned char Data)while(LCD_Check_Bus
49、y(); /忙则等待DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort= Data;_n op_();EN_CLR;/*清屏函数*/void LCD_Clear(void)LCD_Write_Com(0x01);DelayMs(5);/*写入字符串函数*/void LCD_Write_Stri ng(un sig ned char x,un sig ned char y,un sig ned char *s)if (y = 0)LCD_Write_Com(0x80 + x);/ 表示第一行elseLCD_Write_Com(OxCO + x);/ 表示第二行while (*s)LCD_Write_Data( *s);s +;/*写入字符函数*/void LCD_Write_Char( un sig ned char x,u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年重庆八中宏帆中学小升初自主招生数学试题(含答案详解)
- 2025年事业单位工勤技能-湖南-湖南家禽饲养员三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖南-湖南动物检疫员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北水生产处理工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北林木种苗工一级(高级技师)历年参考题库典型考点含答案解析
- 2025年建筑行业新型保温材料市场趋势与技术创新报告
- 2025年事业单位工勤技能-海南-海南水文勘测工二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南印刷工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-浙江-浙江土建施工人员二级(技师)历年参考题库含答案解析(5套)
- 2025-2030中国立体护围卫生巾行业竞争优势及投资战略研究报告
- 2025年匹克球裁判试题及答案
- 2025秋苏教版科学三年级上册教学设计(附目录)
- 2025国家能源投资集团有限责任公司审计中心社会招聘12人笔试参考题库附带答案详解(10套)
- 《初中必读名著导读:《水浒传》核心知识点与深度解读》
- 深圳微利房管理办法
- 诊断学血管检查
- 大连市甘井子区社区工作者招聘笔试真题2024
- 生产安全会议纪要
- 护理文书书写PDCA案例
- 哪个团队收益大+课件2025-2026学年+北师大版(2024)八年级数学上册
- 制作瓷器培训课件
评论
0/150
提交评论