当前位置:文档之家› TTL&LVDS接口

TTL&LVDS接口

TTL&LVDS接口
TTL&LVDS接口

TTL接口概述

TTL(Transistor Transistor Logic)即晶体管-晶体管逻辑,TTL电平信号由TTL器件产生。TTL器件是数字集成电路的一大门类,它采用双极型工艺制造,具有高速度、低功耗和品种多等特点。

TTL接口属于并行方式传输数据的接口,采用这种接口时,不必在液晶显示器的驱动板端和液晶面板端使用专用的接口电路,而是由驱动板主控芯片输出的TTL数据信号经电缆线直接传送到液晶面板的输人接口。由于TTL接口信号电压高、连线多、传输电缆长,因此,电路的抗干扰能力比较差,而且容易产生电磁干扰(EMI)。

在实际应用中,TTL接口电路多用来驱动小尺寸(15in以下)或低分辨率的液晶面板。另外,在笔记本电脑中也常使用1TL接口形式。

TTL接口分类

TTL输出接口可分为以下几类:

(1)单路(或单通道)6bit TTL输出接口

这种接口电路中,采用单路方式传输,每个基色信号采用6bit数据(R0~R5,G0~G5,B0~B5)。由于基色RGB数据为18bit,因此,也称18位或18bit TTL接口。

(2)双路6bit TTL输出接口

这种接口电路中,采用双路方式传输,每个基色信号采用6bit数据(奇路为0RO~OR5,OG0~OG5,OB0~OB5;偶路为BRO~ER5,EG0~EG5,EB0~EB5)。由于基色RGB数据为36bit,因此,也称36位或36bit TTL接口。

(3)单路8bit TTL输出接口

这种接口电路中,采用单路方式传输,每个基色信号采用8bit数据(R0~R7,G0~G7,B0~B7)。由于基色RGB数据为24bit,因此,也称24位或24bit TTL接口。

(4)双路8bit TTL输出位接口

这种接口电路中,采用双路方式传输,每个基色信号采用8bit数据(奇路为OR0~OR7,OG0~0G7,OB0~OB7;偶路为ER0~ER7,EG0~EG7,EB0~EB7),由于基色RGB数据为48bit,因此,也称48位或48bit TTL 接口。

TTL输出接信号

驱动板TTL输出接口中一般包含RGB数据信号、时钟信号和控制信号这三大类信号。

(1)RGB数据信号

对于6bit单路TTL输出接口,共有18条RGB数据线,分别是R0~R5红基色数据6条,G0~G5绿基色数据6条,B0~B5蓝基色数据6条。

对于8bit单路TTI,输出接口,共有24条RGB数据线,分别是R0~R7红基色数据8条,B0~B7绿基色数据8

条,BO~B7蓝基色数据8条。

对于6bit双路TTL,输出接口,共有36条RGB数据线,分别是奇路RGB 数据线18条,偶路RGB数据线18条。

对于8bit双路TTL输出接口,共有48条RGB数据线,分别是奇路RGB 数据线24条,偶路RGB数据线24条。

(2)时钟信号

时钟信号是指像素时钟信号,是传输数据和对数据信号进行读取的基准。像素时钟常用DCLK表示。在使用奇/偶像素双路方式传输RGB数据时,不同的输出接口使用像素时钟的方法有所不同。有的输出接口奇/偶像素双路数据共用一个像素时钟信号,有的输出接口奇/偶两路分别设置奇数像素数据时钟和偶数像素两个时钟信号,以适应不同液晶面板的需要。

(3)控制信号

控制信号包括数据使能信号(或有效显示数据选通信号)DE、行同步信号HS、场同步信号VS。

LVDS接口详解

1.LVDS输出接口概述

液晶显示器驱动板输出的数字信号中,除了包括RGB数据信号外,还包括行同步、场同步、像素时钟等信号,其中像素时钟信号的最高频率可超过28MHz。采用TTL接口,数据传输速率不高,传输距离较短,且抗电磁干扰(EMI)能力也比较差,会对RGB数据造成一定的影响;另外,TTL多路数据信号采用排线的方式来传送,整个排线数量达几十路,不但连接不便,而且不适合超薄化的趋势。采用LVDS输出接口传输数据,可以使这些问题迎刃而解,实现数据的高速率、低噪声、远距离、高准确度的传输。

那么,什么是LVDS输出接口呢?LVDS,即Low Voltage Differential Signaling,是一种低压差分信号技术接口。它是美国NS公司(美国国家半导体公司)为克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。

LVDS输出接口利用非常低的电压摆幅(约350mV)在两条PCB走线或一对平衡电缆上通过差分进行数据的传输,即低压差分信号传输。采用LVDS输出接口,可以使得信号在差分PCB 线或平衡电缆上以几百Mbit/s的速率传输,由于采用低压和低电流驱动方式,因此,实现了低噪声和低功耗。目前,LVDS输出接口在17in及以上液晶显示器中得到了广泛的应用。

2.LVDS接口电路的组成

在液晶显示器中,LVDS接口电路包括两部分,即驱动板侧的LVDS输出接口电路(LVDS

发送器)和液晶面板侧的LVDS输入接口电路(LVDS接收器)。LVDS发送器将驱动板主控芯片输出的17L电平并行RGB数据信号和控制信号转换成低电压串行LVDS信号,然后通过驱动板与液晶面板之间的柔性电缆(排线)将信号传送到液晶面板侧的LVDS接收器,LVDS接收器再将串行信号转换为TTL电平的并行信号,送往液晶屏时序控制与行列驱动电路。图1所示为LVDS接口电路的组成示意图。

图1 LVDS接口电路的组成示意图

在数据传输过程中,还必须有时钟信号的参与,LVDS接口无论传输数据还是传输时钟,都采用差分信号对的形式进行传输。所谓信号对,是指LVDS接口电路中,每一个数据传输通道或时钟传输通道的输出都为两个信号(正输出端和负输出端)。

需要说明的是,不同的液晶显示器,其驱动板上的LVDS发送器不尽相同,有些LVDS发送器为一片或两片独立的芯片(如DS90C383),有些则集成在主控芯片中(如主控芯片gm5221内部就集成了LVDS发送器)。

3.LVDS输出接口电路类型

与TTL输出接口相同,LVDS输出接口也分为以下四种类型:

