1、 - 数理与信息工程学院 课 程 设 计 题 目:单片机串行口与PC机通讯 专 业:计算机科学与技术〔专升本〕 班 级:计算机056 姓 名: 王伟伟学号:05191140
2、实验地点:数理与信息工程学院电子系统设计室 指导教师:余水宝 成 绩: ( 2006.6 ) 目 录 第1节 引 言1 1.1 单片机串行口与PC机通信概述1 1.2 系统主要功能1 第2节 单片机串行口与PC机通讯硬件设计 2 2.1系统的硬件构成 2 2.2设计说明 2 2.3系统电路图 3 2.4 8031单片机及其引脚说明 5 2.5显示接口8279的功能及其引脚说明 5 2.6 数据格式和数据的协议6 第3节 系统软件设计 7 3.1 系统主程序框架图 7 3.2 系统主要程序 8 第3节 完
3、毕语 14 参考文献15 - word.zl - - 单片机串行口与PC机通讯 数理与信息工程
4、学院 05计算机专升本 王伟伟 指导教师:余水宝 第1节 引 言 单片机应用中,串口通信是不可缺少的局部。如何编写有效的串口通信程序对程序的构造、可靠性都有很大的影响。串口控制程序一般分为查询和中断两者方式。查询方式适用于简单的应用,简单可靠,但是缺点是需要占用处理器资源,在发送或者接收数据的时候不能做其它的事情,处理器利用率低。中断方式下,在发送或者承受数据的时候处理器还可以做其它的工作,效率较高。 1.1 单片机串行口与PC机通讯概述 目前,计算机控制系统已逐步从单机控制开展成为多机控制并出现了以计算机技术为核心,与数据通讯技术相结合的集检测、控制和管理为一体的计
5、算机网络,即集中分布式测控系统。其中单片机作为从机,负责现场控制和实时数据的采集;PC机作为主机,负责对各从机发来的数据进展分析、处理,并向各从机发布命令,以实现对工业现场的集中监控与管理。由于主从机需不断进展信息交流,因此通信成为分布式测控系统重要而根本的功能。 根本原理PC机与单片机之间通常采用2种通信方式:并行通信和串行通信。并行通信是指将待发送数据的各位同时传送,串行通信那么将数据一位一位地按顺序传送。并行通信虽然传输效率高,由于所需硬件设备复杂,不适于长距离通信,所以一般只适用于要时性强,传送速率较高的控制系统中,实用面较窄;相比之下,串行通信简单易实现,传输距离较长,所以已被广泛
6、应用于各种工控系统中。串行通信分为同步通信和异步通信2种方式。同步通信是指通过在每个数据块开场时的同步字符来实现收/发双方同步的一种数据传输方法,常用于信息量大,速度要求高的场合;异步通信那么规定了标准的字符数据传输格式,即每一帧信息由起始位、数据位、奇偶校验位和停顿位组成。由于有冗余位,所以传送效率不高,常用于信息量不大,速度较低的场合。在计算机测控系统中,由于串行接口的标准化,一般采用异步串行通信方式,以提高其通用性。由于各种接口的机械和电器特性有所差异,串行通信分为近程通信和远程通信。2 接口电路的设计2.1 近程通信目前,PC机是利用异步通讯控制器来实现串行通讯的,其核心是8250通讯
7、芯片加上一些收发逻辑电路。接口标准大多是RS232标准,其通讯距离小于15 m,传输速率小于20 kb/s。RS232标准是按负逻辑定义的,他的“1”电平在-5~-15 V之间,“0”电平在+5~+15 V之间。由于PC机使用的是TTL电平信号,因此数据输出时必须把TTL电平信号转换成驱动器MC1488和接收器MC1489,其作用除了电平转换外,还实现正负逻辑电平转换。 1.2 系统主要功能 本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符〔0-F〕显示到实验机的数码管上。 第2节单片机串行口与PC机通讯硬件设计 2.1 系统
8、的硬件构成 利用8031单片机串行口,实现与PC机通讯。 CS8279接8700H。 模块中的十个短路套都套在8279侧。 8279状态口地址为8701H;8279数据口地址为8700H 2.2 设计说明 1.当用GR命令执行程序时,实验机部会将8031串行口电路切换与PC机通讯,无须连线。 2.程序执行前,进入LCA51,加载程序后,才进入调试菜单工具中的对话窗口,然后执行GR0,就可实行单片机串行口与PC机通信实验 2.3 系统电路图 图1 系统电路图 2.48031单片机及其引脚说明 单片机有许多种类,从生产厂家看,有Intel、Motorola、
9、Epson、NEC、Phlips等公司;按位数分有四位机、八位机、十六位机----也就是可以同时对四位、八位或十六位二进制码进展运算;从用途上又可以分为通用和专用。 Intel公司的 MCS-51系列属于8位机的系列,性能可能满足大多数应用的需要。它应用广泛、价格廉价、技术成熟,适于初学者学习。 在MCS-51系列中又有许多型号,包括8031、8051、8751等。其中8051的程序已经由工厂做在单片机部〔称做掩膜〕, 是为批量用户定制的,对于我们学习不适用。8751是在芯片有可擦写的程序存储器,这种芯片是为做掩膜前验证电路用的, 也用于一些有特殊要求的场所。8031部没有程序存储器,它的程
10、序存储器接在芯片外面,这样恰好便于在开发过程中对程序存储器进展控制,因此选8031学习是比拟适宜的。其实这几种型号的原理完全一样,学会8031其它型号也就掌握了 图28031引脚配置 8031芯片的40条引脚功能为: 1、主电源引脚VCC和VSS VCC——〔40脚〕接+5V电压; VSS——〔20脚〕接地。2、外接晶体引脚XTAL1和XTAL2 XTAL1〔19脚〕接外部晶体的一个引脚。在单片机部,它是一个反相放大器的输入端,这个放大器构成了片振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
11、 XTAL2〔18脚〕接外晶体的另一端。在单片机部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到部时钟发生器的输入端;对XHMOS,此引脚应悬浮。 3、控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP ①RST/VPD〔9脚〕当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。 VCC掉电期间,此引脚可接上备用电源,以保证部RAM
12、的数据不丧失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压围〔5±0.5V〕,VPD就向部RAM提供备用电源。 ②ALE/PROG〔30脚〕:当外部存贮器时,ALE〔允许地址锁存〕的输出用于锁存地址的低位字节。即使不外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动〔吸收或输出电流〕8个LS型的TTL输入电路。 对于EPROM单片机〔如8751〕,在EPROM编程期间,此引脚用于输入编程脉冲〔PROG〕。
13、 ③PSEN〔29脚〕:此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令〔或常数〕期间,每个机器周期两次PSEN有效。但在此期间,每当外部数据存储器时,这两次有效的PSEN信号将不出现。PSEN同样可以驱动〔吸收或输出〕8个LS型的TTL输入。 ④EA/VPP〔引脚〕:当EA端保持高电平时,部程序存储器,但在PC〔程序计数器〕值超过0FFFH〔对851/8751/80C51〕或1FFFH〔对8052〕时,将自动转向执行外部程序存储器的程序。当EA保持低电平时,那么只外部程序存储器,不管是否有部程序存储器。对于常用的8031来说,无部程序存储器,所以EA脚必须
14、常接地,这样才能只选择外部程序存储器。 对于EPROM型的单片机〔如8751〕,在EPROM编程期间,此引脚也用于施加21V的编程电源〔VPP〕。4、输入/输出〔I/O〕引脚P0、P1、P2、P3〔共32根〕 ①P0口〔39脚至32脚〕:是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。 ②P1口〔1脚至8脚〕:是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动〔吸收或输出电流〕4个LS型的TTL负载。对8052、8032,P1.0引脚的第
15、二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。 ③P2口〔21脚至28脚〕:是准双向8位I/O口。在外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动〔吸收或输出电流〕4个LS型的TTL负载。 ④P3口〔10脚至17脚〕:是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动〔吸收或输出电流〕4个LS型的TTL负载。 作为第一功能使用时,就作为普通
16、I/O口用,功能和操作方法与P1口一样。 作为第二功能使用时,各引脚的定义如表所示。 值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。 图3 系统主程序流程图 2.5 显示接口8279的功能及其引脚说明 可编程键盘/显示接口8279可编程键盘/显示接口8279的引脚功能 8279采用单一+5V电源供电,40脚封装。 DB0~DB7:双向数据总线,用来传送8279与CPU之间的数据和命令。 CLK:时钟输入线,用以产生部定时的时钟脉冲。 RESET:复位输入线,8279复位后被置为字符显示左端输入,二键闭锁的触点回弹型式,程
17、序时钟前置分频器被置为31,RESET信号为高电平有效。 CS:片选输入线,低电平有效,单片机在CS端为低时可以对8279读/写操作。 A0:缓冲器低位地址,当A0为高电平时,表示数据总线上为命令或状态, 当为低电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为数据。 RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。 WR:写信号输入线,低电平有效,将缓立器读出, 将数据从外部数据总线写入8279的缓冲器。 RL2-- 1 40 --VCC RL3-- 2 39 --RL 1 CLK-- 3 38 --RL 0 IRQ-- 4 37 --T
18、L/STB RL4-- 5 36 --SHIFT RL5-- 6 35 --SL 3 RL6-- 7 34 --SL 2 RL7-- 8 33 --SL 1 RESRT-- 9 32 --SL 0 RD-- 10 31 --OUT B0 WR-- 11 30 --OUT B1 DB0-- 12 29 --OUT B2 DB1-- 13 28 --OUT B3 DB2-- 14 27 --OUT A0 DB3-- 15 26 --OUT A1 DB4-- 16 25 --OUT A2 DB5-- 17 24 --OUT A3 DB6-- 1
19、8 23 --BD DB7-- 19 22 --CS VSS-- 20 21 --A0 IRQ:中断请求输出线,高电平有效,在键盘工作方式下,当FIFO/传感器RAM中有数据时,此中断线变为高电平,在FIFO/传感器RAM每次读出时,中断线就下降为低电平,假设在RAM中还有信息,那么此线重又变为高电平。在传感器工作方式中, 每当探测到传感器信号变化时,中断线就变为高电平。 SL0~SL3:扫描线,用来扫描按键开关,传感器阵列和显示数字, 这些可被编程或被译码。 RL0~RL7:回送线,经过按键或传感器开关与扫描线联接, 这些回送线部设置有上拉电路,使之保持为高电平,只有当一
20、个按闭合时,对应的返回线变为低电平;无按键闭合时,均保持高电平。 SHIFT:换位功能,当有开关闭合时被拉为低电平,没有按下SHIFT开关时,SHIFT输入端保持高电平,在键盘扫描方式中,按键一闭合,按键位置和换位输入状态一起被存贮起来。 TL/STB:当TL/STB开关闭合时将其拉到低电平,否那么始终保持高电平, 对于键盘输入方式,此线用作控制输入端,当键被按下时,按键位置就和控制输入状态一起被存贮起来,在选通输入方式中,作选通用,把数据存入FIFO RAM中。 OUTA3~OUTA0及OUTB3~OUTB0:显示输出A口及B口,这两个口是16×4切换的数字显示。这两个端口可被独立控制
21、也可看成一个8位端口。 BD:空格显示,此输出端信号用于在数字转换时将显示空格或者用显示空格命令控制其显示空格字符。 VCC:+5V电源输入线。 VSS:地线输入线。 2.6数据格式和数据交换的协议 Max232产品是由仪器公司〔TI〕推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。 该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。 图4 系统主程序
22、流程图 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、本钱低,特别是在远程传输时,防止了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进展通讯。RS-232-C接口〔又称 EIA RS-232-C〕是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会〔EIA〕联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备〔DTE〕和数据通讯设备〔DCE〕之间串行二进制数据交换接口技术标准"该标准规定采
23、用一个25个脚的DB25连接器,对连接器的每个引脚的信号容加以规定,还对各种信号的电平加以规定。一般只使用3-9条引线。 第3节 系统的软件设计 本系统的软件系统主要可分为主程序、串口收发程序,读取键盘子程序,显示字符子程序四大模块。 3.1 系统主程序设计 图5 系统主程序流程图 图6 INIT8279子程序框图 3.2 主要程序 Z8279 EQU 8701H ;8279 状态/命令口地址 D8279 EQU 8700H ;8279 数据口地址 LEDMOD EQU 00H ;左边输入 八位字符显示
24、 ;外部译码键扫描方式,双键互锁 LEDFEQ EQU 2FH ;扫描速率 LEDCLS EQU 0C1H ;去除显示 RAM LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址 READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字 ORG 0000H AJMP START ORG 0040H START: MOV SP,#60H LCALL INIT8279 ;初始化8279 MOV SCON,#50H
25、 ;串口 方式 1 MOV TMOD,#20H ;T1 方式 1 MOV TL1,#0FDH ;波特率 9600 的常数 MOV TH1,#0FDH SETB TR1 ;开中断 SETB ET1 SETB EA WAIT: C RI,DIS_REC ;是否接收到数据 LCALL GETKEY ;读键盘 CJNE A,#0FFH,WAIT ;是否有键输入 MOV SBUF,B ;串口输出键盘输入的值 NOP S
26、S: C TI,WAIT ;是否发送完毕 SJMP SS DIS_REC: MOV A,SBUF ;读串口接收到的数据 CLR C SUBB A,#30H ;以下判定输入是否在0-F JC ERROR SUBB A,#0AH JNC DIS_REC1 ADD A,#0AH SJMP DIS_REC2 DIS_REC1: SUBB A,#7H JC ERROR SUBB A,#6H JNC ERROR ADD A,#10H DIS_REC2: MOV R4,#00H
27、 MOV R5,A LCALL DISLED ;显示输入的数字(0-F) ERROR: AJMP WAIT INIT8279: ;8279初始化子程序 PUSH DPH ;保存现场 PUSH DPL PUSH ACC LCALL DELAY ;延时 MOV DPTR ,#Z8279 MOV A,#LEDMOD ;置8279工作方式 MOVX DPTR,A MOV A,#LEDFEQ ;置键盘扫描速率 MOVX DPTR,A
28、 MOV A,#LEDCLS ;去除 LED 显示 MOVX DPTR,A POP ACC ;恢复现场 POP DPL POP DPH RET ;读取键盘子程序 ;输入: 无 ; 输出: B: 读到的键码 A: 按键的标志 GETKEY: PUSH DPH ;保存现场 PUSH DPL PUSH PSW MOV DPTR,#Z8279 MOVX A,DPTR ;读8279状态 AN
29、L A,#07H ;屏蔽D7-D3 JNZ GETVAL ;判断是否有键输入 MOV A,#0H ;置标志(无键输入) SJMP NKBHIT GETVAL: MOV A,#READKB ;读 FIFO RAM 命令 MOVX DPTR,A MOV DPTR,#D8279 MOVX A,DPTR ;读键 ANL A,#0FH ;屏蔽 SHIFT 和 CTRL 键 MOV DPTR,#KEYCODE ;键码表起始地址
30、MOVC A,A+DPTR ;查表 MOV B,A ;置返回键值 MOV A,#0FFH ;置标志(有键输入) NKBHIT: POP PSW ;恢复现场 POP DPL POP DPH RET ;显示字符子程序 输入: R4,位置 R5,值 DISLED: PUSH DPH ;保存现场 PUSH DPL PUSH ACC MOV A,#LEDWR0 ;置显示起始地址 ADD A
31、R4 ;加位置偏移量 MOV DPTR,#Z8279 MOVX DPTR,A ;设定显示位置 MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R5 MOVC A,A+DPTR ;查表 MOV DPTR,#D8279 MOVX DPTR,A ;显示数据 POP ACC ;恢复现场 POP DPL POP DPH RET DELAY: ;延时子程序 PUSH 0
32、 ;保存现场 PUSH 1 MOV 0,#0H DELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RET ;LED显示常数表 LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' DB 0BFH,086H,0DB
33、H,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.' DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ' ;键盘键码表 KEYCODE:DB 30H,31H,32H,33H,34H,35H,36H,37H ;'1,2,Q,W,A,S,+,Z' DB 38H,39H,41H,42H,43H,
34、44H,45H,46H ;'3,4,E,R,D,F,X,C' DB 47H,48H,49H,4AH,4BH,4CH,4DH,4EH ;'5,6,T,Y,G,H,V,B' END 结 束 语 经过一段时间的收集资料,我的应用设计终于完成,看着自己的成果,有说不出的感触。通过这段时间的努力,对我这学期的学习有了系统的总结,对我自己感兴趣的知识也有了一些进步。 本设计就是采用MCS-51系列单片机,利用8031单片机串行口,实现与PC机通讯。本设计中包括了单片机通讯的编制,串行通讯的硬环境,数据格式的协议,数据交换的协议等多方面的知识,在这个单片机串行口与PC机通讯设计中
35、我主要是说明它的原理和应用,然后用一个相对简单的实验来实现这个功能。通过这次设计使我对这一学期所学的知识更加的系统化、深层次化。通过这次设计学会了分析问题、处理问题的方法,可以说到达了举一反三的目的。为以后工作、学习都打下了比拟坚实的根底。 这次实习设计与以往的差异很大,这样的应用设计是我第一次做,一开场觉得无从下手,找了好多资料,发现其实自己的思想被定固在书本理论上了,个人的潜能也没有开发出来。由于时间比拟仓促,并且理论知识掌握的不是很扎实,在这第一篇设计中我只是更多的去说明和实现了一个功能,而没能创新扩展它。而在这次应用设计中,我明白了作为一个实用设计系统,我们应该从设计者的角度去分析
36、思考、解决问题的,以实现一个实际的产品为目的而进展具体设计的。 总之,我们在设计过程中学到了许多。作为现代的大学生,如果仅停留在以往的层次上,是远远跟不上时代的步伐,也无法使自己立足在竞争如此剧烈的社会里,通过此实验,让我看到了自己的水平和差距,虽然我们有很多缺乏,但是在我们的努力下,弥补了我们的缺憾。此次学习使我受益匪浅。从中学到很多以前没有接触到的错误,及其解决方法和某些程序的设计方法。增加了自己在编程方面的功底。.同时我非常感我们的余教师对我们的帮助和悉心的指导。 参考文献 [1] 鑫,?单片机原理及应用?。 电子工业,2005 [2] 席先觉,?MCS-51单片机实用子程序集?。高等教育,1992.8 [3] 振荣,?MCS-51单片机原理及实用技术?。 人民邮电,2000 [4] 周航慈,饶运涛,?单片机程序设计根底?。 航空航天大学,1997.5 [5] 朝青,?PC机与单片机 & DSP数据通信技术选编?。航空航天大学,2003 [6] 胡汉才编著,?单片机原理及其接口技术?,,清华大学,1996年 - word.zl






