<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>托斯卡纳 &#187; Download</title>
	<atom:link href="http://www.tuscany.hk/tag/download/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tuscany.hk</link>
	<description>文艺复兴的最初摇篮，意大利的静谧空间...</description>
	<lastBuildDate>Sun, 22 Aug 2010 12:54:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>调研报告：基于windows的串口通信软件设计</title>
		<link>http://www.tuscany.hk/2007/06/%e8%b0%83%e7%a0%94%e6%8a%a5%e5%91%8a%ef%bc%9a%e5%9f%ba%e4%ba%8ewindows%e7%9a%84%e4%b8%b2%e5%8f%a3%e9%80%9a%e4%bf%a1%e8%bd%af%e4%bb%b6%e8%ae%be%e8%ae%a1.html</link>
		<comments>http://www.tuscany.hk/2007/06/%e8%b0%83%e7%a0%94%e6%8a%a5%e5%91%8a%ef%bc%9a%e5%9f%ba%e4%ba%8ewindows%e7%9a%84%e4%b8%b2%e5%8f%a3%e9%80%9a%e4%bf%a1%e8%bd%af%e4%bb%b6%e8%ae%be%e8%ae%a1.html#comments</comments>
		<pubDate>Fri, 15 Jun 2007 00:27:35 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[改变]]></category>
		<category><![CDATA[电信]]></category>
		<category><![CDATA[电子技术]]></category>
		<category><![CDATA[通信]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/archives/205</guid>
		<description><![CDATA[调研报告：基于windows的串口通信软件设计 中南大学本科生毕业论文（设计）调研报告 题 目 基于windows的串口通信软件设计 学生姓名 金明坤 指导教师 郭丽梅 学 院 信息科学与工程学院 专业班级 通信工程03级6班 完成时间 2007年3月20日 摘要 串行通信具有连接简单、使用灵活方便、数据传递可靠等优点，在工业监控、数据采集和实时控制系统中得到了广泛应用。通过基于线程和消息的多任务处理编程可以有效地解决串行通信实时性和可靠性都得不到保证的问题，且能提高数据传输的吞吐量和应用程序的可靠性。但由于Windows 对系统底层操作采取了屏蔽的策略，不允许用户对硬件I/O口进行直接操作，进行串行通信只能通过调用API函数来完成；同时Windows通过消息队列驱动管理程序，DOS中断服务例程在其下面也很难实现，且实时性和可靠性都得不到保证；通过基于线程和消息的多任务处理编程可以有效地解决这一问题，且能提高数据传输的吞吐量和应用程序的可靠性。 CSerialPort类是由Remon Spekreijse提供的免费串口类,CSerialPort类支持线连接（非MODEM）的串口编程操作，编写的程序能在windows环境下很好的运行。并且CSerialPort类能方便的利用windows API对其进行扩展和改进,不但可以方便的实现基本串行通信功能，而且可以随意进行功能扩展。 关键词：串行通信，异步通信，CSerialPort，楼宇温度控制 目录 摘要 2 第一章 串口通讯的概念和意义 4 1.1串行通信基本概念 4 1.1.1串行通信概述 4 1.1.2单共、双工与半双工 4 1.1.3同步与异步传输模式 5 1.1.4串行通信协议 5 1.2 计算机串口标准 7 1.2.1 RS-232-C标准 7 1.2.2 RS-422/485标准 8 1.3研究串行通信的意义 10 第二章 串行通讯中主要的技术问题和参数 11 2.1两个技术问题 11 2.2串口通信参数 11 2.2数据校验方法 11 第三章 设计方案 13 3.1常用串行通信软件设计方案 13 3.2利用CSerialPort类进行串口通信编程 13 3.3 CSerialPort类需要的改进 14 第四章 串行通信实例 15 4.1概述 15 4.2楼宇温度控制系统 15 4.3. 所做工作 15 结论 17 参考文献 18 第一章 串口通讯的概念和意义 1.1串行通信基本概念 随着计算机系统的应用和微机网络的发展，通信功能越来越显的重要。这里所说的通信是只计算机与外界的信息交换。因此，通信既包括计算机与外部设备之间，也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息，所用的传输线少，并且可以借助现成的电话网进行信息传送，因此，特别适合于远距离传输。对于那些与计算机相距不远的人－机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等，采用串行方式交换数据也很普遍。在实时控制和管理方面，采用多台微机处理机组成分级分布控制系统中，各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口[1]。 1.1.1串行通信概述 图1.1：串行通信数据帧格式 如图1.1，所谓&#8221;串行通信&#8221;是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输，每一位数据都占据一个固定的时间长度。如图1-1所示。这种通信方式使用的数据线少，在远距离通信中可以节约通信成本，当然，其传输速度比并行传输慢。 1.1.2单共、双工与半双工 如果在通信过程的任意时刻，信息只能由一方A传到另一方B，则称为单工。 如果在任意时刻，信息既可由A传到B，又能由B传A，但只能由一个方向上的传输存在，称为半双工传输。 如果在任意时刻，线路上存在A到B和B到A的双向信号传输，则称为全双工。电话线就是二线全双工信道。 由于采用了回波抵消技术，双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开，采用分离的线路或频带传输相反方向的信号，如回线传输。表1.1为单共、双工、半双工示意图[1]。 表1.1:单共、双工、半双工 &#8212;&#8212;&#8211;&#62; &#60;&#8212;&#8212;&#8211;&#62; &#8212;&#8212;&#8211;&#62; A&#8212;&#8212;&#8212;B A&#8212;&#8212;&#8212;-B A&#8212;&#8212;&#8212;B &#60;&#8212;&#8212;&#8211; 单工 半双工 全双工 1.1.3同步与异步传输模式 串行通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收，异步通信是一种利用字符的再同步技术的通信方式。 同步通信：同步通信是一种连续串行传送数据的通信方式，一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同，通常含有若干个数据字符。 它们均由同步字符、数据字符和校验字符（CRC）组成。其中同步字符位于帧开头，用于确认数据字符的开始。数据字符在同步字符之后，个数没有限制，由所需传输的数据块长度来决定；校验字符有1到2个，用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。 异步通信：异步通信中，在异步通行中有两个比较重要的指标：字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送，通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收，这两个时钟源彼此独立，互不同步。接收端检测到传输线上发送过来的低电平逻辑&#8221;0&#8243;（即字符帧起始位）时，确定发送端已开始发送数据，每当接收端收到字符帧中的停止位时，就知道一帧字符已经发送完毕。 1.1.4串行通信协议 串行通信协议分同步协议和异步协议。 （1）异步通信协议的实例&#8211;起止式异步协议 特点与格式：起止式异步协议的特点是一个字符一个字符传输，并且传送一个字符总是以起始位开始，以停止位结束，字符之间没有固定的时间间隔要求。其格式如图3所示。每一个字符的前面都有一位起始位（低电平，逻辑值0），字符本身有5～7位数据位组成，接着字符后面是一位校验位（也可以没有校验位），最后是一位，或意味半，或二位停止位，停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平（逻辑值），这样就保证起始位开始处一定有一个下跳沿。 这种格式是靠起始位和停止位来实现字符的界定或同步的，故称为起始式协议。传送时，数据的低位在前，高位在后，图4表示了传送一个字符E的ASCAII码的波形1010001。当把它的最低有效位写到右边时，就是E的ASCII码1000101=45H。 起／止位的作用：起始位实际上是作为联络信号附加进来的，当它变为低电平时，告诉收方传送开始。它的到来，表示下面接着是数据位来了，要准备接收。而停止位标志一个字符的结束，它的出现，表示一个字符传送完毕。这样就为通信双方提供了何时开始收发，何时结束的标志。传送开始前，发收双方把所采用的起止式格式（包括字符的数据位长度，停止位位数，有无校验位以及是奇校验还是偶校验等）和数据传输速率作统一规定。传送开始后，接收设备不断地检测传输线，看是否有起始位到来。当收到一系列的&#8221;1&#8243;（停止位或空闲位）之后，检测到一个下跳沿，说明起始位出现，起始位经确认后，就开始接收所规定的数据位和奇偶校验位以及停止位。经过处理将停止位去掉，把数据位拼装成一个并行字节，并且经校验后，无奇偶错才算正确的接收一个字符。一个字符接收完毕，接收设备有继续测试传输线，监视&#8221;0&#8243;电平的到来和下一个字符的开始，直到全部数据传送完毕。 由上述工作过程可看到，异步通信是按字符传输的，每传输一个字符，就用起始位来通知收方，以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差，这也不会因偏差的累积而导致错位，加之字符之间的空闲位也为这种偏差提供一种缓冲，所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样一些附加位，使得传输效率变低了，只有约80%。因此，起止协议一般用在数据速率较慢的场合（小于19.2kbit/s）。在高速传送时，一般要采用同步协议。 （2）面向字符的同步协议 特点与格式：这种协议的典型代表是IBM公司的二进制同步通信协议(BSC）。它的特点是一次传送由若干个字符组成的数据块，而不是只传送一个字符，并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息，它们也叫做通信控制字。由于被传送的数据块是由字符组成，故被称作面向字符的协议。 数据透明的实现：面向字符的同步协议，不象异步起止协议那样，需要在每个字符前后附加起始和停止位，因此，传输效率提高了。同时，由于采用了一些传输控制字，故增强了通信控制能力和校验功能。但也存在一些问题，例如，如何区别数据字符代码和特定字符代码的问题，因为在数据块中完全有可能出现与特定字符代码相同的数据字符，这就会发生误解。比如正文有个与文终字符ETX的代码相同的数据字符，接收端就不会把它当作为普通数据处理，而误认为是正文结束，因而产生差错。因此，协议应具有将特定字符作为普通数据处理的能力，这种能力叫做&#8221;数据透明&#8221;。为此，协议中设置了转移字符DLE(Data Link Escape)。当把一个特定字符看成数据时，在它前面要加一个DLE，这样接收器收到一个DLE就可预知下一个字符是数据字符，而不会把它当作控制字符来处理了。DLE本身也是特定字符，当它出现在数据块中时，也要在它前面加上另一个DLE。这种方法叫字符填充。字符填充实现起来相当麻烦，且依赖于字符的编码。正是由于以上的缺点，故又产生了新的面向比特的同步协议。 （3）面向比特的同步协议 特点与格式：面向比特的协议中最具有代表性的是IBM的同步数据链路控制规程SDLC（Synchronous Data Link Control),国际标准化组织ISO(International Standard Organization）的高级数据链路控制规程HDLC（High Level Data link Control),美国国家标准协会(Americal National Standard Institute)的先进数据通信规程ADCCP(Advanced Data Communication Control Procedure)。这些协议的特点是所传输的一帧数据可以是任意位，而且它是靠约定的位组合模式，而不是靠特定字符来标志帧的开始和结束，故称&#8221;面向比特&#8221;的协议。 帧信息的分段SDLC/HDLC的一帧信息包括以下几个场(Filed），所有场都是从有效位开始传送。 1.2 计算机串口标准 RS-232、RS-422与RS-485标准只对接口的电气特性做出规定，而不涉及接插件、电缆或协议，在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用，许多厂家都建立了一套高层通信协议，或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的，视频服务器上的控制协议则更多了，如Louth、Odetis协议是公开的，而ProLINK则是基于Profile上的。 1.2.1 RS-232-C标准 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式，即所谓单端通讯。 收、发端的数据信号是相对于信号地，如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚（信号地）的电平，DB25各引脚定义参见图1。典型的RS-232信号在正负电平之间摆动，在发送数据时，发送端驱动器输出正电平在+5～+15V，负电平在-5～-15V电平。当无数据传输时，线上为TTL，从开始传送数据到结束，线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3～+12V与-3～-12V。由于发送电平与接收电平的差仅为2V至3V左右，所以其共模抑制能力差，再加上双绞线上的分布电容，其传送距离最大为约15米，最高速率为20kb/s。RS-232是为点对点（即只用一对收、发设备）通讯而设计的，其驱动器负载为3～7kΩ。所以RS-232适合本地设备之间的通信。其有关电气参数参见表1.2。 表1.2：串口电气参数 规定 RS232 RS422 R485 工作方式 单端 差分 差分 节点数 1收、1发 1发10收 1发32收 最大传输电缆长度 50英尺 400英尺 400英尺 最大传输速率 20Kb/S 10Mb/s 10Mb/s 最大驱动输出电压 +/-25V -0.25V～+6V -7V～+12V 驱动器输出信号电平 (负载最小值) 负载 +/-5V～+/-15V +/-2.0V +/-1.5V 驱动器输出信号电平 (空载最大值) 空载 +/-25V +/-6V +/-6V 驱动器负载阻抗(Ω) 3K～7K 100 54 摆率(最大值) 30V/μs N/A N/A 接收器输入电压范围 +/-15V -10V～+10V -7V～+12V 接收器输入门限 +/-3V +/-200mV +/-200mV 接收器输入电阻(Ω) 3K～7K 4K(最小) ≥12K 驱动器共模电压 -3V～+3V -1V～+3V 接收器共模电压 -7V～+7V -7V～+12V 1.2.2 RS-422/485标准 1．平衡传输 RS-422、RS-485与RS-232不一样，数据信号采用差分传输方式，也称作平衡传输，它使用一对双绞线，将其中一线定义为A，另一线定义为B，通常情况下，发送驱动器A、B之间的正电平在+2～+6V，是一个逻辑状态，负电平在-2～6V，是另一个逻辑状态。另有一个信号地C，在RS-485中还有一&#8221;使能&#8221;端，而在RS-422中这是可用可不用的。&#8221;使能&#8221;端是用于控制发送驱动器与传输线的切断与连接。当&#8221;使能&#8221;端起作用时，发送驱动器处于高阻状态，称作&#8221;第三态&#8221;，即它是有别于逻辑&#8221;1&#8243;与&#8221;0&#8243;的第三态。 接收器也作与发送端相对的规定，收、发端通过平衡双绞线将AA与BB对应相连，当在收端AB之间有大于+200mV的电平时，输出正逻辑电平，小于-200mV时，输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。 2．RS-422电气规定 RS-422标准全称是&#8221;平衡电压数字接口电路的电气特性&#8221;，它定义了接口电路的特性。图5是典型的RS-422四线接口。实际上还有一根信号地线，共5根线。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力，故允许在相同传输线上连接多个接收节点，最多可接10个节点。即一个主设备（Master），其余为从设备（Salve），从设备之间不能通信，所以RS-422支持点对多的双向通信。接收器输入阻抗为4k，故发端最大负载能力是10×4k+100Ω（终接电阻）。RS-422四线接口由于采用单独的发送和接收通道，因此不必控制数据方向，各装置之间任何必须的信号交换均可以按软件方式（XON/XOFF握手）或硬件方式（一对单独的双绞线）实现。 RS-422的最大传输距离为4000英尺（约1219米），最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比，在100kb/s速率以下，才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。 RS-422需要一终接电阻，要求其阻值约等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻，即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。 RS-422有关电气参数见表1 3．RS-485电气规定 由于RS-485是从RS-422基础上发展而来的，所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式，二线制可实现真正的多点双向通信。 而采用四线连接时，与RS-422一样只能实现点对多的通信，即只能有一个主（Master）设备，其余为从设备，但它比RS-422有改进， 无论四线还是二线连接方式总线上可多接到32个设备。 RS-485与RS-422一样，其最大传输距离约为1219米，最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比，在100kb/s速率以下，才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。 RS-485需要2个终接电阻，其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻，即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。 1.3研究串行通信的意义 本课题在研究异步串行通信软件以及通信协议的基础上,给出了基于windows的串行口通信软件设计，配合多线程的程序设计实现了串口通信和数据的实时采集，设计了直接和灵活地对串口控制操作的软件。并以此为基础给出一个应用实例。 在研究串行通信软件时,涉及到PC机与PC机、PC机与单片机、PC机与外部设备之间通过RS-232串口进行异步通信技术的问题.在研究其异步串行通信软件以及通信协议的基础上，对比不同的方案，给出了在Windows环境下实现异步通信的方案、相应的软件程序以及一个应用实例。该方案包括串行通信软件的设计思想和实现的关键技术，可通过串口进行数据采集和传输，该方案主要应用于计算机接口通信，也可应用于工业控制的串口通信领域。方案利用Windows 2000、Windows XP中的多线程技术进行多串口串行通信,实现实时数据采集与系统控制。 随着计算机系统的应用和微机网络的发展，通信功能越来越显得重要。这里所说的通信是只计算机与外界的信息交换。因此，通信既包括计算机与计算机之间，也包括计算机和外部设备之间、计算机与单片机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息，所用的传输线少，并且可以借助现成的电话网进行信息传送，因此，特别适合于远距离传输。对于那些与计算机相距不远的人－机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等、上位机与下位机之间的通信，采用串行方式交换数据也很普遍。在实时控制和管理方面，采用多台微机处理机组成分级分布控制系统中，各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。 串行通信广泛应用于Internet、电信、金融、工业控制、服务业、终端连线及其他应用领域，在不同的应用领域，串行通信可以与其他通信方式相结合、与Access或Mssql数据库相结合、与WinSock通信相结合，方便的与SMS模块、Modem、Rabbit 2000潜入式系统、PLC通信程序、MATLAB环境等进行通信，所以研究基于windows的串口通信软件设计具有很强应用价值。 &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. 参考文献 [1]龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].　电子工业出版社.2004:257-268 [2]詹国华,张量,袁贞明,徐建军.基于PC可视化环境的串行通信方案[J]. 计算机系统应用，2002(04)：25-27 [3]黄泽建,林君.基于API的串行口通信软件设计.吉林大学学报(信息科学版）[J]，2003（04）：21-23 [4]赵彦锋,李钢.基于Win32 API的多线程串行通信程序设计[J]. 现代电子技术，2005(19)：11-14 [5]Allen Denver.Serial Communication in Win32[DB]. Microsoft Development Network. [6]Kate Gregory.Special Edition Using Visual C++[DB].Microsoft Development Network. [7]张筠，刘书智.VisualC++实践与提高&#8211;串口通信与工程应用篇[M]. 中国铁道出版社，2006 [8]任丽红,张晓燕.在VC++中开发串口类及串口通信应用程序[J].北京石油化工学院学报 .2001(02)]]></description>
			<content:encoded><![CDATA[<p>调研报告：基于windows的串口通信软件设计<br />
<span id="more-205"></span>中南大学本科生毕业论文（设计）调研报告<br />
题 目 基于windows的串口通信软件设计<br />
学生姓名 金明坤<br />
指导教师 郭丽梅<br />
学 院 信息科学与工程学院<br />
专业班级 通信工程03级6班<br />
完成时间 2007年3月20日</p>
<p>摘要<br />
串行通信具有连接简单、使用灵活方便、数据传递可靠等优点，在工业监控、数据采集和实时控制系统中得到了广泛应用。通过基于线程和消息的多任务处理编程可以有效地解决串行通信实时性和可靠性都得不到保证的问题，且能提高数据传输的吞吐量和应用程序的可靠性。但由于Windows 对系统底层操作采取了屏蔽的策略，不允许用户对硬件I/O口进行直接操作，进行串行通信只能通过调用API函数来完成；同时Windows通过消息队列驱动管理程序，DOS中断服务例程在其下面也很难实现，且实时性和可靠性都得不到保证；通过基于线程和消息的多任务处理编程可以有效地解决这一问题，且能提高数据传输的吞吐量和应用程序的可靠性。<br />
CSerialPort类是由Remon Spekreijse提供的免费串口类,CSerialPort类支持线连接（非MODEM）的串口编程操作，编写的程序能在windows环境下很好的运行。并且CSerialPort类能方便的利用windows API对其进行扩展和改进,不但可以方便的实现基本串行通信功能，而且可以随意进行功能扩展。</p>
<p>关键词：串行通信，异步通信，CSerialPort，楼宇温度控制<br />
目录<br />
摘要 2<br />
第一章 串口通讯的概念和意义 4<br />
1.1串行通信基本概念 4<br />
1.1.1串行通信概述 4<br />
1.1.2单共、双工与半双工 4<br />
1.1.3同步与异步传输模式 5<br />
1.1.4串行通信协议 5<br />
1.2 计算机串口标准 7<br />
1.2.1 RS-232-C标准 7<br />
1.2.2 RS-422/485标准 8<br />
1.3研究串行通信的意义 10<br />
第二章 串行通讯中主要的技术问题和参数 11<br />
2.1两个技术问题 11<br />
2.2串口通信参数 11<br />
2.2数据校验方法 11<br />
第三章 设计方案 13<br />
3.1常用串行通信软件设计方案 13<br />
3.2利用CSerialPort类进行串口通信编程 13<br />
3.3 CSerialPort类需要的改进 14<br />
第四章 串行通信实例 15<br />
4.1概述 15<br />
4.2楼宇温度控制系统 15<br />
4.3. 所做工作 15<br />
结论 17<br />
参考文献 18<br />
第一章 串口通讯的概念和意义<br />
1.1串行通信基本概念<br />
随着计算机系统的应用和微机网络的发展，通信功能越来越显的重要。这里所说的通信是只计算机与外界的信息交换。因此，通信既包括计算机与外部设备之间，也包括计算机和计算机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息，所用的传输线少，并且可以借助现成的电话网进行信息传送，因此，特别适合于远距离传输。对于那些与计算机相距不远的人－机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等，采用串行方式交换数据也很普遍。在实时控制和管理方面，采用多台微机处理机组成分级分布控制系统中，各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口[1]。<br />
1.1.1串行通信概述</p>
<p>图1.1：串行通信数据帧格式</p>
<p>如图1.1，所谓&#8221;串行通信&#8221;是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输，每一位数据都占据一个固定的时间长度。如图1-1所示。这种通信方式使用的数据线少，在远距离通信中可以节约通信成本，当然，其传输速度比并行传输慢。<br />
1.1.2单共、双工与半双工<br />
如果在通信过程的任意时刻，信息只能由一方A传到另一方B，则称为单工。<br />
如果在任意时刻，信息既可由A传到B，又能由B传A，但只能由一个方向上的传输存在，称为半双工传输。<br />
如果在任意时刻，线路上存在A到B和B到A的双向信号传输，则称为全双工。电话线就是二线全双工信道。 由于采用了回波抵消技术，双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开，采用分离的线路或频带传输相反方向的信号，如回线传输。表1.1为单共、双工、半双工示意图[1]。<br />
表1.1:单共、双工、半双工<br />
&#8212;&#8212;&#8211;&gt; &lt;&#8212;&#8212;&#8211;&gt; &#8212;&#8212;&#8211;&gt;<br />
A&#8212;&#8212;&#8212;B A&#8212;&#8212;&#8212;-B A&#8212;&#8212;&#8212;B<br />
&lt;&#8212;&#8212;&#8211;<br />
单工 半双工 全双工</p>
<p>1.1.3同步与异步传输模式<br />
串行通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收，异步通信是一种利用字符的再同步技术的通信方式。<br />
同步通信：同步通信是一种连续串行传送数据的通信方式，一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同，通常含有若干个数据字符。<br />
它们均由同步字符、数据字符和校验字符（CRC）组成。其中同步字符位于帧开头，用于确认数据字符的开始。数据字符在同步字符之后，个数没有限制，由所需传输的数据块长度来决定；校验字符有1到2个，用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。<br />
异步通信：异步通信中，在异步通行中有两个比较重要的指标：字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送，通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收，这两个时钟源彼此独立，互不同步。接收端检测到传输线上发送过来的低电平逻辑&#8221;0&#8243;（即字符帧起始位）时，确定发送端已开始发送数据，每当接收端收到字符帧中的停止位时，就知道一帧字符已经发送完毕。<br />
1.1.4串行通信协议<br />
串行通信协议分同步协议和异步协议。<br />
（1）异步通信协议的实例&#8211;起止式异步协议<br />
特点与格式：起止式异步协议的特点是一个字符一个字符传输，并且传送一个字符总是以起始位开始，以停止位结束，字符之间没有固定的时间间隔要求。其格式如图3所示。每一个字符的前面都有一位起始位（低电平，逻辑值0），字符本身有5～7位数据位组成，接着字符后面是一位校验位（也可以没有校验位），最后是一位，或意味半，或二位停止位，停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平（逻辑值），这样就保证起始位开始处一定有一个下跳沿。<br />
这种格式是靠起始位和停止位来实现字符的界定或同步的，故称为起始式协议。传送时，数据的低位在前，高位在后，图4表示了传送一个字符E的ASCAII码的波形1010001。当把它的最低有效位写到右边时，就是E的ASCII码1000101=45H。<br />
起／止位的作用：起始位实际上是作为联络信号附加进来的，当它变为低电平时，告诉收方传送开始。它的到来，表示下面接着是数据位来了，要准备接收。而停止位标志一个字符的结束，它的出现，表示一个字符传送完毕。这样就为通信双方提供了何时开始收发，何时结束的标志。传送开始前，发收双方把所采用的起止式格式（包括字符的数据位长度，停止位位数，有无校验位以及是奇校验还是偶校验等）和数据传输速率作统一规定。传送开始后，接收设备不断地检测传输线，看是否有起始位到来。当收到一系列的&#8221;1&#8243;（停止位或空闲位）之后，检测到一个下跳沿，说明起始位出现，起始位经确认后，就开始接收所规定的数据位和奇偶校验位以及停止位。经过处理将停止位去掉，把数据位拼装成一个并行字节，并且经校验后，无奇偶错才算正确的接收一个字符。一个字符接收完毕，接收设备有继续测试传输线，监视&#8221;0&#8243;电平的到来和下一个字符的开始，直到全部数据传送完毕。<br />
由上述工作过程可看到，异步通信是按字符传输的，每传输一个字符，就用起始位来通知收方，以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差，这也不会因偏差的累积而导致错位，加之字符之间的空闲位也为这种偏差提供一种缓冲，所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样一些附加位，使得传输效率变低了，只有约80%。因此，起止协议一般用在数据速率较慢的场合（小于19.2kbit/s）。在高速传送时，一般要采用同步协议。<br />
（2）面向字符的同步协议<br />
特点与格式：这种协议的典型代表是IBM公司的二进制同步通信协议(BSC）。它的特点是一次传送由若干个字符组成的数据块，而不是只传送一个字符，并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息，它们也叫做通信控制字。由于被传送的数据块是由字符组成，故被称作面向字符的协议。<br />
数据透明的实现：面向字符的同步协议，不象异步起止协议那样，需要在每个字符前后附加起始和停止位，因此，传输效率提高了。同时，由于采用了一些传输控制字，故增强了通信控制能力和校验功能。但也存在一些问题，例如，如何区别数据字符代码和特定字符代码的问题，因为在数据块中完全有可能出现与特定字符代码相同的数据字符，这就会发生误解。比如正文有个与文终字符ETX的代码相同的数据字符，接收端就不会把它当作为普通数据处理，而误认为是正文结束，因而产生差错。因此，协议应具有将特定字符作为普通数据处理的能力，这种能力叫做&#8221;数据透明&#8221;。为此，协议中设置了转移字符DLE(Data Link Escape)。当把一个特定字符看成数据时，在它前面要加一个DLE，这样接收器收到一个DLE就可预知下一个字符是数据字符，而不会把它当作控制字符来处理了。DLE本身也是特定字符，当它出现在数据块中时，也要在它前面加上另一个DLE。这种方法叫字符填充。字符填充实现起来相当麻烦，且依赖于字符的编码。正是由于以上的缺点，故又产生了新的面向比特的同步协议。<br />
（3）面向比特的同步协议<br />
特点与格式：面向比特的协议中最具有代表性的是IBM的同步数据链路控制规程SDLC（Synchronous Data Link Control),国际标准化组织ISO(International Standard Organization）的高级数据链路控制规程HDLC（High Level Data link Control),美国国家标准协会(Americal National Standard Institute)的先进数据通信规程ADCCP(Advanced Data Communication Control Procedure)。这些协议的特点是所传输的一帧数据可以是任意位，而且它是靠约定的位组合模式，而不是靠特定字符来标志帧的开始和结束，故称&#8221;面向比特&#8221;的协议。<br />
帧信息的分段SDLC/HDLC的一帧信息包括以下几个场(Filed），所有场都是从有效位开始传送。</p>
<p>1.2 计算机串口标准<br />
RS-232、RS-422与RS-485标准只对接口的电气特性做出规定，而不涉及接插件、电缆或协议，在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用，许多厂家都建立了一套高层通信协议，或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的，视频服务器上的控制协议则更多了，如Louth、Odetis协议是公开的，而ProLINK则是基于Profile上的。<br />
1.2.1 RS-232-C标准<br />
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式，即所谓单端通讯。<br />
收、发端的数据信号是相对于信号地，如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚（信号地）的电平，DB25各引脚定义参见图1。典型的RS-232信号在正负电平之间摆动，在发送数据时，发送端驱动器输出正电平在+5～+15V，负电平在-5～-15V电平。当无数据传输时，线上为TTL，从开始传送数据到结束，线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3～+12V与-3～-12V。由于发送电平与接收电平的差仅为2V至3V左右，所以其共模抑制能力差，再加上双绞线上的分布电容，其传送距离最大为约15米，最高速率为20kb/s。RS-232是为点对点（即只用一对收、发设备）通讯而设计的，其驱动器负载为3～7kΩ。所以RS-232适合本地设备之间的通信。其有关电气参数参见表1.2。<br />
表1.2：串口电气参数<br />
规定 RS232 RS422 R485<br />
工作方式 单端 差分 差分<br />
节点数 1收、1发 1发10收 1发32收<br />
最大传输电缆长度 50英尺 400英尺 400英尺<br />
最大传输速率 20Kb/S 10Mb/s 10Mb/s<br />
最大驱动输出电压 +/-25V -0.25V～+6V -7V～+12V<br />
驱动器输出信号电平<br />
(负载最小值) 负载 +/-5V～+/-15V +/-2.0V +/-1.5V<br />
驱动器输出信号电平<br />
(空载最大值) 空载 +/-25V +/-6V +/-6V<br />
驱动器负载阻抗(Ω) 3K～7K 100 54<br />
摆率(最大值) 30V/μs N/A N/A<br />
接收器输入电压范围 +/-15V -10V～+10V -7V～+12V<br />
接收器输入门限 +/-3V +/-200mV +/-200mV<br />
接收器输入电阻(Ω) 3K～7K 4K(最小) ≥12K<br />
驱动器共模电压 -3V～+3V -1V～+3V<br />
接收器共模电压 -7V～+7V -7V～+12V</p>
<p>1.2.2 RS-422/485标准<br />
1．平衡传输<br />
RS-422、RS-485与RS-232不一样，数据信号采用差分传输方式，也称作平衡传输，它使用一对双绞线，将其中一线定义为A，另一线定义为B，通常情况下，发送驱动器A、B之间的正电平在+2～+6V，是一个逻辑状态，负电平在-2～6V，是另一个逻辑状态。另有一个信号地C，在RS-485中还有一&#8221;使能&#8221;端，而在RS-422中这是可用可不用的。&#8221;使能&#8221;端是用于控制发送驱动器与传输线的切断与连接。当&#8221;使能&#8221;端起作用时，发送驱动器处于高阻状态，称作&#8221;第三态&#8221;，即它是有别于逻辑&#8221;1&#8243;与&#8221;0&#8243;的第三态。<br />
接收器也作与发送端相对的规定，收、发端通过平衡双绞线将AA与BB对应相连，当在收端AB之间有大于+200mV的电平时，输出正逻辑电平，小于-200mV时，输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。<br />
2．RS-422电气规定<br />
RS-422标准全称是&#8221;平衡电压数字接口电路的电气特性&#8221;，它定义了接口电路的特性。图5是典型的RS-422四线接口。实际上还有一根信号地线，共5根线。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力，故允许在相同传输线上连接多个接收节点，最多可接10个节点。即一个主设备（Master），其余为从设备（Salve），从设备之间不能通信，所以RS-422支持点对多的双向通信。接收器输入阻抗为4k，故发端最大负载能力是10×4k+100Ω（终接电阻）。RS-422四线接口由于采用单独的发送和接收通道，因此不必控制数据方向，各装置之间任何必须的信号交换均可以按软件方式（XON/XOFF握手）或硬件方式（一对单独的双绞线）实现。<br />
RS-422的最大传输距离为4000英尺（约1219米），最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比，在100kb/s速率以下，才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。<br />
RS-422需要一终接电阻，要求其阻值约等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻，即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。<br />
RS-422有关电气参数见表1<br />
3．RS-485电气规定<br />
由于RS-485是从RS-422基础上发展而来的，所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式，二线制可实现真正的多点双向通信。<br />
而采用四线连接时，与RS-422一样只能实现点对多的通信，即只能有一个主（Master）设备，其余为从设备，但它比RS-422有改进， 无论四线还是二线连接方式总线上可多接到32个设备。<br />
RS-485与RS-422一样，其最大传输距离约为1219米，最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比，在100kb/s速率以下，才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。<br />
RS-485需要2个终接电阻，其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻，即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。<br />
1.3研究串行通信的意义<br />
本课题在研究异步串行通信软件以及通信协议的基础上,给出了基于windows的串行口通信软件设计，配合多线程的程序设计实现了串口通信和数据的实时采集，设计了直接和灵活地对串口控制操作的软件。并以此为基础给出一个应用实例。<br />
在研究串行通信软件时,涉及到PC机与PC机、PC机与单片机、PC机与外部设备之间通过RS-232串口进行异步通信技术的问题.在研究其异步串行通信软件以及通信协议的基础上，对比不同的方案，给出了在Windows环境下实现异步通信的方案、相应的软件程序以及一个应用实例。该方案包括串行通信软件的设计思想和实现的关键技术，可通过串口进行数据采集和传输，该方案主要应用于计算机接口通信，也可应用于工业控制的串口通信领域。方案利用Windows 2000、Windows XP中的多线程技术进行多串口串行通信,实现实时数据采集与系统控制。<br />
随着计算机系统的应用和微机网络的发展，通信功能越来越显得重要。这里所说的通信是只计算机与外界的信息交换。因此，通信既包括计算机与计算机之间，也包括计算机和外部设备之间、计算机与单片机之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息，所用的传输线少，并且可以借助现成的电话网进行信息传送，因此，特别适合于远距离传输。对于那些与计算机相距不远的人－机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等、上位机与下位机之间的通信，采用串行方式交换数据也很普遍。在实时控制和管理方面，采用多台微机处理机组成分级分布控制系统中，各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。<br />
串行通信广泛应用于Internet、电信、金融、工业控制、服务业、终端连线及其他应用领域，在不同的应用领域，串行通信可以与其他通信方式相结合、与Access或Mssql数据库相结合、与WinSock通信相结合，方便的与SMS模块、Modem、Rabbit 2000潜入式系统、PLC通信程序、MATLAB环境等进行通信，所以研究基于windows的串口通信软件设计具有很强应用价值。</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>参考文献<br />
[1]龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].　电子工业出版社.2004:257-268<br />
[2]詹国华,张量,袁贞明,徐建军.基于PC可视化环境的串行通信方案[J]. 计算机系统应用，2002(04)：25-27<br />
[3]黄泽建,林君.基于API的串行口通信软件设计.吉林大学学报(信息科学版）[J]，2003（04）：21-23<br />
[4]赵彦锋,李钢.基于Win32 API的多线程串行通信程序设计[J]. 现代电子技术，2005(19)：11-14<br />
[5]Allen Denver.Serial Communication in Win32[DB]. Microsoft Development Network.<br />
[6]Kate Gregory.Special Edition Using Visual C++[DB].Microsoft Development Network.<br />
[7]张筠，刘书智.VisualC++实践与提高&#8211;串口通信与工程应用篇[M]. 中国铁道出版社，2006<br />
[8]任丽红,张晓燕.在VC++中开发串口类及串口通信应用程序[J].北京石油化工学院学报 .2001(02)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/06/%e8%b0%83%e7%a0%94%e6%8a%a5%e5%91%8a%ef%bc%9a%e5%9f%ba%e4%ba%8ewindows%e7%9a%84%e4%b8%b2%e5%8f%a3%e9%80%9a%e4%bf%a1%e8%bd%af%e4%bb%b6%e8%ae%be%e8%ae%a1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CNNIC：中国互联网迎来“CN”时代</title>
		<link>http://www.tuscany.hk/2007/05/cnnic%ef%bc%9a%e4%b8%ad%e5%9b%bd%e4%ba%92%e8%81%94%e7%bd%91%e8%bf%8e%e6%9d%a5%e2%80%9ccn%e2%80%9d%e6%97%b6%e4%bb%a3.html</link>
		<comments>http://www.tuscany.hk/2007/05/cnnic%ef%bc%9a%e4%b8%ad%e5%9b%bd%e4%ba%92%e8%81%94%e7%bd%91%e8%bf%8e%e6%9d%a5%e2%80%9ccn%e2%80%9d%e6%97%b6%e4%bb%a3.html#comments</comments>
		<pubDate>Thu, 24 May 2007 05:44:18 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[B.互联网气象万千]]></category>
		<category><![CDATA[City]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[域名]]></category>
		<category><![CDATA[意识]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[电信]]></category>
		<category><![CDATA[电信运营商]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[通信]]></category>
		<category><![CDATA[音乐]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/archives/94</guid>
		<description><![CDATA[互联网与手机、计算机并称为信息社会的三大电子依赖品。在1.37亿网民中，患有网络依赖症“患者”绝不在少数。人们已经习惯了每天在网上读新闻、下载音乐、写博客或是购物等等。很难想象，已经习惯了依赖互联网生存的人们如果失去网络将会怎样？ 　　2006年12月底，台湾地震导致海底光缆断裂，造成大面积断网为人们上演了互联网的“后天”。网站访问不通、即时通讯受阻、电子商务停滞……严重依赖互联网的IT、国际贸易、媒体、金融等行业受到极大影响。 　　“断网”事件也印证了业内专家曾提出的互联网美国威胁论。全球互联网无论从硬件环境、软件设施还是政策法规均对于其发源地美国产生高度依赖，对其他国家互联网自主发展产生了严重威胁。 　　中国互联网的维护者对这种威胁也感受颇深，中国互联网络信息中心（CNNIC）主任毛伟感慨道：“如果把中国互联网比作一棵树，则域名基础平台是根，而网络应用是叶。长期以来，我们对叶的关注远大于根。庆幸的是，随着中国互联网的快速发展，人们开始意识到国家互联网域名系统的重要性，有识之士也建议将负责中国互联网域名解析和管理的CNNIC纳入国家应急安全体系，从而确保中国互联网的稳定、安全运行。” 　　中国不可一日无互联网，互联网不可一日无CNNIC。在中国互联网络信息中心（CNNIC）的监控机房，电子屏上以秒为单位跳动的数字十分引人注目，分布在全国的5个域名解析顶级节点几乎覆盖了南、北所有电信运营商，座落在每个节点上的服务器时刻响应着网民登陆网站的请求。 　　CNNIC位于中科院软件园宁静的园区内，监控机房中服务器上的指示灯不停闪烁，屏住呼吸能听到机器高速运行发出的低鸣，技术人员监控着整个机房的运行，一切都显得井然有序。 　　在中国互联网枝繁叶茂、硕果累累的今天，不禁引发人们对于中国互联网之“根”——顶级域名CN的兴趣，更想走进护根园丁CNNIC，了解他们的工作和生活。 　　]]></description>
			<content:encoded><![CDATA[<p>互联网与手机、计算机并称为信息社会的三大电子依赖品。在1.37亿网民中，患有网络依赖症“患者”绝不在少数。人们已经习惯了每天在网上读新闻、下载音乐、写博客或是购物等等。很难想象，已经习惯了依赖互联网生存的人们如果失去网络将会怎样？<br />
<span id="more-94"></span><br />
　　2006年12月底，台湾地震导致海底光缆断裂，造成大面积断网为人们上演了互联网的“后天”。网站访问不通、即时通讯受阻、电子商务停滞……严重依赖互联网的IT、国际贸易、媒体、金融等行业受到极大影响。</p>
<p>　　“断网”事件也印证了业内专家曾提出的互联网美国威胁论。全球互联网无论从硬件环境、软件设施还是政策法规均对于其发源地美国产生高度依赖，对其他国家互联网自主发展产生了严重威胁。</p>
<p><clk></clk>　　中国互联网的维护者对这种威胁也感受颇深，中国互联网络信息中心（CNNIC）主任毛伟感慨道：“如果把中国互联网比作一棵树，则域名基础平台是根，而网络应用是叶。长期以来，我们对叶的关注远大于根。庆幸的是，随着中国互联网的快速发展，人们开始意识到国家互联网域名系统的重要性，有识之士也建议将负责中国互联网域名解析和管理的CNNIC纳入国家应急安全体系，从而确保中国互联网的稳定、安全运行。”</p>
<p>　　中国不可一日无互联网，互联网不可一日无CNNIC。在中国互联网络信息中心（CNNIC）的监控机房，电子屏上以秒为单位跳动的数字十分引人注目，分布在全国的5个域名解析顶级节点几乎覆盖了南、北所有电信运营商，座落在每个节点上的服务器时刻响应着网民登陆网站的请求。</p>
<p>　　CNNIC位于中科院软件园宁静的园区内，监控机房中服务器上的指示灯不停闪烁，屏住呼吸能听到机器高速运行发出的低鸣，技术人员监控着整个机房的运行，一切都显得井然有序。</p>
<p>　　在中国互联网枝繁叶茂、硕果累累的今天，不禁引发人们对于中国互联网之“根”——顶级域名CN的兴趣，更想走进护根园丁CNNIC，了解他们的工作和生活。 　　</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/05/cnnic%ef%bc%9a%e4%b8%ad%e5%9b%bd%e4%ba%92%e8%81%94%e7%bd%91%e8%bf%8e%e6%9d%a5%e2%80%9ccn%e2%80%9d%e6%97%b6%e4%bb%a3.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>整理下载（8）：以太网与交换以太网的互连互通</title>
		<link>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%888%ef%bc%89%ef%bc%9a%e4%bb%a5%e5%a4%aa%e7%bd%91%e4%b8%8e%e4%ba%a4%e6%8d%a2%e4%bb%a5%e5%a4%aa%e7%bd%91%e7%9a%84%e4%ba%92%e8%bf%9e%e4%ba%92%e9%80%9a.html</link>
		<comments>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%888%ef%bc%89%ef%bc%9a%e4%bb%a5%e5%a4%aa%e7%bd%91%e4%b8%8e%e4%ba%a4%e6%8d%a2%e4%bb%a5%e5%a4%aa%e7%bd%91%e7%9a%84%e4%ba%92%e8%bf%9e%e4%ba%92%e9%80%9a.html#comments</comments>
		<pubDate>Wed, 11 Apr 2007 17:04:06 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=40</guid>
		<description><![CDATA[-----]]></description>
			<content:encoded><![CDATA[<p>设计要求：在给定以太网、以太网交换机、路由器设备的情况下，安装设置集线器、交换机、路由器，实现两网中任意两个站点。<br />
实验目的：了解路由器的基本功能、工作状态判断等基础知识； 熟悉路由器的命令行配置；<br />
掌握利用路由器连接本地局域网的方法； 掌握子网划分的方法；掌握网络接口的IP设置方法。<br />
设计原理及方法：将1个C类地址进行子网划分，其中二分之一个C类地址用于LAN 1，四分之一个C类地址用于LAN 2，确定网络地址和子网掩码； 为主机和路由器接口选择和设置IP地址、子网掩码和默认网关； 利用路由器连接本地局域网；验证本地局域网的连通性。<br />
设计步骤：<br />
1.按下图所示，连接PC，交换机和路由器           </p>
<p>2.配置路由器：　<br />
　路由器是互联网络中必不可少的网络设备之一，路由器是一种连接多个网络或网段的网络设备，它能将不同网络或网段之间的数据信息进行“翻译”，以使它们能够相互“读”懂对方的数据，从而构成一个更大的网络。 路由器有两大典型功能，即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发以及输出链路调度等，一般由特定的硬件来完成；控制功能一般用软件来实现，包括与相邻路由器之间的信息交换、系统配置、系统管理等。<br />
本网络使用了两个交换机，分别连接路由器的两个接口，对两个接口进行配置，为其配两个IP地址。具体配置如下：<br />
       Route A<br />
<quidway>system             ;进入路由器系统<br />
password:                   ;密码<br />
[Quidway] interface eth0    ;进入接口1视图<br />
[Quidway-Ethernet0] ip add 192.168.1.2 255.255.255.0  ;设置接口1的IP和子网掩码<br />
[Quidway-Ethernet0] undo shutdown                    ;激活端口<br />
[Quidway-Ethernet0] interface eth1                   ;进入接口2视图<br />
[Quidway-Ethernet1] ip add 192.168.2.2 255.255.255.0 ;设置接口2的IP和子网掩码<br />
[Quidway-Ethernet1] undo shutdown                   ;激活端口<br />
[Quidway-Ethernet1] quit                            ;退出接口视图<br />
[Quidway] save                                      ;保存当前配置<br />
我们在实际应用当中，为了安全，通常还会为路由器设置用户名及密码之类，如果有几个路由器互连时，我们还要对路由器进行路由地址设置，具体的设置如下：<br />
[Quidway]sysname aabbcc                          ; 更改主机名<br />
[Quidway]super passwrod 123456                    ;设置口令<br />
静太路由设置：<br />
Quidway]iproute-static <ip> <mask>{interfacenumber|nexthop}[value][reject|blackhole]<br />
例如：[Quidway]ip route-static 129.1.0.0 16 10.0.0.2<br />
[Quidway]ip route-static 129.1.0.0 255.255.0.0 10.0.0.2<br />
3.交换机配置：<br />
交换机Vlan介绍<br />
VLAN（Virtual Local Area Network），是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术。IEEE于1999年颁布了用以标准化VLAN实现方案的IEEE 802.1Q协议标准草案。<br />
VLAN技术允许网络管理者将一个物理的LAN逻辑地划分成不同的广播域（或称虚拟LAN，即VLAN），每一个VLAN都包含一组有着相同需求的计算机，由于VLAN是逻辑地而不是物理地划分，所以同一个VLAN内的各个计算机无须被放置在同一个物理空间里，即这些计算机不一定属于同一个物理LAN网段。<br />
VLAN的优势在于VLAN内部的广播和单播流量不会被转发到其它VLAN中，从而有助于控制网络流量、减少设备投资、简化网络管理、提高网络安全性。<br />
如果缺省情况下，缺省VLAN为VLAN 1，本设计使用的就是缺省情况，因此不需要对其进行VLAN划分。<br />
4.PC机配置：<br />
因为我们使用的路由器模拟器中使用的PC是Linux操作系统，登陆系统的用户名和密码分别为：login:root     password :linux<br />
      因此先要登陆，然后再配置其网络功能<br />
具体的配置如下：<br />
PC主机	IP地址	子网掩码	网关<br />
PCA	192.168.1.1	255.255.255.0	192.168.1.2<br />
PCB	192.168.1.3	255.255.255.0	192.168.1.2<br />
PCC	192.168.2.1	255.255.255.0	192.168.2.2<br />
PCD	192.168.2.3	255.255.255.0	192.168.2.2<br />
其具体指令如下：<br />
以PCA为例：PCA  Login : root<br />
             Password:    linux<br />
             [root@PCA root]# ifconfig eth0 192.168.1.1 netmask 255.255.255.0<br />
             [root@PCA root]# route add default gw 192.168.1.2</p>
<p>结果验证与分析：<br />
1.测试局域网的连通性<br />
从Host A ping Host B:192.168.1.3<br />
结果如下：</p>
<p>由结果可知，局域网是连通的<br />
2.测试主机与网关的连通性：<br />
从Host A ping 网关 :192.168.1.2<br />
结果如下：</p>
<p>由结果知，主机与网关也是连通的<br />
3.测试以太网之间的连通性：<br />
  从Host A ping Host C :192.168.2.1<br />
结果如下：</p>
<p>  从Host D ping Host B :192.168.1.3<br />
结果如下：</p>
<p>由结果可知，各以太网之间的主机也是互连互通的。<br />
实验总结：在一个多星期的实践中，终于成功的完成了设计任务。但是收获的并不只是成功的喜悦，还有很多的实际应用知识和实际操作能力。我是在参观了实验室的设备情况下，了解到它们的型号，是华为的交换机系列及路由器。我在网站上下载了它们的资料，系统的学习了一下，同时也提供了华为路由器模拟器的软件，于是我在没有上机的时候就可以利用软件进行实际模拟了。同样我们还学习了交换机、路由器和PC的配置命令，主要是设置网络地址、子网掩码和网关，然后就可以互连互通了。当然里面还有一些复杂的命令配置。通过这次的课程实践，我对网络管理方面有了更深的了解，相信回给我以后的工作带来很大的帮助。<br />
实验设备：h3c ar 28-11路由器  quidway s2100series 交换机<br />
参考文献：h3c ar 28-11路由器  quidway s2100series 交换机的操作手册和命令手册</p>
<p><img src="images/download.gif" alt="只允许会员下载" style="margin:0px 2px -4px 0px"/> 该文件只允许会员下载! <a href="login.asp">登录</a> | <a href="register.asp">注册</a></mask></ip></quidway></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%888%ef%bc%89%ef%bc%9a%e4%bb%a5%e5%a4%aa%e7%bd%91%e4%b8%8e%e4%ba%a4%e6%8d%a2%e4%bb%a5%e5%a4%aa%e7%bd%91%e7%9a%84%e4%ba%92%e8%bf%9e%e4%ba%92%e9%80%9a.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>整理下载（7）：内存调度的FFA算法模拟</title>
		<link>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%887%ef%bc%89%ef%bc%9a%e5%86%85%e5%ad%98%e8%b0%83%e5%ba%a6%e7%9a%84ffa%e7%ae%97%e6%b3%95%e6%a8%a1%e6%8b%9f.html</link>
		<comments>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%887%ef%bc%89%ef%bc%9a%e5%86%85%e5%ad%98%e8%b0%83%e5%ba%a6%e7%9a%84ffa%e7%ae%97%e6%b3%95%e6%a8%a1%e6%8b%9f.html#comments</comments>
		<pubDate>Wed, 11 Apr 2007 02:02:25 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[内存调度的FFA算法]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=42</guid>
		<description><![CDATA[-----]]></description>
			<content:encoded><![CDATA[<p>内存调度的FFA算法模拟：模拟内存调度中的FFa算法<br />
<img src="images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="article.asp?id=84" target="_blank">点击下载此文件</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%887%ef%bc%89%ef%bc%9a%e5%86%85%e5%ad%98%e8%b0%83%e5%ba%a6%e7%9a%84ffa%e7%ae%97%e6%b3%95%e6%a8%a1%e6%8b%9f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>整理下载（6）：进程调度的PR与RR算法</title>
		<link>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%886%ef%bc%89%ef%bc%9a%e8%bf%9b%e7%a8%8b%e8%b0%83%e5%ba%a6%e7%9a%84pr%e4%b8%8err%e7%ae%97%e6%b3%95.html</link>
		<comments>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%886%ef%bc%89%ef%bc%9a%e8%bf%9b%e7%a8%8b%e8%b0%83%e5%ba%a6%e7%9a%84pr%e4%b8%8err%e7%ae%97%e6%b3%95.html#comments</comments>
		<pubDate>Wed, 11 Apr 2007 01:59:41 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[P.行者无疆走四方]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[进程调度的PR与RR算法]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=43</guid>
		<description><![CDATA[-----]]></description>
			<content:encoded><![CDATA[<p>实验2  进程调度<br />
一、目的与要求<br />
1. 目的<br />
进程调度是处理及管理的核心内容，本次实验要求用C语言编写和调试一个简单的进程调度程序。调度算法可以任意选择或自行设计，例如简单轮转法和优先数法等。通过本次实验可以加深各使用进程控制块进行进程调度和各种调度算法的理解及其实施方法。<br />
2. 要求<br />
(1)	在微型计算机上设计进程控制块（PCB）结构，使其分别适用于简单轮转法和优先数调度算法。PCB通常包括以下信息：进程名、进程优先数（或轮转时间片）、进程所占用的CPU时间、进程的当前状态、当前队列指针等。根据调度算法的不同，PCB结构的内容可以作适当的增删。<br />
(2)	调度程序应包含2~3种不同的调度算法，运行时可任选一种，以利于各种算法的分析比较。基本要求是：优先数调度算法和简单循环轮转法。<br />
(3)	建立进程就绪队列，对各种不同的算法编制入链子程序，同时应具有显示或打印各进程的运行状态和参数的变化情况，便于观察各进程的调度过程。<br />
(4)	本次实验的上机时间为4学时。</p>
<p>二、实验内容<br />
1.	题目<br />
采用C语言编写程序，选用优先数调度算法或简单轮转法对五个进程进行调度，每个进程处于运行（Run）、就绪（Ready）和完成（Finish）三种状态之一，并假定起始状态为就绪状态。<br />
2.	进程控制块结构</p>
<p>      PCB     进程标识符</p>
<p>               连接指针</p>
<p>               优先数 | 轮转时间片</p>
<p>               占用的CPU时间片数</p>
<p>               进程所需时间片数</p>
<p>               进程状态<br />
进程控制块的链结构<br />
  Run              Ready                                   Tail</p>
<p>  Finish</p>
<p>其中：Run——表是当前运行进程指针<br />
      Ready——就绪队列头指针<br />
      Tail——就绪队列尾指针<br />
      Finish——完成队列指针<br />
3.	算法说明及程序框图<br />
(1)	为了便于处理，程序中进程的运行时间以时间片为单位进行计算，各进程的优先数或轮转时间片数，以及进程需要运行的时间片数，其初始值均有用户给定。<br />
(2)	优先数法<br />
进程就绪队列按优先数大小从高到低排列，链首进程首先投入运行。进程每执行一次，进程需要的时间片数减1、该进程的优先数减3。这样，该进程如果在一个时间片中没有完成，其优先数降低一级。接着仍是用该进程降低一级后的优先数与就绪队列中链首进程的优先数进行比较，如果仍是该进程的优先数高或相同，便让该进程继续执行；否则，调度就绪队列的链首进程投入运行。原运行过的进程按其现行优先数大小插入就绪队列，且改变它们对应的进程状态，一直到所有进程都运行完各自的时间片数。<br />
(3)	简单轮转法<br />
进程就绪队列按各进程进入的先后顺序排列。进程每次所需处理机的轮转式按其重要程度记入进程控制块中的轮转时间片数记录项。进程执行时，每运行一个时间片，进程还需要的时间片数减1，运行进程占用处理机的时间片数加1，然后比较占用CPU的时间片数是否与该进程的轮转时间片数相等，若相等则说明已达到轮转时间，应将现运行的进程排列就绪队列的末尾，调度队列上的首进程运行，且改变它们的进程状态，直至所有进程完成各自的时间片。<br />
(4)	程序框图<br />
a.	优先数调度</p>
<p>                                                                是</p>
<p>                                                 否</p>
<p>                                  是                           否</p>
<p>                 否</p>
<p>                                  是</p>
<p>b.	时间片轮转调度</p>
<p>                                                               否</p>
<p>                                                   否</p>
<p>                                  是                            是</p>
<p>                  否</p>
<p>                                    是</p>
<p>三、参考书目<br />
[1] 任爱华主编，操作系统实用教程，清华大学出版社，2001年（第一版）<br />
[2] 庞丽萍，李胜利编，操作系统原理，华中科技大学出版社，2000年（第三版）<br />
[3] 张尧学，史美林编著，计算机操作系统教程，清华大学出版社，2000年（第二版）</p>
<p><img src="images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="article.asp?id=84" target="_blank">点击下载此文件</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%886%ef%bc%89%ef%bc%9a%e8%bf%9b%e7%a8%8b%e8%b0%83%e5%ba%a6%e7%9a%84pr%e4%b8%8err%e7%ae%97%e6%b3%95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>整理下载（5）：文件管理模拟程序</title>
		<link>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%885%ef%bc%89%ef%bc%9a%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e6%a8%a1%e6%8b%9f%e7%a8%8b%e5%ba%8f.html</link>
		<comments>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%885%ef%bc%89%ef%bc%9a%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e6%a8%a1%e6%8b%9f%e7%a8%8b%e5%ba%8f.html#comments</comments>
		<pubDate>Wed, 11 Apr 2007 01:57:11 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[文件管理模拟程序]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=44</guid>
		<description><![CDATA[-----]]></description>
			<content:encoded><![CDATA[<p>一、 实验目的：<br />
1、 理解文件管理概念及方法。<br />
2、 锻炼算法分析和思考能力。<br />
3、 锻炼知识和实践运用的能力。<br />
4、 熟练掌握编程工具在操作系统上的应用。<br />
二、 设计要求：<br />
1、 模拟演示文件管理方法。<br />
2、 在图形界面上模拟显示文件管理过程并实现功能。<br />
3、 实现两中方式的管理方法。<br />
三、 实现办法：<br />
1、 使用工具VC++ 6.0进行界面和代码的实现。<br />
2、 以模拟的方式演示文件管理的过程。<br />
3、 具体以列表和文本的形式显现出来。<br />
四、 实验步骤：<br />
1、 主窗口的实现：<br />
A、 为对话框添加一列表控制框，用来显示添加的文件。<br />
B、 添加静态文本输入框，用来添加和显示文件。<br />
C、 添加按钮，分别为添加文件，查找文件，删除文件，磁盘整理。<br />
2、 主要代码的实现：<br />
A、 主窗口代码的实现：<br />
//初始化变量及列表框添加列<br />
listsize=150;<br />
listrow=0;<br />
delflag=false;<br />
findflag=true;<br />
addflag=false;<br />
m_list.Ins&#101;rtColumn(0,&#8221;盘块&#8221;,LVCFMT_CENTER,60);<br />
m_list.Ins&#101;rtColumn(1,&#8221;文件名&#8221;,LVCFMT_CENTER,70);<br />
for(int n=0;n</p>
<p><img src="images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="article.asp?id=84" target="_blank">点击下载此文件</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%885%ef%bc%89%ef%bc%9a%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e6%a8%a1%e6%8b%9f%e7%a8%8b%e5%ba%8f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>整理下载（4）：最佳路由计算</title>
		<link>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%884%ef%bc%89%ef%bc%9a%e6%9c%80%e4%bd%b3%e8%b7%af%e7%94%b1%e8%ae%a1%e7%ae%97.html</link>
		<comments>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%884%ef%bc%89%ef%bc%9a%e6%9c%80%e4%bd%b3%e8%b7%af%e7%94%b1%e8%ae%a1%e7%ae%97.html#comments</comments>
		<pubDate>Tue, 10 Apr 2007 12:04:46 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[最佳路由计算]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=45</guid>
		<description><![CDATA[-----]]></description>
			<content:encoded><![CDATA[<p>一、设计目标<br />
   用TC编程工具解决最佳路由计算，深入掌握网络设计和通信程序的设计原理。对计算机通信网络的设计实现有较深的了解，培养较高的通信网络设计能力。<br />
二、设计原理和方法<br />
	路由算法的目的是找到一条从源到目的地的一条“最好”路径（通常是指具有最小花费的路径）。花费可能是距离、信道带宽、平均通信量、通信开销、队列平均长度、测量到的时延和其它一些因素的综合。 即：给定一个代表该网络的图，找到一条由一系列链路组成的路径，其中：路径中的第一条链路连接到源。路径中的最后一条链路连接到目的地。对应所有的i，路径中的第i和i-1条连接到同一个节点上。最小花费路径：源到目的地之间所有可能的路径的链路花费总和最小。（若所有的链路花费相同，则最小花费路径即最短路径。）<br />
	Dijkstra前向搜索算法，定义：<br />
	N＝网络中所有节点的集合<br />
	S＝源节点<br />
	M＝已由算法归并的节点的集合<br />
	L（i,j）＝节点i与j之间链路的权值；若两个节点间没有直接连接则为∞<br />
	C（n）＝算法求得的当前从S到n的最少花费路由的花费<br />
	算法步骤：<br />
	1.初始化<br />
	M = {S}<br />
	C(n) = L(S,n) for n  S<br />
	2.从不在M中的相邻节点中找出一个具有和节点S的最少花费路由的节点，并且把该节点规约进M中。可以表示如下：寻找wM，使得C(w) =<br />
	把w加入到M中。<br />
3.更新最少花费路径C(n) = min[C(n),C(n)+L(w,n)] 对所有nM。如果后一项为最小值，则从S到n的路径变为从S到w的路径再加上从w到n的链路。<br />
4.重复步骤2和3，直到M=N。 整个过程中的每一次循环都得出了当前从源节点到各中间节点的路径及路径花费，而在M中的中间节点到源节点的最佳路由已经确定，直至M扩大到所有节点。<br />
	Dijkstra算法例:如下图（a）所示，采用标注方法，想要找出从A到D的最短路径。以标注A为永久性的作为开始，然后依次考察与A相邻的每个结点，用它们各自到A的距离重新标注这些结点。每当重新标注一个结点时，也标注了此试探所对应的源结点，以便在以后重建最终路径时，检查完与A相邻的每一个结点后，再来检查整个图中所有临时的标注结点，并使标注最小的结点成为永久的结点，如图（b）所示。这个结点就变成了新的工作结点。<br />
   现在从B开始，检查与B相邻的所有结点。如果B的标注与从B到所检查的结点的距离之和小于此结点的标注，便得到了一条更短的路径，所以应重新标注这个结点。<br />
   检查完所有与工作结点相邻的结点以后，如果可能，则已修改了临时标注。在整个图中查找具有最小值的临时加注标记结点，然后使该结点成为永久性的，并成为下一轮检查的工作结点。如图（b）~~(f)所示描述了此算法的前五步。<br />
三、设计的要求及功能<br />
1.设计要求：<br />
   设有n个节点， 依次编号为1、2、……，n；  ｍ个三元组（ｉt，ｊt，ｆt）,t＝1、2、……、m，两个节点ｉt和ｊt之间有双向连接的直接连接，其距离为ｆt。编写一个程序，对于输入节点ｇ（１≤ｇ≤ｎ）算出可以由ｇ达到的每个节点的最佳路由。<br />
	以ｎ＝７，ｇ＝６，１０个三元组（１，２，１３），（１，３，８）， （１，５，３０）， （１，７，３２）， （２，６，９）， （２，７，７），（３，４，５），（４，５，６），（５，６，２），（６，７，１７）为例运行程序得出结果，并验证其正确性。<br />
2.设计功能<br />
  用TC设计Dijkstra算法实现最短路由的计算，通过算法原理当g=6时可以算出g结点到其他结点的路由值。6-1（21）；6-2（9）；6-3（13）；6-4（8）；6-5（2）；6-6（0）；6-7（16）。而编写出的程序所得的结果应与上述结果相同。作为一个程序还应该可以验证其他结果的正确性，以达到计算最短路由的目的。<br />
四、设计步骤<br />
  程序第一部分设计了一个图的结构体typedef struct Graph，定义了用一个邻接矩阵来表示图（int R[M][M]）、用于存储最短路径的值（int length[M]）、节点个数（int vexnum）；程序第二部分是初始化图部分void creatgraph(Graph *g)，这里有打开文件sensor=fopen( &#8220;d:\\graph.txt&#8221;,&#8221;r&#8221;)，读取文件数据fscanf(sensor,&#8221;%d %d %d&#8221;,&#038;r1,&#038;r2, &#038;r3)、fscanf(sensor,&#8221;%d&#8221;,&#038;num)，存储文件数据g->vexnum=num、初始化邻接矩阵g->R[r1][r2]=r3；g->R[r2][r1]=r3等操作；程序第三部分是求节点m到所有节点的最短路径shortpath(Graph *g,int m)，这里是算法原理的实现部分，是程序的核心。这里最重要的是找出最小值那部分visited[a]==0&#038;&#038;g->R[p][a]!=0&#038;&#038;(g->R[p][a]+g->length[p])<g ->length[a])g->length[a]=g->R[p][a]+g->length[p]；程序第四部分是打印出邻接矩阵void print(Graph *g)，并显示在屏幕部分；程序第五部分是主函数部分void main()，实现了各个子程序之间的连接，达到程序的目的。<br />
五、程序流程图<br />
1.初始化图子程序                        2. 求节点m到所有节点的最短路径子程序图</p>
<p>3.主程序图</p>
<p>                                                0</p>
<p>                                       非0</p>
<p>六、源程序及分析<br />
#include<stdio .h><br />
#define M 20<br />
typedef struct<br />
{<br />
  int R[M][M];     /*用一个邻矩阵来表示图*/<br />
  int length[M];   /*用于存储最短路径的值*/<br />
  int vexnum;      /*节点个数*/<br />
} Graph;            /*定义结构体名字为Graph*/</p>
<p>int visited[M];    /*计算的最短路径的时候来存储节点是否被访问过，如果访问过就赋值1，没有被访问就赋值0*/</p>
<p>/*初始化图*/<br />
void creatgraph(Graph *g)<br />
{<br />
  int i,j,r1,num,r2,num1, r3;<br />
  FILE *sensor; /*读文件指针*/<br />
  sensor=fopen( &#8220;d:\\graph.txt&#8221;,&#8221;r&#8221;);    /*打开文件*/<br />
  if(sensor==NULL)<br />
  {<br />
    printf(&#8220;the file is null o&#114; not there&#8221;);<br />
  } else<br />
  {<br />
    fscanf(sensor,&#8221;%d&#8221;,&#038;num);     /*读第一个数，也就是节点个数*/<br />
    g->vexnum=num;/*把节点个数存入结构体Graph的vexnum变量中*/</p>
<p>    for(i=1;i< =num;i++)<br />
      for(j=1;j<=num;j++)<br />
        {<br />
          g->R[i][j]=0;        /*初始化邻接矩阵，0表示两个节点i,和j之间没有连接*/<br />
         }<br />
    for(num1=1;num1< =num;num++)<br />
    {<br />
        fscanf(sensor,"%d %d %d",&#038;r1,&#038;r2, &#038;r3);   /*一次读取文本文件中的3个数分别存储在r1,r2,r3中*/<br />
        if(r1!=0&#038;&#038;r2!=0)<br />
        {<br />
            g->R[r1][r2]=r3; /*按照文本文件的要求初始化邻接矩阵(即图)*/<br />
            g->R[r2][r1]=r3;<br />
        }<br />
    }<br />
}</p>
<p>}</p>
<p>/*求节点m到所有节点的最短路径*/<br />
shortpath(Graph *g,int m)<br />
{<br />
    int p,q,a,i,j,s;<br />
    for(i=1;i< =g->vexnum;i++)<br />
    {<br />
        g->length[i]=200;<br />
        visited[i]=0;        /*没有被访问过*/<br />
    }<br />
	g->length[m]=0;               /*   初始化            */</p>
<p>    for(i=1;i< =g->vexnum;i++)<br />
    {<br />
        p=i;q=500;<br />
        for(j=1;j< =g->vexnum;j++)<br />
            if(g->length[j]< =q&#038;&#038;visited[j]==0)<br />
            {<br />
                p=j;<br />
                q=g->length[j];</p>
<p>            }<br />
        visited[p]=1;      /*找出最小值*/<br />
        for(a=1;a< =g->vexnum;a++)<br />
           if(visited[a]==0&#038;&#038;g->R[p][a]!=0&#038;&#038;(g->R[p][a]+g->length[p])<g ->length[a])<br />
                   g->length[a]=g->R[p][a]+g->length[p];     /*原理*/</p>
<p>    }<br />
    for(a=1;a< =g->vexnum;a++)<br />
        printf(&#8220;%d&#8211;%d:%d\n&#8221;,m,a,g->length[a]);          /*打印所得结果*/</p>
<p>}<br />
/*打印该邻接矩阵*/<br />
void print(Graph *g)<br />
{<br />
    int i,j;<br />
    for(i=1;i< =g->vexnum;i++)<br />
    {<br />
        for(j=1;j< =g->vexnum;j++)<br />
        {<br />
            printf(&#8220;%2d &#8220;,g->R[i][j]);<br />
        }<br />
        printf(&#8220;\n&#8221;);<br />
    }<br />
}</p>
<p>/*主函数*/<br />
void main()<br />
{<br />
  int a,b;<br />
  Graph *g=(Graph*)malloc(sizeof(Graph));      /*从内存取所需的空间*/<br />
  creatgraph(g);<br />
  printf(&#8220;output the maxrin o&#114; not(yes.1,no.0):&#8221;);<br />
  scanf(&#8220;%d&#8221;,&#038;b);<br />
  if(b==1) print(g);<br />
  while(1)<br />
  {<br />
    printf(&#8220;\nplease input the source node:&#8221;);<br />
    scanf(&#8220;%d&#8221;,&#038;a);<br />
    shortpath(g,a);<br />
    printf(&#8220;\nGo on(1/y,0/n):&#8221;);<br />
    scanf(&#8220;%d&#8221;,&#038;b);<br />
    if(b==0)<br />
        break;<br />
  }<br />
}</p>
<p>七、测试数据及其结果<br />
  按照题目要求，当g=6时，理论结果为：6-1（21）；6-2（9）；6-3（13）；6-4（8）；6-5（2）；6-6（0）；6-7（16）<br />
  而运行程序所得的结果如下图所示：</p>
<p>所得的运行结果与理论值是一样的，证明了程序的正确性。<br />
  为了更加的验证程序的正确性，可以使g等于其他的值，如g=1，g=4得到如下结果：</p>
<p>通过计算其结果也使正确的。<br />
八、总结<br />
   通过两周的课程设计，我们进一步深入掌握网络设计和通信程序的设计原理。对计算机通信网络的设计实现有较深的了解，培养了较高的通信网络设计能力。在这次课程设计中，我选用的是TC编程环境，进一步复习了以前学过的C语言知识。在实现最佳路由计算时，我选用了最实用的Dijkstra前向搜索算法。课程设计中最重要的就是算法的实现，在这过程中花的时间是最多的。我主要使用了数组和指针来实现，其实也可只通过数组来实现的，不过为了增加难度我也选用了指针。也用了文件的一些操作，指针和文件部分是我以前没有学好的，通过翻阅参考资料，我还是克服了这一难题。路由在网络中是很重要的，只有最佳的路由才能使网络更加的有效，在设计原理部分时，经常会遇到思考的不全面，通过不断的调试和修改，达到了算法的实现。我还复习了计算机通信网络课本上的知识，书本上都是理论部分，而在程序就实践出来了，使我获益很多。在这次课程设计也有些让人遗憾的地方，我计算出了最佳路由的结果但是没有把最佳路由的过程再现在屏幕中。<br />
九、参考文献<br />
  高传善等编著．数据通信与计算机网络，高等教育出版社，2004年<br />
  李鹏.计算机通信技术及其程序设计.西安电子科技大学出版社,1998年<img src="images/download.gif" alt="只允许会员下载" style="margin:0px 2px -4px 0px"/> 该文件只允许会员下载! <a href="login.asp">登录</a> | <a href="register.asp">注册</a></g></stdio></g></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%884%ef%bc%89%ef%bc%9a%e6%9c%80%e4%bd%b3%e8%b7%af%e7%94%b1%e8%ae%a1%e7%ae%97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>微机原理及接口技术课程设计交通灯</title>
		<link>http://www.tuscany.hk/2007/04/jiaotongdeng.html</link>
		<comments>http://www.tuscany.hk/2007/04/jiaotongdeng.html#comments</comments>
		<pubDate>Tue, 10 Apr 2007 09:21:53 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[交通灯]]></category>
		<category><![CDATA[微机原理]]></category>
		<category><![CDATA[课程设计]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=47</guid>
		<description><![CDATA[序言 十字道口的红绿灯是交通法规的无声命令，是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前，国内大多数城市正在采用“自动”红绿交通灯，它具有固定的“红灯—绿灯”转换间隔，并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。在交通灯的通行与禁止时间控制显示中，通常要么东西、南北两方向各50秒；要么根据交通规律，东西方向60秒，南北方向40秒，时间控制都是固定的。交通灯的时间控制显示，以固定时间值预先“固化”在单片机中，每次只是以一定周期交替变化。但是，实际上不同时刻的车辆流通状况是十分复杂的，是高度非线性的、随机的，还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费，出现绿灯方向车辆较少，红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化，其最大的缺陷就在于当路况发生变化时，不能满足司机与路人的实际需要，轻者造成时间上的浪费，重者直接导致交通堵塞，导致城市交通效率的下降。 目前，有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况，自动判断红绿灯时间间隔，以保证最大车流量，减少道口的交通堵塞。但是却不像定时控制，能用数字显示器显示当前灯色剩余时间，以便于驾驶员随时掌握自己的驾驶动作，及时停车或启动。 本次课程设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。 目录 一、实验目的………………………………………………………………………………………3 二、实验内容………………………………………………………………………………………3 三、交通信号灯实时控制和管理的总体设计……………………………………………………4 （一） 芯片选择及端口选择……………………………………………………………4 （二） 实验连接线路图及相关说明……………………………………………………5 （三） 设计思想…………………………………………………………………………6 （四） 设计流程图………………………………………………………………………7 四、实验环境及条件………………………………………………………………………………9 五、源程序清单……………………………………………………………………………………9 （一） 初始化主程序……………………………………………………………………9 （二） 中断服务程序……………………………………………………………………11 六、程序运行结果………………………………………………………………………………13 七、课程设计总结…………………………………………………………………………………13 八、参考文献………………………………………………………………………………………15 微机原理及接口技术课程设计 一、实验目的 ⒈ 了解交通灯管理的基本工作原理 ⒉ 熟悉8259A中断控制器的工作原理和应用编程 ⒊ 熟悉8255A并行接口的各种工作方式和应用 ⒋ 熟悉8253计数器/定时器的工作方式及应用编程，掌握利用软硬件相结合定时的方法 ⒌ 掌握多位LED显示问题的解决 二、实验内容 本次课程设计的内容为交通信号灯的实时控制和管理。 某交通干线车行道和人行横道的交通信号灯设置如图所示： 车行道 车行道 车行道 车行道 其中： 表示红灯、 表示黄灯、 表示绿灯 具体要求如下： 1．东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟； 2．1分钟后，东西方向的黄灯闪烁5秒钟，以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。在南北方向亮红灯期间，在2位数码管上显示计数值（每秒减1），从65减为0。 3．东西方向的黄灯闪烁5秒钟后，转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟； 4．南北方向放行20秒钟后，转为南北方向的黄灯闪烁5秒钟，以警示将切换红绿灯。此时东西方向仍维持红灯点亮。 5．南北方向的黄灯闪烁5秒钟后，再转为东西方向车辆放行1分钟。如此循环重复。 三、交通信号灯实时控制和管理的总体设计 ㈠ 芯片选择及端口选择 1．用实验系统8255A实现对信号灯的控制（所用端口自定）；2位数码显示用8255A实现控制。 2. 用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断，以实现要 求的1分钟、5秒钟和20秒的定时。 实验系统8235的计数器2的CLK2接OPCLK，频率为1.19318MHZ；GATE2已接 +5V； 定时采用软硬件相结合的方式实现。 ⒊ 用实验系统的发光二极管模拟红绿灯。 注：8259A的端口地址为：218H、219H 8255A的端口地址为：端口A-200H、端口B-201H、端口C-202H、控制端口-203H 8253的端口地址为：计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。 ㈡ 实验连接线路图及相关说明 （1）线路图 +5v 8259A IRQ0 ○ ○ INTR INTR INTA INTA ○ 2.5MHZ ◎表示发光二极管 ○ ○ . . . . . . . . . . . . . . . . . . . . . . . . . . . ○ ○ ○ 试验箱交通灯组 片选信号引脚连接 8259A的片选信号引脚连接：218－21F 8255A的片选信号引脚连接：200－207 8253 的片选信号引脚连接：208－20F （三）设计思想 设计数器0的计数初值为25000，由于CLK0接脉冲信号，频率为2.5MHZ，所以每10ms中断一次。利用CX对不同的状态时间计数，用来实现计数器0对1分钟，20秒钟，5秒钟的定时。中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。每进入中断即刷新LED显示。用对于东西车道和南北车道黄灯闪烁利用标志位判断实现，满足比较条件就暗，不满足条件就亮。 （四）设计流程图 主程序流程图： 中断服务程序流程图： 四、实验环境及条件 ⒈超想—3000TB综合实验/仿真系统 ⒉导线 3.微机原理及接口技术试验箱 五、源程序清单 ⒈本次设计中，选用8235的计数器0定时向实验系统主片8259A的IRQ0请求中断。设置8253的计数器0每10ms请求一次中断，工作于模式3；8255的A端口控制交通灯；数码管驱动程序采用指导老师提供的程序。 初始化程序： DATA SEGMENT LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ；存放七段代码表 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H D1 EQU 10H D2 EQU 200H ；8255A端口A EA EQU 200H ；8259端口地址 EE EQU 203H CONTROL EQU 20bH ；8253端口地址 COUNT0 EQU 208H COUNT1 EQU 209H COUNT2 EQU 20aH Z8279 EQU 222H D8279 EQU 220H LEDMOD EQU 00 ;左边输入,八位显示外部译码八位显示 LEDFEQ EQU 38H ;扫描频率 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA CODE SEGMENT ASSUME CS:CODE CONT DB 0 CONT1 DB 0 CONT2 DB 0 BKSD DB 0 BKAD DB 0 BKDA DB 0 TEMP DB 0 ;******************************************* START: MOV AX,0 MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,2000H MOV SI,0FH*4 MOV [SI],AX MOV AX,0 MOV [SI+2],AX IN AL,218H AND AL,7FH OUT 219H,AL CLI MOV AL,80H ;初始化8255 OUT EE,AL MOV AL,00 OUT EA,AL MOV AL,0f0H OUT EA,AL MOV DX,218H ;8259初始化 MOV AL,00010010b OUT DX,AL MOV AL,08H MOV DX,219H OUT DX,AL MOV DX,203H ;设置为全输出 MOV AL,80H OUT DX,AL MOV DX,200H MOV AL,0ffh OUT DX,AL ;清LED MOV DX,200H ;全红 MOV AL,0F0H OUT DX,AL MOV AL,00110110b ；初始化 8253 OUT CONTROL,AL MOV AX,2500 MOV DX,COUNT0 OUT DX,AL MOV AL,AH OUT COUNT0 ,AL MOV AX,DATA MOV DS,AX 中断服务程序： A1: STI HLT JMP A1 IRQ0: ；写数码管程序，暂缺 JMP COMPARE COMPARE:CMP DL,0 JZ STATE0 CMP DL,1 JZ STATE1 CMP DL,2 JZ STATE2 CMP DL,3 JZ STATE3 STATE0: ；状态0：东西红南北绿 mov al,01011010b out D2,al DEC SI JNZ CHANGE1 DEC DH MOV SI,100 CHANGE1:DEC CX CMP CX,0 JNZ M0 MOV CX,500 STATE1: DEC DI ；状态1：东西方向黄灯闪烁，南北绿灯 CMP DI,0 JNZ SHINE1 MOV AL, 00001010b ；东西灭，南北绿 OUT D2,AL MOV DI,50 JMP CHANGE SHINE1: MOV AL,11111010B ；东西黄，南北绿 OUT D2,AL CHANGE: DEC SI JNZ CHANGE2 DEC DI MOV SI,100 CHANGE2:DEC CX CMP CX,0 JNZ M1 MOV CX,2000 MOV DH,25 STATE2: MOV AL,10100101b ；状态2：东西绿灯，南北红灯 OUT D2,AL DEC SI JNZ CHANGE3 DEC DH MOV SI,100 CHANGE3:DEC CX CMP CX,0 JNZ M2 MOV CX,500 STATE3: DEC DI ；状态3：东西绿灯，南北黄灯闪烁 CMP DI,0 JNZ SHINE2 MOV AL,10100000B ；东西绿灯，南北灭 OUT D2,AL MOV DI,50 JMP SOURCE SHINE2: MOV AL,10101111B ；东西绿，南北黄 OUT D2,AL SOURCE: DEC SI JNZ CHANGE4 DEC DH MOV SI,100 CHANGE4:DEC CX CMP CX,0 JNZ M3 MOV CX,6000 MOV DH,65 M0: MOV DL,0 ；下次进入状态0 JMP EXIT M1: MOV DL,1 ；下次进入状态1 JMP EXIT M2: MOV DL,2 ；下次进入状态2 JMP EXIT M3: MOV DL,3 ；下次进入状态3 EXIT: MOV AL,20H OUT 218H,AL IRET CODE ENDS END START 六、程序运行结果 1．即东西方向的绿灯和南北方向的红灯同时点亮1分钟； 2．1分钟后，东西方向的黄灯闪烁5秒钟，。此时南北方向仍维持红灯点亮。 3．东西方向的黄灯闪烁5秒钟后，转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟； 4．...]]></description>
			<content:encoded><![CDATA[<p>序言<br />
十字道口的红绿灯是交通法规的无声命令，是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前，国内大多数城市正在采用“自动”红绿交通灯，它具有固定的“红灯—绿灯”转换间隔，并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。在交通灯的通行与禁止时间控制显示中，通常要么东西、南北两方向各50秒；要么根据交通规律，东西方向60秒，南北方向40秒，时间控制都是固定的。交通灯的时间控制显示，以固定时间值预先“固化”在单片机中，每次只是以一定周期交替变化。但是，实际上不同时刻的车辆流通状况是十分复杂的，是高度非线性的、随机的，还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费，出现绿灯方向车辆较少，红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化，其最大的缺陷就在于当路况发生变化时，不能满足司机与路人的实际需要，轻者造成时间上的浪费，重者直接导致交通堵塞，导致城市交通效率的下降。    目前，有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况，自动判断红绿灯时间间隔，以保证最大车流量，减少道口的交通堵塞。但是却不像定时控制，能用数字显示器显示当前灯色剩余时间，以便于驾驶员随时掌握自己的驾驶动作，及时停车或启动。<br />
本次课程设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。</p>
<p>目录</p>
<p>一、实验目的………………………………………………………………………………………3<br />
二、实验内容………………………………………………………………………………………3<br />
三、交通信号灯实时控制和管理的总体设计……………………………………………………4<br />
（一） 芯片选择及端口选择……………………………………………………………4<br />
（二） 实验连接线路图及相关说明……………………………………………………5<br />
（三） 设计思想…………………………………………………………………………6<br />
（四） 设计流程图………………………………………………………………………7<br />
四、实验环境及条件………………………………………………………………………………9<br />
五、源程序清单……………………………………………………………………………………9<br />
（一） 初始化主程序……………………………………………………………………9<br />
（二） 中断服务程序……………………………………………………………………11<br />
六、程序运行结果………………………………………………………………………………13<br />
七、课程设计总结…………………………………………………………………………………13<br />
八、参考文献………………………………………………………………………………………15</p>
<p>微机原理及接口技术课程设计</p>
<p>一、实验目的<br />
⒈ 了解交通灯管理的基本工作原理<br />
⒉ 熟悉8259A中断控制器的工作原理和应用编程<br />
⒊ 熟悉8255A并行接口的各种工作方式和应用<br />
⒋ 熟悉8253计数器/定时器的工作方式及应用编程，掌握利用软硬件相结合定时的方法<br />
⒌ 掌握多位LED显示问题的解决</p>
<p>二、实验内容<br />
本次课程设计的内容为交通信号灯的实时控制和管理。<br />
某交通干线车行道和人行横道的交通信号灯设置如图所示：</p>
<p>车行道</p>
<p>车行道                                      车行道</p>
<p>车行道</p>
<p>其中：   表示红灯、  表示黄灯、  表示绿灯<br />
具体要求如下：<br />
1．东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟；<br />
2．1分钟后，东西方向的黄灯闪烁5秒钟，以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。在南北方向亮红灯期间，在2位数码管上显示计数值（每秒减1），从65减为0。<br />
3．东西方向的黄灯闪烁5秒钟后，转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟；<br />
4．南北方向放行20秒钟后，转为南北方向的黄灯闪烁5秒钟，以警示将切换红绿灯。此时东西方向仍维持红灯点亮。<br />
5．南北方向的黄灯闪烁5秒钟后，再转为东西方向车辆放行1分钟。如此循环重复。</p>
<p>三、交通信号灯实时控制和管理的总体设计<br />
㈠ 芯片选择及端口选择<br />
1．用实验系统8255A实现对信号灯的控制（所用端口自定）；2位数码显示用8255A实现控制。<br />
2. 用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断，以实现要<br />
求的1分钟、5秒钟和20秒的定时。<br />
实验系统8235的计数器2的CLK2接OPCLK，频率为1.19318MHZ；GATE2已接 +5V；<br />
定时采用软硬件相结合的方式实现。<br />
⒊ 用实验系统的发光二极管模拟红绿灯。<br />
注：8259A的端口地址为：218H、219H<br />
8255A的端口地址为：端口A-200H、端口B-201H、端口C-202H、控制端口-203H<br />
8253的端口地址为：计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。</p>
<p>㈡ 实验连接线路图及相关说明<br />
（1）线路图</p>
<p>+5v<br />
8259A</p>
<p>IRQ0   ○              ○</p>
<p>INTR         INTR<br />
INTA         INTA</p>
<p>○<br />
2.5MHZ<br />
◎表示发光二极管</p>
<p>○     ○<br />
.  .  .  .  .                        .   .   .   .<br />
.  .  .  .  .                        .   .   .   .<br />
.  .  .  .  .                        .   .   .   .<br />
○     ○</p>
<p>○                                       试验箱交通灯组</p>
<p>片选信号引脚连接<br />
8259A的片选信号引脚连接：218－21F<br />
8255A的片选信号引脚连接：200－207<br />
8253 的片选信号引脚连接：208－20F</p>
<p>（三）设计思想</p>
<p>设计数器0的计数初值为25000，由于CLK0接脉冲信号，频率为2.5MHZ，所以每10ms中断一次。利用CX对不同的状态时间计数，用来实现计数器0对1分钟，20秒钟，5秒钟的定时。中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。每进入中断即刷新LED显示。用对于东西车道和南北车道黄灯闪烁利用标志位判断实现，满足比较条件就暗，不满足条件就亮。</p>
<p>（四）设计流程图<br />
主程序流程图：</p>
<p>中断服务程序流程图：</p>
<p>四、实验环境及条件<br />
⒈超想—3000TB综合实验/仿真系统<br />
⒉导线<br />
3.微机原理及接口技术试验箱</p>
<p>五、源程序清单<br />
⒈本次设计中，选用8235的计数器0定时向实验系统主片8259A的IRQ0请求中断。设置8253的计数器0每10ms请求一次中断，工作于模式3；8255的A端口控制交通灯；数码管驱动程序采用指导老师提供的程序。</p>
<p>初始化程序：<br />
DATA SEGMENT<br />
LED  DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H       ；存放七段代码表<br />
DB  7FH,6FH,77H,7CH,39H,5EH,79H,71H<br />
D1      EQU 10H<br />
D2      EQU 200H            ；8255A端口A<br />
EA   EQU 200H               ；8259端口地址<br />
EE   EQU 203H<br />
CONTROL EQU 20bH          ；8253端口地址<br />
COUNT0  EQU 208H<br />
COUNT1  EQU 209H<br />
COUNT2  EQU 20aH<br />
Z8279    EQU       222H<br />
D8279    EQU       220H<br />
LEDMOD   EQU       00   ;左边输入,八位显示外部译码八位显示<br />
LEDFEQ   EQU       38H  ;扫描频率<br />
DATA ENDS<br />
CODE SEGMENT<br />
ASSUME CS:CODE,DS:DATA<br />
CODE   SEGMENT<br />
ASSUME CS:CODE<br />
CONT	DB 0<br />
CONT1	DB 0<br />
CONT2	DB 0<br />
BKSD	DB 0<br />
BKAD	DB 0<br />
BKDA	DB 0<br />
TEMP	DB 0<br />
;*******************************************<br />
START:<br />
MOV AX,0<br />
MOV DS,AX<br />
MOV AX,OFFSET IRQ0<br />
ADD AX,2000H<br />
MOV SI,0FH*4<br />
MOV [SI],AX<br />
MOV AX,0<br />
MOV [SI+2],AX<br />
IN AL,218H<br />
AND AL,7FH<br />
OUT 219H,AL<br />
CLI</p>
<p>MOV AL,80H        ;初始化8255<br />
OUT EE,AL<br />
MOV AL,00<br />
OUT EA,AL<br />
MOV AL,0f0H<br />
OUT EA,AL</p>
<p>MOV   DX,218H      ;8259初始化<br />
MOV   AL,00010010b<br />
OUT   DX,AL<br />
MOV   AL,08H<br />
MOV   DX,219H<br />
OUT   DX,AL</p>
<p>MOV     DX,203H    ;设置为全输出<br />
MOV     AL,80H<br />
OUT     DX,AL<br />
MOV     DX,200H<br />
MOV     AL,0ffh<br />
OUT     DX,AL       ;清LED<br />
MOV     DX,200H     ;全红<br />
MOV     AL,0F0H<br />
OUT     DX,AL</p>
<p>MOV AL,00110110b   ；初始化 8253<br />
OUT CONTROL,AL<br />
MOV AX,2500<br />
MOV DX,COUNT0<br />
OUT DX,AL<br />
MOV AL,AH<br />
OUT COUNT0 ,AL<br />
MOV AX,DATA<br />
MOV DS,AX</p>
<p>中断服务程序：<br />
A1:	STI<br />
HLT<br />
JMP A1<br />
IRQ0: 	                               ；写数码管程序，暂缺<br />
JMP COMPARE<br />
COMPARE:CMP DL,0<br />
JZ STATE0<br />
CMP DL,1<br />
JZ STATE1<br />
CMP DL,2<br />
JZ STATE2<br />
CMP DL,3<br />
JZ STATE3</p>
<p>STATE0:	            ；状态0：东西红南北绿<br />
mov al,01011010b<br />
out D2,al<br />
DEC SI<br />
JNZ CHANGE1<br />
DEC DH<br />
MOV SI,100<br />
CHANGE1:DEC CX<br />
CMP CX,0<br />
JNZ M0<br />
MOV CX,500<br />
STATE1:	DEC DI         ；状态1：东西方向黄灯闪烁，南北绿灯<br />
CMP DI,0<br />
JNZ SHINE1<br />
MOV AL, 00001010b     ；东西灭，南北绿<br />
OUT D2,AL<br />
MOV DI,50<br />
JMP CHANGE<br />
SHINE1:	MOV AL,11111010B     ；东西黄，南北绿<br />
OUT D2,AL<br />
CHANGE:	DEC SI<br />
JNZ CHANGE2<br />
DEC DI<br />
MOV SI,100<br />
CHANGE2:DEC CX<br />
CMP CX,0<br />
JNZ M1<br />
MOV CX,2000<br />
MOV DH,25<br />
STATE2:	MOV AL,10100101b          ；状态2：东西绿灯，南北红灯<br />
OUT D2,AL<br />
DEC SI<br />
JNZ CHANGE3<br />
DEC DH<br />
MOV SI,100<br />
CHANGE3:DEC CX<br />
CMP CX,0<br />
JNZ M2<br />
MOV CX,500<br />
STATE3: DEC DI                   ；状态3：东西绿灯，南北黄灯闪烁<br />
CMP DI,0<br />
JNZ SHINE2<br />
MOV AL,10100000B                   ；东西绿灯，南北灭<br />
OUT D2,AL<br />
MOV DI,50<br />
JMP SOURCE<br />
SHINE2:	MOV AL,10101111B            ；东西绿，南北黄<br />
OUT D2,AL<br />
SOURCE:	DEC SI<br />
JNZ CHANGE4<br />
DEC DH<br />
MOV SI,100<br />
CHANGE4:DEC CX<br />
CMP CX,0<br />
JNZ M3<br />
MOV CX,6000<br />
MOV DH,65<br />
M0:	MOV DL,0           ；下次进入状态0<br />
JMP EXIT<br />
M1:	MOV DL,1           ；下次进入状态1<br />
JMP EXIT<br />
M2:	MOV DL,2           ；下次进入状态2<br />
JMP EXIT<br />
M3:	MOV DL,3           ；下次进入状态3<br />
EXIT:	MOV AL,20H<br />
OUT 218H,AL<br />
IRET<br />
CODE ENDS<br />
END START</p>
<p>六、程序运行结果</p>
<p>1．即东西方向的绿灯和南北方向的红灯同时点亮1分钟；<br />
2．1分钟后，东西方向的黄灯闪烁5秒钟，。此时南北方向仍维持红灯点亮。<br />
3．东西方向的黄灯闪烁5秒钟后，转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟；<br />
4． 20秒钟后，转为南北方向的黄灯闪烁5秒钟，此时东西方向仍维持红灯点亮。<br />
5．南北方向的黄灯闪烁5秒钟后，东西方向的绿灯和南北方向的红灯同时点亮1分钟。如此循环重复。<br />
6. 由于数码显示模块没有完成，数码管没有倒计时显示。</p>
<p>七、课程设计总结<br />
1、软件延时与定时器计时<br />
软件延时，设计简单，使用方便，但是无法进行精确计时，无法在实际应用中进行使用，本次设计采用了，定时器0进行计时，每10ms产生一个脉冲信号，可以准确的计时并方便8段数码管进行显示</p>
<p>2、使用中断的好处<br />
使用中断比较麻烦，在试验中需要两次加载初始化程序和中断服务程序，并且需要手工指定中断服务地址和中断向量号；但是使用中断可以进行多样化设计，强化程序功能与执行效率。<br />
在本设计中程序每10MS请求一次中断，实现精确定时与数码管显示刷新。</p>
<p>3、团队合作<br />
在产品或项目开发中，团队合作是非常重要的，在对设计进行模块划分、统一变量之后，分别设计不同设计然后进行整合，这样进行开发是非常快速简单的。</p>
<p>4、关于本次设计<br />
在本次设计中，使用了8259A中断控制器、8253计数器、8255可编程并行接口实现了，对南北、东西方向交通的分别计时、分别控制，但是程序没有实现对双向交通的数码显示，数码显示模块空缺，我们会尽快将程序补全，使其具有完整的交通灯功能，程序电子文档:http://kyhut.com/download/weiji.rar。与其他设计相比，并非复制并修改老师的代码，做到了自主设计，在设计中掌握的计算机接口设计的基本方法、锻炼了团队合作的能力。<br />
在此次设计中体也会到了交流与保护知识专利的重要性，在千篇一律的设计中，显示自己的特色，在实用性和执行效率间取得平衡，是设计的关键所在，本次设计由于不熟悉试验箱8段代码管的线路，未能进行数码倒计时显示，这是设计的遗憾，未能很好的借鉴老师提供的代码，是本次设计不能完美的原因。</p>
<p>2005.12.22</p>
<p>参考文献：<br />
1、16/32位微机原理、汇编语言及接口技术（第二版）   机械工业出版社      钱晓捷、陈涛<br />
2、微机原理与接口技术课程设计   机械工业出版社     宋杰等<br />
3、微型计算机接口技术及应用     华中科技大学出版社       刘乐善</p>
<p><a href="http://www.ictdocs.com/2009/08/traffic-lights/"><span style="color: #ff0000;">下载</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/jiaotongdeng.html/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>整理下载（1）：简单浏览器的设计</title>
		<link>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%881%ef%bc%89%ef%bc%9a%e7%ae%80%e5%8d%95%e6%b5%8f%e8%a7%88%e5%99%a8%e7%9a%84%e8%ae%be%e8%ae%a1.html</link>
		<comments>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%881%ef%bc%89%ef%bc%9a%e7%ae%80%e5%8d%95%e6%b5%8f%e8%a7%88%e5%99%a8%e7%9a%84%e8%ae%be%e8%ae%a1.html#comments</comments>
		<pubDate>Tue, 10 Apr 2007 09:19:24 +0000</pubDate>
		<dc:creator>若谷</dc:creator>
				<category><![CDATA[E.资源共享咕唧集]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.tuscany.hk/blog/?p=48</guid>
		<description><![CDATA[-----]]></description>
			<content:encoded><![CDATA[<p><a title="Flickr 上 jin.mingkun 的 dscf0039" href="http://www.flickr.com/photos/ituscany/4397698420/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/73e2_4397698420_635507304a.jpg" alt="dscf0039" width="500" height="375" /></a><br />
前景</p>
<p><a title="Flickr 上 jin.mingkun 的 dscf0040" href="http://www.flickr.com/photos/ituscany/4396934025/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/685c_4396934025_216089f333.jpg" alt="dscf0040" width="500" height="375" /></a><br />
南粤苑<br />
<a title="Flickr 上 jin.mingkun 的 dscf0069" href="http://www.flickr.com/photos/ituscany/4397717714/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/c8e3_4397717714_a018d50510.jpg" alt="dscf0069" width="500" height="375" /></a><br />
游鱼<br />
<a title="Flickr 上 jin.mingkun 的 dscf0078" href="http://www.flickr.com/photos/ituscany/4397725474/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/b272_4397725474_65b176b0c4.jpg" alt="dscf0078" width="500" height="375" /></a><br />
舞风表演<br />
<a title="Flickr 上 jin.mingkun 的 dscf0091" href="http://www.flickr.com/photos/ituscany/4396965743/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/91cd_4396965743_bd217c7f68.jpg" alt="dscf0091" width="500" height="375" /></a><br />
<a title="Flickr 上 jin.mingkun 的 dscf0095" href="http://www.flickr.com/photos/ituscany/4397734128/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/8fd4_4397734128_aaf4255480.jpg" alt="dscf0095" width="500" height="375" /></a><br />
<a title="Flickr 上 jin.mingkun 的 dscf0125" href="http://www.flickr.com/photos/ituscany/4397745696/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/4844_4397745696_afa8393030.jpg" alt="dscf0125" width="500" height="375" /></a><br />
<a title="Flickr 上 jin.mingkun 的 dscf0128" href="http://www.flickr.com/photos/ituscany/4397748790/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/dfe6_4397748790_232fde2d5a.jpg" alt="dscf0128" width="500" height="375" /></a><br />
<a title="Flickr 上 jin.mingkun 的 dscf0132" href="http://www.flickr.com/photos/ituscany/4396983595/"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/edbd_4396983595_8aaf4e3b79.jpg" alt="dscf0132" width="500" height="375" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4397751482/" title="Flickr 上 jin.mingkun 的 dscf0136"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/7a1f_4397751482_364b6176cd.jpg" width="500" height="375" alt="dscf0136" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4396974521/" title="Flickr 上 jin.mingkun 的 dscf0105"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/5304_4396974521_4aecbb629a.jpg" width="500" height="375" alt="dscf0105" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4396984415/" title="Flickr 上 jin.mingkun 的 dscf0135"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/fd2b_4396984415_88d335f652.jpg" width="500" height="375" alt="dscf0135" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4396989355/" title="Flickr 上 jin.mingkun 的 dscf0147"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/37b2_4396989355_c0d65a51b6.jpg" width="500" height="375" alt="dscf0147" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4396992081/" title="Flickr 上 jin.mingkun 的 dscf0150"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/8333_4396992081_30235497bc.jpg" width="500" height="375" alt="dscf0150" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4397759026/" title="Flickr 上 jin.mingkun 的 dscf0151"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/04b0_4397759026_428fa1e324.jpg" width="500" height="375" alt="dscf0151" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4397761906/" title="Flickr 上 jin.mingkun 的 dscf0157"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/a971_4397761906_ed7fd7011b.jpg" width="500" height="375" alt="dscf0157" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4396997321/" title="Flickr 上 jin.mingkun 的 dscf0161"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/34bb_4396997321_4c0e222269.jpg" width="500" height="375" alt="dscf0161" /></a><br />
<a href="http://www.flickr.com/photos/ituscany/4397762684/" title="Flickr 上 jin.mingkun 的 dscf0160"><img src="http://photo.tuscany.hk/wp-content/uploads/2010/06/f3e4_4397762684_d0c325900b.jpg" width="500" height="375" alt="dscf0160" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tuscany.hk/2007/04/%e6%95%b4%e7%90%86%e4%b8%8b%e8%bd%bd%ef%bc%881%ef%bc%89%ef%bc%9a%e7%ae%80%e5%8d%95%e6%b5%8f%e8%a7%88%e5%99%a8%e7%9a%84%e8%ae%be%e8%ae%a1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