(l)单路6位LVDS输出接口

这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit LVDS接口。

(2)双路6位LVDS输出接口

这种接口电路中,采用双路方式传输,每个基色信号采用6位数据,其中奇路数据为18位,偶路数据为18位,共36位RGB数据,因此,也称36位或36bit LVDS接口。

(3)单路8位1TL输出接口

这种接口电路中,采用单路方式传输,每个基色信号采用8位数据,共24位RGB数据,因此,也称24位或24bit LVDS接口。

(4)双路8位1TL输出位接口

这种接口电路中,采用双路方式传输,每个基色信号采用8位数据,其中奇路数据为24位,偶路数据为24位,共48位RGB数据,因此,也称48位或48bit LVDS接口

4.典型LVDS发送芯片介绍

典型的LVDS发送芯片分为四通道、五通道和十通道几种,下面简要进行介绍。

(1)四通道LVDS发送芯片

图2 所示为四通道LVDS发送芯片(DS90C365)内部框图。包含了三个数据信号(其中包括RGB、数据使能DE、行同步信号HS、场同步信号VS)通道和一个时钟信号发送通道。

图2 4通道LVDS发送芯片内部框图

4通道LVDS发送芯片主要用于驱动6bit液晶面板。使用四通道LVDS发送芯片可以构成单路6bit LVDS接自电路和奇/偶双路6bit LVDS接口电路。

(2)五通道LVDS发送芯片

图3 所示为五通道LVDS发送芯片(DS90C385)内部框图。包含了四个数据信号(其中包括RGB、数据使能DE、行同步信号IIS、场同步信号vs)通道和一个时钟信号发送通道。

图3 5通道LVDS发送芯片内部框图

五通道LVDS发送芯片主要用于驱动8bit液晶面板。使用五通道LVDS发送芯片主要用来构成单路8bit LVDS接口电路和奇/偶双路8bit LVDS接口电路。

(3)十通道LVDS发送芯片

图4所示为十通道LVDS发送芯片(DS90C387)内部框图。包含了八个数据信号(其中包括RGB、数据使能DE、行同步信号HS、场同步信号VS)通道和两个时钟信号发送通道。

图4 十通道LV DS发送芯片内部框图

十通道LVDS发送芯片主要用于驱动8bit液晶面板。使用十通道LYDS发送芯片主要用来构成奇/偶双路8bit LVDS位接口电路。

在十通道LVDS发送芯片中,设置了两个时钟脉冲输出通道,这样做的目的是可以更加灵活的适应不同类型的LVDS接收芯片。当LVDS接收电路同样使用一片十通道LVDS接收芯片时,只需使用一个通道的时钟信号即可;当LVDS接收电路使用两片五通道LVDS接收芯片时,十通道LYDS发送芯片需要为每个LVDS接收芯片提供单独的时钟信号。

5.LVDS发送芯片的输入与输出信号

(1)LVDS发送芯片的输入信号

LVDS发送芯片的输入信号来自主控芯片,输入信号包含RGB数据信号、时钟信号和控制信号三大类。

①数据信号:为了说明的方便,将RGB信号以及数据选通DE和行场同步信号都算作数据信号。

在供6bit液晶面板使用的四通道LVDS发送芯片中,共有十八个RGB信号输入引脚,分别是R0~R5红基色数据(6bit红基色数据,R0为最低有效位,R5为最高有效位)六个,G0~G5绿基色数据六个,B0~B5蓝基色数据六个;一个显示数据使能信号DE(数据有效信号)输

入引脚;一个行同步信号HS输入引脚;一个场同步信号VS输入引脚。也就是说,在四通道LYDS 发送芯片中,共有二十一个数据信号输入引脚。

在供8bit液晶面板使用的五通道LVDS发送芯片中,共有二十四个RGB信号输入引脚,分别是红基色数据R0~W(8bit红基色数据,R0为最低有效位,R7为最高有效位)八个,绿基色数据G0~G7八个,蓝基色数据B0~B7八个;一个有效显示数据使能信号DE(数据有效信号)输入引脚;一个行同步信号HS输入引脚;一个场同步信号VS输入引脚;一个各用输入引脚。也就是说,在五通道LVDS发送芯片中,共有二十八个数据信号输入引脚。

应该注意的是,液晶面板的输入信号中都必须要有DE信号,但有的液晶面板只使用单一的DE信号而不使用行场同步信号。因此,应用于不同的液晶面板时,有的LVDS发送芯片可能只需输入DE信号,而有的需要同时输入DE和行场同步信号。

②输入时钟信号:即像素时钟信号,也称为数据移位时钟(在LVDS发送芯片中,将输入的并行RGB数据转换成串行数据时要使用移位寄存器)。像素时钟信号是传输数据和对数据信号进行读取的基准。

③待机控制信号(POWER DOWN):当此信号有效时(一般为低电平时),将关闭LVDS 发送芯片中时钟PLL锁相环电路的供电,停止IC的输出。

④数据取样点选择信号:用来选择使用时钟脉冲的上升沿还是下降沿读取所输入的RGB数据。有的LVDS发送芯片可能并不设置待机控制信号和数据取样点选择信号,但也有的除了上述两个控制信号还设置有其他一些控制信号。

(2)LVDS发送芯片的输出信号

LVDS发送芯片将以并行方式输入的TTL电平RGB数据信号转换成串行的LVDS信号后,直接送往液晶面板侧的LVDS接收芯片。

LVDS发送芯片的输出是低摆幅差分对信号,一般包含一个通道的时钟信号和几个通道的串行数据信号。由于LVDS发送芯片是以差分信号的形式进行输出,因此,输出信号为两条线,一条线输出正信号,另一条线输出负信号。

①时钟信号输出:LVDS发送芯片输出的时钟信号频率与输入时钟信号(像素时钟信号)频率相同。时钟信号的输出常表示为:TXCLK+和TXCLK-,时钟信号占用LVDS发送芯片的一个通道。

②LVDS串行数据信号输出:对于四通道LVDS发送芯片,串行数据占用三个通道,其数据输出信号常表示为TXOUT0+、TXOUT0-,TXOUT1+、TXOUT1-,TXOUT2+、TXOUT2-。

