电气1191 蒋杰锋 09 开机次数记录器._第1页
电气1191 蒋杰锋 09 开机次数记录器._第2页
电气1191 蒋杰锋 09 开机次数记录器._第3页
电气1191 蒋杰锋 09 开机次数记录器._第4页
电气1191 蒋杰锋 09 开机次数记录器._第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、等级:湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 基于I2C的开机次数记录器 专 业 电器工程及其自动化 班 级 电气1191 学 号 201101019109 姓 名 蒋杰锋 指导教师 赵葵银 李晓秀 王迎旭等 2013年09月02 日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 基于I2C的开机次数记录器 专业班级 电气工程及其自动化 学生姓名 蒋杰锋 学 号 201101019109 指导老师 赵葵银 审 批 赵葵银、汪超、李晓秀等 任务书下达日期 2013年09月 02 日任务完成日期 2013年09月13日设计内容与设计要求设计内容:以

2、51系列单片机为核心,使用24C02串行I2C EEPROM进行存储开机次数,由LED数码管显示存储的开机次数。单片机复位1次,从24C02中读取数据,然后加1,最终数码管显示的数字就是开机次数。要求焊接好开发板,并在发的开发板上进行调试。关键字:51系列单片机、24C02芯片、开机次数设计要求:1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要元器件选择;4)开发板焊接及测试5)系统软件设计及调试;6)系统联调及操作说明7)写说明书主 要 设 计 条 件1. MCS-51单片机实验操作台1台;2. PC机及单片机调试软件,仿真软件proteus;3. 开发板1块; 4. 制作工具1

3、套;5. 系统设计所需的元器件。说 明 书 格 式1. 封面2. 课程设计任务书3. 目录4. 系统总体方案设计5. 系统硬件设计6. 软件设计(包括流程图)7. 系统的安装调试说明8. 总结 9. 参考文献10. 附录11. 课程设计成绩评分表。进 度 安 排设计时间分为二周第一周星期一、上午:布置课题任务,课题介绍及讲课。下午:借阅有关资料,总体方案讨论。星期二、分班级焊接开发板星期三、确定总体方案,学习与设计相关内容。星期四、各部分方案设计,各部分设计。星期五、设计及上机调试。星期六、设计并调试第二周星期一:设计及上机调试。星期二:调试,中期检查。星期三:调试、写说明书。星期四-星期五上

4、午:写说明书、完成电子版并打印成稿。星期五下午:答辩。目录第1章 概述.11.1 课程设计的要求的意义.1第2章 总体方案.2 2.1 方案的选择.2 2.2 系统结构框图及工作原理.3第3章 系统硬件设计.43.1 单片机的选择.43.2 串行E2PROM.53.3 单片机的端口分配.93.4 复位电路的设计.93.5 LED指示灯电路的设计 .9第4章 开发板的焊接及其调试.104.1 开发板的焊接. . .104.2 开发板的测试. . .10第5章 硬件调试与结果分析.115.1 调试方法.115.2 调试中出现的问题及解决办法.115.3 调试结果.12第6章 设计总结.14参 考

5、文 献. .15附录A 系统硬件原理图.15附录B 程序清单. 16第1章 概述1.1课程设计的要求目的意义单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的

6、最佳选择。开机次数是我们使用计算机的一个很重要的参数。随着我们在日常生活中对计算机使用的频率和次数越来越频繁,我们有必要统计我们使用计算机的次数也就是开机次数,以便提醒我们对计算机内部的硬件进行检修维护和更换。因此,我们就利用MCS-51单片机实验操作台开发了一套程序来实现这一功能,具有现实意义。本课题以单片机为核心,实现对开机次数的统计和警报。使用24C02串行I2C EEPROM进行存储开机次数,由LED数码管显示存储的开机次数。单片机复位1次,从24C02中读取数据,然后加1,最终数码管显示的数字就是开机次数。要求焊接好开发板,并在发的开发板上进行调试。以此简易的控制系统来达到初步应用单

