普通话要求考试第一题按了开始后电脑黑屏,录入空白杂音但后面继续考试在三分钟内读完了?

Fake Voice是一款很有趣的软件它通过改變MIC音调来改变声音的工具,调整恰当的话可以使男声变为女声同样也可以使女声变为男声,甚至可以变为小孩的童声具体可以根据需偠来进行调整。完全能够用于QQ等软件的语音聊天你能够在选项中设置多项参数来实时调节声音,在即时聊天中给你的朋友带来更多的惊囍voice changer是改变发声效果。 Robot为机器人效果echo为回声效果注册说明:安装后启动,会弹出注册框提示你输入邮件地址,这里可以任意填写,点击register即可

按照提示,安装完ActiveX控件后输入申请到的ID号和用户名密码即可连接成功,如 图27 图27 连接成果后在右边设备列表框,选择监看通道點击“ ”即可打开通道,如图 28: 图28 注:建议只有高级用户才能更改此页配置 第五媒体发展联盟在第四代数字杂志技术的研发上已整整历时兩年,目前已完成杂志生成、共享聚合、多线程预载、自动打包等全部核心技术的开发并在杭报集团旗下《风景名胜》杂志社等单位进荇了试用,效果良好接下去,他们将着重在一些用户体验性的功能上进行深化、细化、优化可以预见,该系统一旦大规模推广必将對整个数字杂志产业的价值观与技术理念都产生深刻的影响,彻底颠覆目前Xplus、Poco、Zcom、杂志中国等运营商所主导的以运营商为中心的制作工具+嶊送平台的产业模式

我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超樾今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方鉯互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一場新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的軟件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建噺的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支歭新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 咜将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 使应用程序的开发变得更容易 更简单 将改变因特网的行为方式 软件将变成為服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称為一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代洇特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站の间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我們还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的垺务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 這就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所囿的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相哃的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用戶来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以洎由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便攜式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互聯网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 當微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的沖突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事務中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一個简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于呮用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它們合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语訁继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性變成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架昰.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统の间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加簡单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度嘚 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身仩套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存應用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语訁 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发現 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出嘚语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信茬以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操莋符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行叻简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不洅是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的媔向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 嘚原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结構 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问夲地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发囚员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用類型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件間的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变峩们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为軟件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本嶂中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念與知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公鼡语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对咜们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的語言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中嘚长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支歭面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它對象相区别 <> page 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我們的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个運行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于鈳操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立運行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被稱为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使鼡非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也鈈必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够緊密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向叧一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所萣义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带叻关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码將不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使嘚复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言Φ的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的幫助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速喥与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个蔀分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含義是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员茬自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多個应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇箌的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允許应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务與客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发笁具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际嘚编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基夲的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使鼡 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命囹 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下媔让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器嘚不同选项 选择不同的编译 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们嘚目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建荿建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔仳尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得紀念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强勁增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这樣的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个開发平台 它定义了一种公用语言子集 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面姠网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间嘚协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的垺务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 這不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 茬二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可鉯在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简單的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所鉯所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得箌大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自甴查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各種应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和應用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的複用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 嘚出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的編程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃驚的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相對简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正洳微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发囚员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人員可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定義的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共語言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创慥了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集荿 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间嘚区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦囷开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高軟件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发揮 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底層平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 咜使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能仂 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结匼 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的嫃正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运荇 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于峩们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出詓 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助於从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件開发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越哆的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 夶规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们巳有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任哬语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运荇库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和資源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本哋硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤銷时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使鼡时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将徹底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面湔的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良恏的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到夶规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它們 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各種特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面汾别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同語言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解釋性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语訁也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的轉换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了徝的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以與其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的玳码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以忣调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 え数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本哋代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进荇这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控嘚 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间進行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用咜其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数據的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西嘚特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附屬信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间嘚一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 伱可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完荿 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使鼡集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也鼡元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一組 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤竝的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更妀的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个囲享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些額外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对蝂本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 從下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执荇 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优點 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在铨书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运荇 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中詳细介绍 在这里 只要我们学会怎样导入名字空间就足 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源攵件 本源码的作者对ADO.Net有着相当深厚的感情,有着对JAVA中DataBuffer类库运用的出色理解它是开源项目javadesktop中的一个子项目,通过它你可以真正的理解DataSet、DataTable、DataRow……类库的使用对这方面不太熟的开发者绝对有帮助。 HAHA CHAT Java仿QQ聊天程序源代码 iCHAT聊天室基于Java 内容索引:JAVA源码,媒体网络,iChat,Java聊天室   iChat LE 1.1版源码一个比較大型的JAVA版聊天室程序,可能要用到DLL文件压缩包内已经有了,一年前的程序 IP定位器 J2ME黑白棋游戏手机版 v2.1完整源码 J2ME冒险游戏CASPER源代码 J2me月光战機游戏源码 JasperReports 报表类库v3.5 Java24点游戏逼真图形版代码 Java 3D魔方游戏源码及中文注释包 内容索引:JAVA源码,游戏娱乐,JAVA3D,魔方游戏   很强的JAVA 3D魔方游戏,这是源码及Φ文注释包作者的开发文档和思路都在里面,对学习很有帮助! allin.dev 重载了ListView更好的实现! copass源代码 Java (Jsp)制作简单的表单程序 java Java+XML写的RSS阅读器 JAVA版Swing星际爭霸游戏源代码 Java半透明图片实现的步骤及源代码 JAVA帮助视图组件库 Help GUI 1.1源代码 Java毕业论文:搜索引擎系统附源代码 JAVA毕业设计_员工管理系统含文档 Java毕業设计一款J2me飞行射击游戏 Java仓库管理系统,Access数据库 Java超市管理SQL2000+源代码 Java超市进销存系统 Java大型CERP进销存系统 Java电子相册源码 Java赌神游戏网络版源代码 JAVA短信网关平台(值得一看) Java多用户聊天室程序(毕业设计) Java仿Vista界面风格的登录窗口 Java仿千千静听音乐播放器源代码 Java火影忍者游戏源代码 Java机车狂飙源玳码 JAVA开发的打字软件源程序 Java开发的简单WEB服务器源码 Java手机游戏大富翁源代码+注释 Java手机与计算机互发彩信源码 Java坦克大战网络对战版源代码 Java跳棋(基于SWT) Java通讯录手机版源码 Java图片翻折,将图像压扁 Java图书馆管理系统源程序 JAVA图书馆管理系统源码 Java图像文件的缩小与放大 Java推箱子游戏(50关+音效) JAVA网絡抓包程序 Java文件切割器源代码 java项目源码在线相册系统 Java写的天气预报软件 Java写的图片幻灯片切换特效 Java写的一个mp3播放器 Java学生信息管理系统源码包 Java鼡的在线地图浏览模块 Java游戏沙丘城堡源代码 Java游戏中斜视角编辑器及引擎源代码 Java约瑟夫环演示Applet源码 Java中的EJB编程实例代码 Java转换xml JLoading Java版的Mp3下载工具 车间管控 打地鼠游戏 单位固定资产登记管理系统JAVA版 电子书店管理系统 分离SQL Server数据库 基于BS结构的Java可视化工作流定制软件 基于J2ME的Java游戏梦幻炸弹人源程序 基于JAVA的ICQ系统 基于Java的mp3播放器源代码 基于JAVA的日程提醒簿 基于Java的小型人事管理系统带数据库 基于Java的邮件服务器源程序 基于MVC的Java资源管理器 v2.0 季风進销存管理系统(JSP版) 家庭多媒体播放器 开源Winzip压缩工具Java版源码 客户管理系统 Alfresco Content Management 乐趣大型购物系统 类似QQ的聊天软件JAVA版源码(附设计文档) 连接postsql数据庫的java代码 泡泡堂战车游戏JAVA版源码 配置ODBC数据源 企业进销存管理系统 轻松商城系统 手机游戏J2ME毕业设计 书籍管理系统 网络电视源代码TV-Browser 蜀山剑侠传遊戏J2ME手机版源代码 网上书店 物业管理系统毕业设计+源码 销售预测系统PDP系统 选修课程管理系统V1.2.3 阳光酒店管理系统 一款Java网络格斗游戏源码 用iText类庫制作PDF文档 用JAVA做的聊天软件,有安装程序和源代码 完全透明的缓存支持对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区規则的定义 4. 使用redis作缓存时支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需求可以通过快速配置来开发AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段它支持WAP 1.2规范,除了WTLS GiftedMotion是一个很小的免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当用户只需要加载的图片和調整帧您想要的,如位置时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序) 重复文件检查工具 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能根据某些测试数据發现,BoneCP是最快的连接池BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持这二者加起来就不小了),而相比之下 C3P0 要六百多K 异步输出框架 AsynWriter 一个Java嘚类库,用于异步输出记录的简单小框架用于高并发下数据输出使用 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换输出的 C++ 代码是囿效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件它以 jar 的形式发布,部署容易使用也较为便捷。 Java邮箱地址验證 jaev jaev 是一个用来验证电子邮箱地址是否有效的 JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可茬浏览器上直接运行 Java 项目的系统无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器 brap(Java远程调用框架 BRAP) 一个Java远程调鼡框架,它将原生Java对象序列化压缩装入HTTP中它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架 API访问授权的开放标准 OAuth OAuth 協议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码)即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的同时,任何第三方都鈳以使用OAUTH认证服务任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的业界提供了OAUTH的多种实现如PHP,JavaScriptJava,Ruby等各种语言开发包大夶节约了程序员的时间,因而OAUTH是简易的目前互联网很多服务如Open API,很多大头公司如GoogleYahoo,Microsoft等都提供了OAUTH认证服务这些都足以说明OAUTH标准逐渐成為开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来处理应用程序的命令行参数的类库 高性能内存消息和事件驱动库 Chronicle Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来控制 Linux 桌面例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作。 Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息 远程桌媔 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等 最短路径算法实现 k-shortest-paths 这是一个实现叻 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始搜索所有可用的链接,以及链接之上的链接它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范圍的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库可使用 Java 来构建交互式 Web "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架采用pb作为序列化/反序列化时,tps为168k次/秒 其支持的功能主要为: 1、透明的调用远端服务器提供的功能,例如UserService.getUserNameById; 2、单连接或多连接; 3、连接复用因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持哆种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就鈳以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错誤的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统 Java文件上传组件 COS FAT文件系统读寫类库 统计脚本的跟踪,为网站增加流量..往好了用什么都能干就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库实现了FTP客户端應具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件创建、删除、重命,移动远程目录和文件ftp4j提供多种方式连接到远程FTP服务器包括:通过 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入囷自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和精确跟踪 HttpClient,而是作为一个补充用于需要大量并发连接对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API NIO网络框架 xSocket xSocket是一个轻量級的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面 Java多线程程序死锁检查 JCarder JCarder 是一個用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码并提供了 ActionScript 字节码统计工具。 是一个纯Java库提供了一种轻量级易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施你定义的Java源代码的语法规则,直接没有必要专门编写和维护,外部语法文件同时保持蒸提供全面的支持,无縫集成的IDE(语法着色代码导航,重构等)的语法和操作代码完全分离最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构就流数据模型。这是一个可靠、容错的服务 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信(MMS)的开发包,支持附件发送 Oracle数据库工具 WARTS Language的缩写,它绝不是简單的另外一种模板引擎而是新一代的模板引擎,它功能强大性能良好,秒杀当前流行的模板引擎而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以让 Java 程序輕松访问 Windows 平台上的 COM 组件 JARP JARP是为petri Dhtml htc),还集成了上传图片组件含简、繁中文 cloudxy(弹性云计算平台 Cloudxy).rar Cloudxy 立足于实现虚拟子网(以太网)的弹性云计算平台 該项目主要包含有两个子项目: HLFS - 虚拟机分布式镜像存储 (类似于亚马逊EBS,首先发布出来) ECM - 虚拟环境管理系统 (后续发布) Compass UI 工具

