彩电生产中I2C总线控制器_第1页
彩电生产中I2C总线控制器_第2页
彩电生产中I2C总线控制器_第3页
彩电生产中I2C总线控制器_第4页
彩电生产中I2C总线控制器_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

目 录第1节 引 言21.1 课题背景 21.2 系统设计方法和步骤 2第2节 硬件电路设计和分析 32.1 总体方案和功能指标 62.2 复位电路 72.3 时钟电路 82.4 外部存储器电路 92.5 PC机控制接口电路102.6 与电视机的接口电路12 2.7 3一8译码器、键盘及LED显示电路 13第3节 软件设计和分析 153.1 主程序的初始化部分153.2 键扫描子程序173.3 E2PROM读写及I2 C通讯子程序 193.4 LED显示子程序 253.5 与PC机接口子程序26第4节 系统开发总结29第5节 结束语30参考文献31彩电生产中I2 C总线控制器第1节引 言1.1课题背景 随着我国装备制造业的发展,嵌入式系统已经成为制造业的核心技术。而基于单片一微机的嵌入式系统又是嵌入式领域中涉及范围最为广泛的一种。它被广泛地应用到工业控制、仿真系统、医疗仪器、信息家电、通信设备等众多方面。可以毫不夸张地说,嵌入式单片机系统己经是耳目无所不在了。大到军事装备、飞机飞行的控制,小到家庭生活中冰箱、微波炉的控制,到处可见嵌入式单片机系统的影子。目前,围绕嵌入式单片机系统展开研究和开发,已经成为计算机软硬件技术发展最活跃的方向之一。嵌入式系统不同于通常纯粹的软件系统或硬件系统,而是软件与硬件通过在一起的,有些功能既可以用软件实现,也可以通过硬件实现。另外,嵌入式系统设计所面临的挑战不仅涉及到计算机软件和硬件,也会涉及到许多非计算机工程中的问题,诸如机械尺寸问题、功耗问题和制造成本问题等。即使是计算机工程方面的问题,大部分系统在实时性、可靠性和多速率等问题方面也都有特别要求。要成功地设计完成一个嵌入式单片机系统,必须以应用环境和应用系统为中心,紧密结合性能、功耗、大小、成本等方面的综合要求来进行考虑。1.2系统设计方法和步骤 彩电生产过程中的单片微机控制系统的设计,必须和电视机生产的实际需求相结合。一个系统的设计开发主要有以下几个步骤: (1)根据生产实际需要,确定系统的总体方案和功能指标。 (2)综合考虑成本、工艺、系统扩展等方面的因素,分别进行硬件和软件的设计和仿真。 (3)仿真调试成功后将应用程序固化,再进行现场调试。 (4)逐渐修改和完善直至样机试验成功。(5)按照人机工程学原理和严格的工艺标准,制造正式产品。第2节 硬件电路设计采用了I2C总线控制技术的新型彩电使得各电路之间的连接变得很简单,减少了大量元器件和连接线,提高了整机的可靠性。由于I2C总线具有多重控制能力,即“多主控”(multimalstering),总线上任何能移进行发送和接收的设备都可以成为主控器,这就使得电视产品的调试可以很方便地由生产线上的单片微机控制系统来完成。我们把这个控制系统叫做“I2C总线控制器”。在阐述工I2C总线控制器具体的硬件和软件之前,先介绍相关的概念和原理。I2C (inter-IntegratedCircui)t总线是一种由PHILIPS公司开发的两线式串行总线。I2C总线工作原理l)总线的构成I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。在CUP与被控IC之间、IC与CI之间进行双向传送,最高传送速率1OOkbPs。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。2)总线的信号类型I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的I2C在接收到8Tit数据后,向发送数据的IC发出特定的低电平脉冲,表示己收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,则判断为受控单元出现故障。3).总线基本操作I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟 (SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才一能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。参见图2-10。图2-10 串行总线上的数据传送顺序(1)控制字节在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPRMO一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。如图2-11所示。图2-11 控制字节配置(2)写操作写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。页面写的地址、应答和数据传送的时序参见图2-12图2-12 页面写(3)读操作读操作有三种基本操作:当前地址读、随机读和顺序读。图令13给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。如图2-13。图2-13 顺序读2.1 总体方案和功能指标硬件应包括主板、按键及LCD显示板、电源板三部分。硬件核心依然是灯AT89C52及其外围电路。按键及LCD显示板提供控制状态及数据显示。电源板提供系统工作电压+5V。系统应外接16K E2PROM用于电视机I2 C总线数据存储。系统应提供与PC机的接口,以方便从PC机读取和修改总线数据。系统应提供与电视机主板CPU的接口,从而向电视机主板E2PROM写入总线数据。系统应具有一定的抗干扰和纠错能力,可设置看门狗电路。硬件框图:如图2一1所示。图2-1 I2 C总线控制器硬件框图2.2 复位电路当AT89C52管脚RESET上出现高电平并保持至少2个机器周期,单片机进入复位状态。复位后,从地址Oxo开始寻址,执行代码。为了确保上电复位操作正确,RESET上的复位信号应该大于2个机器周期。由于我们使用了11.O592MHz的晶振作为主时钟,故其1个机器周期为:12*(1/11.0592)=1.lus,因此要求复位信号大于2.2us。为此选用MAXAM公司的MAX813L看门狗监控芯片,可为MCU提供上电复位,掉电复位,手动复位,看门狗及电压比较器功能。在上电期间,当电源电压超过其复位门限电压(4.65V)后,MAX813L就会产生一个至少140ms脉宽的复位脉冲,当掉电或电源波动下降到低于复位门限1.25 V后也产生复位脉冲,确保在任何情况下系统都能正常工作。当程序跑飞时,WD0输出低电平,并保持14OmS以上,于是MAX813L产生复位信号,同时看门狗定时器清零。MAX813L的清看门狗输入端WDI由AT89C52的P3.5控制,当WDI上的电平在1.6秒内无变化,表示程序进入死循环或跑飞,则将产生复位信号,使机器可以恢复正常工作。图2-2为复位电路电原理图。其中MR段接手动复位键。图2-2 复位电路2.3 时钟电路X1和X2是AT89C52时钟输入和输出端。由于其内部有振荡电路,所以在X1和X2端可以接一个无源晶振。在此设计中,我们使用了11.O592MHz的晶振,机器周期为输入晶体振荡器频率的12分频,即为:12x(1/11.0592)=1.lus。图2-3为时钟电路原理图。图2-3 时钟电路原理2.4 外部存储器电路 在本设计中,程序存储器为AT89C52内部的8Kbyte Flash ERPMO。为了存放电视机的I2C总线数据,在AT89C52外部挂接了一片16Kbit的串行EPROM,IS24C16。IS24C16从模式的器件地址的最低位,由P3.3(R/W)决定,片选位A2、A1、AO都接地,而器件地址的高4位固定为1010,因此,读为AIH;写为AOH。图2-4为外部存储器电原理图。图2-4 外部存储电路原理2.5 PC机控制接口电路由于PC系列微机串行口为RS232C标准接口,与输入、输出均采用TTL电平的灯AT89C52单片机在接口规范上不一致,因此TTL电平到RS232C接口电平的转换采用MAXIM公司的MAX232标准RS232接口芯片,该芯片可以用单电压(+5v)实现RS232接口逻辑“1”(-3V-15V)和逻辑“0(+3V-15V)的电平转换。通过AT89C52的口线P3.0(RXD)模拟接收端,P3.1(TXD)模拟发送端,波特率配置成9600bPs,如图2-5所示。PC般使用8250或16550作为串行通讯的控制器,使用9针或25针的接插件将串行口的信号送出。其中9针插头(针输出)的信号定义如下:图2-6 RS232接口定义MCS一51的串行口使用起来非常简单,因为MCS一51单片机的串行口没有与MODEM控制相关的信号。这使得以上信号在通讯过程之中不会被全部使用,仅需TXD及RXD及SG即可完成,其他的握手信号可以直接悬空。图2-5 RS232接口电路原理2.6 与电视机的接口电路I2 C总线控制器在对电视机进行调试时,首先要通过一个带线插头与电视机主板上一个预留的插座相连,强行接管工I2 C总线。然后再将调试内容和调试数据送入电视机。接口电路如图2-7所示。Pl.4置高时,将电视机主板、AV板等上的工I2 C器件置于“Service状态,从而接管工I2 C总线。P1.5置高时,主板、AV板等的“BuSOff”信号有效,从而关闭工I2 C通讯,系统退出电视机工总线。Dll-D16是钳位二极管,Vll、Rll、R12构成电流驱动放大。图2-7 与电视机的接口电路2.7 3一8译码器、键盘及LED显示电路图2-8 3-8译码器、键盘及LED显示电路其中,CL505为8段CMOS一LED组合器件。“LE”为“选通”;置高电平有效;“BL”为“熄灭控制”,BL=1则数码及小数点无条件熄灭;“V”为发光二极管的公共阴极;Al、Bl、Cl、Dl为“输入端”;“LT”为“小数点点亮,:“DP1、DP0”的组合状态用于输出控制。LED1、LED2用于显示键码,LED5、LED3、LED4用于显示具体数据。OP.O-PO.7构成4*4键盘矩阵。P2.O-P2.3为LED显示数据输入,P2.4-P2.6是译码器输入,P2.7为“选通”,当P2.7为低时译码器有输出,否则无输出位。Pl.0-Pl.3为LED熄灭控制。第3节 软件设计和分析3.1.主程序初始化部分主程序部分要完成以下任务:堆栈指针、程序标志寄存器、定时器、P0、Pl、P2口、P3口、中断方式、定义的参数等的初始化,LED初始显示,按键等待,两次键码比较,两次数据比较,开、关总线,发送数据等。程序段如下:MAIN:MOV PSW,#0;标志寄存器清零MOV Rl,#OBDHMOV R0,#2CLR AINO: MOV R0,AINC RODJNZ Rl,IN0:内部RAM清零MOV SP,#30H;堆栈指针Mov TMOD,#20H;定时器T0为可自动再装入的8位定时器Mov TCON,#00H;定时器T0初始化MOV THO,#O6H;MOV TL0,#06H;T0定时275ps,喂狗线每隔275ps就取反CLR RI;设置串行接收中断标志位MOV SCON,#50H;串口1方式(8位数据位,帧10位)CLR MM;位地址位清零MOV P0,#0FH;按键列有效MOV Pl,#0F0H;LED显示OCLR P1.4;进入“serviee”状态MOV RB6,#05MOV RB7,#10LCALL DELAY1;沿时子程序MOV JIANMA,#99HMOV SHUJU,#06HMOV A,#08HPUSH ACCLCALL DISPLAY;显示初始值“9906H”CLR MDL;有无键标志位清零SETB EX0;开放外部中断OSETB IE0;外中断O中断标志SETB TR0;启动TOSETB ET0;允许TO中断SETB TP0;定时器O中断优先CLR IT0;外中断O为边沿触发KEY: SET EA;开中断SETB P3.2;开中断、定时器,设置中断方式PP: JNB MDL,PP;等待按键CLR MDLCLR TR0COMP: MOV A,BU1;比较上次与该次的调试键码相等否LOOP5: CJNE A,BUA,NEXT8;不同则转去NEXTSJMP CKK;相同则转去比较数据值NETXS: LCALL NEXT;两次键码不同,执行新按键功能MOV RB6,#10MOV RB7,#10LCALL DELAY1;沿时LJMP KEY;返回CKK: MOV A,BUB“MOV BU2,ALCALL OFFSET;计算偏移量LCALL WRNBYT;写入EEPRMOCLR Pl.5;关总线LJMP KEY;返回3.2 键扫描子程序 ORG 1OOHISX0: PUSH PSWPUSH ACCMOV PSW,#08CLR IE.7;停止接受中断请求MOV P0,#0FFHDELA: MOV R6,#200IS01: MOV R7,#200DJNZ R7,$DJNZ R6,IS01:沿时去抖动GETKEY: MOV R7,#09HMVO R6,#OEFH;判断第一列IS02: DJNZ R7,IS00LJMP ERRIS00: MOV A,R6MOV P0,ASETB CRLC AMOV R6,A:为下一列作准备MOV A,P0;按键读回CPL AMOV R3,AANL A,#0FH;屏蔽高四位,只留列号JZ IS02判断下一列MOV A,R3MOV B,#0CLR CANL A,#0F0HSWAP AI1: RRC AJC I2INC BJMP I1;计算列号I2: MOV A,#04HMUL ABMOV R4,AMOV B,#0CLR CMOV A,R3ANL A,#0FHI3: RRC A;计算行号JC I4INC BJMP I3I4: MOV A,R4ADD A,B15:MOVB,ACLR CSUBB A,#010HJC GORIGHTGOERR: LJMP ERR:按键数超过16,出错GORIGHT: MVO A,B;计算键号GETPROC: MOV DPTR,#PROCMOV B,#03HMUL ABJMP A+DTPRRETI3.3 E2PROM读写及I2 C通讯子程序I2C通讯所用符号定义VSDA EQU Pl.7VSCL EQU P1.6SLA EQU 5OH;寻址字节存放单元NUMBYT EQU 51H;传送字节数存放单元MTD EQU 3OH;发送数据缓冲区MRD EQU 4OH;接收字节缓冲区SLAW EQU AOH;寻址字节写SLAR EQU A1H;寻址字节读页写子程序MOV SLA,#SLAW;指向那个节点并认定发送SALWMOV NUMBYT,#16;传送几个字节LCALL WRNBYT;调用归一化发送子程序WRNBYT启动工ZC总线STA: SETB VSDA;SETB VSCLNOPNOPNOPNOP; 外部晶振时钟匹配CLR VSDANOPNOPNOPNOPCLR VSCLRET;停止I2C总线数据传送STOP: CLR VSDASETB VSCLNOPNOPNOPNOPSETB VSDANOPNOPNOPNOPCLR VSDACLR VSCLRET;发送应答位MACK: CLR VSDASETB VSCLNOPNOPNOPNOPCLR VSCLSETB VSDARET;发送非应答位MNACK: SETB VSDASETB VSCLNOPNOPNOPNOPCLR VSCLCLR VSDARET:应答位检查CACK: SETB VSDASETB VSCLCLR F0MOV C VSDAJNC CENDSETB F0CEND: CLR VSCLRET;向vSDA线上发送一个数据字节WRBYT: MOV R0 #08HWLP RLC AJC WR1AJMP WR0WLP1: DJNZ R0 WLPRETWR1: STEB VSDASETB VSCLNOPNOPNOPNOPCLR VSCLCLR VSDAAJMP WPL1WR0: CLR VSDASETB VSCLNOPNOPNOPNOPCLR VSCLAJMP WLP1;从VSDA线上读取一个数据字节RDBYT: MOV R0 #08HRLJP: SETB VSDASETB VSCLMOV C VSDAMOV AR 2RLC AMOV R2 ACLR VSCLDJNZ R0 RLPRET;虚拟工ZC总线发送N个字节数据WRNBYT: MOV R3 NUMBYTLCALL STAMOV A SLALCALL WRBYTLCALL CACKJB F0 WRNBYTMOV R l #MTDWRDA: MOV A RlLCALL WRBYTLCALL CACKJB FO WRNBYTINC RlDJNZ R3 WRDALCALL STOPRET:模拟工总线接收n个字节数据RDNBYT: MOV R3 NUMBYTLCALL STAMOV A SLALCALL WRBYTLCALL CACKJB F0 RDNBTVRDN: MOV Rl #MRDRDN1: LCALL RDBYTMOV Rl,ADJNZ R3,ACKLCALL MNACKCLALL STOPRETACK: LCALL MACKINC RlSJMP RDN13.4 LED显示子程序DIPSLAY: MOV P1,#0FFH;先无条件熄灭5个LDEMOV A,#13H;LEDS显示“H”CLR Pl.3;选通ELDSMOV P2,AMov A,JIANMA;显示键码ANL A,#0F0H;屏蔽低4位MOV P2,ACLR Pl.0;选通LEDI、LEDZMOV A,JIANMAANL A,#0FH;MOV P2,AMOV A,SHUJU;显示数据ANL A,#0F0HCLR Pl.1;选通LED3MOV P2,AMOV A,SHUJU;ANL A,#0FHCLR Pl.2; 选通LED4MOV P2,ARET3.5与PC机接口子程序RS-232C在空闲时处于逻辑“1”状态,在开始传送时,首先产生一起始位,起始位为一个宽度的逻辑“O”,占用一位,用来表示字符开始。其后为7或8位的数据编码,传送的数据从最低位开始依此送出,第8位通常做为奇偶校验位,最后为停止位(高电平),用来表示字符传送结束。串行通信中,每秒传送的数据位称为波特率。如数据传送的波特率为1200波特,采用N.8.1帧格式(10位),则每秒传送字节为120个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=O.833mS。同样,如数据传送的波特率为9600波特,则字节中每一位传送时间为T=1/9600=0.104ms。根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/0口来模拟实现串行通信的时序。我们用89C52单片机的P3.1和P3.0口分别模拟串行通信的发送和接收,其接口程序主要由INPUI、发送子程序和OUTPUT接收子程序组成。通信速率9600bit/s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8位数据,最后发送停止位。接收时,先判断P3.0接收端口是否有起始低电平出现,如有则按低位在先的顺序接收8位数,最后判断P3.0口是否有停止高电平出现,如有则完成一个数据接收,否则继续等待。其中软件编写要严格按照异步通信的时序进行,每bit位传送时间间隔按通信速率9600bit/s计算为104us。其模拟串行通信程序清单如下:TXD EQU P3.1RXD EQU P3.0;定义89C52 P3.1为发送端,P3.O为接收端MOV A,#SENDDATAMOV R5,#NSETB RXD;P3.0置高TX: LCALL INPUT;调用发送子程序,将寄存器A中内容发给CP机SETB TXD;P3.1置高MOV R0,#40HRX: LCALL OUTPUT;调用接收子程序,将接收的N个数据存放在以40H开始的地址中MOV RO,AINC R0DJNZ R5,RX;N个数据接收结束,则等待,否则转Rx继续接收AJMP $;*延时104us子程序*DEL104: MOV R7,#65MS11: DJNZ R7,MS11RET;* *;*89C52发送数据给PC机子程序*INPUT: CLR CMOV TXD,C;发送起始位LCALL DEL104;延时MOV R3,#8REP: RRC AMOV TXD,CLCALL DEL104DJNZ R3,REP;发送8位数据SETB C;发送停止位MOV TXD,CLCALL DEL104RET;*从PC机接收数据子程序*;OUTPUT: JB RXD,$;判断是否有起始位出现LCALL DEL104MOV R3,#8OUT: MOV C,RXDRRC ALCALL DEL104DJNZ R3,OUT;接收8位数据JNB RXD,$;判断是否有停止位出现RET第4节 系统开发总结在实际中总结出的单片机系统开发经验如下:1)尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。比如单片机的复位电路,时钟电路,键矩阵电路等都可以采用常规的连接方式,而外部的存储器、看门狗、RS232电平转换芯片的连接也是模块化的。2)系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。例如本文实例“I2C总线控制器”,其中E2PORM芯片目前即可选用4KB的,也可用更大容量的,考虑到今后彩电总线数据会不断扩大,于是选择了16KB的存储器。3)系统可靠性至关重要。要考虑到电源和IC的相互影响:电路板上每个CI要并接一个0.01uF-0.1uF高频电容,以减小IC对电源的影响。许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。使用电源监控及看门狗电路:可大幅度提高整个电路的抗干扰性能。一个外部的看门狗是最好的,因为它不依赖于单片机。确定系统的复位信号可靠:这是一个很容易忽略的问题。如果发现过所设计的单片机系统,每次重新上电启动后,数据变得乱七八糟,并且每一次现象并不相同,找不出规律,或者有时候干脆不运行,或者有时候进入一种死机状态,有时候又一点事都没有正常运行。在这种情况下,就应该查一下系统的复位信号。一般复位信号的宽度和幅度都应满足的要求,并且要求保持稳定。还有重要的一点就是复位电平应与电源上电在同一时刻发生,即单片机一上电,复位信号就已产生。不然,由于没有经过复位,单片机中的寄存器的值为随机值,上电时就会按寄存器中的随机内容开始运行程序,这样很容易进行误操作或进入死机状态。确定系统的初始化有效:系统程字开始应延时一段时间。这是很多单片机程序设计中的常用方法。因为系统中的单片机以及器件从上电开始到正

温馨提示

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

评论

0/150

提交评论