《串口通信 智能仪表综合训练设计说明书文.doc》由会员分享,可在线阅读,更多相关《串口通信 智能仪表综合训练设计说明书文.doc(30页珍藏版)》请在三一办公上搜索。
1、*智能仪表综合训练设计说明书题 目:串行口通信学生姓名:*学 号:0*专 业:测控技术与仪器班 级: 指导教师:* 老师摘 要本设计采用STC89C52单片机作为下位机,PC机作为上位机。二者通过RS-232串行口接受或上传数据。我们要实现串口通信是通过PC机发出信号,然后经过数码管显示。在本设计中,选用键盘输入数据,共采用四个键盘和四个八段LED数码管显示。四个键盘分别用来 显示、选位按键、加一按键和减一按键,而四个八段LED数码管分别显示个、十、百、千位。在显示方面采用动态显示。调试方面是通过串口调试助手完成数据的发送和查看LED数码管的显示出的数字是否与输入一致。关键词:串行通信;STC
2、89C52;RS-232目 录摘 要I第一章 概述11.1串行通信11.1.1串行通信的概念和特点11.1.2串行通信的分类11.1.3串行通信的工作模式21.1.4通信参数4第二章 总体方案设计62.1主要原件的选择62.1.1STC89C52单片机的功能特性描述62.1.2 RS-232的功能特性描述72.2显示的设计方案92.3按键的设计方案92.4晶振的选择9第三章 硬件设计103.1单片机最小应用系统的设计103.1.1 STC89C52单片机的时钟电路113.1.2 STC89C52单片机的复位电路123.2中断编码按键是硬件设计133.3数码管显示的硬件设计143.3 PCB设计
3、153.3.1 Protel99SE软件153.3.2 PCB板的设计流程16第四章 软件设计174.1程序流程图174.2主程序的设计174.3 子程序的设计184.3.1串口初始化程序的设计184.3.2数据发送和接受程序的设计194.3.3 显示程序的设计204.3.4延时子程序的设计20总结21参考文献22附录一 电路原理图23附录二 串口通信源程序24第一章 概述1.1串行通信1.1.1串行通信的概念和特点串行通信是指使用一条数据线(另外需要地线,可能还需要控制线),将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机
4、与计算机、计算机与外设之间的远距离通信。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。如图1-1所示。图1-1串行通信串行通信的特点是:数据传送按位顺序进行,最少值只需要一根传输线即可完成,节省传输线。与并行通信相比还有较为显著的优点,传输距离长,可以几米到几千米。在长距离内串行数据传送速率比并行数据传送速率快,串行通信的通信时钟频率容易提高,串行通信的干扰能力十分强,其信号间的互相干扰完全可以忽略。但是串行通信传送速率比并行通信慢很多,并行通信时间为T,则串行时间为NT。正是由于串行通信的接线少、成本低,因此它在数据采集和控制系统中得到了广泛的应用,
5、产品也多种多样。RS-232的通信距离一般为15米,波仕电子的RS-232可以达到500米以上。1.1.2串行通信的分类串行传输中,数据时一位一位按照到达的顺序依次传输的,每位数据的发送的接受都需要时钟来控制,发送端通过发送时钟确定数据位的开始和结束,接受端需要在适当的时间间隔对数据流进行采样来正确的识别数据。接收端和发送端必须保持步调一致,否则数据传输就会出现差错。为了解决以上问题,串行通信可采用以下两种方法:同步通信和异步通信。同步通信:同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。 它们均由同步字符、数据字
6、符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。 异步通信:串行异步通信即RS232通信,是主机与外部硬件设备的常用通讯方式。可以双向传输。如卫星信号接收版收到的数据传导到计算机处理,主要使用串行异步通信处理。 异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和
7、接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。 接收端检测到传输线上发送过来的低电平逻辑0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。 异步通信中典型的帧格式是:1位起始位,7位(或8位)数据位,1位奇偶校验位,2位停止位。1.1.3串行通信的工作模式通过单线传输信息是串行数据通信的基础。数据通常是在两个站(点对点)之间进行传送,按照数据流方向可分成三种传送模式:单工、半双工、全双工。1. 单工形式:早期的电流环单工形式的数据传送是单向的。通信双方中,一方固定是发送端,另一方则固定是接收端,使用一
8、根传输线,如图1-2所示。图1-2 单工形式2. 半双工形式:RS-485半双工通信使用同一根传输线,即可发送数据又可接受数据,但不能同时发送和接受。在任何时刻只鞥由其中的一方发送数据,另一方接受数据。因此半双工形式既可以使用 一条数据线,也可以使用两条数据线。如图1-3所示。图1-3半双工形式半双工通信中每个端口都需要有一个收/发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生 时间延迟,信息传输效率较低。但是对于像打印机这样单方向传输的外围设备,用半双工方式就能满足要求了,不用采用全双工方式,可节省一根传输线。波仕电子的RS-232/RS-485转换器使用了独特的零延
9、时自动收发转换技术,直接从RS-485信号中用硬件提取收发转换控制信号,并具备零延时的性能。其中零延时指收发切换过程转变时间为0。在使用时与RS-232通信一样。3. 全双工形式:RS-232全双工数据通信分别由两根可以在两个不同的端点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作。如图1-4所示。图1-4全双工形式在全双工形式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中使用,信息传输效率较高。1.1.4通信参数串行端口的通信方式是将字节拆分成一个接着一个的位再传送出去。接到此信号的一方在将此一个一个的位组合成原来的字节,如此形成一个字节
10、的完整传送。在传输进行的过程中,双方明确传送的具体方式,否则双方就没有一套共同的译码方式,从而无法了解对方所传过来的信息的意义。因此双方为了进行通信,必须遵守一定的通信规则,这个共同的规则就是通信端口的初始化。通信端口的初始化必须对以下参数进行设置。1.波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特
11、率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 2.数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 3.停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传
12、输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 4.奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据
13、,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步.第二章 总体方案设计2.1主要原件的选择2.1.1STC89C52单片机的功能特性描述STC89C52的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上使用方便等优点,而且完全兼容MCS5l系列单片机的所有功能。STC89C52是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFAlsh ProgrAmmABle And ErAsABle ReAd Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。STC89C51系列单片机是
14、宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,是MCS-51系列单片机的派生产品;它们在指令系统中、硬件系统和片内资源与标准的8052单片机完全兼容,DIP-40封装系列与8051为pin-to-pin兼容,指令代码是与8051完全兼容的单片机。该器件与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。STC89C52单片机具有增强型12时钟/机器周期、6时钟机器/周期任意选择,工作电压为5.5V-3.4V(5V单片机)/3.8V-2.0V(5V单片机
15、);工作频率范围:0-40MHZ,相当于普通8051的0-80MHZ。实际频率可达48MHZ。用户应用程序空间为4K/8K/13K/16K/20K/32K/64K字节 ;片上集成1280字节/512字节RAM;有32/36个通用I/O口,P1/P2/P3/P4是准双向口;集成ISP(在系统可编程)/IPA(在应用可编程),无需专用的编程器/仿真器,可通过串行口(P3.0/P3.1)直接下载用户程序,8K程序3秒就可以完成一片,具备EEPROM功能,工作温度范围在0-750,共有3个16位定时器/计数器,其中定时器T0还可以当成2个8位定时器使用;封装形式有DIP-40,PLCC-44,PQFP
16、-44等。 1) 振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2) 芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软
17、件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。2.1.2 RS-232的功能特性描述通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。RS-232 标准规定的数据传输速率为每秒150、300、600、1200、2400、4800、9600、19200波特。 RS-232 标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电
18、容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。RS-232的电气特性为:EIA-RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。 在TxD和RxD上: 逻辑1(MARK)=-3V-15V 逻辑0(SPACE)=+3+15V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)+3V+15V 信号无效(断开,OFF状态,负电压)=-3V-15V 以上规定说明了RS-
19、323C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在(315)V之间。RS-232C 的功能特性定义了25芯标准连接器中的20根信号线,其中2条地线、4条数据线、11条控制线、3条定时信号线,剩下的5根线作备用或未定义。常用的只有10根:数据发送准备好(Da
20、ta set ready-DSR)有效时(ON)状态,表明MODEM处于可以使用的状态。 数据终端准备好(Data terminal ready-DTR)有效时(ON)状态,表明数据终端可以使用。请求发送(Request to send-RTS)用来表示DTE请求DCE发送数据,它用来控制MODEM是否要进入发送状态。允许发送(Clear to send-CTS)用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。接收线信号检出(Received Line detection-RLSD)用来表示DCE已接通通信链路,告知DTE准备接收数据。振铃指示(Ringing-RI
21、)当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。发送数据(Transmitted data-TxD)通过TxD终端将串行数据发送到MODEM,(DTEDCE)。 接收数据(Received data-RxD)通过RxD线终端接收从MODEM发来的串行数据,(DCEDTE )。GND、Sig.GND保护地和信号地,无方向。由于RE-232接口标准出现较早,难免有不足之处,主要有以下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率20Kb
22、ps。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺(实际15米)。虽然RS-232不会是在串行通信中最理想的应用元件,但在本次设计中,RS-232完全可以完成设计的基本要求。2.2显示的设计方案显示采用LED数码管,一方面与其他显示器件相比,LED数码管显示清晰直观,另一方面LED数码管的成本低,符合经济适用的设计原则。设计中采用动态扫描的方式把数据输出出来,共用到四个八段LED数码管,分别表示个、十、百、千位,通过按键来实现四位之间的相互转换,手动选择需要显示的位数。在调用
23、显示程序时,需要输出的值会通过74LS138译码器输出到相应的LED数码管,哪一位数据需要改变,只需手动调节。2.3按键的设计方案按键采用的是中断编码按键,这趟既能设计多个按键,而且还不用占用程序太多时序。按键总共用到4个:数据传送按键一个,此按键是实现在LED数码管上显示的数据能发送到串口调试助手上。选择显示位按键一个,用来选中需要操作的数据位,每按一下,都会选中个、十、百、千位中具体的一位。数据加一按键一个,用来实现数据的加一操作,每按一下,都会使显示数字在原有基础上加一。数据减一按键一个,与加一按键相反,此按键用来实现数据的减一操作,每按一下,都会使显示位上的数据在原有数据的基础上减一。
24、2.4晶振的选择本设计中用到的晶振是11.0592MHZ。第三章 硬件设计一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,既单片机内部的功能单元,如ROM、RAM、I/O口、定时/计数器/中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。本设计以STC89C52单片机为中心,分别设计了按键电路、数据接收和发送电路和LED数码管显示电路。按键采用的是中断编码按键;串行口数据的接收和发送电路采用RS232;显示采用的是静态扫描数
25、据显示。系统电路总体示意图如图3-1所示。系统总体原理图见附录。图3-1系统电路总体示意图3.1单片机最小应用系统的设计STC89C52单片机是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小的系统简单、可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3-2STC89C52单片机最小系统所示。其应用特点:有可供用户使用的大量I/O口线。内部存储器容量有限。应用系统开发具有特殊性。图3-2 STC89C52单片机最小系统3.1.1 STC89C52单片机的时钟电路STC89C52虽然内部有震荡电路,但要形成时钟,必须外部附加电路。STC89
26、C52单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的震荡电路,在X1、X2引脚上外接定时元件,内部的震荡电路变会产生自激震荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。震荡晶体选择可在1.2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对震荡频率输出的稳定性、大小、震荡电路起震速度有少许影响,C1、C2可在20pF到100pF之间取值,但在60pF到70pF时震荡器会有较高的频率稳定性。所以在本设计中,震荡晶体选择11.0592MHZ,电容选择30pF,如图3-3STC89C52单片机晶振电路所示。图3-3
27、STC89C52单片机晶振电路在系统设计上,单片机执行内部程序存储器的指令,所以EA接高电平。3.1.2 STC89C52单片机的复位电路STC89C52的复位时由外部的复位电路来实现的。复位引脚RESET通过一个斯密特触发器来抑制噪音。复位电路通常采用上电自动复位和按键复位两种方式。最简单的上电自动复位电路上电自动复位时通过外部复位电路的电容来实现的。只要Vcc的上升时间不超过1ms,就可以实现上电自动复位。除了上电自动复位外,有时还需要按键手动复位。本设计就是采用按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位时通过RESET端经电阻与电源Vcc接通来实现的。按键手动复位电
28、路见图3-4。时钟频率选用12MHZ时,C103取10uF,R2取10K。图3-4 STC89C52单片机复位电路3.2中断编码按键是硬件设计本设计共设置了四个独立按键,分别是数据减一按键、数据加一按键、数据传送按键、选择显示位按键,采用中断方式输入键操作信息。理论上按键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。在本设计中只要检测到相应端口的电平为低电平,就说明有键按下。按键输入的信号会通过相应的端口进行传输,最后由LED显示出来。图3-5按键系统电路图3.3数码管显示的硬件设计串行口通信采用的是共阴极的八段LED数码管,单片机用动态
29、扫描的方式把数据发送出去,同时为选信号会选择具体的显示位置。在本设计中, 在显示部分运用到了74LS138 即3 线8 线译码器。下面介绍74LS138的有关信息。74LS138 为3 线8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式, 其工作原理如下: 当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将地址端(A0、A1、A2)的二进制编码在一个对应的输出端以低电平译出。利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。若将选通端中的一个作为数据输入端时,74LS138还可作数据
30、分配器。74LS138可以驱动8个LED,在本设计中只用到4个LED。从功能上可以看出它的输出只能有一个低电平,也就是可以用来用灌电流的方式进行驱动LED,工作电压Vcc=5V,输出可以直接连接LED,没有带来不稳定因素。74LS138的引脚图如图3-6所示。图3-6 74LS138的引脚图3.3 PCB设计3.3.1 Protel99SE软件Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设
31、计等工作,可以设计32个信号层,16个电源-地层和16个机加工层。按照系统功能来划分,Protel99se主要包含以下俩大部分和6个功能模块:1、电路工程设计部分(1)电路原理设计部分(Advanced Schematic 99):电路原理图设计部分包括电路图编辑器(简称SCH编辑器)、电路图零件库编辑器(简称Schlib编辑器)和各种文本编辑器。本系统的主要功能是:绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。 (2)印刷电路板设计系统(Advanced PCB 99):印刷电路板设计系统包括印刷电路板编辑器(简称PCB编辑器)、零件封装编辑器(
32、简称PCBLib编辑器)和电路板组件管理器。本系统的主要功能是:绘制、修改和编辑电路板;更新和修改零件封装;管理电路板组件。 (3)自动布线系统(Advanced Route 99):本系统包含一个基于形状(Shape-based)的无栅格自动布线器,用于印刷电路板的自动布线,以实现PCB设计的自动化。2、电路仿真与PLD部分(1)电路模拟仿真系统(Advanced SIM 99):电路模拟仿真系统包含一个数字/模拟信号仿真器,可提供连续的数字信号和模拟信号,以便对电路原理图进行信号模拟仿真,从而验证其正确性和可行性。 (2)可编程逻辑设计系统(Advanced PLD 99):可编程逻辑设计
33、系统包含一个有语法功能的文本编辑器和一个波形编辑器(Waveform)。本系统的主要功能是;对逻辑电路进行分析、综合;观察信号的波形。利用PLD系统可以最大限度的精简逻辑部件,使数字电路设计达到最简化。 (3)高级信号完整性分析系统(Advanced Integrity 99):信号完整性分析系统提供了一个精确的信号完整性模拟器,可用来分析PCB设计、检查电路设计参数、实验超调量、阻抗和信号谐波要求等。3.3.2 PCB板的设计流程一般PCB基本设计流程如下:前期准备-PCB结构设计-PCB布局-布线-布线优化和丝印-网络和DRC检查和结构检查-制版。由于本设计只是为了让我们熟悉PCB的生成方
34、式,所以最后并没有制版这一流程。第一:前期准备。这包括准备元件库和原理图。即准备好原理图SCH。第二:PCB结构设计。这一步根据已经确定的电路板尺寸和各项机械定位,在PCB 设计环境下绘制PCB板面,并按定位要求放置所需的接插件、按键/开关、螺丝孔、装配孔等等。并充分考虑和确定布线区域和非布线区域(如螺丝孔周围多大范围属于非布线区域)。第三:PCB布局。在原理图上生成网络表之后在PCB图上导入网络表。需要特别注意,在放置元器件时,一定要考虑元器件的实际尺寸大小(所占面积和高度)、元器件之间的相对位置,以保证电路板的电气性能和生产安装的可行性和便利性同时,应该在保证上面原则能够体现的前提下,适当
35、修改器件的摆放,使之整齐美观,如同样的器件要摆放整齐、方向一致,不能摆得“错落有致” 。第四:布线。采用自动布线方式,即可生成一个既美观又实用的PCB图,如附录所示。第四章 软件设计串行口通信的软件部分是基于C语言进行程序设计的,程序结构总体上包括五大部分,即主程序、延时程序、发送程序、接收显示程序、中断程序。各个部分以主程序为中心,主程序主要功能是对各个数据和接口进行初始化、调用适当的子程序等协调整个程序的运行。4.1程序流程图程序流程图如图4-1所示。从程序流程图中可以很明显的看出整个设计的整体思路。图4-1程序流程图4.2主程序的设计主程序在初始化串口之后,便开始等待按键按下,当K2键按
36、下时,位选码就加一,如果初始位置为个位,此时选中十位,以此类推,当位选码大于3时,将其重置为0。当按下K3键时,若此时的位选是个位则对个位加一,若为十位则对十位加一,以此类推。当K4键按下时,若此时位选为个位,则对个位减一,若为十位则对十位减一,以此类推,当显示的数值为9时,如果再加一,现实的数据将会从零开始重新计数。当K1键按下时,就将前面的个十百千位的数值传送出去。当有串行中断来临时,就执行中断程序,将接收的数据通过显示程序在LED数码管上显示出来。主程序流程图如图4-2所示。图4-2主程序流程图4.3 子程序的设计4.3.1串口初始化程序的设计初始化顾名思义就是初始配置,不同的使用有不同
37、的配置.如果只是为了做一个类似点亮一个LED的话,就不用初始化了.它并不是程序所必要的.但在本设计中由于用到了定时器,并设置波特率,及中断等,所以有单独的一个初始化程序。见附录2 。由程序可知,SCON = 0x50使串口工作在工作方式一,串行允许接收。TMOD=0x20使定时器工作在方式二自动重装初值的八位定时器。随后将用初值计算公式计算出初值为0xf3,波特率选为4800bps。接下来开放串口中断,允许定时器1工作,最后开总中断。其程序流程图如图4-3所示。图4-3 串口初始化4.3.2数据发送和接受程序的设计当PC机有数据输出时,就会引起按键中断,随即执行中断程序,通过查询接收标志位RI
38、,确定串行中断,手动清零RI标志位。然后将接收缓冲器里的数据转存入内存中,本设计传送的是四位十六进制的数。随后,调用显示程序,是数据显示在LED数码管上。发送子程序与接收子程序类似,当发送键按下时,将数据装入发送缓冲器,等待发送中断标志位TI=1,说明发送完成。然后手动将TI清零。数据发送和接受流程图如图4-4所示。图4-4 数据发送和接受流程图4.3.3 显示程序的设计在显示模块,本设计采用4个LED数码管的动态显示形式。另外为了保证数据的正常显示,在显示之前会有一个清零的操作。在程序设计中,采用Switch语句来设置74LS138译码器的输入端口,从而决定具体是哪位LED数码管进行显示。4
39、.3.4延时子程序的设计在延时子程序的设计中运用两个For()循环实现延时的操作,由于在设计的其它程序模块中延时的时间不同,所以在延时子程序中,用到xms无符号字符来决定具体的延时时间,是整个设计更加完美。具体的程序语句结构见附录2。总结为期七周的课程设计结束了,它不仅锻炼了我查阅资料,进行方案构思的能力,而且教会了了如何更好的进行团队合作。在设计过程中,我们按照指导老师的要求逐步完善设计方案。对指导老师提出的问题进行了详细的修改。较好的完成了设计任务。但也暴露出了一些问题。在这次课程设计中,由于理论知识的不足,再加上平时没有什么设计经验,一开始的时候有些手忙脚乱,不知从何入手。但在老师辛勤的
40、指导下,和同学的热情帮助下,是我顺利的完成了设计。现在想想其实课程设计当中的每一天都是很累的,特别是在运用Protel 99SE制作原理图和PCB图时,由于在设计之前都没有接触过,所以在画图时遇到了大大小小不少的问题,其实正像老师说的一样,测控专业的课程设计没有那么简单,你想copy或胡乱做几个原理图和程序来偏偏老师都是不行的,因为你的程序最后是要通过实物验证的。虽然困难很多,但是我进了自己最大的努力去克服,然而还是难免有些遗漏和疏忽的地方。完美总是可望而不可求的,不在同一个地方跌倒两次才是最重要的。抱着这个心里我一步步走了过来,最终完成了我的任务。在这次的实践过程中我学到了一些除理论知识以外
41、的其他东西,领略到了别人在处理专业问题是显示的优秀品质,更深切的体会到人与人之间的那种相互协调合作的机制,最重要的还是自己对一些问题的看法产生了良性的变化。参考文献1李朝青.单片机原理及接口技术(第三版).北京:北京航空航天大学出版社,20052刘守义主编.数字电子技术。西安:西安电子科技大学出版社,20013赵晓安.MCS-51单片机原理及应用.天津:天津大学出版社,2001.34李广第.单片机基础(第一版).北京:北京航天大学出版社,19995马淑花,王凤文,张美金.单片机原理与接口技术.北京:北京邮电大学出版社,20056崔玮.Protel99SE电路原理图与电路板设计教程.北京:海洋出
42、版社,20057赵健领.51系列单片机开发宝典.北京:电子工业出版社,20088李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,20019王幸子.AT89系列单片机原理与接口技术.北京:北京航空航天大学出版社,200410孙建三主编.数字电子技术.北京:机械工业出版社,1999附录一 电路原理图附录二 串口通信源程序#include #include #define uint unsigned int#define uchar unsigned charsbit LS138A = P22; sbit LS138B = P23; sbit LS138C = P24; sbit K1=
43、P14;sbit K2=P15;sbit K3=P16;sbit K4=P17;char a4,m;void delay(uchar xms) uchar i,j; for(i=xms;i0;i-) for(j=110;j0;j-);uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x08,0x80,0x00;/0-9,-,全灭void display(uchar num,uchar dat) / 数码管动态显示 P0=tabdat; switch(num) case 0:LS138A=0; LS138B=0;
44、LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; case 3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break; case 5:LS138A=1; LS138B=0; LS138C=1; break; case 6:LS138A=0; LS138B=1; LS138C=1; break; case 7:LS138A=1; LS
45、138B=1; LS138C=1; break; delay(5); void UART_Init(void)SCON = 0x50; /串口工作方式为1 , 串行允许接收/SM0=0;/SM1=1;/REN=1;TMOD = 0x20; /定时器1 工作在方式2PCON = 0x80; /SMOD = 1; 波特率加倍TH1 = 0xf3; /波特率 4800bps fosc=11.0592MHzTL1 = 0xf3; ES = 1; /开串口中断 TR1 = 1; /允许定时器1工作 EA = 1; /开总中断 void send(char *p) uchar i; for(i=0;i=3;i+) SBUF =*p+; /待发送的数据写入缓冲区 while(!TI); /等待发送完成 TI = 0; /清零发送标志位main() char k=0,m;uint num;delay(10);UART_Init();while(1) for (num=0;num3)k=0; whi