彩电生产中I2 C总线控制器 单片机期末课程设计.docx
- 文档编号:29330016
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:29
- 大小:323.45KB
彩电生产中I2 C总线控制器 单片机期末课程设计.docx
《彩电生产中I2 C总线控制器 单片机期末课程设计.docx》由会员分享,可在线阅读,更多相关《彩电生产中I2 C总线控制器 单片机期末课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
彩电生产中I2C总线控制器单片机期末课程设计
第一章绪论…………………………………………………………………2
1.1课题背景………………………………………………………………2
1.2系统设计方法和步骤…………………………………………………2
第二章硬件电路设计和分析…………………………………………………2
2.1总体方案和功能指标…………………………………………………5
2.2复位电路………………………………………………………………6
2.3时钟电路………………………………………………………………7
2.4外部存储器电路………………………………………………………8
2.5PC机控制接口电路……………………………………………………9
2.6与电视机的接口电路…………………………………………………11
2.73一8译码器、键盘及LED显示电路…………………………………12
第三章软件设计和分析………………………………………………………13
3.1主程序的初始化部分…………………………………………………13
3.2键扫描子程序…………………………………………………………17
3.3E2PROM读写及I2C通讯子程序………………………………………19
3.4LED显示子程序………………………………………………………24
3.5与PC机接口子程序……………………………………………………26
第四章系统开发总结…………………………………………………………28
第五章结束语…………………………………………………………………30
参考文献…………………………………………………………………………31
第一章 绪论
1.1课题背景
随着我国装备制造业的发展,嵌入式系统已经成为制造业的核心技术。
而基于单片一微机的嵌入式系统又是嵌入式领域中涉及范围最为广泛的一种。
它被广泛地应用到工业控制、仿真系统、医疗仪器、信息家电、通信设备等众多方面。
可以毫不夸张地说,嵌入式单片机系统己经是耳目无所不在了。
大到军事装备、飞机飞行的控制,小到家庭生活中冰箱、微波炉的控制,到处可见嵌入式单片机系统的影子。
目前,围绕嵌入式单片机系统展开研究和开发,已经成为计算机软硬件技术发展最活跃的方向之一。
嵌入式系统不同于通常纯粹的软件系统或硬件系统,而是软件与硬件通过在一起的,有些功能既可以用软件实现,也可以通过硬件实现。
另外,嵌入式系统设计所面临的挑战不仅涉及到计算机软件和硬件,也会涉及到许多非计算机工程中的问题,诸如机械尺寸问题、功耗问题和制造成本问题等。
即使是计算机工程方面的问题,大部分系统在实时性、可靠性和多速率等问题方面也都有特别要求。
要成功地设计完成一个嵌入式单片机系统,必须以应用环境和应用系统为中心,紧密结合性能、功耗、大小、成本等方面的综合要求来进行考虑。
1.2系统设计方法和步骤
彩电生产过程中的单片微机控制系统的设计,必须和电视机生产的实际需求相结合。
一个系统的设计开发主要有以下几个步骤:
(1)根据生产实际需要,确定系统的总体方案和功能指标。
(2)综合考虑成本、工艺、系统扩展等方面的因素,分别进行硬件和软件的设计和仿真。
(3)仿真调试成功后将应用程序固化,再进行现场调试。
(4)逐渐修改和完善直至样机试验成功。
(5)按照人机工程学原理和严格的工艺标准,制造正式产品。
第二章硬件电路设计
采用了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。
●系统应外接16KE2PROM用于电视机I2C总线数据存储。
●系统应提供与PC机的接口,以方便从PC机读取和修改总线数据。
●系统应提供与电视机主板CPU的接口,从而向电视机主板E2PROM写入总线数据。
●系统应具有一定的抗干扰和纠错能力,可设置看门狗电路。
硬件框图:
如图2一1所示。
图2-1I2C总线控制器硬件框图
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.25V后也产生复位脉冲,确保在任何情况下系统都能正常工作。
当程序跑飞时,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内部的8KbyteFlashERPMO。
为了存放电视机的I2C总线数据,在AT89C52外部挂接了一片16Kbit的串行EPROM,IS24C16。
IS24C16从模式的器件地址的最低位,由P3.3(R/W)决定,片选位A2、A1、AO都接地,而器件地址的高4位固定为1010,因此,读为AIH;写为AOH。
图2-4为外部存储器电原理图。
图2-4外部存储电路原理
2.5PC机控制接口电路
由于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-6RS232接口定义
MCS一51的串行口使用起来非常简单,因为MCS一51单片机的串行口没有与MODEM控制相关的信号。
这使得以上信号在通讯过程之中不会被全部使用,仅需TXD及RXD及SG即可完成,其他的握手信号可以直接悬空。
图2-5RS232接口电路原理
2.6与电视机的接口电路
I2C总线控制器在对电视机进行调试时,首先要通过一个带线插头与电视机主板上一个预留的插座相连,强行接管工I2C总线。
然后再将调试内容和调试数据送入电视机。
接口电路如图2-7所示。
Pl.4置高时,将电视机主板、AV板等上的工I2C器件置于“Service’’状态,从而接管工I2C总线。
P1.5置高时,主板、AV板等的“BuSOff”信号有效,从而关闭工I2C通讯,系统退出电视机工℃总线。
Dll-D16是钳位二极管,Vll、Rll、R12构成电流驱动放大。
图2-7与电视机的接口电路
2.73一8译码器、键盘及LED显示电路
图2-83-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键盘矩阵。
PZ.O一P2.3为LED显示数据输入,P2.4一P2.6是译码器输入,P2.7为“选通”,当P2.7为低时译码器有输出,否则无输出位。
Pl.0一Pl.3为LED熄灭控制。
第三章软件设计和分析
3.1.主程序初始化部分
主程序部分要完成以下任务:
堆栈指针、程序标志寄存器、定时器、P0、Pl、P2口、P3口、中断方式、定义的参数等的初始化,LED初始显示,按键等待,两次键码比较,两次数据比较,开、关总线,发送数据等。
程序段如下:
MAIN:
MOVPSW,#0;标志寄存器清零
MOVRl,#OBDH
MOVR0,#2
CLRA
INO:
MOV@R0,A
INCRO
DJNZRl,IN0:
内部RAM清零
MOVSP,#30H;堆栈指针
MovTMOD,#20H;定时器T0为可自动再装入的8位定时器
MovTCON,#00H;定时器T0初始化
MOVTHO,#O6H;
MOVTL0,#06H;T0定时275ps,喂狗线每隔275ps就取反
CLRRI;设置串行接收中断标志位
MOVSCON,#50H;串口1方式(8位数据位,帧10位)
CLRMM;位地址位清零
MOVP0,#0FH;按键列有效
MOVPl,#0F0H;LED显示O
CLRP1.4;进入“serviee”状态
MOVRB6,#05
MOVRB7,#10
LCALLDELAY1;沿时子程序
MOVJIANMA,#99H
MOVSHUJU,#06H
MOVA,#08H
PUSHACC
LCALLDISPLAY;显示初始值“9906H”
CLRMDL;有无键标志位清零
SETBEX0;开放外部中断O
SETBIE0;外中断O中断标志
SETBTR0;启动TO
SETBET0;允许TO中断
SETBTP0;定时器O中断优先
CLRIT0;外中断O为边沿触发
KEY:
SETEA;开中断
SETBP3.2;开中断、定时器,设置中断方式
PP:
JNBMDL,PP;等待按键
CLRMDL
CLRTR0
COMP:
MOVA,BU1;比较上次与该次的调试键码相等否
LOOP5:
CJNEA,BUA,NEXT8;不同则转去NEXTS
JMPCKK;相同则转去比较数据值
NETXS:
LCALLNEXT;两次键码不同,执行新按键功能
MOVRB6,#10
MOVRB7,#10
LCALLDELAY1;沿时
LJMPKEY;返回
CKK:
MOVA,BUB“
MOVBU2,A
LCALLOFFSET;计算偏移量
LCALLWRNBYT;写入EEPRMO
CLRPl.5;关总线
LJMPKEY;返回
3.2键扫描子程序
ORG1OOH
ISX0:
PUSHPSW
PUSHACC
MOVPSW,#08
CLRIE.7;停止接受中断请求
MOVP0,#0FFH
DELA:
MOVR6,#200
IS01:
MOVR7,#200
DJNZR7,$
DJNZR6,IS01:
沿时去抖动
GETKEY:
MOVR7,#09H
MVOR6,#OEFH;判断第一列
IS02:
DJNZR7,IS00
LJMPERR
IS00:
MOVA,R6
MOVP0,A
SETBC
RLCA
MOVR6,A:
为下一列作准备
MOVA,P0;按键读回
CPLA
MOVR3,A
ANLA,#0FH;屏蔽高四位,只留列号
JZIS02判断下一列
MOVA,R3
MOVB,#0
CLRC
ANLA,#0F0H
SWAPA
I1:
RRCA
JCI2
INCB
JMPI1;计算列号
I2:
MOVA,#04H
MULAB
MOVR4,A
MOVB,#0
CLRC
MOVA,R3
ANLA,#0FH
I3:
RRCA;计算行号
JCI4
INCB
JMPI3
I4:
MOVA,R4
ADDA,B
15:
MOVB,A
CLRC
SUBBA,#010H
JCGORIGHT
GOERR:
LJMPERR:
按键数超过16,出错
GORIGHT:
MVOA,B;计算键号
GETPROC:
MOVDPTR,#PROC
MOVB,#03H
MULAB
JMP@A+DTPR
RETI
3.3E2PROM读写及I2C通讯子程序
I2C通讯所用符号定义
VSDAEQUPl.7
VSCLEQUP1.6
SLAEQU5OH;寻址字节存放单元
NUMBYTEQU51H;传送字节数存放单元
MTDEQU3OH;发送数据缓冲区
MRDEQU4OH;接收字节缓冲区
SLAWEQUAOH;寻址字节写
SLAREQUA1H;寻址字节读
页写子程序
MOVSLA,#SLAW;指向那个节点并认定发送SALW
MOVNUMBYT,#16;传送几个字节
LCALLWRNBYT;调用归一化发送子程序WRNBYT
启动工ZC总线
STA:
SETBVSDA;
SETBVSCL
NOP
NOP
NOP
NOP;外部晶振时钟匹配
CLRVSDA
NOP
NOP
NOP
NOP
CLRVSCL
RET
;停止I2C总线数据传送
STOP:
CLRVSDA
SETBVSCL
NOP
NOP
NOP
NOP
SETBVSDA
NOP
NOP
NOP
NOP
CLRVSDA
CLRVSCL
RET
;发送应答位
MACK:
CLRVSDA
SETBVSCL
NOP
NOP
NOP
NOP
CLRVSCL
SETBVSDA
RET
;发送非应答位
MNACK:
SETBVSDA
SETBVSCL
NOP
NOP
NOP
NOP
CLRVSCL
CLRVSDA
RET
:
应答位检查
CACK:
SETBVSDA
SETBVSCL
CLRF0
MOVCVSDA
JNCCEND
SETBF0
CEND:
CLRVSCL
RET
;向vSDA线上发送一个数据字节
WRBYT:
MOVR0#08H
WLPRLCA
JCWR1
AJMPWR0
WLP1:
DJNZR0WLP
RET
WR1:
STEBVSDA
SETBVSCL
NOP
NOP
NOP
NOP
CLRVSCL
CLRVSDA
AJMPWPL1
WR0:
CLRVSDA
SETBVSCL
NOP
NOP
NOP
NOP
CLRVSCL
AJMPWLP1
;从VSDA线上读取一个数据字节
RDBYT:
MOVR0#08H
RLJP:
SETBVSDA
SETBVSCL
MOVCVSDA
MOVAR2
RLCA
MOVR2A
CLRVSCL
DJNZR0RLP
RET
;虚拟工ZC总线发送N个字节数据
WRNBYT:
MOVR3NUMBYT
LCALLSTA
MOVASLA
LCALLWRBYT
LCALLCACK
JBF0WRNBYT
MOVRl#MTD
WRDA:
MOVA@Rl
LCALLWRBYT
LCALLCACK
JBFOWRNBYT
INCRl
DJNZR3WRDA
LCALLSTOP
RET
:
模拟工℃总线接收n个字节数据
RDNBYT:
MOVR3NUMBYT
LCALLSTA
MOVASLA
LCALLWRBYT
LCALLCACK
JBF0RDNBTV
RDN:
MOVRl#MRD
RDN1:
LCALLRDBYT
MOV@Rl,A
DJNZR3,ACK
LCALLMNACK
CLALLSTOP
RET
ACK:
LCALLMACK
INCRl
SJMPRDN1
3.4LED显示子程序
DIPSLAY:
MOVP1,#0FFH;先无条件熄灭5个LDE
MOVA,#13H;LEDS显示“H”
CLRPl.3;选通ELDS
MOVP2,A
MovA,JIANMA;显示键码
ANLA,#0F0H;屏蔽低4位
MOVP2,A
CLRPl.0;选通LEDI、LEDZ
MOVA,JIANMA
ANLA,#0FH;
MOVP2,A
MOVA,SHUJU;显示数据
ANLA,#0F0H
CLRPl.1;选通LED3
MOVP2,A
MOVA,SHUJU;
ANLA,#0FH
CLRPl.2;选通LED4
MOVP2,A
RET
3.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。
其模拟串行通信程序清单如下:
TXDEQUP3.1
RXDEQUP3.0;定义89C52P3.1为发送端,P3.O为接收端
MOVA,#SENDDATA
MOVR5,#N
SETBRXD;P3.0置高
TX:
LCALLINPUT;调用发送子程序,将寄存器A中内容发给CP机
SETBTXD;P3.1置高
MOVR0,#40H
RX:
LCALLOUTPUT;调用接收子程序,将接收的N个数据存放在以40H开始的地址中
MOV@RO,A
INCR0
DJNZR5,RX;N个数据接收结束,则等待,否则转Rx继续接收
AJMP$
;**************延时104us子程序*
DEL104:
MOVR7,#65
MS11:
DJNZR7,MS11
RET
;*****************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 彩电生产中I2 C总线控制器 单片机期末课程设计 彩电 生产 I2 总线 控制器 单片机 期末 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)