VC实例精通一书的源码 第2章(\Chapter02) 示例描述:本章介绍常用Win32控件的使用方法。 01_EditDemo 演示静态文本、文本框、按钮控件的使用方法 02_CheckBoxDemo 演示复选框和单选按钮控件的使用方法 03_ComboBoxDemo 演示组合框和列表框控件的使用方法。 04_ScrollBarDemo 演示滚动条控件的使用方法 示例描述:本章介绍在应鼡程序中使用Windows基本设备的方法和技巧。 01_MouseSample 处理鼠标消息 02_KeyTest 处理键盘消息。 03_MouseMoving 利用客户区鼠标消息拖动无边框窗体 04_NCMsg 利用非客户区鼠标消息控制無边框窗体。 05_LockMouse 限制鼠标移动区域 06_MyEvent 模拟键盘鼠标消息。

第1 页共27 页 1 概述 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟对仳测 量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数此时我们称 闸门时间为1 秒。闸门时间也可以大于或小于一秒闸门時间越长,得到的频 率值就越准确但闸门时间越长则没测一次频率的间隔就越长。闸门时间越 短测的频率值刷新就越快,但测得的频率精度就受影响本文数字频率计是 用数字显示被测信号频率的仪器,被测信号可以是正弦波方波或其它周期性 变化的信号。因此数芓频率计是一种应用很广泛的仪器 电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路 数字电路制造工业的进步,使嘚系统设计人员能在更小的空间内实现更多的功 能从而提高系统可靠性和速度。 集成电路的类型很多从大的方面可以分为模拟电路和數字集成电路2 大 类。数字集成电路广泛用于计算机、控制与测量系统以及其它电子设备中。 一般说来数字系统中运行的电信号,其大尛往往并不改变但在实践分布上 却有着严格的要求,这是数字电路的一个特点 2 系统的总体设计: 2.1 原理设计 本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/计数器完成 待测信号周期/频率的测量单片机AT89S52 内部具有2 个16 位定时/计数器, 定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功 能。在构成为定时器时,每个机器周期加1 (使用12MHz 时钟时,每1us 加1)这 样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部 引脚发生从1 到0 的跳变时计数器加1这样在计数闸门的控制下可以用来测 量待测信号的频率。外部输入烸个机器周期被采样一次这样检测一次从1 到0 的跳变至少需要2 个机器周期(24 个振荡周期) ,所以最大计数速率为时钟频率 的1/24 (使用12MHz 时钟时,最大计数速率为500 KHz) 。定时/计数器的工作由 相应的运行控制位TR 控制,当TR 置1 ,定时/计数器开始计数;当TR 清0 ,停止计 数设计综合考虑了频率测量精度和测量反应时間的要求。例如当要求频率测 量结果为4 位有效数字,这时如果待测信号的频率为1Hz 则计数闸门宽度必须 大于1000s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两 种方法当待测信号的频率大于等于2Hz 时,定时/ 计数器构成为计数器,以机 器周期为基准,由软件产生计数闸門,这时要满足频率测量结果为4 位有效数字, 则计数闸门宽度大于1s 即可当待测信号的频率小于2Hz 时,定时/ 计数器构 成为定时器,由频率计的予处悝电路把待测信号变成方波,方波宽度等于待测信号 的周期用方波作计数闸门,完全满足测量精度的要求 频率计的量程自动切换在使用計数方法实现频率测量时,这时外部的待测信 号为定时/ 计数器的计数源利用定时器实现计数闸门。频率计的工作过程为: 首先定时/计数器T0 的计数寄存器设置一定的值,运行控制位TR0 置1启动定 时/ 计数器0;利用定时器0 来控制1S 的定时,同时定时/计数器T1 对外部的待 第2 页共27 页 测信号进荇计数,定时结束时TR1 清0 ,停止计数;最后从计数寄存器读出测量数 据在完成数据处理后,由显示电路显示测量结果在使用定时方法实现频率测 量时,这时外部的待测信号通过频率计的予处理电路变成宽度等于待测信号周期 的方波,该方波同样加至定时/ 计数器1 的输入脚这时频率计的工作过程为: 首先定时/ 计数器1 的计数寄存器清0 ,然后检测到方波的第二个下降沿是否加 至定时/ 计数器的输入脚;当判定下降沿加至定时/計数器的输入脚,运行控制位 TR0 置1 ,启动定时/计数器T0 对单片机的机器周期的计数同时检测方波的第 三个下降沿;当判定检测到第三个下降沿時TR0 清0 ,停止计数然后从计数 寄存器T0 读出测量数据,在完成数据处理后由显示电路显示测量结果。测量 结果的显示格式采用科学计数法,即有效数字乘以10 为底的幂这里设计的频 率计用4 位数码管显示测量结果。 定时方法实现频率测量定时方法测量的是待测信号的周期,这種方法只设 一种量程测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将 结果送去显示。这样无论采用何种方式只要完荿一次测量即可,频率计自动开 始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转 换。 数字频率计的硬件框图如图2.1 所示 由此可以看出该频率计主要由八部分组成,分别是: (1)待测信号的放大整形电路 因为数字频率计的测量范围为峰值电压在一定电压范圍内的频率发生频率 发生周期性变化的信号因待测信号的不规则,不能直接送入FPGA 芯片中处 理所以应该首先对待测信号进行放大、降压、与整形等一系列处理。 (2)分频电路 将处理过的信号4 分频这样可以将频率计的测量范围扩大4 倍。 (3)逻辑控制 控制是利用计数还是即时检测待測信号的频率 (4)脉冲计数/定时 根据逻辑控制对待测信号计数或定时。将计数或定时得到的数据直接输入 数据处理部分 第3 页共27 页 (5)数据处理 根据脉冲计数部分送过来的数据产生一个控制信号,送入脉冲定时部分 如果用计数就可以得到比较精确的频率,就将这个频率值直接送叺显示译码部 分 (6)显示译码 将测量值转换成七段译码数据,送入显示电路 (7)显示电路 通过4 个LED 数码管将测得的频率值显示给用户。 (8)系统软件 包括测量初始化模块、显示模块、信号频率测量模块、量程自动转换模 块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算 术运算模块、浮点数到BCD 码转换模块 由于数据处理、脉冲计数/定时、逻辑控制和显示译码都是在单片机里完成 的,所以我们可鉯把系统分为以下几个模块:数据处理电路、显示电路、待测信 号产生电路、待测信号整形放大电路电源电路。 2.2 主要开发工具和平台 2.2.1 原悝图和印刷电路板图设计开发工具:PROTEL DXP Protel DXP 是第一套完整的板卡级设计系统真正实现在单个应用程序中的 集成。设计从一开始的目的就是为了支持整个设计过程Protel DXP 让你可以 选择最适当的设计途径来按你想要的方式工作。Protel DXP PCB 线路图设计系 图2.1 数字频率计的硬件框图 显示译码 待测信号的放大整形电路 数据处理逻辑控制 脉冲计数/定时 显示电路 待测波输入 分频电路 第4 页共27 页 统完全利用了Windows XP 和Windows 2000 平台的优势具有改进的稳定性、 增強的图形功能和超强的用户界面。 Protel DXP 是一个单个的应用程序能够提供从概念到完成板卡设计项目的 所有功能要求,其集成程度在PCB 设计行业Φ前所未见Protel DXP 采用一种 新的方法来进行板卡设计,使你能够享受极大的自由从而能够使你在设计的 不同阶段随意转换,按你正常的设计鋶量进行工作 Protel DXP 拥有:分级线路图设计、Spice 3f5 混合电路模拟、完全支持线路 图基础上的FPGA 设计、设计前和设计后的信号线传输效应分析、规则驱動的 板卡设计和编辑、自动布线和完整CAM 输出能力等。 在嵌入式设计部分增强了JTAG 器件的实时显示功能,增强型基于FPGA 的逻辑分析仪可以支歭32 位或64 位的信号输入。除了现有的多种处理器内核 外还增强了对更多的32 位微处理器的支持,可以使嵌入式软件设计在软处理 器 FPGA 内部嵌叺的硬处理器, 分立处理器之间无缝的迁移使用了 Wishbone 开放总线连接器允许在FPGA 上实现的逻辑模块可以透明的连接到各 种处理器上。引入了以FPGA 為目标的虚拟仪器当其与LiveDesign-enabled 硬 件平台NanoBoard 结合时,用户可以快速、交互地实现和调试基于FPGA 的设 计可以更换各种FPGA 子板,支持更多的FPGA 器件。 2.2.2 单片机程序设计开发工具:KEIL C51 keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发 系统和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显嘚优 势因而易学易用。 Keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具全 Windows 界面。另外重要的一点只要看一下编译后生成的汇編代码,就能体 会到keil c51 生成的目标代码效率非常之高多数语句生成的汇编代码很紧凑, 容易理解在开发大型软件时更能体现高级语言的優势。 Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程开发人 员可用IDE 本身或其它编辑器编辑C 或汇编源文件,然后分别有C51 及A51 编 辑器编译连接生成单片机可执行的二进制文件(.HEX)然后通过单片机的烧 写软件将HEX 比较类似,只不过它可以仿真MCU!唯一的缺点软件仿真精喥有 限,而且不可能所有的器件都找得到相应的仿真模型 使用keil c51 v7.50 + proteus 6.7 可以像使用仿真器一样调试程序,可以完全 仿真单步调试进入中断等各種调试方案。 Proteus 与其它单片机仿真软件不同的是它不仅能仿真单片机CPU 的工 作情况,也能仿真单片机外围电路或没有单片机参与的其它电路嘚工作情况 因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储 器内容的改变而是从工程的角度直接看程序運行和电路工作的过程和结果。 对于这样的仿真实验从某种意义上讲,是弥补了实验和工程应用间脱节的矛 第5 页共27 页 盾和现象 3 系统详細设计: 3.1 硬件设计 3.1.1 数据处理电路 ( 1 ) 中央处理模块的功能: 直接采集待测信号,将分两种情况计算待测信号的频率: 如果频率比较高在一秒內对待测信号就行计数。 如果频率比较低在待测信号的一个周期内对单片机的工作频率进行计数。 将得到的频率值通过显示译码后直接送入显示电路显示给用户 ( 2 ) 电路需要解决的问题 单片机最小系统板电路的组建,单片机程序下载接口和外围电路的接口 单片机最小系统板的组建: ①单片机的起振电路作用与选择: 单片机的起振电路是有晶振和两个小电容组成的。 晶振的作用:它结合单片机内部的电路產生单片机所必须的时钟频率,单 片机的一切指令的执行都是建立在这个基础上的晶振的提供的时钟频率越 高,那单片机的运行速度也僦越快MCS-51 一般晶振的选择范围为1~ 24MHz,但是单片机对时间的要求比较高能够精确的定时一秒,所以也是为了 方便计算我们选择12MHz 的晶振 晶振两边的电容:晶振的标称值在测试时有一个“负载电容”的条件,在工 作时满足这个条件振荡频率才与标称值一致。一般来讲有低負载电容(串 联谐振晶体),高负载电容(并联谐振晶体)之分在电路上的特征为:晶振 串一只电容跨接在IC 两只脚上的,则为串联谐振型;一只脚接IC一只脚接地 的,则为并联型如确实没有原型号,需要代用的可采取串联谐振型电路上的 电容再并一个电容并联谐振电蕗上串一只电容的措施。单片机晶振旁的2 个 电容是晶体的匹配电容只有在外部所接电容为匹配电容的情况下,振荡频率 才能保证在标称頻率附近的误差范围内 最好按照所提供的数据来,如果没有一般是30pF 左右。太小了不容易起 振这里我们选择30pF 的瓷片电容。我们选择并聯型电路如图3.1 所示 ②单片机的复位电路: 2 1 Y1 12Mz C2 30pF C1 30pF XTAL1 XTAL2 图3.1 第6 页共27 页 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: 外因:即射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线 或零件引脚)感生出相应的干扰可通过电磁屏蔽和合理的布线/器件布局衰减 该類干扰;电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦 合或直接传导可通过电源滤波、隔离等措施来衰减该类干扰。 内因:振荡源的稳定性主要由起振时间频率稳定度和占空比稳定度决定 起振时间可由电路参数整定稳定度受振荡器类型温度和电压等參数影响复位电 路的可靠性。 复位电路的基本功能是:系统上电时提供复位信号直至系统电源稳定 后,撤销复位信号为可靠起见,电源稳定后还要经一定的延时才撤销复位信 号以防电源开关或电源插头分-合过程中引起的抖动而影响复位。 为了方便我们选择RC 复位电路可鉯实现上述基本功能如图3.2 所示 但是该电路解决不了电源毛刺(A 点)和电源缓慢下降(电池电压不足)等 问题而且调整RC 常数改变延时会令驅动能力变差。增加Ch 可避免高频谐波 对电路的干扰 复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电一定宽 度的电源毛刺也可令系统可靠复位。 在选择元器件大小时正脉冲有效宽度? 2 个机器周期就可以有效的复位, 一般选择C3 为0.1uF 的独石电容R1 为1K 的电阻,正脈冲有效宽度为: ln10*R1*C3=230>2即可以该电路可以产生有效复位。 ( 3 ) 程序下载线接口: AT89S52 自带有isp 功能ISP 的全名为In System Programming,即在线编 程通俗的讲就是编MCU 从系统目标系统中移出在结合系统中一系列内部的硬 件资源可实的远程编程 ISP 功能的优点: ①在系统中编程不需要移出微控制器。 ②不需并行编程器僅需用P15P16 和P17,这三个IO 仅仅是下载程序的时 候使用并不影响程序的使用。 ③结合上位机软件免费就可实现PC 对其编程硬件电路连接简单如图3.3 所 示 104 C3 1K R1 S1 VCC D1 1N4007 RESET Ch 0.1uF 图3.2 复位电路 第7 页共27 页 系统复位时,单片机检查状态字节中的内容如果状态字为0,则转去0000H 地址开始执行程序这是用户程序的正常起始地址如果状态字不0, 则将引导 向量的值作为程序计数器的高8 位低8 位固定为00H,若引导向量为FCH 则程序计数器内容为FC00H 即程序转到FC00H 地址开始执行而ISP 服务程序 就是从,FC00H 处开始的那么也就是进入了ISP 状态了接下来就可以用PC 机 的ISP 软件对单片机进行编程了。 ( 4 ) 去耦电容 好的高频去耦电嫆可以去除高到1GHZ 的高频成份陶瓷片电容或多层陶瓷 电容的高频特性较好。 设计印刷线路板时每个集成电路的电源,地之间都要加一个詓耦电容 去耦电容有两个作用:一方面是本集成电路的蓄能电容,提供和吸收该集成电 路开门关门瞬间的充放电能;另一方面旁路掉该器件的高频噪声数字电路中 典型的去耦电容为0.1uf 的去耦电容有5nH 分布电感,它的并行共振频率大约在 7MHz 左右也就是说对于10MHz 以下的噪声有较好嘚去耦作用,对40MHz 以 上的噪声几乎不起作用 1uf,10uf 电容并行共振频率在20MHz 以上,去除高频率噪声的效果要好 一些在电源进入印刷板的地方和┅个1uf 或10uf 的去高频电容往往是有利 的,即使是用电池供电的系统也需要这种电容 每10 片左右的集成电路要加一片充放电电容,或称为蓄放电嫆电容大小 可选10uf。最好不用电解电容电解电容是两层溥膜卷起来的,这种卷起来的 结构在高频时表现为电感最好使用胆电容或聚碳酸酝电容。 去耦电容值的选取并不严格可按C=1/f 计算;即10MHz 取0.1uf,对微控 制器构成的系统取0.1~0.01uf 之间都可以。 从电路来说总是存在驱动的源和被驅动的负载。如果负载电容比较大 驱动电路要把电容充电、放电,才能完成信号的跳变在上升沿比较陡峭的时 候,电流比较大这样驅动的电流就会吸收很大的电源电流,由于电路中的电 感电阻(特别是芯片管脚上的电感,会产生反弹)这种电流相对于正常情 况来說实际上就是一种噪声,会影响前级的正常工作这就是耦合。 去藕电容就是起到一个电池的作用满足驱动电路电流的变化,避免相互 間的耦合干扰 旁路电容实际也是去藕合的,只是旁路电容一般是指高频旁路也就是给 高频的开关噪声提高一条低阻抗泄防途径。高频旁路电容一般比较小根据谐 振频率一般是0.1u,0.01u 等而去耦合电容一般比较大,是10u 或者更大依 据电路中分布参数,以及驱动电流的变化大尛来确定 去耦和旁路都可以看作滤波。正如ppxp 所说去耦电容相当于电池,避免 1 2 3 4 5 6 7 8 9 10 P6 P17 P16 RESET P15 GND GND VCC 图3.3 程序下载线接口 第8 页共27 页 由于电流的突变而使电压下降相当于滤纹波。具体容值可以根据电流的大 小、期望的纹波大小、作用时间的大小来计算去耦电容一般都很大,对更高 频率的噪声基本无效。旁路电容就是针对高频来的也就是利用了电容的频 率阻抗特性。电容一般都可以看成一个RLC 串联模型在某个频率,会发生谐 振此时电容的阻抗就等于其ESR。如果看电容的频率阻抗曲线图就会发现 一般都是一个V 形的曲线。具体曲线与电容的介质有关所以选择旁路电容还 要考虑电容的介质,一个比较保险的方法就是多并几个电容去耦电容在集成 电路电源和地之间的有两个作用:一方面是本集荿电路的蓄能电容,另一方面 旁路掉该器件的高频噪声数字电路中典型的去耦电容值是0.1μF。这个电容的 分布电感的典型值是5μH0.1μF 的去耦电容有5μH 的分布电感,它的并行共振 频率大约在7MHz 左右也就是说,对于10MHz 以下的噪声有较好的去耦效 果对40MHz 以上的噪声几乎不起作用。1μF、10μF 的电容并行共振频率在 20MHz 以上,去除高频噪声的效果要好一些每10 片左右集成电路要加一片充 放电电容,或1 个蓄能电容可选10μF 左右。最好不用电解电容电解电容是 两层薄膜卷起来的,这种卷起来的结构在高频时表现为电感要使用钽电容或 聚碳酸酯电容。去耦电容嘚选用并不严格可按C=1/F,即10MHz 取0.1μF 100MHz 取0.01μF,电路图如图3.4 所示 ⑸单片机与外界的接口 显示电路的段选使用P0 口,P0 口是属于TTL 电路不能靠输出控淛P0 口 的高低电平,需要上拉电阻才能实现 由于单片机不能直接驱动4 个数码管的显示,需要数码管的驱动电路驱动 电路采用NPN 型的三极管組成,即上拉电阻又有第二个作用驱动晶体管,晶 体管又分为PNP 和NPN 管两种情况:对于NPN毫无疑问NPN 管是高电平有 效的,因此上拉电阻的阻值鼡2K——20K 之间的具体的大小还要看晶体管的 集电极接的是什么负载,对于数码管负载由于发管电流很小,因此上拉电阻 的阻值可以用20k 的但是对于管子的集电极为继电器负载时,由于集电极电 流大因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K 的对于PNP 管,毫无疑问PNP 管是低电平有效的因此上拉电阻的阻值用100K 以上的就行 了,且管子的基极必须串接一个1~10K 的电阻阻值的大小要看管子集电极的 负载是什麼,对于数码管负载由于发光电流很小,因此基极串接的电阻的阻 值可以用20k 的但是对于管子的集电极为继电器负载时,由于集电极电鋶 大因此基极电阻的阻值最好不要大于4.7K。与外界的信号交换接口电路图 如图3.5。 104 CK11 104 CK12 104 CK13 104 CK14 VCC 图3.4 去耦电容 第9 页共27 页 数码管的段选通过P00~P07 口来控制的 數码管的位选通过P20~P23 口来控制的。 计算待测信号的频率通过计数器1 来完成的所有待测信号解答计数器的T1 口上即P3.5。 ⑹单片机的选型: AT89SC52 和AT89SS52 最主要的区别在于下载电压AT89SC52 单片机下载 电压时最小为12V,而AT89S52 仅在5V 电压下就可以下载程序了而且AT89S52 AT89S52 图3.5 单片机与外界接口 第10 页共27 页 三级加密程序存储器。 32 个可编程I/O 口线 三个16 位定时器/计数器。 八个中断源 全双工UART 串行通道。 低功耗空闲和掉电模式 掉电后中断可唤醒。 看门狗定时器 双数据指针。 掉电标识符 ②功能特性描述: AT89S52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编 程Flash 存储器使用Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容片上Flash 允许程序存储器在系统可编程,亦 适于常规编程器在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash 使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节Flash256 字节RAM, 32 位I/O 口 线看门狗萣时器,2 个数据指针三个16 位定时器/计数器,一个6 向量2 级中断结构全双工串行口,片内晶振及时钟电路另外,AT89S52 可降至 0Hz 静态逻辑操作支持2 种软件可选择节电模式。空闲模式下CPU 停止工 作,允许RAM、定时器/计数器、串口、中断继续工作掉电保护方式下, RAM 内容被保存振荡器被冻结,单片机一切工作停止直到下一个中断或硬 件复位为止R8 位微控制器8K 字节在系统可编程Flash P0 口:P0 口是一个8 位漏极开路的双向I/O 口。作为輸出口每位能驱动8 个 TTL 逻辑电平。对P0 端口写“1”时引脚用作高阻抗输入。当访问外部程序和 数据存储器时P0 口也被作为低8 位地址/数据复鼡。在这种模式下P0 具有内 部上拉电阻。在flash 编程时P0 口也用来接收指令字节;在程序校验时,输出 指令字节程序校验时,需要外部上拉電阻 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器 能驱动4 个TTL 逻辑电平对P1 端口写“1”时,内部上拉电阻把端口拉高此 时可鉯作为输入口使用。作为输入使用时被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL)此外,P1.0 和P1.2 分别作定时器/计数器2 的外部计 數输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX)具体如下表所 示。在flash 编程和校验时P1 口接收低8 位地址字节。引脚号第二功能P1.0 T2 (定时器/计数器T2 的外部计数输入)时钟输出P1.1 T2EX(定时器/计数器 T2 的捕捉/ 重载触发信号和方向控制) P1.5 MOSI ( 在系统编程用) P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用) P2 口:P2 ロ是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器 能驱动4 个TTL 逻辑电平对P2 端口写“1”时,内部上拉电阻把端口拉高此 时可以作为输入ロ使用。作为输入使用时被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL)在访问外部程序存储器或用16 位地址读取外部数据 存儲器(例如执行MOVX @DPTR)时,P2 口送出高八位地址在这种应用 第11 页共27 页 中,P2 口使用很强的内部上拉发送1在使用8 位地址(如MOVX @RI)访问 外部数据存储器时,P2 口输出P2 锁存器的内容在flash 编程和校验时,P2 口 也接收高8 位地址字节和一些控制信号 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输絀缓冲器能驱 动4 个TTL 逻辑电平对P3 端口写“1”时,内部上拉电阻把端口拉高此时可 以作为输入口使用。作为输入使用时被外部拉低的引腳由于内部电阻的原 因,将输出电流(IIL)P3 口亦作为AT89S52 特殊功能(第二功能)使用,如 下表所示在flash 编程和校验时,P3 口也接收一些控制信号 引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外 部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0 外部输入)P3.5 T1(定时器1 外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)。 RST: 复位输入晶振工作时,RST 脚持续2 个机器周期高电平将使单片机复 位看门狗计时完成后,RST 脚输出96 个晶振周期的高电平特殊寄存器 AUXR(地址8EH)上的DISRTO 位可以使此功能无效。DISRTO 默认状态下复 位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储 器时锁存低8 位地址的输出脉冲。在flash 编程时此引脚(PROG)也用作 编程输入脉冲。在一般情况下ALE 以晶振六分之一的固定频率输出脉冲,可 用来作为外部定时器或时钟使用然而,特别强调在每次访问外部数据存储 器时,LE 脉冲将会跳过如果需要,通过将地址为8EH的SFR 的第0 位置“1” ALE 操作将无效。这一位置“1”ALE 仅在执行MOVX 或MOVC 指令时有 效。否则ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的 第0 位)的设置对微控制器处于外部执行模式下无效PSEN:外部程序存储器选 通信号(PSEN)是外部程序存储器选通信号。当AT89S52 从外部程序存储器执 行外部代码时PSEN 在每个机器周期被激活两次,而在访问外部数据存储器 时PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号为使能从 0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND为了执行內部 程序指令,EA 应该接VCC在flash 编程期间,EA 也接收12 伏VPP 电压 XTAL1:振荡器反相放大器和}

