资源描述
1 绪论41.1 选题概述41.2 单片机概述42 实施方案设计52.1 设计任务要求52.1.1 设计任务52.1.2 设计要求62.2 设计的主要功能62.3 方案的确定62.3.1 单片机的选择72.3.2 计时模块的选择72.3.3 显示模块的选择72.3.4 最终方案的确定83 硬件电路设计83.1 STC89C52单片机93.2 时钟模块153.2.1 DS1302性能简介153.2.2 DS1302接口电路设计13.3 按键控制模块03.4 LCD1602显示电路13.5 AT24C02存储模块33.6 电机驱动模块64 软件设计74.1 系统流程图74.2 编程软件Keil C5184.3 画图软件Protel99SE84.4 Protel使用常见问题10参考文献15附1、系统原理图16附2、proteus仿真图171.1 选题概述1.2 单片机概述2 实施方案设计2.1 设计任务要求2.1.1 设计任务2.1.2 设计要求2.2 设计的主要功能 本设计采用STC89C52单片机作为主控模块的主控芯片,结合单片机的外围电路实现对整个系统的控制,DS1302时钟芯片准确计时具有重新上电不用调时的功能,显示部分采用LCD1602液晶显示,24c02芯片可以掉电存储设置的计费数据,即使掉电也不会丢失设置的费用,3v直流电机模拟发动机工作,使整个设计更加逼真,当无乘客时液晶可以显示时间(年月日时分秒),时间可以按键设置,此时电机不工作;当有乘客时电机工作,可以通过按键开始计费系统工作,有清零键,收费可以修改(包括起价费、超过起价费每公里或分钟收费、白天和夜晚收费标准),可以切换白天和夜晚收费标准,可以按照分钟或公里收费切换。2.3 方案的确定传统的计价器采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,计数芯片对脉冲的计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示。 从我们学习单片机以后,发现数字电路的设计已经不可靠,不能适应更加繁琐的设计,所以我采用单片机技术,通过单片机作为主控器,利用1602字符液晶作为显示电路,采用内部晶振作为时钟脉冲,符合人性化,性价比较高。设计添加了AT24c02芯片,利用I2C可以对设置的价钱参数掉电保存。本设计是由软件设计和硬件设计两部分组成的。软件设计要用KEIL进行程序的编写、用PROTEUS软件进行仿真和用PROTEL 99 SE进行原理图的绘制。硬件设计要设计电路、硬件仿真和制作电路板。2.3.1 单片机的选择方案1:采用51系列单片机作为系统控制器单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。而且抗干扰性能好。方案2:采用凌阳系列单片机作为系统的控制器凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。因51单片机价格比凌阳系列低得多,且本设计不需要很高的处理速度,从经济和方便使用角度考虑,本设计选择了方案1。2.3.2 计时模块的选择方案1:采用DS1302为计时时钟芯片该芯片是串行电路,与单片机接口简单,但需另备电池和32.768kHz晶振,因焊接工艺和晶振质量等原因会导致精度降低。方案2:采用DS12C887为计时时钟芯片该芯片与单片机采用8位并口通信,传递信息速度快。自带有锂电池和晶振,外部掉电后,其内部时间信息还能够保持10年之久,因电路被封装在一起,可以保证很高的精度和抗干扰能力。而且芯片功能丰富,可以通过内部寄存器设置闹钟,并产生闹钟中断。综合考虑,虽然DS1302电路需要的外围电路复杂,但是性价比比较高,而且常用且稳定,所以选择方案1。2.3.3 显示模块的选择方案1:采用LED数码管采用LED数码管这种方案。虽然显示的内容有限,但是也可以显示数字和几个英文字母,在这个设计中已经足够了,并且价格比液晶字符式要低的多,为了控制设计制作的成本,在此设计中选用LED数码管显示。方案2:采用液晶字符显示器显示用液晶字符式,可以用软件达到很好的控制,硬件不复杂,液晶字符显示器可以显示很丰富的内容,但是液晶字符式价格昂贵,在本设计中不需要用到复杂的显示内容,因此放弃了此方案。从单片机资源的角度考虑,本设计选择了方案2,数码管虽然也可以实现,但是得用很多IO口,单片机的IO口紧张,想要显示的全面,功能齐全必须得加锁存和驱动电路,而用液晶显示就不需要复杂的外围电路。2.3.4 最终方案的确定经过反复论证,最终确定了如下方案:(1)采用STC89C52单片机作为主控制器。(2)采用DS1302作为计时时钟芯片。(3)采用LCD1602作为显示器。3 硬件电路设计本次出租车计价器设计可以分为六个模块,主控模块、计时模块、存储模块、显示模块、按键模块和电机驱动模块。设计框图如下:单片机最小系统显示模块按键模块电机控制存储模块计时模块 单片机图1 系统的总体框图3.1 STC89C52单片机单片微型计算机是随着微型计算机的发展而产生和发展的。自从1975 年美国德克萨斯仪器公司的第一台单片微型计算机( 简称单片机)TMS-1000 问世以来,迄今为止,单片机技术已成为计算机技术的一个独特分支,单片机的应用领域也越来越广泛,特别是在工业控制中经常遇到对某些物理量进行定时采样与控制的问题,在仪器仪表智能化中也扮演着极其重要的角色。如果将8位单片机的推出作为起点,那么单片机的发展历史大致可以分为以下几个阶段:第一阶段(19761978):单片机的探索阶段。以Intel公司的MCS-48为代表。MCS-48的推出是在工控领域的探索,参与这一探索的公司还有Motorola、Zilog等。都取得了满意的效果。这就是SCM的诞生年代,“单片机”一词即由此而来。第二阶段(19781982):单片机的完善阶段。Intel公司在MCS-48基础上推出了完善的、典型的单片机系列MCS-51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。(1)完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有多机通信功能的串行通信接口。(2)CPU外围功能单元的集中管理模式。(3)体现工控特性的地址空间及位操作方式。(4)指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。第三阶段(19821990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS-96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。第四阶段(1990):微控制器的全面发展阶段。随着单片机在各个领域全面、深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。单片机是在集成电路芯片上集成了各种元件的微型计算机,这些元件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时/计数器、中断系统、时钟部件的集成和I/O接口电路。由于单片机具有体积小、价格低、可靠性高、开发应用方便等特点,因此在现代电子技术和工业领域应用较为广泛,在智能仪表中单片机是应用最多、最活跃的领域之一。在控制领域中,现如今人们更注意计算机的底成本、小体积、运行的可靠性和控制的灵活性。在各类仪器、仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,提高计算机的运算速度,简化仪器仪表的硬件结构,提高其性能价格比。单片机主要特点:(1)有优异的性能价格比。(2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性和抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。(3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。(4)低功耗、低电压,便于生产便携式产品。(5)外部总线增加了I2C(Inter-Integrated Circuit)及SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。(6)单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。优异的性能价格比。1)集成度高、体积小、有很高的可靠性。 单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合于在恶劣环境下工作。此外,程序多采取固化形式也可以提高可靠性。2)控制功能强。为了满足工业控制要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。单片机的系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统。 VCC:STC89C52电源正端输入,接+5V。GND:电源地端。XTAL1: 单芯片系统时钟的反相放大器输入端。XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:STC89C52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。STC89C52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为STC89C52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。STC89C52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在STC89C52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。图2 STC89C52单片机引脚图3.1.1 最小系统设计最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。STC89C52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图2所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。时钟电路复位电路51系列单片机I/O接口图3 单片机最小系统原理框图3.1.2 时钟电路STC89C52单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图4所示。在STC89C52单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在530pF,典型值为30pF。晶振CYS的振荡频率范围在1.212MHz间选择,典型值为12MHz和6MHz。图4 STC89C52内部时钟电路3.1.3 复位电路当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。按键手动复位电路见图4。时钟频率用11.0592MHZ时C取10uF,R取10k。图5 STC89C52 复位电路3.2 时钟模块3.2.1 DS1302性能简介DS1302是Dallas公司生产的一种实时时钟芯片。它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的,DS1302的引脚排列及内部结构图如图6:DS1302引脚说明: X1,X2 32.768kHz晶振引脚GND 地线RST 复位端I/O 数据输入/输出端口SCLK 串行时钟端口VCC1 慢速充电引脚VCC2 电源引脚 图6 DS1302管脚图7福建信息职业技术学院毕业实习(论文)3.2.2 DS1302接口电路设计1时钟芯片DS1302的接口电路及工作原理:图7 DS1302与MCU接口电路图7为DS1302的接口电路,其中Vcc1为后备电源,Vcc2为主电源。VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2 两者中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图5所示。表-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能对DS1302进行读写数据。对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。控制字节总是从最低位开始输入/输出的。表-2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。2、DS1302的控制字DS1302的控制字如表2所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为1表示进行读操作,为0表示进行写操作。控制字节总是从最低位开始输出。表1 DS1302的控制字格式 1 RAM/CKA4A3A2A1A0RD/WR3、数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下8毕业设计报告降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图8所示。 图7 DS1302读/写时序图4、DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2。 表2 DS1302的日历、时间寄存器写寄存器读寄存器Bit7Bit6Bit5Bit7Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/010时时/PM86H87H0010 日日88H89H00010月月8AH8BH00000星期8CH8DH 10年年8EH8FHWP0000000此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.3 按键控制模块单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O 口的值,这一次的值如果为1 表示低电平的时间不到10200 毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。硬件电路如图9所示:图9 按键控制电路3.4 LCD1602显示电路1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10所示:图10 1602LCD尺寸图3.4.1 LCD1602主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm3.4.2 引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表3 液晶引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.5 AT24C02存储模块 AT24C02提供电可擦除的串行1024位存储或可编程只读存储器(EEPROM)128字(8位/字)。芯片在低压的工业与商业应用中进行了最优化。AT24C01的封装为8脚PDIP、8脚JEDECSOIC、8脚TSSOP,通过2线制串行接口进行数据传输。另外,整个系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)两个版本。设备操作:C L O C K 和 D A T A 变化:SDA管脚通常外都要拉高。SDA管脚上的数据只能在SCL低期间改变。数据在SCL高期间改变定义为一个开始或停止信号。开始状态:在任何操作之前必须有一个开始信号-在SCL为高时SDA上产生一个下降沿。停止状态: SCL为高时SDA产生一个上升沿是停止信号,停止信号后将停止所有通信。在一个读的序列之后,停止信号将让EEPROM进入备用电源模式。I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。1 I2C总线的硬件结构I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是开漏输出或集电极开路输出。设备上的串行数据线SDA接口电路应该是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。而串行时钟线也应是双向的,作为控制总线数据传送的主机,一方面要通过SCL输出电路发送时钟信号,另一方面还要检测总线上的SCL电平,以决定什么时候发送下一个时钟脉冲电平;作为接受主机命令的从机,要按总线上的SCL信号发出或接收SDA上的信号,也可以向SCL线发出低电平信号以延长总线时钟信号周期。总线空闲时,因各设备都是开漏输出,上拉电阻RP使SDA和SCL线都保持高电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的SDA是“与”关系,SCL也是“与”关系。 总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号以及传送结束时发出停止信号的设备,通常主机都是微处理器。被主机寻访的设备称为从机。为了进行通讯,每个接到I2C总线的设备都有一个唯一的地址,以便于主机寻访。主机和从机的数据传送,可以由主机发送数据到从机,也可以由从机发到主机。凡是发送数据到总线的设备称为发送器,从总线上接收数据的设备被称为接受器。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。如图11所示:SDASCL开始结束图11 开始、结束信号图目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。总线基本操作:I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。控制字节:在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。写操作:写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。读操作:读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期时发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。图12 AT24C02存储模块3.6 电机驱动模块电机的驱动采用的是三极管的放大作用。三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E。分成NPN和PNP两种。本设计采用的是PNP型三极管,当单片机给9012低电平的时候电机工作,R9起到限流保护的作用。图13 电机驱动模块电路图4 软件设计软件设计要用KEIL进行程序的编写、用PROTEUS软件进行仿真和用PROTEL 99 SE进行原理图的绘制。4.1 系统流程图本系统的软件设计主要流程图如下:图3-3 显示子程序流程图图3-3 液晶显示程序流程图4.2 编程软件Keil C51Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 Keil_c软件界面如图15:图15 Keil_c软件界面该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程。4.3 画图软件Protel99SE图16 Prtel99SE软件界面4.4 Protel使用常见问题1.原理图常见错误:(1)ERC报告管脚没有接入信号:a.创建封装时给管脚定义了I/O属性;b.创建元件或放置元件时修改了不一致的grid属性,管脚与线没有连上;C.创建元件时pin方向反向,必须非pin name端连线。(2)元件跑到图纸界外:没有在元件库图表纸中心创建元件。(3)创建的工程文件网络表只能部分调入pcb:生成netlist时没有选择为global。(4)当使用自己创建的多部分组成的元件时,千万不要使用annotate.2.PCB中常见错误:(1)网络载入时报告NODE没有找到:a.原理图中的元件使用了pcb库中没有的封装;b.原理图中的元件使用了pcb库中名称不一致的封装;c.原理图中的元件使用了pcb库中pin number不一致的封装。如三极管:sch中pin number为e,b,c,而pcb中为1,2,3。(2)打印时总是不能打印到一页纸上:a. 创建pcb库时没有在原点; b. 多次移动和旋转了元件,pcb板界外有隐藏的字符。选择显示所有隐藏的字符, 缩小pcb, 然后移动字符到边界内。(3)DRC报告网络被分成几个部分: 表示这个网络没有连通,看报告文件,使用选择CONNECTED COPPER查找。 另外提醒朋友尽量使用WIN2000, 减少蓝屏的机会;多几次导出文件,做成新的DDB文件,减少文件尺寸。如果作较复杂得设计,尽量不要使用自动布线。4.5 仿真软件Proteus 图17 Proteus仿真 参考文献1. 李广弟,朱月秀,冷祖祁.单片机基础M.第3版.北京航空航天大学出版社,20112. 李华.MCS-51系列单片机实用接口技术M.北京航空航天大学出版社,20093. 李群芳,肖看.单片机原理接口与应用.北京:清华大学出版社,20054. 朱承高.电工及电子技术手册M.北京:高等教育出版社,20125. 高峰.单片微型应用系统设计及实用技术.北京:机械工业出版社,20046. 胡辉,单片机原理及应用设计21世纪高等院校规划教材M,水利水电出版社,2005.77. 刘守义,单片机应用技术M,西安:西安电子科技大学出版社,2011附1、系统原理图附2、proteus仿真图14
展开阅读全文