7、片机,同时对各门学科知识作一个较好的整合,对单片机和C语言这两门课程在实际实现形成较好的概念和理解。最关键的是在这个过程当中学会和加深对单片机的使用,为以 后的学习和工作打下良好的基础。第2章 系统总体方案选择与说明2.1 方案的选择该系统的功能就是能测量开机次数。要完成此功能,关键在次数的写入和读出,因此只要能累计关机或开机次数,并且能在开机后读出来,即可实现记录的功能。采用AT89C52和24C02作为基本元件. 以口P3.4和P3.5来控制24C02的时钟信号线SCL和数据线SDA。载入程序,自动初始化,在数码管上显示开机次数,将程序下载到芯片时,显示的第一次为0。然后进行判断是否有操作

8、:若是开机,则存储在24C02中的数据加1,然后立即读出显示在数码管上;若是关机,则24C02里面的数据加1,在再次开机时将数据读出显示在数码管上。 注:本次的系统设计采用30溢出,即当计数30次后自动清零。主程序流程22系统结构框图及工作原理 用AT89C52、24C52及其外围电路构成一个系统,完成一个开机次数记录器的设计。每次在按了复位键或开关键后,显示的开关机次数在前一次的显示数值上加1,以此类推,在满100次后,重新开始计数。在此目的实现过程中,程序要实现包括89C52的读地址、读24C02 子程序和写入24C02 程序、子程序的显示等主要功能。 24C02是2K字节的串行EEPRO

9、M, 内部含有256个8位字节,该器件通过总线操作,并有专门的写保护功能。 下面给出的是24C02的电路原理图和器件管脚描述。 串行EEPROM简称I2C总线式串行器件。串行器件不仅占用很少的资源和I/O线,而且体积大大缩小,同时具有工作电源宽、抗干扰能力强、功耗低、数据不易丢失和支持在线编程等特点。 I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。 根据设计要求和设计思路,硬件电路包括单片机按键电路,LED显示器电路,时钟电路以及复位

10、电路,结合2.2设计思路可完成功能的实现。 硬件电路设计如图所示第 3章 系统硬件设计31 单片机的选择 单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,AT89C51在我国非常流行,它最大的特点是内部有可以多次重复编程的ROM,并且R

11、OM可以直接用编程器来擦写,使用起来比较方便。本设计使用到的元器件包括:AT89C51芯片、数码LED显示器、七段LED数码管的译码。其中AT89C51是系统的核心,它主要负责控制各个部分的协调工作。在其外围接上复位电路,上拉电阻,数码管,按钮以及振荡器,数码管段选P0口,位选P2口。 AT89C523.2串行E2PROM作为本次实验的一个很重要的芯片,我查阅了关于串行E2PROM的资料:串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。对于只用一片24C02器件的系统,因为不需要分辨

12、不同的地址,只要WP保护功能正常就可以了,这只要断开WP与CPU连线且保持高电平,再试一下系统数据读写功能是否正常就可以了。而这一点对软件抗干扰技术也是至关重要的。一般来说,同种牌号的24C02器件性能是一样的,可以采用抽样试验决定取舍;对于有2片24C02以上的系统,必须严格检查其器件寻址功能,这可以轮流拨下其中一片24C02器件,检查相应的数据存取功能,若没有交叉出错现象则可以选用。CAT24WC01/02/04/08/16支持I2C总线数据传送协议,I2C总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件

13、控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2 可以实现将最多8 个24WC01 和24WC02,器件4 个242C04器件,2 个24WC08 器件和1 个24WC16 器件连接到总线上。I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。1I2C总线的基本结构采用I2C总线标准的

14、单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂*或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。I2C总线接口电路结构如图1所示。2双向传输的接口特性传统的单片机串行接口的发送和接收一般都各用一条线,如MCS51系列的TXD和RXD,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。主器件

15、用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。在总线上,既没有中心机,也没有优先机。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于此时数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。3I2C总线上的时钟信号在I2C总线上传送信息时的时钟同步信号是由

16、挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器

17、件确定。4数据的传送在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图2所示。当时钟线SCL 为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。数据的传送过程如图3所示。每次都是先传最高位,通

