《基于单片机与pc机通信的设计大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机与pc机通信的设计大学本科毕业论文.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 题目:基于单片机与PC机通信的设计 目 录1摘要32设计内容及要求33串口通信原理34设计思路45设计框图56硬件实现56.1AT89C5256.2MAX232芯片66.3 9针串口87用VC+开发串口通信软件97.1用户界面设计97.2程序设计148硬件电路设计178.1设计思路178.2通信协议178.3电路图178.4单片机程序189软件仿真2110实物电路调试2411总结25参考文献26单片机与PC机串口双向数据通信1摘要PC与PC或PC与端口之间的数据传输能够使用串行通讯和并行通讯二种通讯方式。因为串行具有使用线路少、而且成本相对较低的特点,尤其是在距离较远的情况下传输时,防止了多
2、条线路特性大相径庭而被普遍使用。 串行通讯时,规定通讯双方必须使用相同标准的接口,使得不同的设备能够快速有效地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前已知最常用的几种串行通讯接口之一。是由各个厂商议共同拟定的用于串行通讯的使用标准。串行通讯标准的全称是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的 DB25连接器,对连接器的各个引脚的信号内容加以明确,还对各种信号的电平加以明确。随着PC技术尤其是MCU微型计算机技术的延伸,人们已愈来愈多地使用单片机对众多工业控制应用加以管理和检测。例如温
3、度、流量和压力等参数。PC机有着非常强大的监控功能,而MS89C51/52MCU则拥有快速和灵便的监控特点,通过PC机的RS-232串行接口和外部设备进行连接,是众多监控系统中最为常用的通讯方式之一。因此怎么实现PC机与MCU之间的通讯变得极为有意义。Data transmission between PC and PC or PC and port to use serial communication and parallel communication two communication modes. Because the serial line with the use of sma
4、ll, and relatively low cost characteristics, especially in the long distance transmission case, prevent multiple line characteristics and is widely used to be quite different. Serial communication, communication both sides must use the same set of standard interface, so that different devices can be
5、 connected to communicate quickly and efficiently. The RS-232-C interface (also known as EIA RS-232-C) is one of the most commonly used serial communication interface is known at present. By the various factory negotiate together for serial communication using standard. The standard serial communica
6、tion is the full name of data terminal equipment (DTE) and the data communications equipment (DCE) between the serial binary data interchange interface technology standard DB25 connector of the standard requires the use of a 25 foot, the content of each signal pin connector to be clear, but also a v
7、ariety of signal level to be clear.With PC technology, especially the extension of the MCU micro computer technology, people have more and more use of SCM for many industrial control applications to manage and detection. Such as temperature, flow and pressure parameters. PC machine has a very powerf
8、ul monitoring function, while the MS89C51/52MCU has a fast and flexible monitoring features, are connected through the RS-232 serial interface and the external device PC, is one of the most commonly used means of communication of monitoring system. So how to realize the communication between PC and
9、MCU is very meaningful.2.选题背景PC机与单片机分别作为作为上位机和下位机的控制系统无论是在国内还是在国外都已经很普遍。PC机一般采用以简洁方便的人机界面进行操作,与单片机通过串口通信的方式进行积极交互。单片机系统可以根据被控对象做出反应,从而给予对应的前向,后向信号通道,其运行时被作为作为主控机测目标。单片机作为从机接受PC机监测和管理,不定期发送目标与本身的工作状态信息给PC机。目前,因为电路集成程度增加,随着PC机技术的发展PC越来越微型化和超微型化。微型计算机在军事演习,智能机器人,航空航天,医学研究等众多复杂系统之中扮演着越来越重要的角色。在相当多的工业生产中
10、,经常需要以多台单片机作为下位机执行对被控对象的直接控制,应用PC机作为上位机对复杂的数据进行处理,形成了一种管理相对集中、控制相对分散的集散控制系统。为了使系统管理的先进性和安全性有所提升,集总分算系统在工业生产的自动控制和监测系统被普遍地使用。其中以上位主PC机(主机)管理与下位机(单片机)直接参与控制监测的主从式应用系统成为最常见的方式。因此通讯能够在在主机和从机之间进行调进行。主机的功能:一是能够向从机传输各种命令以及所需要的参数,二是能够对从机发送的信息进行时时搜集、整理和分析,有利于实现下一步的决策与报表。从机则只能接收、执行由主机传输的信息,而且需要向主机反馈比较麻烦实时数据,以
11、及单片机的运行状态。采用串口总线技术就能够大大简化系统硬件设计、缩小系统的体积、提高体统的可靠性。因此系统的更改和扩充也变得更为简单。MSC51系列单片机,因为有一个对异步通讯可以使用的全双工串行的内部通讯接口,阴齿能够极为方便的构成主从式系统工作系统。串口是PC机上非常常用的设备通讯协议之一,计算机包多数是需要两个基于RS232的串口。众多仪器仪表设备常用的通讯协议也是串口。例如RS-232串口也被很多使用GPIB设备所兼容。同时搜集远程设被的数据也可以用串口通讯协议。因此,对串口通信相关知识认真的理解学习和研究是不可或缺的。此次将“PC机与51型单片机的串口通讯”作为毕业设计,完成了使用5
12、1单片机来完成主从式的总线系统通讯。经过本次设计,掌握了串口通讯的原理和应用,为以后的工作和学习储备知识。3串行通信3.1串行通信的原理及意义 串行通讯对单片机有着极其重要的意义,不仅能够实现将单片机的数据输出到计算机端口,还能实现PC对MCU的控制.因其具有操作简单,线程短,连接简便等优点而受到普遍的应用。远程控制系统与信息的采集系统的工作方式简单概括可以分为上位机和下位机。因为串行通讯具有高效性、可行性、灵活性,以及便于管理的特点,所以能够成为常用的通讯方式之一。串行通信其实是指单片机和PC机间使共同使用同一根数据信号线,信息必须在同一根数据信号线上按规定完成传输,每一位数据有且只有一个明
13、确的时间长度。串行通信使用的数据线少,在远距离通讯中可以降低通信成本,但其传输速度与并行传输相比较慢。综合其优劣势我们选用串行通讯。因为要满足高效率的需求,位于PC机内部的CPU与串口之间的通讯必须采用串行的通讯方式,所以串行通讯的实质就是必须实现CPU与单片机设备的数据方便快捷地进行格式转换(或者称为串并转换器),即当数据从单片机传送到PC机时,数据信息将被位 (bit)转化为字节数据;相反的,当PC机将数据发送到下行单片机设备时,字节数据在串行的方式下又被转化成为位数据串行端口的作用就是在CPU和串行设备之间完成编码并转换。当数据由通过CPU的串行端口被传输出去时,字节数据被转换成为位数据
14、。当数据被串行端口进行接收时,位数据将被转换成为字节数据。 在Windows操作系统中,串口是系统资源的重要组成部分。 应用程序要通过串行完成通讯,使用之前操作系统会对是否进行资源申请要求进行提示(串口被打开),通讯结束后一定要将资源释放(关闭串口)。关于串行通讯的理解其实非常简单,串行按位(bit)发送和接收字节。因为并行通信与字节(byte)相比并行通信的速度较慢,而串行能够一边使用一根线发送数据一边用另一根线接收数据。它的实现非常简单并且能够实现远距离通讯。例如对IEEE488进行明确并行通行状态时,一般认为设备总线的长度最好不要超过20米,而且每两个设备间的间距最好不要超过超过2米。而
15、串行的优点在于,长度能够达到1200多米。 3.2 串行通讯的应用实例 常见的的的串口通讯应用实例就是ASCII码字符间的传输。通信仅仅使用3根线就能够完成:(1)地线,(2)发送,(3)接收。因为串行通讯必须通过异步的方式才能完成,端口能够一边在一根线上发送数据一边在另一根线上接收数据。其他线用于握手,但是可以不使用。串口通讯的参数可以简单概括为:波特率、数据位、停止位以及奇偶校验。对于PC机与89C51/52间端口的通讯务必要所有参数务必一一对应. 3.3串行通讯的参数a,波特率:波特率是用于通信速度的检测标准。波特率也可以理解为每秒传送的bit的个数。例如200波特代表的就是传输速度为2
16、00个bit每秒。提到这里就不得不提及时钟周期,我们一般认为时钟周期所需要的波特率为4800波特率,那么,4800Hz就是我们认为的时钟周期。也说明了串行通信在数据线上的要使用4800Hz波特率。常见的电话线的波特率一般有14400,28800和36600几种。其他远距离传输的波特率还远远大于这些数值,且波特率具有和距离成反比的特点。较大的波特率经常被用于几个很近的仪器间的通讯。在对波特率进行选择的时候优先考虑两点:首先,系统所需的最大的通信速率。这要决定于系统的运行特性,明确规定通信的频率的变化范围,然后计算通信时的时钟误差,务必要选用用相同频率的晶振。在选择不同的通信时钟时其速率会有很大差
17、别即通讯误差。为了稳定通信,我们一定要选择最小的时钟误差频率进行通信。我们对波特率选择过程举例说明:设计要求的通讯频率如果不足20000bit/s,则晶振频率就是12MHz,对SMOD进行设置让其等于一(即波特率倍增)。由波特率取值表,我们了解到能够选取的波特率有:1200,2400,4800,9600,19200波特率计数器重载值波特率误差1200207 0.17%2400234 0.17%4800247 0.17%9600246 7.00%19200257 8.61% b,数据位:这是测量通讯中客观数据位的标准。当一个信息包由计算机发出,客观的数据不一定是8位的,其中有着明确标准的值是分别
18、为5、7和8位。怎么设定由你想传送的信息决定。例如,ASCII码的标准是0127(7位)。延伸的ASCII码是由8位(0255)组成的。如果要使用简洁的文本数据(标准 ASCII码),那么使用任意数据包都应该是7位数据。每个包都是由一个字节组成,开始/停止位,数据位和奇偶校验位。由于客观的数据位由通讯协议的选取而决定。c,停止位:用于单个包的最后一位的确定,其值一般为1,1.5和2。因为数据是在传输线上定/计时使用的,要求每一个设备都有自己的时钟。如果最后一位不相同,原因可能是在两台设备间在通信中出现了多多少少的不同步。所以停止位不单单是代表结束传输,并且给PC机创造了校正时钟同步的条件。被停
19、止位应用的位数越多,不同时钟同步的容忍程度越大,然而数据传输地速率也随之变慢。 d,奇偶校验位:在串行通讯中非常简单的检错方式之一。检错方式分为四种:奇、偶、高和低。校验位没有其实也是可行的。关于奇偶校验的分析,串口能将校验位设置好。比如,如果使用011的数据。关于偶校验,校验位为0,能够保证逻辑最高为一定为偶数。关于奇校验,校验位是1,这样逻辑高位会出现3个。高位和低位并不能对数据进行真正检查。为了使奇偶校验的纠错能力有所提高,最好使用双向奇偶校验(Row and Column Parity),也被称为双向冗余校验(Vertical and Longitudinal Redundancy C
20、hecks)。通过奇偶校验就能使接收设备可以明确是哪一个位的状态,能够辨别噪声是否被通信干扰了或者是数据在传送和接收时是否同步。2串行口的控制寄存器串行口数据缓冲器SBUF采用了互相独立两个接收器。共用一个地址99H的发送的缓冲器SBUF对应着2个寄存器(发送寄存器和接收寄存器)。缓冲发送器用于存放要发送的数据,只能写入,不能读出。接收缓冲器用于存放接收到的数据,只能读出,不能写入。对SBUF的指令进行辨认,根据是读指令还是写指令来区别是对接收缓冲器还是对发送缓冲器进行操作。读SBUF,比如MOV A,SBUF指令,就是读接收缓冲器的内容;写SBUF,比如MOV SBUF,A指令,就是修改发送
21、缓冲器的内容。串行控制寄存器SCONSCON可用于确定串行通信的工作方式和控制串行通道的某些功能,监视和控制串行口的工作状态,也可用于存放要发送和接收到的第9个数据(TB9、RB8),并没有接收和发送中断标志RI和TI。 四设计要求及内容 4.1设计要求 在PC机控制系统中,难免要使用多机进行通讯。因为单片机在各个行业的普遍应用,所以要优化利用51/52单片机系统与PC机J间的RS232的连接,我们要使用串行连接。能够简单方便地完成双通道数据传输。我们使用protues仿真调试软件,反复地向串口传送“1”、“2”、“3”.“8”、“9”、“0”等信号,单片机收到信号之后在数码管上展示出来,并且
22、也将向PC机反馈出现成功的确认信息,也就是在在PC机串口调试区域也就是接收缓冲区中将出现“display OK!”的字样。4.2 总体方框图4.3通信过程分析单片机通电后缓存区的数据通过数码管显示出来,对串行中断进行等待。串行中断传输时,先要对接受中断或者发送中断进行判断。如果对中断进行发送,则需要对将TI清零然后中断返回;如果需要对中断进行接收,将进入处理子程序。在子程序的处理过程中,接收到的ASCII码将进行数据转换成为十六进制的数字并由单片机发送出去,在显示缓存区中存放,调用显示子程序在数码管上显示出接收到的数据,再调用发送子程序给PC端软件回送一个确认显示的信号。4.4 通信方式的选择
23、 一、数据通信的传输方式:单工、半双工、全双工和多工方式。A 单工方式:数据只能够一个单一的方向进行传输。因为单工方式的功能十分有限,所以常用于串行口的打印数据传输与简单系统间的数据采集。B 双工方式:数据的传送也可以是双向的,但不可以同时实现。在日常生活中多要实现收发开关转换采用某种协议一般多使用某种协议。C 全双工方式:可以实现双方同时对数据进行双向传输,与单工方式和双工方式相比较而言要完成全双工电路的线路和设备的连接还是较为繁琐得。 D.多工方式:以上三种传输方式都是同一线路传输一种频率信号,为了充分的利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术,即可实
24、现在同一线路上资源共享功能,我们称之为多工传输方式。 4.5本设计中串行通信的实现(1)通信协议:PC机首先发送一个数据(以ASCII码形式表示的数字),单片机接收到之后返回一个约定的数据(本设计约定为2AH)到PC机表示通信正常,并且单片机已经正常显示收到的数据。(2)串行异步通信、不使用奇偶校验位,一个数据包括,一位起始位、八位数据位、一位停止位。(3)单片机串行口工作于方式一;用定时器1产生9600bit/s的波特率,工作于方式二。 (4)每次通信传输一个数据。5设计框图图5-1 系统框图6硬件实现6.1AT89C52AT89C52:AT89C52是51系列MCU之中功能最多切最常用的单
25、片机,它是由ATMEL公司生产的。 AT89C52是常见的低电压,高功率的CMOS 8位微控制器之一,该单片机主要由8k bytes的可反复擦写的Flash只读程序存储器和256 字节的随机存取数据存储器(RAM)组成,该单片机的元器件一般使用ATMEL公司生产的具有高密度、非易失性存储技术的产品,明确单片机指令系统的使用,该单片机的主要组成是由八位中央处理器和Flash存储单元。具有强大功能的AT89C52微控制器适用于众多较位复杂的系统控制应用服务。 这种类型的单片机共有40个引脚,分别为:32个双向的输入/输出(I/O)的外部端口,2个外中断口,3个16位可编程定时计数器,2个全双工串行
26、通信口,2个读写口线。AT89C52单片机能够通过常规方式下载程序,但是缺点是不能够使用在线编写程序(S系列的才支持在线编程)。AT89C52将常用的的8位微处理器和Flash存储器有效地结合在一起。特别是使用能够反复使用的Flash存储器能够最大化地节约开发成本。 微处理器的封装形式有三种分别为PDIP、PQFP/TQFP及PLCC,分别用于不同产品的使用。图6-1 AT89c52引脚图6.2 MAX232芯片MAX232芯片的简介:由MAXIM公司生产的MAX232。MAX232使用了IC芯片的两个接收器和驱动器,能够很好地在任意EIA-232C和V.28/V.24的通信端口上使用。MAX
27、232芯片的作用: 因为需要将+5V的电源电压变为RS-232C输出电平正常使用的10V电压所以MAX232包含了一个电源电压变换器。所以,MAX232芯片接口应用的串行通信系统仅仅在+5V电源下就可以工作了。在很多情况下没有+12V电压,其具有更强的适应性.图6-2 MAX232芯片引脚 管脚说明如下C0+、C0-、C1+、C1-是外接电容端;R1IN、R2IN是2路RS-232C电平信号接收输入端;RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;TlOUT、T2OUT是2路转换后
28、的发送RS-232C电平信号输出端,接传输线;V+经电容接电源+5V;V-经电容接地。这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输率小于20kB/s。图6-3 MAX232典型工作电路图6.3 9针串口由数据线接法不难观察到,数据线内部引脚并未出现交叉。其原因是母头与公头的自身的引脚功能是不同的,因此没有必要进行交叉。9真串口在外部表现为计算机COM1口公头的数据引脚并未交叉的连向了开发板的COM2母头。数据线的连接方法有很多种但仅仅记住一点就可以了:一样的头必须得交叉,不一样的头不用交叉。公头和母头自身的引脚确定了9针引脚之中大的一头是由5个引脚组成,小的一头是由4个引脚
29、组成的。 为了数据的发送与接收能够顺利实现就不得不提到以上这三个引脚。而其它引脚是用来控制传输规则的,即握手协议。下面是9针串口(DB9),引脚功能。引脚号缩写英文全称功能说明1DCDData Carrier Detection数据载波检测2RXDReceive Data接收数据3TXDTransmit Data发送数据4DTRData Terminal Ready数据终端准备5GNDSystem Ground信号地6DSRData Set Ready数据设备准备好7RTSRequest to Send请求发送8CTSClear to Send清除发送9RIRing Indicator振铃指示
30、 表6.3.1九针串口引脚功能图6-4 串口图我们还应该注意串口插座有公母两种类型其中:公的串口插座是带有插针的 (有针)母的串口插座是不带有插针的(有洞).(4)RS-232总线规定2RS-232标准总线为25根,采用标准的D型25芯插头座。引脚及功能如图6-5所示.7用vc+开发串口通信软件7.1用户界面设计在进行应用程序设计前,首先需要使用vc+6.0提供的AppWizard工具自动生成一个工程。选择【开始】/【程序】/【Microsoft Visual C+ 6.0】启动程序。在主界面的选择菜单命令FileNew,在如图所示的新建对话框选择【MFC AppWizard(exe)】,输入
31、项目名称单击next按钮,选择基本对话框,其他选项不变,连续单击next,直至最后Finish。至此工程建立完成。具体步骤如下图所示:图7-1 vc+建立工程图图7-2 应用程序类型选择图7-3 工程建立完成示意图工程建立完成后,出现如图所示对话框图7-4 基本对话框示意图将对话框中的两个按钮,及静态文本删除,添加其他控件,将对话框设置如下图所示图7-5 界面设计示意图其中在基本控件框中是没有的,需要把它添加进来。具体步骤是【工程】【增加到工程】【Components and controls】如下图所示:图7-6 添加控件图7-7 控件选择单击Insert,确定。至此控件添加完成。接下来就是
32、对控件变量的设置,单击【查看】【建立类向导】图7-8t图7-8 控件变量的设置选择IDC-EDIT1,单击add variable,输入控件名称单击ok。用同样方法设置其它控件。完成后如图所示。图7-9 控件变量设置下来就是添加对应函数,如上对话框选message maps选IDC_BUTTON1,选BN_CLICKED,单击右边add funtion,命名为openport函数。图7-10 添加对应函数以同样方法对IDC_BUTTON3,IDC_BUTTON4,IDC_MSCOMM1,添加对应函数Onclr,Onsend,Oncomm。7.2程序设计初始化组合框BOOL CSamDlg:On
33、InitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu. CString str=COM1; m_com.SetWindowText(str);oncomm函数void CSamDlg:OnComm() / TODO: Add your control notification handler code hereVARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置BYTE数组 An 8-bit
34、integerthat is not signed. CString strtemp; if(m_ctrlComm.GetCommEvent()=2) /事件值为2表示接收缓冲区内有字符 /以下你可以根据自己的通信协议加入处理代码 variant_inp=m_ctrlComm.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;klen;k+) safearray_inp.GetElemen
35、t(&k,rxdata+k);/转换为BYTE型数组 for(k=0;klen;k+) /将数组转换为Cstring型变量 BYTE bt=*(char*)(rxdata+k); /字符型 strtemp.Format(%02X,bt); /将字符送入临时变量strtemp存放 m_strEditRXData+=strtemp; /加入接收编辑框对应字符串 m_strEditRXData+=rn; /换行 UpdateData(FALSE); /更新编辑框内容Openport函数void CSamDlg:Openport() / TODO: Add your control notificat
36、ion handler code here int iindex = m_com.GetCurSel(); if(m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(FALSE); m_ctrlComm.SetCommPort(iindex+1); /选择COM if( !m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(TRUE);/打开串口 AfxMessageBox(端口已打开); else AfxMessageBox(打开端口错误); m_ctrlComm.SetSettings(9600,n,8
37、,1); /波特率9600,无校验,8个数据位,1个停止位 m_ctrlComm.SetInputMode(1); /1:表示以二进制方式检取数据 m_ctrlComm.SetRThreshold(1); /参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_ctrlComm.SetInputLen(0); /设置当前接收区数据长度为0 m_ctrlComm.GetInput();Onclr函数void CSamDlg:Onclr() / TODO: Add your control notification handler code herem_st
38、rEditRXData=; m_strEditTXData=;UpdateData(FALSE);Onsend函数void CSamDlg:Onsend() / TODO: Add your control notification handler code hereUpdateData(TRUE); /读取编辑框内容 m_ctrlComm.SetOutput(COleVariant(m_strEditTXData);编译运行。8硬件电路设计8.1设计思路将单片机RXD,TXD分别通过max232进行电平转换后与9针串口TX,RX相接。单片机p0口进行位选,p1口送断码到数码显示。单片机串行口
39、工作方式2,并允许接收。定时器选T1,工作方式2。8.2通信协议 PC机(程序)通过串口向单片机一次发送一个数字,由10位二进制码组成,一位起始位(0),八位ASCII码,一位终止位。 单片机通过串口接收数据之后,将此数字显示出,再向PC发送一个约定的ASCII码(定为02AH),程序被此事件触发,当程序收到这个约定的字符码串之后,即认为单片机已成功接受并显示,然后串口调试程序的接收缓冲区显示出“Display OK!”。 单片机的串口工作模式为方式2。波特率9600bit/s。8.3电路图图8-1 硬件电路图8.4单片机程序receivedata data 40h ;存放收到的数据displ
40、aydata data 39h ;存放显示子程序要显示的数据ORG 0000HJMP STARTORG 0023HJMP COMMJUDGEORG 0100HSTART: MOV SP, #60H MOV SCON, #50H MOV PCON, #80H MOV TMOD,#20H MOV TL1,#0FAH MOV TH1,#0FAH SETB EA SETB ES SETB TR1HERE: JMP HERE COMMJUDGE: JB TI,TT00 ;如果是发送引起的中断,那么就不管 CLR RI CALL CHANGEDIS CALL DISPLAY CALL TRANSTT00:
41、 CLR TI RETI;*;=;功能描述: 串口接收数据的处理子程序;创建日期: 2011年8月25日12:37:12;=CHANGEDIS: PUSH Acc PUSH PSW MOV A,SBUF MOV receivedata,A SUBB A,#30H ;数字的ASCII码转换为对应的数字(此程序仅限数字 MOV displaydata,A POP PSW POP Acc RET;=;函 数 名: TRANS;功能描述: 串口发送数据给PC的子程序;创建日期: 2011年8月25日12:43:48;=TRANS: PUSH ACC PUSH PSW MOV A,#2AH ;2AH是事
42、先约定的字符,返回给PC端时,用于确认显示正确 MOV SBUF,A ;此语句产生一个TI=1. MOV R7,#02HDL: MOV R6,#0FFHDL6: DJNZ R6,DL6 DJNZ R7,DL POP PSW POP ACC RET;=;函 数 名: DISPLAY;功能描述: 显示子程序;创建日期: 2011年8月24日22:37:46;=DISPLAY: MOV R1,#displaydata ;取显示缓冲区首地址 MOV A,R1 ;查表获取段选码 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,#0FEH ;对P0口进行位选,FE则最左边那位显示 MOV P1,A ;给P1口送段选码 RET;-LED显示码表-TAB: DB 0c0H, 0f9H, 0a4H, 0b0H, 99H, 92H; 0 1 2 3 4 5; 00H 01H 02H 03H 04H 05H; DB 82H, 0f8H, 80H, 90H, 88H, 83H; 6 7 8 9 A b;