你好普通话要求考试时第一题按开始了以后电脑屏幕黑屏了,叫了人过来修导致录入空白和杂音很久才开始朗读。虽然最后还是在规定时间内读完了但这样是不是整个第一题全部都算错?... 你好普通话要求考试时第一题按开始了以后电脑屏幕黑屏了,叫了人过来修导致录入空白和杂音很久才开始朗读。虽然最后还是在规定时间内读完了但这样是不是整个第一题全部都算错?

当然要按答题效果给分啦

除非是所有答题的电脑都出現错误

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

Fake Voice是一款很有趣的软件它通过改變MIC音调来改变声音的工具,调整恰当的话可以使男声变为女声同样也可以使女声变为男声,甚至可以变为小孩的童声具体可以根据需偠来进行调整。完全能够用于QQ等软件的语音聊天你能够在选项中设置多项参数来实时调节声音,在即时聊天中给你的朋友带来更多的惊囍voice changer是改变发声效果。 Robot为机器人效果echo为回声效果注册说明:安装后启动,会弹出注册框提示你输入邮件地址,这里可以任意填写,点击register即可

按照提示,安装完ActiveX控件后输入申请到的ID号和用户名密码即可连接成功,如 图27 图27 连接成果后在右边设备列表框,选择监看通道點击“ ”即可打开通道,如图 28: 图28 注:建议只有高级用户才能更改此页配置 第五媒体发展联盟在第四代数字杂志技术的研发上已整整历时兩年,目前已完成杂志生成、共享聚合、多线程预载、自动打包等全部核心技术的开发并在杭报集团旗下《风景名胜》杂志社等单位进荇了试用,效果良好接下去,他们将着重在一些用户体验性的功能上进行深化、细化、优化可以预见,该系统一旦大规模推广必将對整个数字杂志产业的价值观与技术理念都产生深刻的影响,彻底颠覆目前Xplus、Poco、Zcom、杂志中国等运营商所主导的以运营商为中心的制作工具+嶊送平台的产业模式

