首页 单片机IO口模拟串口实现数据通信

单片机IO口模拟串口实现数据通信

举报
开通vip

单片机IO口模拟串口实现数据通信单片机IO口模拟串口实现数据通信 课程设计(实习)作品验收表 题目 单片机IO口模拟串行实现数据通信 姓 名 参与人员 班 级 学 号 设计任务与要求: (1)本设计为单片机IO口模拟串口实现数据通信,电脑键盘输入,用8位LED显示按键对应的ASCII码。若是数字按键0,9,则同时在数码管上显示。 (2)设计单片机IO口模拟串行实现数据通信硬件电路,绘制出电路原理图。 (3)用keil编程实现所需功能,再用keil与proues联合仿真。 作品完成情况: 实现单片机IO口模拟串口实现数据通信功能,能实...

单片机IO口模拟串口实现数据通信
单片机IO口模拟串口实现数据通信 课程设计(实习)作品验收表 题目 单片机IO口模拟串行实现数据通信 姓 名 参与人员 班 级 学 号 设计任务与要求: (1)本设计为单片机IO口模拟串口实现数据通信,电脑键盘输入,用8位LED显示按键对应的ASCII码。若是数字按键0,9,则同时在数码管上显示。 (2)设计单片机IO口模拟串行实现数据通信硬件电路,绘制出电路原理图。 (3)用keil编程实现所需功能,再用keil与proues联合仿真。 作品完成情况: 实现单片机IO口模拟串口实现数据通信功能,能实现从电脑键盘按键输入,用8位LED显示按键对应的ASCII码,若是数字按键0,9,则同时在数码管上显示的功能。 验收情况: 验收教师签名:___________ 年 月 日 注:1. 除“验收情况”栏外~其余各栏均由学生在作品验收前填写。 2“验收情况”栏由验收小组按实际验收的情况如实填写 目录 1设计任务与要求...............................................1 ,总体方案设计.................................................1 2.1串行通信的方式设计.......................................1 2.1.1并行I/O口............................................1 2.1.2通信的基本原理.......................................2 2.1.3 89C51的串行口.......................................5 2.1.4 用IO口模拟串口通信..................................7 2.2 数码管显示设计...........................................7 2.3 LED灯显示设计...........................................8 ,单元电路设计................................................8 3.1硬件设计...............................................8 3.1.1复位电路设计.......................................10 3.1.2时钟电路...........................................10 3.1.3 显示电路设计.......................................11 3.1.4电平转换电路.......................................12 3.2软件设计...............................................14 3.2.1 程序设计流程图.....................................14 3.2.2 单片机IO口模拟串口实现数据通信的源程序............15 4系统仿真....................................................18 5收获与体会..................................................20 6参考文献....................................................21 单片机IO口模拟串口实现数据通信 1设计任务与要求 本设计为单片机IO口模拟串口实现数据通信,它可以用单片机的IO口实现单片机RX和TX的功能。具体要求如下: , 用单片机的P3.4和P3.5分别模拟RX和TX的串行通信功能,能够接收和发送 数据。 , 通过PC机的键盘输入字符,并传送给单片机,由单片机接收后,发达给PC机, 由PC机加以显示。 , 单片机接收由键盘输入的数据后,如果是数字,则由数码管显示,并由LED灯 表示其ASCII码,如果是其他字符,则由仅由LED灯显示其ASCII码。 ,总体方案设计 2.1串行通信的方式设计 本设计要求用单片机的IO口来模拟串口的串行通信,因此有必要先简要介绍一下单片机的IO和通信的基本原理与串行口P3.0和P3.1。 2.1.1并行I/O口 MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。 P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。P1口是8位准双向I/O口,可驱动4个LS 型负载。P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。P1口、P2口、P3口各I/O口线片内均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态,故称为双向三态I/O 口。 2.1.2通信的基本原理 串行通信只用一位数据线传送数据的位信号,即使加上几条通信联络控制线,也用不了很多电缆线。因此串行通信适合远距离数据传送。,如大型主机与其远程终端之间、处于两地的计算机之间采用串行通信就非常经济。当然串行通信要求有转换数据 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 、时间控制等逻辑电路,这些电路目前已被集成在大规模集成电路(称为可编程串行通信控制器),使用很方便。 通信方式有两种:并行通信和串行通信。通常根据传送的的距离决定采用哪种通信方式。例如,在IBM—PC机与外部设备(如打印机等)通信时,距离小于30m,则可采用并行通信方式,当距离大于30m时,则要采用串行通信方式。89C51单片机具有并行和串行两种基本通信方式。 并行通信是指数据的各位同时进行传送(发送或接收)的通信方式。其优点是传送速度高;缺点是数据有多少位,就需要多少根传送线。例如,89C51单片机与打印机之间的数据传送就属于并行通信。图1所示为89C51单片机与外设之间8位数据并行通信的连接方法。并行通信在位数多、传送距离又远时就不太合适了。 图1 两种通信方式连接 串行通信指数据是一位一位按顺序传送的通信方式。它的突出优点是只需一对传输线(利用电话线就可以作为传输线),这样大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。假设并行传送N位数据所需时间为T,那么串行传送的时间至少为NT,实际上问题总是大于NT的,图1(b)所示为串行通信方式的连接方法。 串行通信的传送方式通常有3种:单向(或)单工配置,只允许数据向一个方向传 送;半双向(或半双工)配置,允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;全双向(或全工)配置,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都有完整和独立的发送和接收能力。 串行通信有两种基本的通信方式:异步通信和同步通信。 , 异步通信 在异步通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,第一帧的数据格式如图2所示。 在帧格式中,一个字符由4部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始位(0),然后是5—8位数据 (规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位(1)。起始位(0)信号只占一位,用来通知接收设备一个待接收的字符开始到达。线路上在不传送字符时应保持为1。接收端不断检测线路的状态,若连续为1以后又测到一个0,就知道发来一个新字符,应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。 起始位后面紧接着是数据位,它可以 5位(D0—D4)、6位、7位或8位(D0—D7)。 奇偶校验(D8)只占一位,但在字符中也可以规定不用奇偶校验位,则这一位就可以省去。也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等)。 停止位用来表征字符的结束,它一定是高电位(逻辑1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时也为接收下一个字符作好准备—只发再接收到0,就是新字符的起始位。若停止位以后不是紧接着传送下一个字符,,则使线路电平保持为高电平(逻辑1)。图2(a)表示一个字符紧接一个字符传送的情况,上一个字符的停止位和下一个字符的起始位是紧邻的;图2(b)则是两个字符间有空闲位的情况,空闲位为期不远,线路处于等待状态。存在空闲位正是异步通信的特征之一。 例如规定用ASCII编码,字符为7位,加1个奇偶校验位、1个起始位、1个停止位,则一帧共10位。 , 同步通信 同步通信中,在数据开始传送前用同步字符来指示(常约定1—2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数 据,直到通信告一段落。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示。 波特率 波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。波特率对于CPU与外界的通信是很重要的。假设数据传送速率是120字符/s,而每个字符格式包含1个代码位(1个起始位、1个终位、8个数据位)。这时,传送的波特率为: 10b,字符×120字符,s,1200b,s 每一位代码的传送时间Td为波特率的倒数。 Td,1b,(1200bs-1),0.833ms 异步通信的传送速率在50b/s--19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。 图2 异步通信的一般数据格式 串行通信协议: 通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。 通信双方必须遵守统一的通信协议。串行通信协议包括同步协议和异步协议两种。 在此只讨论异步串行通信协议和异步串性协议规定的字符数据的传送格式。 (1)起始位 通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先发出一个逻辑0信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。 (2)数据位 当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8。IBM-PC中经常采用7位或8位数据传送,89C51串行口采用8位或9位数据传送。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据。 (3)奇偶校验位 数据位发送完之后,可以发送奇偶校验位。奇偶校验用于有限差错检测,通信双方需约定已知的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。 (4)停止位约定 在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。 (5)波特率设置 通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。 2.1.3 89C51的串行口 89C51单片机除具有4个8位并行口外,还具有串行接口。此串行接口是一个全双工串行通信接口,即能同时进行串行发送和接收数据。它可以作UATR(通用异步接收和发送器)用,也可以作同步移位寄存器用。使用串行接口可以实现89C51单片机系统之间点对点的单机通信和89C51与系统机(如IBM-PC机等)的单机或多机通信。 通信和89C51与系统机(如IBM-PC机等)的单机或多机通信。 图3 串行口内部结构示意图 , 结 构 89C51通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。其内部结构简化示意图如图3所示。 图3中有两个物理独立的接收、发送缓冲器SBUF,它们占用同一低值99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。 串行发送与接收的速率与移位时钟同步。89C51用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。 从图中可看出,接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。 串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时(执行“MOV SBUF,A”指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。 在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOV A,SBUF”命令),便由接收缓冲器(SBUF)取出信息通过89C51内部总线送CPU。 对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误,一般不需要用 双缓冲器结构来保持最大传送速率。 , 串行口控制字及控制寄存器 89C51串行口是可编程接口,对它初始化编程只用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中即可。 2.1.4 用IO口模拟串口通信 IO口没有89C51的串口结构,因此IO不能自动发送数据和接收数据,也没有发送中断标志和接收中断标志。而89C51串口还有T1计时器的参与,用来产生波特率。因此,需要在程序中模拟串口的通信方式以及定义数据的格式。 模拟串口的通信方式采用方式1,即为10位为一帧数据接口,1个起始位、8位数据位(低位在前)和1位停止位,共10位。并且每位持续的时间为100us。先发送或接收起始位0,接着准备发送或接收8位数据位,最后发送或接收停止位1。 本设计中采用P3.4来模拟TX串口发送端口,用P3.5来模拟RX串口接收端口。因此发送的10位数据由P3.4送出,接收的10位数据由P3.5输入,并等待CPU进行处理。 2.2 数码管显示设计 本设计主要在于显示,显示由键盘输入的字符的ASCII码,如果是数字,则由一位LED数据管显示,并由LED灯显示。若为其他的字符,仅由LED灯显示。从键盘输入字符通过软件模拟或者通过PC机中附件中终端设备来显示。输入与显示可以由C函数库存中的函数printf和scanf来实现。 单片机中通常使用7段LED构成字型“8”,另外,还有一个小数点发光二极管,以显示数字、符号及小数点。这种显示器有共阴极和共阳极两种。发光二极管的阳极连在一起的(公共端K0)称为共阳极显示器,阴极连在一起的(公共端K0)称为共阴极显示器。一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划a-g,另一个小数点为dp发光二极管。当在某段发光二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,须外加限流电阻。 以共阴极LED为例,各LED公共阴极K0接地。若向个控制端a、b、„、g、dp顺次送入11100001信号,则该显示器显示“7.”字型 共阴极与共阳极7段LED显示数字0-9的编码(a段为最低位,dp点为最高位)。如表1所示。 表1 共阴极和共阳极7段LED显示字型编码表 显示字0 1 2 3 4 5 6 7 8 9 符 共阴极 3F 06 5B 4F 66 6D 7D 07 7F 6F 段选码 (B) (36) (DB) (CF) (F6) (FD) (FD) (87) (FF) (EF) 共阳极 C0 F9 A4 B0 99 92 82 F8 80 90 段选码 (40) (79) (24) (30) (19) (12) (02) (78) (00) (10) LED显示器有静态显示和动态显示两种方式。为了节省单片机的外部资源,采用动态显示技术。但是,本设计只需要采用一位数码管显示ASCII码,因此无须采用动态显示,因为P口有锁存器的功能,只要将待输出的七段码输出到接数码管的P口即可无须重复扫描。数码管的显示会维持到下一个七段码输出改变为止。 2.3 LED灯显示设计 LED,即发光二极管,当它的两端正向导通时,电阻很小,有电流通过,当加反向电压时,电阻可以看成无穷大,无电流通过。因此它有普通二极管的功能,另外,它的另一个重要用途是将电信号变为光信号,通过光缆传输,然后再用光电二极管接收驱动一光电二极管。 因此,发光二极管有电平指示作用。在本设计中,将LED灯的负极接到P口,也是为了防止一上电就导通。若将正极接到P口,一上电复位,P口输出即为高电平,LED导通,没有对信号的指示作用。因此,必须将负极接到P口,然后正极通过一个限流电阻接到5V电源。当P口输出高电平时(包括复位的高电平),LED灯灭,当P口输出低电平时,LED灯亮,指示输出为低电平。 ,单元电路设计 3.1硬件设计 本设计的总体硬件电路原理图如下: 123456 2 3VCC4 51 6 7RP1 8RESPACK49 DS1D1REDCCU1D2 121391DDD3a1P10P00122382D4ba1P11P01LED12 3373D5c1P12P02fbLED124364D6dg1P13P03LED125355D7e 1P14P04ecLED126346D8fd1P15P05LED127337gdp1P16P06 LED128328dp1P17P07GNDLED LED1321 INT1P2012229INT0P2123 P22RP2T115249T1P23RESPACK4T014258T0P24 267P2531276EA/VPP262815 P27X1194X1VCCX2183 X22RST910RESETRXD VCC11TXD1730RDALE/P1629 WRPSENCC 8051 S1C3SW-PB10uF R2J1RST 1200 R16 21K7 C13 X1U28 1312T14R1 INR1 OUT22pF899Y1R2 INR2 OUT T011145T1 INT1 OUT12.000MHZ107T2 INT2 OUTC214DB9 C1+C2+X235C1 -C2 -C3C4 22pFMAX232ACPE(16) BB 图4 设计的总体电路原理图 AA Title SizeNumberRevision B Date:8-Jan-2009 Sheet of 安装后的软件\protel\Examples\hnsxydzsj.ddbDrawn By:File:D:\ 123456 234561 DD 3.1.1复位电路设计 MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密 特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯 密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信 号。 上电复位:上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容 到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容 加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而 回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全 可靠的复位,RST引脚的高电平信号必须维持足够长的时间。 电路图如图5所示。 VCC CC S1 C3SW-PB 10uF R2RST 200R1 1K 图5 复位电路 X1 3.1.2时钟电路 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊 的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影 响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为BB外部时钟方式。本文用的是内部时钟方式。 AA Title SizeRevisionNumber B Date:8-Jan-2009 Sheet of 安装后的软件\protel\Examples\hnsxydzsj.ddbDrawn By:File:D:\ 123456 123456 DD CC 电路图如图6所示。 C1 X1 22pFY1 12.000MHZ C2 X2 22pF BB 图6 时钟电路 MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放 大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡 器和微调电容,就构成一个稳定的自激振荡器。 3.1.3 显示电路设计 本设计的显示电路包括两部分,即数码管显示部分和LED灯显示部分。 123456 数码管显示电路如图7所示。 23VCC45167RP18RESPACK49 DS1REDCCU1AA1391DDaP10P002382abP11P01Title3373cP12P02fb4364gdP13P035355eP14P04ec6346dfSizeNumberRevisionP15P057337dpgP16P068328BdpGNDP17P07 Date:8-Jan-2009 Sheet of 1321INT1P2091222安装后的软件\protel\Examples\hnsxydzsj.ddbDrawn By:File:D:\INT0P2123P22T1 1234561524T1P23T01425T0P24图7 数码管显示电路 26P253127EA/VPP2628采用P0口作为段码输出端口,由于只有一位数码管显示,位选端可以直接接地,P27X119X1X218X2一直处于选通状态。另外,P0有特殊的物理结构,即漏极开路电路,所以得在输出端RST910RESETRXD11接上拉电阻,通过上拉电阻接到5V电源,上拉电阻一般采用1K大小。 TXD1730RDALE/P1629WRPSENCC数码管显示子程序比较简单,只要通过查表找到对应的七段码,输出到数码管,就 8051 可以显示出想要的符号或数字。如输入的数字为9,经过查找共阴极的七段码表找到 BB AA Title SizeNumberRevision B Date:8-Jan-2009 Sheet of 安装后的软件\protel\Examples\hnsxydzsj.ddbDrawn By:File:D:\ 123456 123456Dis_Table[9],即0x6f,将0x6f,即01101111B对应的dpgfedcba输出到P0口,即gfdcba 六段为高电平,显示为亮,即显示数字9。 LED灯显示电路如图8所示。 D1U1D2DD13912D3P10P00123812D4P11P011337LED12D5P12P021436LED12D6P13P031535LED12D7P14P041634LED12D8P15P051733LED12P16P061832LED12P17P071LED1321LEDINT1P201222INT0P2123P221524RP2T19T1P231425RESPACK4T08T0P24267P2531276EA/VPP262815P2719X14X118VCCX23X22 910RSTRESETRXD11VCC图8 LED灯显示电路 TXD1730RDALE/P1629WRPSENCCLED灯显示由P1口来完成,由于是低电平输出有效,即灯灭才表示输出的是高电 8051 平,因此不符合习惯,需要对将要输出的段码进行取反运算。 S1C3SW-PB10uF比如从键盘输入数字7,ASCII码为37,即00110111B,取反后,为11001000B, 将此码输出到P1口,则P1.0、P1.1、P1.2和P1.4、P1.5亮,亮的位表示1,即显示 的是37。 3.1.4电平转换电路 利用89C51单片机的串行口与PC机的串行口COM1或COM2进行串行通信,将单片 机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对数据进行整理及统计 等复杂处理;或者实现PC机对远程前沿单片机进行控制。 在实现计算机与计算机、计算机与外设间的串行通信时,通常采用 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 通信接口、BB这样就能很方便地把各种计算机、外部设备、测量仪器等有机地连接起来,进行串行通 信。 ELA RS-232C是目前最常用的串行接口标准,用于实现计算机与计算机之间、计算 机与外设之间的数据通信。 该标准的目的是定义数据终端设备(DTE)之间接口的电气特性。一般的串行通信 AA Title SizeNumberRevision B Date:8-Jan-2009 Sheet of File:D:\安装后的软件\protel\Examples\hnsxydzsj.ddbDrawn By: 123456 123456 DD 系统是指微机和调制解调器(modem),如图7-20。调制解调器叫数据电路终端设备(简 称DCE)。 RS-232C提供了单片机与单片机、单片机与PC机间串行数据通信的标准接口。 通信距离可达到 15 m。 为了保证二进制数据能够正确传送,设备控制准确完成,有必要使所用的信号电平 保持一致。为满足此要求,RS-232C标准规定了数据和控制信号的电压范围。由于 RS-232C是在TTL集成电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑, 规定+3V—15V之间的任意电压表示逻辑0电平,-3V—15V之间的任意电压表示逻辑1 电平。 CC 本设计中采用MAX232芯片,电路如图9所示。 J1 1 6 2 7 3 U28 1312T14R1 INR1 OUT899R2 INR2 OUTT011145T1 INT1 OUT107T2 INT2 OUT14DB9C1+C2+35C1 -C2 -C3C4 MAX232ACPE(16) 图9 电路转换电路图 BB 此电路图中,从MAX232芯片中两路发送接收中任选择一路作为接口。应注意其发 送、接收的引脚要对应。如果使T1 IN接单片机的发送端TXD,也就是T0,则PC机的 RS—232的接收端RXD一定要对应接T1 OUT引脚。同时,R1 OUT接单片机的RXD引脚, PC机的RS—232的发送端TXD对应妆R1 IN引脚。 AA Title SizeNumberRevision B Date:8-Jan-2009 Sheet of 安装后的软件\protel\Examples\hnsxydzsj.ddbDrawn By:File:D:\ 123456 3.2 软件设计 3.2.1 程序设计流程图. 开始 初始化四个P口 发送字符串1和2 由PC机显示字符串1和字 符串2,并准备接收数据 接收PC机键盘输入的数据 在P1口用LED显示接收 到的字符的ASCII码 接收到的字符为数字, 用数码管显示数字字符 发送字符到PC机, 并由PC机显示 接收到回车键 发送换行字符 图10 程序设计流程图 本设计的主要程序部分是发送和接收数据,即发送和接收10位数据。在数据发送和接收时,关键在于延时,延时的长短决定了波特率,即数据传送的速率。识别此数据传送完和是否开始传送的标志是起始位和停止位。因此在发送数据前要发送起始位0,然后再发送8位数据,最后发送1位停止位。接收时,是否是新的数据,即是否决定接收数据,得判定是否为起始位0,接收完后,再判定接收的是否为停止位1。 3.2.2 单片机IO口模拟串口实现数据通信的源程序 单片机IO口模拟串口实现数据通信的源程序如下: #include #include #include typedef unsigned char uchar; typedef unsigned int uint; #define DISPLAY P0 #define LED P1 sbit TX = P3^4; sbit RX = P3^5; uchar code Dis_Table[] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5e,0x79,0x71}; //{0xed,0x88,0xb5,0xb9,0xd8,0x79,0x7d,0xa8,0xfd,0xf9}; uchar Buf=0; uchar temp; bit Flag=0; void DelayMs(uint t) { uchar i; while(t--) { for(i = 0; i < 112; i++) ; } } void Uart_Delay() { uchar t = 7; while(t--) _nop_(); } void Intial() { P1 = 0xFF; P2 = 0xFF; P0 = 0x00; P3 = 0xFF; } void IOsend_char( unsigned char ch ) {unsigned char h, da , temp; da = ch; TX = 0; Uart_Delay(); for( h = 0; h < 8; h++ ) {temp = da & 0x01; TX = temp; da = _cror_( da,1 ); Uart_Delay(); } TX = 1; Uart_Delay(); } void IOsend_string( unsigned char *str ) { unsigned char k, l; l = strlen( str ); for( k = 0; k <= l; k++ ) { IOsend_char( *( str+k ) ); } } void IOrec_char(void) {unsigned char h, da = 0; while( RX ) ; Uart_Delay(); Uart_Delay(); for( h = 0; h < 7; h++ ) {if( RX ) da |= 0x80; else da |= 0x00; da = _cror_( da,1 ); Uart_Delay(); _nop_();_nop_();_nop_();_nop_(); } Uart_Delay(); Buf=da; } main() { uchar tab1[]= {"WLECOME!!\r\n"}; uchar tab2[]= {"Da Cong,Please Press Keyboard!!\r\n"}; uchar n; Intial(); IOsend_string(tab1); IOsend_string(tab2); while(1) {IOrec_char(); P0 = 0x00; P1 = ~Buf; P2=0x02; if(Buf >= 0x30 && Buf <= 0x39) { n = Buf & 0x0F; DISPLAY = Dis_Table[n]; } IOsend_char(Buf); DelayMs(1); DelayMs(1); if(Buf == 0x0D) { IOsend_char(0x0A); DelayMs(1); DelayMs(1); } } } 4系统仿真 1.本设计protues电路仿真图如图11: 图11 程序设计流程图 2.下图为输入数字6时的显示情况。从图可以看出,数码管显示6,LED灯为00110110B,即54H,也就是数字6的ASCII。 图12 输入数字6时的仿真图 3.下图为输入大写字母E时的显示情况。从图中我们可以看出,数码管不显示,LED灯为01000101B,即69H,也就是大写字母E的ASCII。 图13 输入大写字母E时的仿真图 4.下图为输入小写字母a时的显示情况。从图中我们可以看出,数码管不显示,LED灯为01100001B,即97H,也就是小写字母a的ASCII。 图14 输入小写字母a时的仿真图 5收获与体会 在学完单片机刚好一个学期以后,进行了这次课程设计,也是我第一次利用单片机进行系统地设计。基于单片机IO口模拟串口实现数据通信是比较普遍的一个课题,在参考了多个设计以后,我独立地完成了此设计,感觉收获颇丰。 单片机是电子信息 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 专业的一门非常重要的课程,它涉及到了现代工业的各个领域。此设计基本上运用到了单片机的主要资源,如P口的输出,数码管的静态显示技术。此外,虽然在很久以前就已经学完了C语言,但是学习单片机的过程中,用的是汇编语言,本次设计利用的是C语言,在对C语言比较生疏的情况下进行此次课程设计有助于复习C语言的基本知识。在做本设计的过程中,自己的编程能力得到了很大地提高,也把设计与工程实践联系起来了。 在设计完后,需要仿真系统,利用 KeilC编写并调试程序,然后利用proteus华电路图并进行仿真。在此设计前,这两个软件只是掌握了一些基本操作,完全是了解的水平,keilc自己学习和向同学请教,proteus更是也很陌生。完成此设计后,基本上掌握了运用这两个软件开发作品。 6参考文献 [1]李朝青. 单片机原理及接口技术(第三版)[M].北京:北京航空航天大学出版社,2010年 [2]靳达.单片机应用系统开发实例导航[M].北京:人民邮电出版社,2010年 [3]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社,2005年 [4]唐颖.单片机原理与应用及C51程序设计 [M].北京:清华大学出版社,2011年
本文档为【单片机IO口模拟串口实现数据通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_729658
暂无简介~
格式:doc
大小:161KB
软件:Word
页数:27
分类:互联网
上传时间:2017-10-07
浏览量:139