对于五通道LYDS发送芯片,串行数据占用四个通道,其数据输出信号常表示为TXOUT0+、TXOUT0-,TXOUT1+、TXOUTI-,TXOUT2+、TXOUT2-,TXOUT3+、TXOUT3-。

对于十通道LVDS发送芯片,串行数据占用八个通道,其数据输出信号常表示为TXOUT0+、TXOUT0-,TXOUT1+、TXOUT1-,TXOUT2+、TXOUT2-,TXOUT3+、

TXOUT3-,TXOUT4+、TXOUT4-,TXOUT5+、TXOUT5-,TXOUT6+、TXOUT6-,TXOUT7+、TXOLT7-。

如果只看电路图,是不能从LVDS发送芯片的输出信号TXOUT-、TXOUT0+中看出其内部到底包含哪些信号数据,以及这些数据是怎样排列的(或者说这些数据的格式是怎样的)。事实上,不同厂家生产的LVDS发送芯片,其输出数据排列方式可能是不同的。因此,液晶显示器驱动板上的LVDS发送芯片的输出数据格式必须与液晶面板LVDS接收芯片要求的数据格式相同,否则,驱动板与液晶面板不匹配。这也是更换液晶面板时必须考虑的一个问题。

专家点拔

LVDS发送芯片在一个时钟脉冲周期内,每个数据通道都输出7bit的串行数据信号,而不是常见的8bit数据,如图5所示

图5LVDS接口电路在一个时钟脉冲周期内传输7bit数据

(3)LVDS发送芯片输出信号的格式

LVDS发送芯片输出信号的格式,即LVDS发送芯片输入的RGB数据,以及行同步信号HS、场同步信号VS、有效显示数据使能信号DE在各个输出通道中数据位的排列顺序。

由于几个大的LYDS芯片生产厂家制定了不同的标准,因此,存在着几种不同的LVDS发送芯片数据输出格式,在更换液晶显示器驱动板或更换液晶面板时,必须弄清LVDS接口液晶面板所要求的LVDS信号格式,使液晶显示器驱动板侧LVDS发送芯片的输出数据格式与液晶面板LVDS接收芯片所要求的数据格式相同。

①单路6bit LVDS发送芯片数据输出格式:单路6bit LVDS发送电路使用四通道LVDS发送芯片,输出信号格式如图6所示。

图6 单路6bit LVDS发送芯片数据输出格式

图6中NA的意思是未使用。此例为控制信号仅使用DE的模式,未使用行同步信号HS和场同步信号VS。关于DE、IIS、VS信号的使用问题,将在第9章进行介绍。当控制信号为DE+行场同步信号模式时,图中的两个NA更换为场同步信号VS和行同步信号HS。

②双路6bit LVDS发送芯片数据输出格式:双路6bit LVDS发送电路使用两片四通道LVDS发送芯片,输出信号格式如图7所示。

图7 双路6bit LVDS发送芯片数据输出格式

从图7中可以看出,双路6bit LVDS发送芯片数据输出格式与单路6bit LVDS发送芯片数据输出格式是相同的,只不过一路传送奇数像素RGB数据,另工路传送偶数像素RGB数据。OR0、OR1、…中的“O”代表奇数像素,ER0、ER1、…中的“E”代表偶数像素。

③单路8bit LVDS发送芯片数据输出格式:单路8bit LVDS发送电路使用五通道LVDS发送芯片,输出信号格式有多种,下面只介绍其中的两种。图8所示是其中的一种输出信号格式。图9所示是产生这种数据信号格式的电路接法。

图8 单路8bit LVDS发送芯片数据输出格式之一

1单片机并口简单应用(流水灯)

试验1 单片机并口简单应用(流水灯) 实验目的 1、了解单片机C语言程序的基本结构 2、了解单片机C语言程序的设计和调试方法 3、掌握顺序控制程序的简单编程 4、熟悉51单片机的端口使用 实验仪器 单片机开发试验仪、稳压电源、计算机 实验原理 1、硬件电路 如图1所示,流水灯硬件电路由发光二极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,二极管公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。 图1 流水灯电路图 2、程序流程图如下。

实验内容:1、开发板接线图 延时 P0口初态循环右移1位 P0口状重新赋值0XFE 开始 P0口输出0XFE P0是否等于0X00 Y N

2、开发环境设置 打开keil软件,版本μ Vision2 ,μvision3,μvision4 都一样,在这里用μvision4版本演示,打开之后如下图,有的时候会默认打开上次使用的工程,单击Project 菜单,选择 Close Project 关闭了默认打开的工程,显示下图界面: 我们要建立新的工程,选择Project→ newμ vision projiect… 选择工程要保存的路径,输入工程文件名,如图

点击保存后会弹出一个对话框,要求用户选择单片机型号,可以根据用户使用的单片机来选择,我们使用的STC90单片机是兼容51内核的,Keil C51 几乎支持所有的51内核单片机,51内核具有通用型,如果程序用的资源不是太复杂,我们可以选择任意一款51单片机内核就行。例程以添加Atmel 的AT89C51来说明。如图,然后,单击确定(OK)。 功能描述 如果出现下面的界面:单击是就可以,意思是将单片机的启动代码添加到工程,我们不用修改。 到目前我们还没建立一个完整的工程,只是有工程的名字,框架,工程中还没有任何文件代码,(除了启动代码,有的keil 版本不显示启动代码),接下来我们添加文件及代码。 单击菜单File→New 选项,或者单击界面上的快捷图标,新建文件串口如下。

类与接口的关系理解