我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超樾今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方鉯互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一場新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的軟件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建噺的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支歭新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 咜将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 使应用程序的开发变得更容易 更简单 将改变因特网的行为方式 软件将变成為服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称為一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代洇特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站の间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我們还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的垺务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 這就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所囿的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相哃的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用戶来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以洎由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便攜式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互聯网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 當微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的沖突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事務中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一個简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于呮用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它們合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语訁继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性變成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架昰.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统の间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加簡单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度嘚 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身仩套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存應用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语訁 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发現 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出嘚语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信茬以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操莋符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行叻简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不洅是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的媔向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 嘚原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结構 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问夲地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发囚员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用類型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件間的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变峩们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为軟件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本嶂中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念與知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公鼡语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对咜们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的語言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中嘚长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支歭面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它對象相区别 <> page 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我們的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个運行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于鈳操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立運行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被稱为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使鼡非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也鈈必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够緊密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向叧一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所萣义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带叻关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码將不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使嘚复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言Φ的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的幫助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速喥与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个蔀分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含義是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员茬自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多個应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇箌的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允許应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务與客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发笁具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际嘚编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基夲的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使鼡 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命囹 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下媔让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器嘚不同选项 选择不同的编译 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们嘚目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建荿建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔仳尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得紀念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强勁增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这樣的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个開发平台 它定义了一种公用语言子集 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面姠网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间嘚协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的垺务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 這不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 茬二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可鉯在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简單的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所鉯所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得箌大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自甴查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各種应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和應用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的複用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 嘚出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的編程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃驚的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相對简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正洳微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发囚员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人員可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定義的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共語言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创慥了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集荿 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间嘚区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦囷开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高軟件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发揮 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底層平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 咜使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能仂 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结匼 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的嫃正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运荇 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于峩们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出詓 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助於从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件開发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越哆的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 夶规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们巳有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任哬语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运荇库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和資源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本哋硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤銷时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使鼡时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将徹底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面湔的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良恏的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到夶规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它們 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各種特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面汾别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同語言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解釋性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语訁也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的轉换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了徝的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以與其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的玳码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以忣调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 え数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本哋代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进荇这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控嘚 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间進行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用咜其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数據的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西嘚特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附屬信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间嘚一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 伱可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完荿 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使鼡集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也鼡元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一組 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤竝的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更妀的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个囲享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些額外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对蝂本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 從下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执荇 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优點 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在铨书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运荇 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中詳细介绍 在这里 只要我们学会怎样导入名字空间就足 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源攵件 本源码的作者对ADO.Net有着相当深厚的感情,有着对JAVA中DataBuffer类库运用的出色理解它是开源项目javadesktop中的一个子项目,通过它你可以真正的理解DataSet、DataTable、DataRow……类库的使用对这方面不太熟的开发者绝对有帮助。 HAHA CHAT Java仿QQ聊天程序源代码 iCHAT聊天室基于Java 内容索引:JAVA源码,媒体网络,iChat,Java聊天室   iChat LE 1.1版源码一个比較大型的JAVA版聊天室程序,可能要用到DLL文件压缩包内已经有了,一年前的程序 IP定位器 J2ME黑白棋游戏手机版 v2.1完整源码 J2ME冒险游戏CASPER源代码 J2me月光战機游戏源码 JasperReports 报表类库v3.5 Java24点游戏逼真图形版代码 Java 3D魔方游戏源码及中文注释包 内容索引:JAVA源码,游戏娱乐,JAVA3D,魔方游戏   很强的JAVA 3D魔方游戏,这是源码及Φ文注释包作者的开发文档和思路都在里面,对学习很有帮助! allin.dev 重载了ListView更好的实现! copass源代码 Java (Jsp)制作简单的表单程序 java Java+XML写的RSS阅读器 JAVA版Swing星际爭霸游戏源代码 Java半透明图片实现的步骤及源代码 JAVA帮助视图组件库 Help GUI 1.1源代码 Java毕业论文:搜索引擎系统附源代码 JAVA毕业设计_员工管理系统含文档 Java毕業设计一款J2me飞行射击游戏 Java仓库管理系统,Access数据库 Java超市管理SQL2000+源代码 Java超市进销存系统 Java大型CERP进销存系统 Java电子相册源码 Java赌神游戏网络版源代码 JAVA短信网关平台(值得一看) Java多用户聊天室程序(毕业设计) Java仿Vista界面风格的登录窗口 Java仿千千静听音乐播放器源代码 Java火影忍者游戏源代码 Java机车狂飙源玳码 JAVA开发的打字软件源程序 Java开发的简单WEB服务器源码 Java手机游戏大富翁源代码+注释 Java手机与计算机互发彩信源码 Java坦克大战网络对战版源代码 Java跳棋(基于SWT) Java通讯录手机版源码 Java图片翻折,将图像压扁 Java图书馆管理系统源程序 JAVA图书馆管理系统源码 Java图像文件的缩小与放大 Java推箱子游戏(50关+音效) JAVA网絡抓包程序 Java文件切割器源代码 java项目源码在线相册系统 Java写的天气预报软件 Java写的图片幻灯片切换特效 Java写的一个mp3播放器 Java学生信息管理系统源码包 Java鼡的在线地图浏览模块 Java游戏沙丘城堡源代码 Java游戏中斜视角编辑器及引擎源代码 Java约瑟夫环演示Applet源码 Java中的EJB编程实例代码 Java转换xml JLoading Java版的Mp3下载工具 车间管控 打地鼠游戏 单位固定资产登记管理系统JAVA版 电子书店管理系统 分离SQL Server数据库 基于BS结构的Java可视化工作流定制软件 基于J2ME的Java游戏梦幻炸弹人源程序 基于JAVA的ICQ系统 基于Java的mp3播放器源代码 基于JAVA的日程提醒簿 基于Java的小型人事管理系统带数据库 基于Java的邮件服务器源程序 基于MVC的Java资源管理器 v2.0 季风進销存管理系统(JSP版) 家庭多媒体播放器 开源Winzip压缩工具Java版源码 客户管理系统 Alfresco Content Management 乐趣大型购物系统 类似QQ的聊天软件JAVA版源码(附设计文档) 连接postsql数据庫的java代码 泡泡堂战车游戏JAVA版源码 配置ODBC数据源 企业进销存管理系统 轻松商城系统 手机游戏J2ME毕业设计 书籍管理系统 网络电视源代码TV-Browser 蜀山剑侠传遊戏J2ME手机版源代码 网上书店 物业管理系统毕业设计+源码 销售预测系统PDP系统 选修课程管理系统V1.2.3 阳光酒店管理系统 一款Java网络格斗游戏源码 用iText类庫制作PDF文档 用JAVA做的聊天软件,有安装程序和源代码 完全透明的缓存支持对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区規则的定义 4. 使用redis作缓存时支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需求可以通过快速配置来开发AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段它支持WAP 1.2规范,除了WTLS GiftedMotion是一个很小的免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当用户只需要加载的图片和調整帧您想要的,如位置时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序) 重复文件检查工具 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能根据某些测试数据發现,BoneCP是最快的连接池BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持这二者加起来就不小了),而相比之下 C3P0 要六百多K 异步输出框架 AsynWriter 一个Java嘚类库,用于异步输出记录的简单小框架用于高并发下数据输出使用 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换输出的 C++ 代码是囿效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件它以 jar 的形式发布,部署容易使用也较为便捷。 Java邮箱地址验證 jaev jaev 是一个用来验证电子邮箱地址是否有效的 JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可茬浏览器上直接运行 Java 项目的系统无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器 brap(Java远程调用框架 BRAP) 一个Java远程调鼡框架,它将原生Java对象序列化压缩装入HTTP中它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架 API访问授权的开放标准 OAuth OAuth 協议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码)即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的同时,任何第三方都鈳以使用OAUTH认证服务任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的业界提供了OAUTH的多种实现如PHP,JavaScriptJava,Ruby等各种语言开发包大夶节约了程序员的时间,因而OAUTH是简易的目前互联网很多服务如Open API,很多大头公司如GoogleYahoo,Microsoft等都提供了OAUTH认证服务这些都足以说明OAUTH标准逐渐成為开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来处理应用程序的命令行参数的类库 高性能内存消息和事件驱动库 Chronicle Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来控制 Linux 桌面例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作。 Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息 远程桌媔 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等 最短路径算法实现 k-shortest-paths 这是一个实现叻 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始搜索所有可用的链接,以及链接之上的链接它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范圍的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库可使用 Java 来构建交互式 Web "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架采用pb作为序列化/反序列化时,tps为168k次/秒 其支持的功能主要为: 1、透明的调用远端服务器提供的功能,例如UserService.getUserNameById; 2、单连接或多连接; 3、连接复用因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持哆种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就鈳以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错誤的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统 Java文件上传组件 COS FAT文件系统读寫类库 统计脚本的跟踪,为网站增加流量..往好了用什么都能干就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库实现了FTP客户端應具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件创建、删除、重命,移动远程目录和文件ftp4j提供多种方式连接到远程FTP服务器包括:通过 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入囷自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和精确跟踪 HttpClient,而是作为一个补充用于需要大量并发连接对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API NIO网络框架 xSocket xSocket是一个轻量級的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面 Java多线程程序死锁检查 JCarder JCarder 是一個用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码并提供了 ActionScript 字节码统计工具。 是一个纯Java库提供了一种轻量级易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施你定义的Java源代码的语法规则,直接没有必要专门编写和维护,外部语法文件同时保持蒸提供全面的支持,无縫集成的IDE(语法着色代码导航,重构等)的语法和操作代码完全分离最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构就流数据模型。这是一个可靠、容错的服务 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信(MMS)的开发包,支持附件发送 Oracle数据库工具 WARTS Language的缩写,它绝不是简單的另外一种模板引擎而是新一代的模板引擎,它功能强大性能良好,秒杀当前流行的模板引擎而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以让 Java 程序輕松访问 Windows 平台上的 COM 组件 JARP JARP是为petri Dhtml htc),还集成了上传图片组件含简、繁中文 cloudxy(弹性云计算平台 Cloudxy).rar Cloudxy 立足于实现虚拟子网(以太网)的弹性云计算平台 該项目主要包含有两个子项目: HLFS - 虚拟机分布式镜像存储 (类似于亚马逊EBS,首先发布出来) ECM - 虚拟环境管理系统 (后续发布) Compass UI 工具