18、常从器件在接收到每个字节后都会作出响应,即释放SCL线返回高电平,准备接收下一个数据字节,主器件可继续传送。如果从器件正在处理一个 实时事件而不能接收数据时,(例如正在处理一个内部中断,在这个中断处理完之前就不能接收I2C总线上的数据字节)可以使时钟SCL线保持低电平,从器件必须使SDA保持高电平,此时主器件产生1个结束信号,使传送异常结束,迫使主器件处于等待状态。当从器件处理完毕时将释放SCL线,主器件继续传送。当主器件发送完一个字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,在此时钟内主器件释放SDA线,一个字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在

19、该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。5总线竞争的仲裁总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况。例如,多单片机系统中,可能在某一时刻有两个单片机要同时向总线发送数据,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则

20、进入数据位的比较,从而确保了竞争仲裁的可*性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。AT24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含256×8位存储空间,具有工作电压宽(2.55.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89C51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51试验开发板上和单片机的P3.5连接。第6脚SCL为串行时钟输

21、入线,在AT89C51试验开发板上和单片机的P3.6连接。SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚需要接地。24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。33 单片机的端口分配 P0.0P0.7:P0口8位口线,用于数码管段控制显示。P2.6、P2.7:P2口3位口线,用于数码管位控制显示:P2.7P2.6W1W234 复位电路的设计复位电路是使单片机初始化,即使单片机重新开始执行程序。当复位开关按下,RST由高电平变为低

22、电平,则程序从头开始执行。通常选择C=1030F,R=1K,本设计采用的电容值为22F的电容和电阻为10k电阻。在此次课程设计电路中复位实现次数加一。35 LED指示灯电路的设计 动态显示将数码管的8个显示笔划的同名端连在一起,当单片机输出字形码时,所有数码管都接收到相同的字形码,单片机对位选通COM端电路的控制,由那个数码管会显示出字形,通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示。数码显示管分为共阳数码管和共阴数码管两种。本设计采用共阳极数码显示管做显示电路。由于采用的是共阳的数码显示管,所以只要数码管的各引脚为低电平,那么其对应的二极管就会发光。数码管要显示开关机次数

23、,数码管采用动态显示。段选位接P0口;位选位接P2口。第4章 开发板焊接及其测试 4.1 开发板的焊接 根据焊接的开发板上的提示,先将要测量电阻及电容测量好,然后根据先焊接矮的,后焊接高的,焊接电容时要注意方向,焊接三极管时要注意有字体的一面朝右朝下,再根据元器件的性能看准方向焊接,焊完整个开发板。 4.2 开发板的测试 根据端口接线表 将开发板连接好,进行测试,通过按INT1键看开发板的变化,如果不对看看接线是否有误,或者测量原件的好坏。第5章 硬件调试与结果分析5.1 调试方法 首先将用KEIL编译好的程序进行编译,程序无错误运行后产生hex 文件,然后用单片机连接电脑用软件下载到单片机中

24、试运行看结果。调试时单片机p0口一次连接显示管a到dp,单片机p2.7到p2.6显示管位选连接W1和W2,将P3.5和P3.6用跳帽连接起来,连接好电源都打开调试。5.2 调试中出现的问题及解决办法在调试的过程中我的单片机显示不稳定,调试时按键加减显示过快出现跳跃式显示,甚至有时候它还在不断的乱跳,产生乱码的现象。后来经过我的检查我发现时我在焊接的时候把AT89C51的两个P0.3和P0.4两个点焊起来了。后来经过我的调整后数码管终于是可以正常的亮起来了。5.3 调试结果初次启动,数码管显示“00”按一次“REST”键,相当于重启一下,数码管显示“01”再按一次“REST”键,相当于重启一下,

25、数码管显示“02”再按13次“REST”键,数码管显示“15”再按14次“REST”键,数码管显示“29”再按一次“REST”键,已达一个循环,数码管显示“00”,重新开始计数第6章 设计总结时间过的很快,一下子为期两周的课程设计就结束了。赵老师的耐心指导和自己的不懈努力下,我终于顺利的完成了这次课程设计。回顾这两个星期的时间,通过本次课程设计使我对Proteus仿真软件的使用和汇编语言有了更进一步的了解和掌握,并且在我发现我不仅单片机的知识更加扎实了,计算机软件运用得更加娴熟了,我的焊接技术更熟练了,更重要的是我和同学之间的友谊更加牢固了,我的意志更是得到了不少的锻炼。首先任务下达后我们开始

26、了单片机的焊接。这在别人眼里看似简单的基本工作对我来说实在是太容易了。由于我平时是一个很粗心的人,在焊接的过程中我不时把原件的位置搞错了以致我不得不花很大的功夫把焊错的原件拆下来重新焊好。由于我的焊接水平的问题导致在下面的实验中出现了问题,我一定会吸取这样的教训的。在最初学习编写过程中,一开始因为对软件不熟悉,要慢慢摸索,后来差不多会了以后,画仿真图又浪费了我大量的时间,最后在不断努力中终于把仿真图画出来了。后来由于对于书本上的很多知识还不能灵活运用,尤其是对程序语言的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,最后自己陷入雨里雾里去来,脑袋一片混乱。幸好后来通过自己

27、和同学的仔细的分析,经过赵老师的悉心指导,我认真分析了原来已有的代码硬件后,经过多次调试和测试终于成功了。平心而论,这次课程设计耗费了我不少的心血。 虽说这次课程设计有点辛苦,但是苦中还是有乐的,和同学们相互帮助。当LED亮了起来,数码管显示按步骤显示起来时是对我这段日子以来最好的告慰。在查找资料的过程中我也学到了许多新的知识,在和同学协作的过程中增进同学友谊,使我对团队精神的积极性和重要性有了更加充分的理解,相信着一定会对我以后的学习和工作有很大的帮助。最后,在这里我要特别感谢赵葵银赵老师的悉心指导,如果不是您的指导恐怕我是很难完成这次的任务了。谢谢您!赵老师!您辛苦了!参考文献1 王迎旭.

28、单片机原理与应用M.北京:机械工业出版社,2004 2 江世明. 基于Proteus的单片机应用技术. 电子工业出版社 2008年 3 范力旻. 单片机原理与应用. 北京电子工业出版社2009年 4 楼然苗,李光飞.单片机课程设计指导. 北京北京航空航天大学出版社,2007年 5 万光毅. 单片机实验与实践教程. 北京航天航空大学出版社 2003年6 英国Guiyun Tian.Foundation and Application of Microcontroller.高等教育出版社,2004年11月附录A 系统硬件原理图附录 B:程序清单#include<reg52.h>#def

29、ine uchar unsigned char#define uint unsigned intsbit sda=P35; /数据信号sbit scl=P34; /时钟信号控制端口sbit beep=P37; /蜂鸣器控制口uchar code table=0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0 ; /数码管0-9显示uchar a;void delay(); /短延时函数void delay1(uchar x); /长延时函数,xmsvoid start(); /起始信号void stop(); /停止信号void respons(

30、); /应答信号void init(); /初始化函数void write_byte(uchar date); /写字节函数uchar read_byte(); /读字节函数void write_add(uchar address,uchar date); /在某个存储地址上写数据uchar read_add(uchar address); /在确定地址上读数据void main()uchar k,a,b,i;k=read_add(7);k+;if(k=30)for(i=4;i>0;i-)beep=1;k=0; /读7地址里面的数据 write_add(7,k); while(1) /写

31、复位次数数据到7地址P1=0XFF; /消影P2=0XFE; /位选a=k/10;P1=tablea; /段选delay1(1); /动态扫描显示P1=0XFF; /消影P2=0XFD; /位选b=k%10;P1=tableb; /段选delay1(1); void delay() /短延时函数 ; void start() /起始信号sda=1;delay();scl=1;delay();sda=0;delay();void stop() /停止信号sda=0;delay();scl=1;delay();sda=1;delay();void respons() /应答信号uchar i;scl=1;delay();while(sda=1)&&(i<250)i+; /若一段时间后没有应答则默认应答scl=0;delay(); void init() /初始化函

温馨提示

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

评论

0/150

提交评论