(类是对所有事物公共的概念进行抽象的描述。)类描述了一系列在概念上有相同含义的对象,并为这些对象统一定义了编程语言上的属性和方法。对象就是一个类的实例(是某一类的具体化实例),每一个类都是具有某些共同特征的对象的抽象。 public class Car { public int number; //编号 public string color; //颜色 private string brand; //厂家 } 析构函数(前面加一个~符号): class Program { ~Program() //析?构1函?¥数oy { Console.WriteLine("析?构1函?¥数oy自á?动?¥调ì??用??"); //输o?出?一°?个?字á?符¤?串?? } static void Main(string[] args) { Program program = new Program(); //实o|ì例¤y化?¥Program对?象¨?} 接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可由方法、属性、事件和索引器或这4种成员类型的任何组合构成,但不能包含字段。 C#中的类只支持单继承,但基于多继承给程序员带来的诸多方便与好处,所以通过接口可以实现多继承的功能。(以I开头命名接口名称) 一个接口实现多个类: 一个派生子类可以实现多个接口(多个接口用,隔开): class Program : IPeople, ITeacher, IStudent//多¨¤接¨?口¨2继¨?承D { string name = ""; string sex = ""; ///

///姓?名? /// public string Name { get { return name; }

面向对象--接口与抽象类、对象和接口(通俗讲解)

面向对象--接口与抽象类的恩恩怨怨 接口与抽象类是面向对象编程中两个非常重要的角色,二者各自起着非常重要的作用。但是很多初学的朋友往往会对使用接口还是抽象类存在的很大的迷惑。就我自己的一点心得,发表一下拙见。 面向对象的一些回顾: 面向对象世界中有一个古老的法则:接口隔离原则,指的是不要把多个功能全部都集中在一个接口里面。接口实现的功能要相对单一;衍生开来可以得到另外一个结论:对一组或者称一系列功能的实现,尽量定义相对功能单一的小模块来实现这一组功能。这其实也是解耦和的体现。 那这跟我们的接口和抽象类有什么关系呢?那又得摆出另外一个法则:依赖倒置原则,针对接口编程而不是针对实现编程。 说到这,又会有一个新的问题蹦出来,这是自相矛盾啊,既然要针对接口编程还要抽象类干吗使?我们经常说面向对象,面向对象是来源于生活的。是人们要把对现实世界中的一系列方法论应用到程序设计当中来。从对象这一概念的引入我们就可以揣摩这一点。人类社会中有很多对象的概念,人、车、物体。不幸的是用程序来实现这些对象比在概念上定义对象要难很多。 (如果能达成这一共识,您可以继续往下看,否则就请看官您移步至留言讨论吧) MS给出开发者的建议是,用抽象类来实现接口。子类再继承基类。 实例说明: 为什么要这么建议?OK,我们试着结合实际来说明一下这个问题吧。我们要造车。这个车有个基本的属性就是能移动、还必须有轮子。那我们就设计一个接口 1public interface ICar 2 { 3 string Wheel 4 { 5 get; 6 set; 7 } 8 void Move(); 9 } 10

接下来的事情,就是实现了。造什么车都行,继承一下就行。随着科技的发展,我们的车想要飞了。此时当然不能修改这个接口,因为要遵循开闭原则。为什么要遵循?我们可以想一下,人坐上飞机能飞上天。但是也没见谁认为人有会飞这个特性的。那也好办,不许修改,那我再加一个接口。 1interface IFlyable 2 { 3 void Fly(); 4 } 5 好,我们的飞行汽车最后应该是这样的。 1class FlyCar : ICar,IAerocraft 2 { 3 private string wheel = string.Empty; 4 5 public void Fly() 6 { 7 Console.WriteLine("{0}车飞起来了",this.wheel); 8 } 9 public string Engine 10 { 11 get 12 { 13 return wheel; 14 } 15 set 16 { 17 wheel = value; 18 } 19 } 20 21 public void Move() 22 { 23 Console.WriteLine("{0}轮车在走",this.wheel); 24 } 25 } 26 看起来很不错,车能飞能走了。那它现在他的祖宗到底车还是飞行器呢?我们自己在心里辩论一下吧。估计不是很容易辩清楚。 我们前面说过,面向对象的思想来源于现实生活。如果把这组例子引入到现实中来,造会飞的汽车。肯定是要在原有的汽车上面下功夫。比如你装上喷气动力装置,或者装上翅膀。

第六讲类、对象和接口(二)

第六讲类、对象和接口(二) 1类的继承 继承是类的另一个特性。继承的意义在于:我们重复使用或更改现成的类的方法,也可以加入新的数据成员以及新的方法,以满足新环境的需要。这种技术是所有面向对象的编程语言的一个基本特征。 让我们来看一个例子:前面我们定义了一个Employee类,这只是普通员工,现在我们要定义一个经理类。经理也是员工的一种,所以Employee类中的数据和方法他也应该有;但经理又不同于普通员工,经理有秘书,而且涨工资的时候还要加上分红。怎么办?我们要不要从头开始写一个经理类? 有了继承的技术,我们可以在Employee类的基础上,编写我们的Manager类。程序如下: package teach4; import java.util.Date; class Manager extends Employee { private String secretaryName; public Manager(String n, double s, int d) { super(n, s, d); secretaryName = ""; } public void raiseSalary(double byPercent) { // add 1/2% bonus for every year of service Date today = new Date(2001,1,1); double bonus = 0.5 * (today.getYear()- getHireYear()); super.raiseSalary(byPercent + bonus); } public void setSecretaryName(String n) { secretaryName = n; } public String getSecretaryName() { return secretaryName; } } 我们以这个例子为例,学习继承的用法。 首先,请注意这个类的头部有些不同:class Manager extends Employee;其中,关键字extends是扩展的意思,表明Manager类是从Employee类继承而来。我们把Employee叫做父类或者超类,把Manager叫做子类或者衍生类。一般来说,子类比父类有更多的功能。 Manager的构造方法中有个语句:super(n, s, d),super是一个关键字,意思是调用父

Java的对象、类、方法和接口

1.1什么叫对象?什么叫方法?什么叫面向对象的程序设计? 面向过程的程序设计语言最重要的特点是按照解决问题的一个一个步骤来设计程序。这种语言是与解决相对比较简单的问题,当程序规模较大时,将显得纷繁复杂。 “对象”原来是描述自然界时使用的一个词语。比如,现在我正在写讲义,桌上的稿纸、手中的笔、案头的参考书、身后的电脑以及窗外的鸟都可以成为对象面向对象,就是将世界看成由许多彼此之间能联络的对象组成。 不少程序设计语言借用了对象这个词语作为一个专用名词,此时,对象也是具有状态和行为两个特征。在程序设计中,对象的状态时相对处于静态的,用变量来描述和表达;而对象的行为时动态的,他们通过“方法”来实现和完成,所以方法一定是实现对象行为的语句块。从功能上讲,方法和子程序、函数很相似。变量和方法是彼此有关、相互依赖的。当然,计算机都是用数据来表示对象的状态的,也是通过对数据的操作和修改来体现某个方法的功能的。 1.2 Java作为面向对象的程序设计语言有什么特点? Java是面向对象的程序设计语言,从面向对象这个角度看,体现了如下三个特点: a:封装性—面向对象的程序设计语言都是把数据和处理数据的操作结合在一起而构成一个整体,这就是对象。对象的使用者只能看到对象的外部特性,比如,其主要功能、如何调用等,而看不到内部如何实现这些功能。作为面向对象的程序设计语言,程序中的数据就是变量,程序对数据作处理则成为方法。变量和方法都被封装在对象中。所以,一个对象就是变量和方法的集合,其中变量表明这个对象的状态,方法实现这个对象所具有的行为,而且在程序中将这些变量和方法进行封装,使它们成为一个模块,再用一个名字来代表这个模块。这样,以后得更高层的程序设计中,就不必关心某个对象的行为到底是怎样实现的。可见,将对象封装就是为了使模块尽可能少地展现其内部细节,而只是以一种界面来面向外部。 对象的封装性减少了程序各部分之间的依赖,使程序的复杂性降低,而可靠性提高,并便于修改。 b:继承性—面向对象的程序设计中,对象是从类创建出来的,这一点即将在下面的解答中说明。在Java中,许多类组成层次化结构。一个类的上一层成为父类,而下一层成为子类。一个类可以继承其父类的变量和方法,而且这种集成具有传递性。就是说,一个类可以继承其上一层和其再上一层的变量和方法。这种可传递的继承性使得下层多个相似的对象可以共享上层类的数据和程序代码,而子类又可以再继承父类的基础上增添新的内容和功能。这种代码共享和代码可增添的继承特性使Java既灵活又方便提高效率。 c:通信相关性—一个对象往往涉及多个行为。体现在程序设计中,一个对象往往包含多个方法,每一个方法对应一个行为。所以,一个对象完成某个动作也就是程序执行相应的方法。于是,就涉及对象之间通过交互来实现复杂的行为,这叫对象之间的通信。 利用通信可以实现一个对象往另一个对象的信息传递。信息传递设计三个要素:一是信息接收对象;二是接收对象中用哪个方法完成指定的动作;三是比方

单片机实验-单片机并行IO口的应用实验

单片机并行I/O口的应用实验 一、实验目的 1、熟悉Proteus软件和Keil软件的使用方法。 2、熟悉单片机应用电路的设计方法。 3、掌握单片机并行I/O口的直接应用方法。 4、掌握单片机应用程序的设计和调试方法。 二、实验内容或原理 1、利用单片机并行I/O口控制流水灯。 2、利用单片机并行I/O口控制蜂鸣器。 三、设计要求 1、用Proteus软件画出电路原理图。要求在P1.0至P1.7口 线上分别接LED0至LED7八个发光二极管,在P3.0口线上 接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、实验程序流程框图和程序清单。 4、电路原理图。 5、实验结果 6、实验总结。 7、思考题。 五、思考题 1、编程实现LED0至LED7以十六进制计数规律亮灯? 原理图:

程序清单: /*(1)LED0~LED7以秒速率循环右移 蜂鸣器逐位报警*/ ORG 0000H MAIN:MOV A, #11111110B;赋初值 LOOP:MOV P1,A ;赋值给P1口 CPL P3.0 ;低电平有效 LCALL DELAY ;调用延时电路 SETB P3.0 ;控制蜂鸣器叫的时间间隔 LCALL DELAY RL A LJMP LOOP DELAY:MOV R7,#0FFH LOOP1:MOV R6,#0F4H LOOP2:MOV R5,#02H DJNZ R5,$ ;"$"当前的PC值,R5的内容减1不为零,继续执行该语句 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET END /*(2)LED0~LED7以十六进制计数规律亮灯*/ ORG 0000H MOV A,#0FFH LOOP: MOV P1,A LCALL DELAY DEC A CJNE A, #0FFH,LOOP MOV A, #0FFH LJMP LOOP DELAY:MOV R7, #0A7H LOOP1:MOV R6, #0ABH LOOP2:MOV R5, #10H DJNZ R5, $ ;"$"当前的PC值。R5的内容减1不为零 DJNZ R6, LOOP2 DJNZ R7, LOOP1 RET END

对象请求代理(ORB)(陈柏年)

对象请求代理(ORB)(陈柏年) 公用对象请求代理(调度)程序体系结构CORBA(Common Object Request Broker Architecture),是对象管理组织OMG(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。简而言之,CORBA允许应用程序和其他的应用程序通讯,而不论他们在什么地方或者由谁来设计。CORBA1.1由对象管理组织在1991年发布。他定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。CORBA 2.0 于1994 年的12 月发布。他定义了如何跨越不同的ORB 提供者而进行通讯。 ORB是一个中间件,他在对象间建立客户-服务器的关系。通过ORB,一个客户可以很简单地使用服务器对象的方法而不论服务器是在同一机器上还是通过一个网络访问。ORB 截获调用然后负责找到一个对象实现这个请求,传递参数和方法,最后返回结果。客户不用知道对象在哪里,是什么语言实现的,他的操作系统以及其他和对象接口无关的东西。 在传统的客户/服务器程序中,开发者使用他们自己设计的或者公认的标准定义设备之间的协议。协议的定义依赖于实现的语言,网络的传输和其他许许多多因素。ORB 将这个过程简单化。使用ORB,协议定义是通过应用接口,而该接口是接口定义语言(IDL)的一个实现,他和使用的编程语言无关的。并且ORB提供了很大的灵活性。他让程序员选择最适当的操作系统,运行环境和设计语言来建设系统中每个组件。更重要的是,他允许集成已经存在的组件。 CORBA是在面向对象标准化和互操作性道路上的一个信号。通过CORBA,用户不必要知道软硬件的平台和他们处在企业网的什么地方就可以操作。 ORB 结构 通过ORB 发送请求 上面的图形说明的是客户端发送一个请求到对象的实现。客户端是希望对某对象执行操作的实体。对象的实现是一片代码和数据来实际实现对象。ORB负责下面的必要的机制:对该请求找到对象的实现,让对象的实现准备好接受请求,和请求交换数据。客户端的接口完全独立于对象的位置,其实现的语言和其他不影响对象接口的东西。 ORB 接口的结构

13 接口及对象关系练习题

【练习题】接口及类练习 1. 创建接口飞翔Ifly 该接口只包含方法飞fly() 2. 创建动物抽象类Animal 包含抽象方法:1)吃eat() 2)睡觉sleep() 公共属性:name 3. 创建鸽子类Pigeon 1)鸽子类继承动物类并实现飞翔接口 2)添加属性:鸽子类别pType 4. 创建飞机类Plane 1)飞机类实现飞翔接口 2)添加公共属性:飞机名name 飞机所属单位pCompy 5. 在主方法中 1)实例化鸽子对象信鸽:xinge 信鸽的名字为:tom ; 类别为:信鸽 让信鸽飞翔 2)实例化飞机对象直升机:whirlybird 直升机的名字为:长江8号 所属单位为:解放军A1001部队 让该直升机飞翔 6. 设计人类 1)人类控制飞翔接口,控制方法:Ctrl(Ifly ff) 2) 公共属性:Name 7. 在主方法中 实例化人,名字为:merry merry 调用控制方法:让直升机飞翔 merry 调用控制方法:让信鸽飞翔 【练习题】对象关系练习 设计图书信息类、学生类,用于模仿学生借阅图书信息。尤其注意学生借阅图书信息应如何表达。借阅图书方法应包含在学生类中还是图书类中?借阅图书的方法是否有参数? 【练习题】对象关系练习 模拟主人与小狗关系,要求:主人能找到自己的小狗,小狗能找到自己的主人 控制台输出:

主人:merry 有一条狗叫花花品种是金巴 小狗:花花的主人是merry 升级版的主人与狗 每一个可以养多条狗(用数组实现,注意是在修改狗类还是主人类)每条狗都可以讨好自己的主人 主人可以转让自己的任意一条狗(若没有任何狗则不能转让) 转让给新主人时,若新主人的狗数已达到,则不能接收该狗 控制台输出: 主人:merry 可以有3 条狗 名字是:小花小黄小红 主人:jack 可以有2 条狗 名字是:花花 花花讨好主人jack 小红讨好主人merry merry 将狗小黄转让给jack merry 现在有狗:小花小红 jack 现在有狗:花花小黄 jack 将狗花花转让给merry jack 现在有狗:小黄 merry 现在有狗:小花小红花花

单片机并口简单应用(流水灯)实验报告.doc

实验一单片机并口简单应用(流水灯) 实验目的 1、了解单片机汇编语言程序的基本结构 2、了解单片机汇编语言程序的设计和调试方法 3、掌握顺序控制程序的简单编程 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、流水灯硬件电路 如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。 图4-1 流水灯电路图 2、单片机流水灯程序设计 由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。 (1)控制三极管导通程序 控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。 第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。

两种方法的程序流程如图4-2所示。 图4-2 流水灯位选信号控制 (2)产生流水灯效果程序 三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。 程序流程图如图4-3所示。 图4-3 流水灯程序流程图