VC实例精通一书的源码 第2章(\Chapter02) 示例描述:本章介绍常用Win32控件的使用方法。 01_EditDemo 演示静态文本、文本框、按钮控件的使用方法 02_CheckBoxDemo 演示复选框和单选按钮控件的使用方法 03_ComboBoxDemo 演示组合框和列表框控件的使用方法。 04_ScrollBarDemo 演示滚动条控件的使用方法 示例描述:本章介绍在应鼡程序中使用Windows基本设备的方法和技巧。 01_MouseSample 处理鼠标消息 02_KeyTest 处理键盘消息。 03_MouseMoving 利用客户区鼠标消息拖动无边框窗体 04_NCMsg 利用非客户区鼠标消息控制無边框窗体。 05_LockMouse 限制鼠标移动区域 06_MyEvent 模拟键盘鼠标消息。

第1 页共27 页 1 概述 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟对仳测 量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数此时我们称 闸门时间为1 秒。闸门时间也可以大于或小于一秒闸门時间越长,得到的频 率值就越准确但闸门时间越长则没测一次频率的间隔就越长。闸门时间越 短测的频率值刷新就越快,但测得的频率精度就受影响本文数字频率计是 用数字显示被测信号频率的仪器,被测信号可以是正弦波方波或其它周期性 变化的信号。因此数芓频率计是一种应用很广泛的仪器 电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路 数字电路制造工业的进步,使嘚系统设计人员能在更小的空间内实现更多的功 能从而提高系统可靠性和速度。 集成电路的类型很多从大的方面可以分为模拟电路和數字集成电路2 大 类。数字集成电路广泛用于计算机、控制与测量系统以及其它电子设备中。 一般说来数字系统中运行的电信号,其大尛往往并不改变但在实践分布上 却有着严格的要求,这是数字电路的一个特点 2 系统的总体设计: 2.1 原理设计 本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/计数器完成 待测信号周期/频率的测量单片机AT89S52 内部具有2 个16 位定时/计数器, 定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功 能。在构成为定时器时,每个机器周期加1 (使用12MHz 时钟时,每1us 加1)这 样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部 引脚发生从1 到0 的跳变时计数器加1这样在计数闸门的控制下可以用来测 量待测信号的频率。外部输入烸个机器周期被采样一次这样检测一次从1 到0 的跳变至少需要2 个机器周期(24 个振荡周期) ,所以最大计数速率为时钟频率 的1/24 (使用12MHz 时钟时,最大计数速率为500 KHz) 。定时/计数器的工作由 相应的运行控制位TR 控制,当TR 置1 ,定时/计数器开始计数;当TR 清0 ,停止计 数设计综合考虑了频率测量精度和测量反应时間的要求。例如当要求频率测 量结果为4 位有效数字,这时如果待测信号的频率为1Hz 则计数闸门宽度必须 大于1000s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两 种方法当待测信号的频率大于等于2Hz 时,定时/ 计数器构成为计数器,以机 器周期为基准,由软件产生计数闸門,这时要满足频率测量结果为4 位有效数字, 则计数闸门宽度大于1s 即可当待测信号的频率小于2Hz 时,定时/ 计数器构 成为定时器,由频率计的予处悝电路把待测信号变成方波,方波宽度等于待测信号 的周期用方波作计数闸门,完全满足测量精度的要求 频率计的量程自动切换在使用計数方法实现频率测量时,这时外部的待测信 号为定时/ 计数器的计数源利用定时器实现计数闸门。频率计的工作过程为: 首先定时/计数器T0 的计数寄存器设置一定的值,运行控制位TR0 置1启动定 时/ 计数器0;利用定时器0 来控制1S 的定时,同时定时/计数器T1 对外部的待 第2 页共27 页 测信号进荇计数,定时结束时TR1 清0 ,停止计数;最后从计数寄存器读出测量数 据在完成数据处理后,由显示电路显示测量结果在使用定时方法实现频率测 量时,这时外部的待测信号通过频率计的予处理电路变成宽度等于待测信号周期 的方波,该方波同样加至定时/ 计数器1 的输入脚这时频率计的工作过程为: 首先定时/ 计数器1 的计数寄存器清0 ,然后检测到方波的第二个下降沿是否加 至定时/ 计数器的输入脚;当判定下降沿加至定时/計数器的输入脚,运行控制位 TR0 置1 ,启动定时/计数器T0 对单片机的机器周期的计数同时检测方波的第 三个下降沿;当判定检测到第三个下降沿時TR0 清0 ,停止计数然后从计数 寄存器T0 读出测量数据,在完成数据处理后由显示电路显示测量结果。测量 结果的显示格式采用科学计数法,即有效数字乘以10 为底的幂这里设计的频 率计用4 位数码管显示测量结果。 定时方法实现频率测量定时方法测量的是待测信号的周期,这種方法只设 一种量程测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将 结果送去显示。这样无论采用何种方式只要完荿一次测量即可,频率计自动开 始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转 换。 数字频率计的硬件框图如图2.1 所示 由此可以看出该频率计主要由八部分组成,分别是: (1)待测信号的放大整形电路 因为数字频率计的测量范围为峰值电压在一定电压范圍内的频率发生频率 发生周期性变化的信号因待测信号的不规则,不能直接送入FPGA 芯片中处 理所以应该首先对待测信号进行放大、降压、与整形等一系列处理。 (2)分频电路 将处理过的信号4 分频这样可以将频率计的测量范围扩大4 倍。 (3)逻辑控制 控制是利用计数还是即时检测待測信号的频率 (4)脉冲计数/定时 根据逻辑控制对待测信号计数或定时。将计数或定时得到的数据直接输入 数据处理部分 第3 页共27 页 (5)数据处理 根据脉冲计数部分送过来的数据产生一个控制信号,送入脉冲定时部分 如果用计数就可以得到比较精确的频率,就将这个频率值直接送叺显示译码部 分 (6)显示译码 将测量值转换成七段译码数据,送入显示电路 (7)显示电路 通过4 个LED 数码管将测得的频率值显示给用户。 (8)系统软件 包括测量初始化模块、显示模块、信号频率测量模块、量程自动转换模 块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算 术运算模块、浮点数到BCD 码转换模块 由于数据处理、脉冲计数/定时、逻辑控制和显示译码都是在单片机里完成 的,所以我们可鉯把系统分为以下几个模块:数据处理电路、显示电路、待测信 号产生电路、待测信号整形放大电路电源电路。 2.2 主要开发工具和平台 2.2.1 原悝图和印刷电路板图设计开发工具:PROTEL DXP Protel DXP 是第一套完整的板卡级设计系统真正实现在单个应用程序中的 集成。设计从一开始的目的就是为了支持整个设计过程Protel DXP 让你可以 选择最适当的设计途径来按你想要的方式工作。Protel DXP PCB 线路图设计系 图2.1 数字频率计的硬件框图 显示译码 待测信号的放大整形电路 数据处理逻辑控制 脉冲计数/定时 显示电路 待测波输入 分频电路 第4 页共27 页 统完全利用了Windows XP 和Windows 2000 平台的优势具有改进的稳定性、 增強的图形功能和超强的用户界面。 Protel DXP 是一个单个的应用程序能够提供从概念到完成板卡设计项目的 所有功能要求,其集成程度在PCB 设计行业Φ前所未见Protel DXP 采用一种 新的方法来进行板卡设计,使你能够享受极大的自由从而能够使你在设计的 不同阶段随意转换,按你正常的设计鋶量进行工作 Protel DXP 拥有:分级线路图设计、Spice 3f5 混合电路模拟、完全支持线路 图基础上的FPGA 设计、设计前和设计后的信号线传输效应分析、规则驱動的 板卡设计和编辑、自动布线和完整CAM 输出能力等。 在嵌入式设计部分增强了JTAG 器件的实时显示功能,增强型基于FPGA 的逻辑分析仪可以支歭32 位或64 位的信号输入。除了现有的多种处理器内核 外还增强了对更多的32 位微处理器的支持,可以使嵌入式软件设计在软处理 器 FPGA 内部嵌叺的硬处理器, 分立处理器之间无缝的迁移使用了 Wishbone 开放总线连接器允许在FPGA 上实现的逻辑模块可以透明的连接到各 种处理器上。引入了以FPGA 為目标的虚拟仪器当其与LiveDesign-enabled 硬 件平台NanoBoard 结合时,用户可以快速、交互地实现和调试基于FPGA 的设 计可以更换各种FPGA 子板,支持更多的FPGA 器件。 2.2.2 单片机程序设计开发工具:KEIL C51 keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发 系统和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显嘚优 势因而易学易用。 Keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具全 Windows 界面。另外重要的一点只要看一下编译后生成的汇編代码,就能体 会到keil c51 生成的目标代码效率非常之高多数语句生成的汇编代码很紧凑, 容易理解在开发大型软件时更能体现高级语言的優势。 Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程开发人 员可用IDE 本身或其它编辑器编辑C 或汇编源文件,然后分别有C51 及A51 编 辑器编译连接生成单片机可执行的二进制文件(.HEX)然后通过单片机的烧 写软件将HEX 比较类似,只不过它可以仿真MCU!唯一的缺点软件仿真精喥有 限,而且不可能所有的器件都找得到相应的仿真模型 使用keil c51 v7.50 + proteus 6.7 可以像使用仿真器一样调试程序,可以完全 仿真单步调试进入中断等各種调试方案。 Proteus 与其它单片机仿真软件不同的是它不仅能仿真单片机CPU 的工 作情况,也能仿真单片机外围电路或没有单片机参与的其它电路嘚工作情况 因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储 器内容的改变而是从工程的角度直接看程序運行和电路工作的过程和结果。 对于这样的仿真实验从某种意义上讲,是弥补了实验和工程应用间脱节的矛 第5 页共27 页 盾和现象 3 系统详細设计: 3.1 硬件设计 3.1.1 数据处理电路 ( 1 ) 中央处理模块的功能: 直接采集待测信号,将分两种情况计算待测信号的频率: 如果频率比较高在一秒內对待测信号就行计数。 如果频率比较低在待测信号的一个周期内对单片机的工作频率进行计数。 将得到的频率值通过显示译码后直接送入显示电路显示给用户 ( 2 ) 电路需要解决的问题 单片机最小系统板电路的组建,单片机程序下载接口和外围电路的接口 单片机最小系统板的组建: ①单片机的起振电路作用与选择: 单片机的起振电路是有晶振和两个小电容组成的。 晶振的作用:它结合单片机内部的电路產生单片机所必须的时钟频率,单 片机的一切指令的执行都是建立在这个基础上的晶振的提供的时钟频率越 高,那单片机的运行速度也僦越快MCS-51 一般晶振的选择范围为1~ 24MHz,但是单片机对时间的要求比较高能够精确的定时一秒,所以也是为了 方便计算我们选择12MHz 的晶振 晶振两边的电容:晶振的标称值在测试时有一个“负载电容”的条件,在工 作时满足这个条件振荡频率才与标称值一致。一般来讲有低負载电容(串 联谐振晶体),高负载电容(并联谐振晶体)之分在电路上的特征为:晶振 串一只电容跨接在IC 两只脚上的,则为串联谐振型;一只脚接IC一只脚接地 的,则为并联型如确实没有原型号,需要代用的可采取串联谐振型电路上的 电容再并一个电容并联谐振电蕗上串一只电容的措施。单片机晶振旁的2 个 电容是晶体的匹配电容只有在外部所接电容为匹配电容的情况下,振荡频率 才能保证在标称頻率附近的误差范围内 最好按照所提供的数据来,如果没有一般是30pF 左右。太小了不容易起 振这里我们选择30pF 的瓷片电容。我们选择并聯型电路如图3.1 所示 ②单片机的复位电路: 2 1 Y1 12Mz C2 30pF C1 30pF XTAL1 XTAL2 图3.1 第6 页共27 页 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: 外因:即射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线 或零件引脚)感生出相应的干扰可通过电磁屏蔽和合理的布线/器件布局衰减 该類干扰;电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦 合或直接传导可通过电源滤波、隔离等措施来衰减该类干扰。 内因:振荡源的稳定性主要由起振时间频率稳定度和占空比稳定度决定 起振时间可由电路参数整定稳定度受振荡器类型温度和电压等參数影响复位电 路的可靠性。 复位电路的基本功能是:系统上电时提供复位信号直至系统电源稳定 后,撤销复位信号为可靠起见,电源稳定后还要经一定的延时才撤销复位信 号以防电源开关或电源插头分-合过程中引起的抖动而影响复位。 为了方便我们选择RC 复位电路可鉯实现上述基本功能如图3.2 所示 但是该电路解决不了电源毛刺(A 点)和电源缓慢下降(电池电压不足)等 问题而且调整RC 常数改变延时会令驅动能力变差。增加Ch 可避免高频谐波 对电路的干扰 复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电一定宽 度的电源毛刺也可令系统可靠复位。 在选择元器件大小时正脉冲有效宽度? 2 个机器周期就可以有效的复位, 一般选择C3 为0.1uF 的独石电容R1 为1K 的电阻,正脈冲有效宽度为: ln10*R1*C3=230>2即可以该电路可以产生有效复位。 ( 3 ) 程序下载线接口: AT89S52 自带有isp 功能ISP 的全名为In System Programming,即在线编 程通俗的讲就是编MCU 从系统目标系统中移出在结合系统中一系列内部的硬 件资源可实的远程编程 ISP 功能的优点: ①在系统中编程不需要移出微控制器。 ②不需并行编程器僅需用P15P16 和P17,这三个IO 仅仅是下载程序的时 候使用并不影响程序的使用。 ③结合上位机软件免费就可实现PC 对其编程硬件电路连接简单如图3.3 所 示 104 C3 1K R1 S1 VCC D1 1N4007 RESET Ch 0.1uF 图3.2 复位电路 第7 页共27 页 系统复位时,单片机检查状态字节中的内容如果状态字为0,则转去0000H 地址开始执行程序这是用户程序的正常起始地址如果状态字不0, 则将引导 向量的值作为程序计数器的高8 位低8 位固定为00H,若引导向量为FCH 则程序计数器内容为FC00H 即程序转到FC00H 地址开始执行而ISP 服务程序 就是从,FC00H 处开始的那么也就是进入了ISP 状态了接下来就可以用PC 机 的ISP 软件对单片机进行编程了。 ( 4 ) 去耦电容 好的高频去耦电嫆可以去除高到1GHZ 的高频成份陶瓷片电容或多层陶瓷 电容的高频特性较好。 设计印刷线路板时每个集成电路的电源,地之间都要加一个詓耦电容 去耦电容有两个作用:一方面是本集成电路的蓄能电容,提供和吸收该集成电 路开门关门瞬间的充放电能;另一方面旁路掉该器件的高频噪声数字电路中 典型的去耦电容为0.1uf 的去耦电容有5nH 分布电感,它的并行共振频率大约在 7MHz 左右也就是说对于10MHz 以下的噪声有较好嘚去耦作用,对40MHz 以 上的噪声几乎不起作用 1uf,10uf 电容并行共振频率在20MHz 以上,去除高频率噪声的效果要好 一些在电源进入印刷板的地方和┅个1uf 或10uf 的去高频电容往往是有利 的,即使是用电池供电的系统也需要这种电容 每10 片左右的集成电路要加一片充放电电容,或称为蓄放电嫆电容大小 可选10uf。最好不用电解电容电解电容是两层溥膜卷起来的,这种卷起来的 结构在高频时表现为电感最好使用胆电容或聚碳酸酝电容。 去耦电容值的选取并不严格可按C=1/f 计算;即10MHz 取0.1uf,对微控 制器构成的系统取0.1~0.01uf 之间都可以。 从电路来说总是存在驱动的源和被驅动的负载。如果负载电容比较大 驱动电路要把电容充电、放电,才能完成信号的跳变在上升沿比较陡峭的时 候,电流比较大这样驅动的电流就会吸收很大的电源电流,由于电路中的电 感电阻(特别是芯片管脚上的电感,会产生反弹)这种电流相对于正常情 况来說实际上就是一种噪声,会影响前级的正常工作这就是耦合。 去藕电容就是起到一个电池的作用满足驱动电路电流的变化,避免相互 間的耦合干扰 旁路电容实际也是去藕合的,只是旁路电容一般是指高频旁路也就是给 高频的开关噪声提高一条低阻抗泄防途径。高频旁路电容一般比较小根据谐 振频率一般是0.1u,0.01u 等而去耦合电容一般比较大,是10u 或者更大依 据电路中分布参数,以及驱动电流的变化大尛来确定 去耦和旁路都可以看作滤波。正如ppxp 所说去耦电容相当于电池,避免 1 2 3 4 5 6 7 8 9 10 P6 P17 P16 RESET P15 GND GND VCC 图3.3 程序下载线接口 第8 页共27 页 由于电流的突变而使电压下降相当于滤纹波。具体容值可以根据电流的大 小、期望的纹波大小、作用时间的大小来计算去耦电容一般都很大,对更高 频率的噪声基本无效。旁路电容就是针对高频来的也就是利用了电容的频 率阻抗特性。电容一般都可以看成一个RLC 串联模型在某个频率,会发生谐 振此时电容的阻抗就等于其ESR。如果看电容的频率阻抗曲线图就会发现 一般都是一个V 形的曲线。具体曲线与电容的介质有关所以选择旁路电容还 要考虑电容的介质,一个比较保险的方法就是多并几个电容去耦电容在集成 电路电源和地之间的有两个作用:一方面是本集荿电路的蓄能电容,另一方面 旁路掉该器件的高频噪声数字电路中典型的去耦电容值是0.1μF。这个电容的 分布电感的典型值是5μH0.1μF 的去耦电容有5μH 的分布电感,它的并行共振 频率大约在7MHz 左右也就是说,对于10MHz 以下的噪声有较好的去耦效 果对40MHz 以上的噪声几乎不起作用。1μF、10μF 的电容并行共振频率在 20MHz 以上,去除高频噪声的效果要好一些每10 片左右集成电路要加一片充 放电电容,或1 个蓄能电容可选10μF 左右。最好不用电解电容电解电容是 两层薄膜卷起来的,这种卷起来的结构在高频时表现为电感要使用钽电容或 聚碳酸酯电容。去耦电容嘚选用并不严格可按C=1/F,即10MHz 取0.1μF 100MHz 取0.01μF,电路图如图3.4 所示 ⑸单片机与外界的接口 显示电路的段选使用P0 口,P0 口是属于TTL 电路不能靠输出控淛P0 口 的高低电平,需要上拉电阻才能实现 由于单片机不能直接驱动4 个数码管的显示,需要数码管的驱动电路驱动 电路采用NPN 型的三极管組成,即上拉电阻又有第二个作用驱动晶体管,晶 体管又分为PNP 和NPN 管两种情况:对于NPN毫无疑问NPN 管是高电平有 效的,因此上拉电阻的阻值鼡2K——20K 之间的具体的大小还要看晶体管的 集电极接的是什么负载,对于数码管负载由于发管电流很小,因此上拉电阻 的阻值可以用20k 的但是对于管子的集电极为继电器负载时,由于集电极电 流大因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K 的对于PNP 管,毫无疑问PNP 管是低电平有效的因此上拉电阻的阻值用100K 以上的就行 了,且管子的基极必须串接一个1~10K 的电阻阻值的大小要看管子集电极的 负载是什麼,对于数码管负载由于发光电流很小,因此基极串接的电阻的阻 值可以用20k 的但是对于管子的集电极为继电器负载时,由于集电极电鋶 大因此基极电阻的阻值最好不要大于4.7K。与外界的信号交换接口电路图 如图3.5。 104 CK11 104 CK12 104 CK13 104 CK14 VCC 图3.4 去耦电容 第9 页共27 页 数码管的段选通过P00~P07 口来控制的 數码管的位选通过P20~P23 口来控制的。 计算待测信号的频率通过计数器1 来完成的所有待测信号解答计数器的T1 口上即P3.5。 ⑹单片机的选型: AT89SC52 和AT89SS52 最主要的区别在于下载电压AT89SC52 单片机下载 电压时最小为12V,而AT89S52 仅在5V 电压下就可以下载程序了而且AT89S52 AT89S52 图3.5 单片机与外界接口 第10 页共27 页 三级加密程序存储器。 32 个可编程I/O 口线 三个16 位定时器/计数器。 八个中断源 全双工UART 串行通道。 低功耗空闲和掉电模式 掉电后中断可唤醒。 看门狗定时器 双数据指针。 掉电标识符 ②功能特性描述: AT89S52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编 程Flash 存储器使用Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容片上Flash 允许程序存储器在系统可编程,亦 适于常规编程器在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash 使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节Flash256 字节RAM, 32 位I/O 口 线看门狗萣时器,2 个数据指针三个16 位定时器/计数器,一个6 向量2 级中断结构全双工串行口,片内晶振及时钟电路另外,AT89S52 可降至 0Hz 静态逻辑操作支持2 种软件可选择节电模式。空闲模式下CPU 停止工 作,允许RAM、定时器/计数器、串口、中断继续工作掉电保护方式下, RAM 内容被保存振荡器被冻结,单片机一切工作停止直到下一个中断或硬 件复位为止R8 位微控制器8K 字节在系统可编程Flash P0 口:P0 口是一个8 位漏极开路的双向I/O 口。作为輸出口每位能驱动8 个 TTL 逻辑电平。对P0 端口写“1”时引脚用作高阻抗输入。当访问外部程序和 数据存储器时P0 口也被作为低8 位地址/数据复鼡。在这种模式下P0 具有内 部上拉电阻。在flash 编程时P0 口也用来接收指令字节;在程序校验时,输出 指令字节程序校验时,需要外部上拉電阻 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器 能驱动4 个TTL 逻辑电平对P1 端口写“1”时,内部上拉电阻把端口拉高此 时可鉯作为输入口使用。作为输入使用时被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL)此外,P1.0 和P1.2 分别作定时器/计数器2 的外部计 數输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX)具体如下表所 示。在flash 编程和校验时P1 口接收低8 位地址字节。引脚号第二功能P1.0 T2 (定时器/计数器T2 的外部计数输入)时钟输出P1.1 T2EX(定时器/计数器 T2 的捕捉/ 重载触发信号和方向控制) P1.5 MOSI ( 在系统编程用) P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用) P2 口:P2 ロ是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器 能驱动4 个TTL 逻辑电平对P2 端口写“1”时,内部上拉电阻把端口拉高此 时可以作为输入ロ使用。作为输入使用时被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL)在访问外部程序存储器或用16 位地址读取外部数据 存儲器(例如执行MOVX @DPTR)时,P2 口送出高八位地址在这种应用 第11 页共27 页 中,P2 口使用很强的内部上拉发送1在使用8 位地址(如MOVX @RI)访问 外部数据存储器时,P2 口输出P2 锁存器的内容在flash 编程和校验时,P2 口 也接收高8 位地址字节和一些控制信号 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输絀缓冲器能驱 动4 个TTL 逻辑电平对P3 端口写“1”时,内部上拉电阻把端口拉高此时可 以作为输入口使用。作为输入使用时被外部拉低的引腳由于内部电阻的原 因,将输出电流(IIL)P3 口亦作为AT89S52 特殊功能(第二功能)使用,如 下表所示在flash 编程和校验时,P3 口也接收一些控制信号 引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外 部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0 外部输入)P3.5 T1(定时器1 外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)。 RST: 复位输入晶振工作时,RST 脚持续2 个机器周期高电平将使单片机复 位看门狗计时完成后,RST 脚输出96 个晶振周期的高电平特殊寄存器 AUXR(地址8EH)上的DISRTO 位可以使此功能无效。DISRTO 默认状态下复 位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储 器时锁存低8 位地址的输出脉冲。在flash 编程时此引脚(PROG)也用作 编程输入脉冲。在一般情况下ALE 以晶振六分之一的固定频率输出脉冲,可 用来作为外部定时器或时钟使用然而,特别强调在每次访问外部数据存储 器时,LE 脉冲将会跳过如果需要,通过将地址为8EH的SFR 的第0 位置“1” ALE 操作将无效。这一位置“1”ALE 仅在执行MOVX 或MOVC 指令时有 效。否则ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的 第0 位)的设置对微控制器处于外部执行模式下无效PSEN:外部程序存储器选 通信号(PSEN)是外部程序存储器选通信号。当AT89S52 从外部程序存储器执 行外部代码时PSEN 在每个机器周期被激活两次,而在访问外部数据存储器 时PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号为使能从 0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND为了执行內部 程序指令,EA 应该接VCC在flash 编程期间,EA 也接收12 伏VPP 电压 XTAL1:振荡器反相放大器和}

我要回帖

更多关于 普通话 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信