实验内容 1、直接输出法输出数据序列 2、查表法输出数据序列 实验步骤及调试信息 1、新建实验项目shiyan1 2、输入实验程序并补充完整 3、编译下载实验程序,并修改错误(按附录说明) 原因:缺少主程序 4、加入主程序重新产生代码并装入,出现以下错误。

单片机串并口转换实验

我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。在单片机开发试板上也是完美运行。今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能 #include 本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。实验者请按上图连接好实验电路。 #include

#include< intrins.h > #define uchar unsigned char #define uint unsigned int #define ulong unsigned long code uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; sbit SO=P1^0; //定义165的输出 sbit STCP=P1^1; sbit DS=P1^2; sbit SHCP=P1^3; sbit SHLD=P1^4; sbit CLK=P1^5; sbit cs573=P1^6; /**************************************************/ void delay(ulong X) //延时函数,采用了形参传递函数

{ while(X--); } /**************************************************/ void LED(); //函数声明 /**************************************************/ void main() //主函数 { while(1) { LED (); } } /****************************************************/

Java实验7抽象类和接口

实验6 抽象类和接口 一、实验目的: 1、学习掌握抽象类的概念和使用方法。 2、学习掌握接口的概念和定义接口的方法。 3、学习使用Cloneable接口和clone方法进行对象内容的复制。 4、理解浅复制和深复制的概念,掌握覆盖clone方法进行对象内容深复制 的技术。 二、实验任务: 1、学习掌握抽象类的概念和使用方法。程序要求: (1)首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle和矩形类Rectangle为子类。几何图形类 GeometricObject中定义保护型字符串变量color,表示图形的颜色; 该类要具备构造方法和两个抽象方法findArea和findPerimeter,抽 象方法findArea求图形面积,抽象方法findPerimeter求图形周长。 (2)Circle类和Rectangle类是GeometricObject类的子类,其中应实现父类的抽象方法。 (3)程序主方法中创建两个几何对象,一个圆和一个矩形,并用GeometricObject类的引用变量引用它们,调用抽象方法。 2、学习接口的概念和利用接口实现多态的方法。程序要求如下: (1)首先创建圆类Circle和圆柱体类Cylinder,其中Circle类是父类,Cylinder类是子类; (2)创建接口Comparable,其中包含一个抽象方法compareTo,用来比较对象的大小。抽象方法compareTo的形式如下: public int compareTo(Object o); (3)创建类ComparableCircle,该类为Circle类的子类,并实现

单片机可编程并行接口芯片8255的应用实验

单片机可编程并行接口芯片8255的应用实验

一:实验目的和要求 1、掌握中断系统外部中断源的使用方法。 2、掌握延时程序的编程及使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二:设计要求 1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。 2、在8255PA口或PB口的某一口线上产生周期500μS的连续方波,接示波器观察波形。 3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态 三:电路原理 四:流程框图 五:实验结果 六:实验总结 通过本次试验,掌握了如何在单片机外部扩展I/O口,并且如何在程序中使用这些扩展出来的I/O口,为以后的学习和使用打下了一定的基础,存在的问题是在编写程序时不够熟练,需要多练习 七:思考题 1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化

四:流程框图 开始工作方式初始化开定时器 定时器初始化查询计数标志位溢出否 取反输出口A中内容送DPTR 设置C口命令DPTR指向控制位是否 开始DPTR指向C口C口内容送累加器DPTR指向控制位交换累加器内容 高低位累加器中内容送C 开始DPTR指向控制位A中内容送DPTR 定义查表执行次数查表数据送C口调用延时子程序 查询次数完否 否 是 修改变量值 1秒延时程序子程序返回 程序清单 ORG 0000H MOV DPTR, #0003H MOV A, #80H MOVX @DPTR, A MOV DPTR, #0000H MOV A, #0FFH MOVX @DPTR, A MOV IE, #00H MOV TMOD, #20H SETB TR1 MOV TL1, #06H MOV TH1, #06H LOOP0:JBC TF1, LOOP1 AJMP LOOP0 LOOP1:CPL ACC.0 MOVX @DPTR, A AJMP LOOP0 END

实验三 类、对象和接口(一)

实验三类、对象和接口(一) 一、实验目的 1.掌握类的声明。 2.掌握对象的创建。 3.掌握方法的定义和调用 理解“封装”的概念 二、实验要求 编写一个体现面向对象思想的程序。 方法的使用 参数的传递 发法的返回 公有成员和私有成员 三、实验内容 编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。 2、定义一个“圆”类,该圆类的数据成员包括:圆心点位置及圆的半径;方法成员有:设置圆心位置及半径。求面积。

3. (1)写一个传值调用的程序文件KY3_5.java。 程序功能:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。 (2)程序源代码如下。 class KY3_5 { public static void main(String[] args) { int x=10, y=10; ff1(x, y); System.out.println("x="+x+", y="+y); } static void ff1(int passX, int passY) { passX=passX*passX; passY=passY*passY; System.out.println("passX="+passX+", passY="+passY); } } (3)编译KY3_5.java (4)分析其运行结果 4.设计一个cbox类,具有length,width,height三个整数的数据成员,完成下列程序设计:(1)定义volume()方法,哟过来计算cbox对象的体积 (2)定义surfaceArea()的方法,用来计算cbox对象的表面积

类和接口

.Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。 区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性,都会在京哈,牧羊犬中找到,那么狗相对于京哈和牧羊犬来说,就属于这类事物的抽象类型;而对于“叫”这个动作来说,狗可以叫,鸟也可以叫。很明显,前者相当于所说的是抽象类,而后者指的就是接口。 区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。 例如: public abstract class AbsTest { public virtual void Test() { Debug.WriteLine( "Test" ); } public abstract void NewTest(); } public interface ITest { void Test(); void NewTest(); } 区别三,继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。 区别四,在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。 知道了两者的区别,再来说说,接口相对于抽象类的优势。 好处一,接口不光可以作用于引用类型,也可以作用于值类型。而抽象类来说,只能作用于引用类型。

弄懂事件源、事件对象和监听接口

事件源:组件,例如Button 事件对象:event,例如MouseEvent类的对象 事件监听接口:EventListener,例如MouseListener EventListener 接口是处理事件的主要方法。用户实现EventListener 接口,并使用AddEventListener 方法在EventTarget 上注册其侦听器。用户还应该在使用完侦听器后从其EventTarget 移除EventListener。 MouseListener用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用MouseMotionListener。) 旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类MouseAdapter(仅重写所需的方法)。 然后使用组件的addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将MouseEvent 传递给该方法。 每个事件类型都有相对应的监听者接口。想要接受WindowEvent吗?那就实现WindowListener接口。 一般会用到事件监听接口中的某一种或几种方法,所以应该一般会用扩展抽象类MouseAdapter的方法。那是怎么个扩展法呢??? 虽然鼠标事情只有MouseEvent一种事件对象,却有不同的事件方法来表示不同类型的鼠标事件。 很重要的一句话:"实现监听接口让按钮有一个回头调用程序的方法。Interface正是声明调用(call-back)方法的地方" 下面用button、ActionEvent和ActionListener来说明事件源、事件对象和事件监听接口之间的关系: 1.先来看button怎样来添加一个监听接口 addActionListener(ActionListener l) ActionListener:继承AWTEvent,指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如Button)生成此高级别事件。事件被传递给每一个ActionListener 对象,这些对象是使用组件的addActionListener 方法注册的,用以接收这类事件。 因为ActionListener是个接口,所以要用类来继承它,然后实现它的actionPerformed方法。actionPerformed方法定义如下: void actionPerformed(ActionEvent e)

java面向对象编程类的封装接口和基本类库练习题

面向对象编程基本知识练习 一、判断题 1.不需要定义类,就能创建对象。() 2.构造方法用于给类的private 实例变量赋值。() 3.对象一经声明就可以立即使用。() 4.在定义变量和方法时,必须清楚地在其面前标上访问权限修饰符。() 5.Java 程序中的参数传递都是把参数值传递给方法定义中的参数。() 6.在类定义中,成员访问权限修饰符不能多次出现。() 7.new 操作符动态地为对象按其指定的类型分配内存,并返回该类型的一个引用。() 8.类的方法通常设为public,而类的实例变量一般也设为public。() 9.构造方法在创建对象时被调用。() 10.通过点运算符与类对象的引用相连,可以访问此类的成员。() 11.声明为protected 的类成员只能被此类中的方法访问。() 12.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间。() 13.类的成员变量可以放在类体的任意位置。() 14.声明为protected 的类成员可以被此类作用域中的任何对象访问。() 15.没有返回值的方法可以用void 来表示,也可以不加。() 二、选择题 1. 下面对对象概念描述错误的是:( ) A 操作是对象的动态属性 B 任何对象都必须有继承性 C 对象间的通讯靠消息传递 D 对象是属性和方法的封装体 2.编译并运行下面的程序,运行结果为:( ) public class A { public static void main(String[] args) { A a=new A(); a.method(8); } void method(int i) { System.out.println(“int:“+i); } void method(long i) { System.out.println(“long:“+i); } } A 程序可以编译运行,输出结果为int:8 B 程序可以编译运行,输出结果为long:8

单片机并行IO口的应用实验

一、实验目的 1、熟悉Proteus 软件和Keil 软件的使用方法 。 2、熟悉单片机应用电路的设计方法 。 3、掌握单片机并行I/O 口的直接应用方法 。 4、掌握单片机应用程序的设计和调试方法。 二、设计要求 1、用Proteus 软件画出电路原理图。要求在P1.0至P1.7口线上分别接 LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。 三、实验程序流程框图和程序清单 延时程序流程框图: 延时程序入口 设置循环体1的循环次数为 设置循环体2的循环次数为 设置循环体3的循环次数为 判断循环体3是否到达循环次 数 判断循环体2是否到达循环次 数 判断循环体1是否到达循环次 数 执行循环体 N Y 执行循环体 Y N 返回 执行循环体 Y N

实验程序流程框图: 开始 初始化 #FE A,#FF P1,设置 循环次数为七次 (A) P1,延迟 左移一位 P3.0清零 延迟 再将 P3.0置1 判断是否循环7次 延迟,(A) P1,左移一 位 P3.0清零 延迟 再将 P3.0置1 判断是否循环7次N 设置循环次数为7次 Y N Y 结束

汇编程序: ORG 0000H MOV A, #11111110B MOV P3, #0FFH MAIN : MOV R0, #07H LOOP1: LCALL DELAY MOV P3, A RL A CLR P2.0 LCALL DELAY SETB P2.0 DJNZ R0, LOOP1 MOV R0, #07H LOOP2: LCALL DELAY MOV P3, A RR A CLR P2.0 LCALL DELAY SETB P2.0 DJNZ R0, LOOP2 LJMP MAIN DELAY: M OV R7, #17H DL1: MOV R6, #98H DL0: MOV R5, #46H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END

类和对象的概念

类和对象的概念 类(Class) 面向对象思想来源于对现实世界的认知。现实世界缤纷复杂、种类繁多,难于认识和理解。但是聪明的人们学会了把这些错综复杂的事物进行分类,从而使世界变得井井有条。比如我们由各式各样的汽车抽象出汽车的概念,由形形色色的猫抽象出猫的概念,由五彩斑斓的鲜花抽象出花的概念等。汽车、猫、鲜花都代表着一类事物。每一类事物都有特定的状态,比如汽车的品牌、时速、马力、耗油量、座椅数,小猫的年龄、体重、毛色,鲜花的颜色、花瓣形状、花瓣数目,都是在描述事物的状态。每类事物也都有一定的行为,比如汽车启动、行驶、加速、减速、刹车、停车,猫捉老鼠,鲜花盛开。这些不同的状态和行为将各类事物区分开来。 面向对象编程也采用了类的概念,把事物编写成一个个“类”。在类中,用数据表示事物的状态,用函数实现事物的行为,这样就使编程方式和人的思维方式保持一致,极大的降低了思维难度。 封装(Encapsulation) 制造汽车的过程中什么人最牛?当然不是焊钢板的,也不是装轮胎的,更不是拧螺丝的,而是设计汽车的工程师,因为他知道汽车的运行原理。但是我们开车时,需要知道汽车的运行原理吗?答案显然不需要。汽车的运行原理已经被伟大的工程师封装在汽车内部,提供给司机的只是一个简单的使用接口,司机操纵方向盘和各种按钮就可以灵活自如的开动汽车了。 与制造汽车相似,面向对象技术把事物的状态和行为的实现细节封装在类中,形成一个可以重复使用的“零件”。类一旦被设计好,就可以像工业零件一样,被成千上万的对其内部原理毫不知情的程序员使用。类的设计者相当于汽车工程师,类的使用者相当于司机。这样程序员就可以充份利用他人已经编写好的“零件”,而将主要精力集中在自己的专署领域。 接口(Interface) 今天你买了一台等离子电视机,你拿出遥控器,操纵按钮,开始欣赏精彩的电视节目。人们通过遥控器这个接口使用电视机,同样,人们通过类的接口使用类。程序员在编写类时精心地为它设计接口,而设计良好的接口不但方便其他程序员使用,还有利于类的升级改造。 假设你是一个环保人士,最近你用节能的荧光灯代替了普通的白炽灯。白炽灯通过加热电阻丝照亮整个屋子;荧光灯则是激活空气中的某些分子的电子能而发光。虽然它们的原理不同,但是它们的功能却是一样的——照明。因为两种灯具有相同的接口,所以你只需拧下白炽灯,然后再拧上荧光灯即可,轻易的实现“零件”的更新换代。同样,在面向对象编程中,只要保持接口不变,你可以任意更改类的实现细节,用一个设计更好的类替换原来的类,实现类的升级换代。 现在软件维护和修改的成本已经占到了整个软件开发的80%,类的这一编成思想极大的方便了程序的维护和修改,降低了软件成本。

易语言中的对象精讲

Com对象在易语言中的使用 在说明com对象在易语言中的使用之前,让我们先来了解一下几个问题 什么是com? com全称是组件对象模型(compoment object model),他是一组规范,是MicroSoft 创建的一组二进制和网络标准,用于解决两个组件之间的通信。 什么是com对象 com是面向对象的软件模型,com对象的概念有点类似于C++中对象的概念。在com规范中,没有com对象的严格定义,com组件提供给客户的是以对象形式封装起来的实体,客户与组件交互的实体是com对象。 com对象有自己的属性和方法,但这些都被com封装了起来,客户只有通过接口才能对com的方法进行调用,接口是com与外界通信,交互的唯一途径。 什么是接口 接口就是com 与外界通信的唯一途径。他的定义是com规范的核心。接口是一组逻辑上相关的函数的集合,他自己可以看作是指向改组函数集合的指针。 下面我们来说说,在“易语言”中是如何调用com对象的呢?我们就以Word 的com对象来举例说明。 首先运行“易语言”,在变量中创建一个类型为“对象”的变量。 然后再窗体上放入一个编辑框控件和按钮控件。

进入窗口程序集1,在启动窗口创建完毕事件中写入如下代码 这行代码的作用是把我们刚才创建的“word对象”这个变量和word的com 对象连接上,“Word.Application”这段我们可以理解为word的com对象的总的一个接口,通过这个总的接口我们才可以调用它里面的功能,但是前提就是你的计算机中必须安装有office,否则你是无法连接上word的com对象的。安装完了office之后,在安装目录中,就有每个程序的com对象接口的详细文档,我们可以参考这些文档来完成我们需要的功能。 这时我们可能不知道连接上了之后,再怎么去使用它内部的接口呢。我们可以使用“易语言”的对象.查看命令,来查看你当前使用的对象中都包括哪些接口。 在运行之后,我们会看到一个查看对象中接口的一个表,这就是查看命令生成的表,察看命令在编译之后是不会运行的。

相关主题
文本预览
相关文档 最新文档