串行端口程序设计
串行接口实验报告

课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二1. 实验目的 (3)2. 实验内容 (3)3. 实验原理 (3)4. 程序代码 (6)5. 实验体会 (13)实验二1.实验目的1.熟悉串行接口芯片8251的工作原理2.掌握串行通讯接收/发送程序的设计方法2.实验内容通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。
具体过程如下:1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。
2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。
3.实验原理1.8251控制字说明在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。
控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。
另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。
2.8251方式指令(端口地址2B9H)3.8251工作指令(端口地址2B9H)4.8251状态字(端口地址2B9H)5.8253控制字(283H)6.8253计数初值(283H)计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz波特率=1200波特率因=16计数初值= 1000000/1200*16=527.程序流程框图4.程序代码Fxc.asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址mes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz nextmov dl,0ffh ;有键盘输入,读入字符mov ah,06hint 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend startSend .asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址buf3 byte 0mes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz next; mov dl,0ffh ;有键盘输入,读入字符;mov ah,06h; int 21hmov dx,28ahin al,dxcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend start步进电机:1.K0=0,逆时针转;K0=1,顺时针转2.K1=0,慢转;K1=1,快转data segmentbuf1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;LED显示buf2 byte 0 ;步进电机数据buf3 byte 0 ;保存开关数据buf4 byte 0 ;保存顺转数据buf5 byte 9 ;保存反转数据buf6 byte 0 ;开关机data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov buf2,00110011b ;步进电机数据mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;-----------------------------逆转控制----------------R0: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jnz kai ;转反转test al,01 ;测试K0=1?jnz L0 ;转反转mov al,buf4 ;走马灯开始一步顺转cmp al,9jnz S1call change9_0S1: inc al ;数据加1mov buf4,almov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;数据完成加1mov al,buf2 ;电机开始一步逆转ror al,1 ;数据左移mov buf2,almov dx,288h ;A口输出out dx,al ;电机完成一步逆转mov al,buf3 ;回复C口数据test al,02jnz R1 ;转快转call delay_s ;否则慢转jmp R0R1: call delay_q ;快转jmp R0;------------------------------顺转控制-----------------L0: mov al,buf5 ;走马灯开始一步顺转cmp al,0jnz S2T2: test al,03 ;测试K2=1?jnz T2call change0_9S2: dec al ;数据减1mov buf5,al ;mov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;走马灯结束一步顺转mov al,buf2 ;电机开始一步顺转rol al,1 ;数据右移mov buf2,almov dx,288h ;A口输出out dx,al ;电机结束一步顺转mov al,buf3 ;回复C口数据test al,02jnz L1 ;转快转call delay_s ;否则慢转jmp R0T3: test al,03 ;测试K2=1?jnz T3L1: call delay_q ;快转jmp R0kai: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jz L0 ;转反转jmp kaiexit: mov ah,4chint 21hdelay_s proc near ;长延时mov bx,20hlp1: mov cx,0ffffhlp2: loop lp2dec bxjnz lp1retdelay_s endpdelay_q proc near ;短延时mov bx,1lp11: mov cx,0ffffhlp22: loop lp22dec bxjnz lp11retdelay_q endpchange9_0 proc nearmov buf4,-1mov al,buf4retchange9_0 endpchange0_9 proc nearmov buf5,10mov al,buf5retchange0_9 endpcode endsend start5.实验体会这次实验需要用到两种芯片8253和8251,两种芯片的作用分别是8253提供串行通讯所需的特定频率的脉冲信号,8251提供输入输出控制,所以在实验的过程中需要熟悉这两种芯片的方式字等使用规范,在仔细阅读了书本以及书本的编程实例后,基本摘掉了程序的设计方法实验过程中,出现了程序编译通过了但是不能运行的情况,后来经过检查发现是程序没有设置好的原因,要设置为编译后运行状态,否知只编译不运行,经过这次实验,知道了8253和8251两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。
VB 串口通信程序设计典型实例

V B串口通信程序设计典型实例利用VB开发串口通信程序既可以使用MSComm控件也可以调用Windows API函数实现。
不过,只要MSComm控件可以被选用,我们推荐选择此控件实现,因为MSComm控件的功能和API调用一样强,甚至比它还好且使用起来更加简单。
在本章提供的串口通信程序设计中,除了PC与PC串口通信外,PC与单片机、PC与智能仪表、PC与PLC、PC与GSM短信模块等串口通信任务的实现均采用MSComm控件。
6.1 PC与PC串口通信程序设计当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需3根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
本设计通过两台PC串口3线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收。
6.1.1 PC与PC串口通信程序设计目的(1)掌握PC与PC串口通信的线路连接方法。
(2)利用MSComm控件和API函数实现PC与PC串口通信的程序设计方法。
6.1.2 PC与PC串口通信程序设计用软、硬件本设计用到的硬件和软件清单如表6-1所示。
表6-1设计用软、硬件6.1.3 PC与PC串口通信程序硬件线路图线路说明,在计算机通电前,按图6-1所示将两台PC通过串口线连接起来:计算机A 串口COM1端口的TXD与计算机B串口COM1端口的RXD相连,计算机A串口COM1端口的RXD与计算机B串口COM1端口的TXD相连,计算机A串口COM1端口的GND与计算机B串口COM1端口的GND相连。
图6-1 PC与PC串口通信线路6.1.4 设计任务利用MSComm控件和VB API函数编写程序实现PC与PC串口通信。
任务要求,两台计算机互发字符并自动接收,如一台计算机输入字符串“Please return abc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。
07实验七 Linux环境下的串行通信实验

连接驱动器的使能端,使得当RTS设置成高(逻辑1)时,有效RS485驱动器;设置RTS为低 时,使驱动器处于三态,这时候实际上从总线上断开了驱动器,从而允许其他节点可以使 用同一传输线。当使用RTS时,必须确保发送数据前将RTS设置成高,在发送完数据的最 后一位后,将RTS线设成低。。另一种可选方法是自动发送数据控制。这种方法要求特殊 的电路,当数据传输时自动使能或无效驱动器。它减少了软件开销和程序员的潜在错误。
五、基础知识
串行通信 1、基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行 端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提 出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 2、串口通信的基本任务 (1) 实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实 现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的 帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2) 进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是 并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送 入计算机处理。因此串并转换是串行接口电路的重要任务。 (3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选 择和控制的能力。 (4) 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他 校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用
RS232串口通信C++课程设计

2.1
设置和修改串口通信参数,包括端口,时间,波特率,奇偶校验位,数据位,停止位。
2.2
显示当前串口通信参数,包括端口号,波特率,时间,奇偶校验位,数据位,停止位,点击参数设置按钮,弹出参数设置窗口,当完成设置后点击确定,子窗口隐藏,显示界面是数据发送和接收界面。
2.3
参数设置后,打开串口,在程序中设置了一个默认的COM4但是在参数设置窗口可以设置串口,实现通信。
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CLASS1DLG_H__B8BA98C1_5D58_47BE_B664_E97E77EC5076__INCLUDED_)
随着当今信息技术的快速发展,通信已成为信息技术中的关键问题。尤其在控制领域,以何种方式实现计算机与外围设备间既简单又可靠的通信,就显得特别重要。由于串行通信具有实现简单、使用灵活方便、数据传输可靠等优点,因而广泛应用于工业控制系统中,是计算机与外部设备进行数据通信时经常使用的方式之一。VC++是新一代面向对象的可视化开发工具,提供了良好的界面设计能力,在PC机的串口通信方面有很强的功能。它具有功能强大、简便易用和代码执行速度快等特点,在通信软件的开发中成为越来越多开发人员的首选工具。无论在工业控制中PC机和单片机之间的通信,还是在2台Pc机之间的串口通信,都具有相同的原理。只要掌握其中的通信本质,就能灵活地实现串口通信,串口控制。
Vxworks串口通信程序设计与实现

_
1 Vx rs简 介 wo k
从 19 9 5年 以 后 , S 公 司 推 出 了 一 套 实 时 操 作 系 统 开 发 环 WR
# n l d i Li - > i c u e< o b h 撕 n l d s d oh c u e< t i .> 衔n l d i c 1 > c u e< o t. h
பைடு நூலகம்
境— — T ma0 o ao集 成 环 境 提 供 了高 效 明 晰 的 图 形 化 的 实 时 应 o d 。T r d n
用 开发 平 台 ,它 包 括 一 套 完 整 的 面 向 嵌 入 式 系 统 的 开 发 和 调 测 工 具 。 T rao环 境 采 用 主 机— — 目标 机 交 叉 开 发 模 型 ,应 用 程 序 在 主 机 的 o d n
2 串 口通 信 基 本 原 理
i tc n i n o fg
_
cm1 od o ( i) v
/ 口 l配置 函数 / 串
串 L在 嵌 入 式 系 统 中是 一 类 重 要 的 数 据 通 信 接 口 , 本 质 功 能 是 I 其 作 为 C U 和 串 行设 备 间 的编 码 转 换 器 。 当 数 据 从 C U经 过 串行 端 口 模 式 :I E MO E P P LN _ D 发 送 出去 时 , 节 数 据 转 换 为 串 行 的位 ; 接 收 数 据 时 , 字 在 串行 的位 被 转 i ts , B U A E9 0 ) / 置 串 口波 特 率 为 9 0 b s o l f  ̄O A DR T ,6 0 ; / c(d 设 60 p 换 为字 节 数 据 。应 用 程 序 要 使 用 串 口进行 通 信 , 须 在 使 用 之 前 向 操 必 i ts , F U H,】 o lf  ̄O L S o ; c (d / 空 输 入 输 出 缓 冲 区 / 清
串行232接口与USB接口的转接口设计

1绪论1.1 USB转RS232应用价值USB自从1994年推出以来,逐渐得到了广泛的应用,现在的计算机都配备有USB 接口。
USB具有传输速度快,使用方便,支持热插拔,连接灵活,独立供电等优点,可以连接鼠标、键盘、打印机、扫描仪、摄像头、闪存盘、手机等几乎所有的外部设备。
正是由于USB的强大功能,使原来流行的RS-232接口逐渐退出了市场,现在很多新型的计算机甚至不带有串口。
但是RS-232可以做很多USB无法进行的工作;而且目前尚有很多外围设备,如打印机,Modem,传真机仍是用串口连接的,计算机如果不带串口或者串口数量少就会给使用者带来极大的不便。
所以设计出一种USB转RS232的设备是非常具有实用价值的,它可以满足某些没有串口或者串口数量少的计算机对串口通信的需求。
USB转RS232通信线可使你在串口和USB接口之间非常容易地建立可靠的连接,通过利用USB接口具有的即插即用和热插拔的功能给串口外围设备提供非常容易使用的环境。
它的设计可以轻松实现USB接口到通用串口之间的转换,为没有串口的计算机提供快速的通道,而且其传输速率高达1Mbps以上[1].1.2 现有USB转RS232专用芯片介绍随着新型的计算机的串口数量逐渐减少,用户对于USB转RS232通信线的要求也在不断的增加。
许多芯片制造商陆续推出不同功能的USB转S232专用芯片,用来满足广大用户的需求。
一下是现在市面上比较流行的几种USB转RS232专用芯片。
(1)PL2303芯片:台湾玖旺科技公司推出。
兼容USB1.1规格;通信速率最高为1.5Mbps;内含USB1.1全双工收发器;支持RS232串行接口。
(2)CJS1015芯片:深圳金鑫电子科技公司推出。
兼容USB 2.0规格;使用USB 全速通信(12Mbps);内含USB 2.0全双工收发器,48MHz晶振。
(3)FT232BM芯片:FTDI公司推出。
同时兼容USB 2.0和USB 1.1规格;适合任意波特率的数据传输;内置EEPROM,可在线编程。
RS232与RS485串行接口转换电路及编程实现

RS232与RS485串行接口转换电路及编程实现RS232和RS485都是串行通信接口,但它们在信号电平、传输距离和通信方式等方面有所不同。
RS232是一种单向通信的接口,常用于连接个人计算机和外部设备,如打印机、调制解调器等,信号电平为正负12V。
而RS485是一种半双工通信的接口,常用于远距离和多点通信,信号电平为正负2-6V。
为了实现RS232与RS485之间的转换,我们需要使用特定的电路和编程实现。
电路设计:1.信号电平转换:由于RS232和RS485的信号电平不同,所以我们需要使用电平转换电路将RS232的正负12V转换为RS485的正负2-6V。
这可以通过使用MAX202芯片来实现。
MAX202芯片是一个双向转换器,可以将RS232信号转换为RS485信号。
2.数据方向控制:RS485是一种半双工通信接口,需要通过数据方向控制线来实现发送和接收的切换。
可以使用一个双四极开关(如74HC4053)来控制数据方向。
其中A路和B路分别连接到RS485的A线和B线上,控制端连接到MCU的IO口。
3.电源供电:RS485通信线需要提供独立的5V供电,可以使用一个稳压芯片(如LM7805)来为RS485提供稳定的电源。
编程实现:1.初始化串口:在MCU上初始化串口,设置波特率、数据位、停止位等参数。
根据不同的MCU,具体的初始化方法会有所不同。
2.设置数据方向:根据发送或接收操作,通过控制IO口的电平来控制数据方向,将数据发送到RS485或从RS485接收数据。
3.发送数据:将要发送的数据写入串口缓冲区,并发送出去。
4.接收数据:通过轮询串口缓冲区检查是否有数据到达,若有数据则读取并进行相关处理。
总结:通过以上电路设计和编程实现,我们可以实现RS232与RS485之间的串行接口转换。
这样可以实现单向通信接口与远距离多点通信接口之间的互联。
在实际应用中,我们需要根据具体的系统需求和MCU的特性进行具体的电路和编程设计。
一种串口通信程序的设计与实现方法

效的方 法 , 它可以利 用 On o C mm 事件捕获 并 处理通 信 中发 生 的事件 或错误 , 时性 较 强。 实 O C mm 事 件是 MS o no C mm 控件提供的唯 一 的事 件 ,当有 数据到 达端 口或端 口状 态发 生 改变或有通讯错 误时 ,都将 触发 O C mm事 no 件 ,以获取 和处 理这些 通讯 事件 和通 讯中产 生的错误 。通 过查询 C mmE e t o v n 属性值 , 可以获 得关 于通 讯事 件和 通讯错误 的 完整信 息 ,进 而进 行处 理 。这 是 一种功 能很 强的处 理 串行 口错 误 的方 法 ,具 有 程序 响 应 及时 , 可 靠性 高 的优 点 。 示 : 查询方式是 程序通过查询 C mm vn 属 o E et C0 mP r : o r 0 t 设置 并返 回通信 端 口号 ; 性 的值 来判 断通信 过程 中的事 件或 错误 ,这 S ti g : e tn s 以字符 串的 形式设 置并 返 回波 特 种 方式 适合 于应 用程序 较小 、 实时性 要求 不 率 、 奇 偶 校 验 、 数 据 位 、 停 止 位 ; 是很 高的系统。 P rO e : o t P n 设置并返 回通信端 口的状态 , 也可 鉴于 以上 两种 通信 方式 的优缺 点 以及实 打 开和关 闭端 口;I p t 保 存和接 收从接 收 际应用 的需 求 ,本 系统 采 用查询 方式 来处理 n u: 缓 冲区获 得的数据 I up t 向发送缓 冲区发 通 信过 程 的 事件 或 错误 。 tu: O 送 命令和数据 ;Ib f rie 设 置接收缓 冲 n u f sz : e 区分配的 内存 数量 ;O tufri : 置发送 4远程门禁系统应用实例 ub f s e设 e z 缓 冲区分 配的内存数量 ; t rs od 设置为 4 1 系统设计 简介 R h eh l: . 某一 定值 , 每当接收缓 冲区收到该 定值个位字 当红 外线传 感 器感知 有 用户刷 卡时 ,读 符时 , 都会使 MS o C mm控件 产生 O C m 事 卡 器将卡 中信 息读 出 ,通过控 制 器传到 上位 n om 件 ; t rs od: 置为某一 定值 , 当传 输 机 ( 机 ) S h eh l 设 每 PC ,与 数据 库 中信 息 进 行 比对 , 缓 冲 区 中 的 字 符 个 数 少 于 该 定 值 时 , 如果 正确 ,上 位机 给控制 器发 送信 息 ,控 制 M sC0 m 控 件 产生 OnC0 m 事 件 ; 器 根 据 收 到 的 信 息 判 断是 否 需 要 开 门 和 关 m m Ip t d : n uMo e 确定 Ip t n u 属性取 回的数据格式 门 。 由于 该 门禁系 统是远 程控 制的 ,因此信 是 字 符 串 还 是 二 进 制 数 据 的 数 组 ; 息 需 要 通 过 以太 网传 输 ,控 制 器的 传 输 是 Ip te : n uL n 设置并返 回 Ip t n u 属性从接收缓 冲 Rs 2 2格式 的 ,而远 程 网络 数据 传输是 3 区读 取的字符 数 ; C mm: C mmE e t TC / P格 式的 ,因此 需要使 用接 口 换器 On o 当 o v n P I 转 属性 的值 变化时 , 产生 O C mm 事件 , 就 no 标志 完成 两种 数据 格式之 间的 转换 。整 个系统 的 发 生 了 一 个 通 信 事 件 或 一 个 错 误 ; 数据 传输 流 程如 图 1所 示 。 C mmE e t返 回最 近的通 信事件和 错误 ; 42 P o vn : . C机 单片机 串行通信 电路设计 C mE S n : o v e d在传 输缓冲 区中有 ̄Sheh l . rsod t 该 系统使 用的单片机 为凌阳 S C 0 1 P E6A 数 少 的 字 符 时 , 产 生 该 事 件 ; 单片机 ,利用单 片机 自带串 口与 P C机进行通 Co mEv e d c ie: S n Re ev 收到 Rt ehod个 字 信 , 中R - 3 接 口芯片完成 S C o l hrs l 其 S 22 P E 6A与 符 , 事件将 持续产生 直到用 Ip t 该 n u 属性从接 P C机 串 口 间的电平转换 。整个通信 电路 的 之 收缓 冲 区 中删 除数 据 。 框 架如图 2 ‘ 。根据实 际的需 要 , 卡器也 所示 读 32 M C m . S o m控件通信步骤 可以通过 RS 3 接 口芯片直接连 到上位机 -2 2 MS o m 控件进 行 串口通信的一 般步骤 上 。 Cm 为 : 置通 信对 象 、通 信 端 口号 以及 其他 属 4 3 通信 协议说明 设 . 性; 设定 通信协 议 ;打 开通 信端 口, 进行 数据 上 位 机 与 下 位 机 之 间 以 通 讯 速 率 的 传 送 ;关 闭 通 信 端 口 。 9 0b s 6 0 p /秒传输 数据 ,无奇 偶校验 ,八位 33 M a m , S o m控件通信方式 数 据 位 和 一位 停 止 位 。 MS o C mm 控 件有两 种处理通 信的 方式 , 4 4 串行通信 模块框架 . 即事 件 驱动 方式 和 查询 方 式 。 上位机 与 S C 0 1 P E 6 A单片机通 过一系列 应 答联络后 ��
VC++中串行通信程序设计

O 引言
在很多情况下 , 远程监控和 自动化领域系统常见的通信
控件 的 C mmE et o vn 属性 以检查执行结果或者检查某 一事件 是否发 生。如果应用 程序较 小 , 并且 是 自成 一体 , 这种 方法
可 能是 更 可取 的 。
编程多为 串口通信 编程 。计算 机 串口编程在通信 软件 中有
C mmP r o ot
设 置 / 取控 件 对 应 的 串 行 口 获
S ti s et g n Pr e ot n Op Ipt nu
Oup t tu
设置/ 取波特率、 获 校验方式 、 数据位 、 停止位 打开/ 关闭通信 口 读取 数 据
发 送种 是利 用 Mioot 司提供 c sf 公 r 的 AcvX控 件 Mi ootC mmu i t n o t l te i c sf o r nc i sC nr 。本 文将 ao o 主要介绍第二种方法 。
话框的 MF C应用程序项 目, 命名为 my O 记住在设置 项 C m,
目选 项 时 必 须 选 上 Aci X C nrl 其 他 的 按 照 缺 省 设 置 。 t e ot s v o,
它的核心 内容是组 件对象 模型 C OM( m o e tO j t o C p nn be c Moa 。A t e d ) ci X控件包 括一 系列 的属性 、 法和事件 , 用 1 v 方 使
问串口, 一种是 利 用 Mioot 司提供 的 A t e c sf公 r ci X控件 Mi oot o v c sf C mmu i tn nrl r nc i s a o C t 编写 串行通 信程序 的方 o o
法, 并给 出了例 程 , 具有一定 的实用意义 。
单片机与PC机串行通信系统硬件及上位机程序设计【精选】

目录1 引言 (1)1.1 单片机与PC机串行通信研究背景 (1)1.2 单片机与PC机串行通信研究目的和意义 (1)2 串口通信基础 (1)2.1 两种常用接口方式 (2)2.1.1 并行接口 (2)2.1.2 串行接口 (2)2.2 RS-232串行接口标准 (2)3 系统总体设计 (3)3.1 系统指标设计 (3)3.1.1 通信协议设定 (3)3.1.2 系统实现描述 (3)3.2 总体方案设计 (3)4 硬件接口电路设计 (4)4.1 主要芯片 (4)4.1.1 AT89C51 (4)4.1.2 单电源转换芯片MAX232 (6)4.1.3 74LS245LED驱动芯片 (7)4.2 LED显示器 (7)4.2.1 LED显示器工作原理 (8)4.2.2 LED显示器接口 (8)4.3 系统设计 (8)5 PC机程序设计 (9)5.1 MSComm控件 (9)5.1.1 MSComm控件处理通信的方式 (9)5.1.2 MSComm控件的主要属性 (10)5.2 应用界面设计流程 (10)5.2.1 创建项目文件 (10)5.2.2 加入串口通信控件 (11)5.2.3 设计窗体界面 (12)5.3 代码实现 (12)6 仿真调试及结果分析 (15)7 结语 (17)参考文献 (18)致谢 (19)2.1 两种常用接口方式2.1.1 并行接口并行接口是指8位数据同时通过并行线进行传送,这样数据的传输率能得到极大的提高。
但在并行传输中,干扰会随线路长度的增加而增加,产生传输错误。
因此,并行传输主要应用在近距离数据传输中,如连接打印机端口。
并行接口主要使用36针接头和25针D形接头,目前以25针D形接头为主[4]。
2.1.2 串行接口串行口也是计算机的一种标准接口,PC机一般至少有两个串行口Com1和Com2。
串行口不同于并行口,它的数据和控制信息是一位接一位在一根传输线上传送的,这样串行口较并行口能够进行远距离传送信息。
PIC单片机在线串行编程(ICSP)和低电压编程(LVP)

PIC单⽚机在线串⾏编程(ICSP)和低电压编程(LVP)PIC单⽚机在线串⾏编程(ICSP)和低电压编程(LVP)前⾔:呵呵,不是论⽂。
刚开始研究PIC,因为想⾃⼰做个开发板。
除了如何让板⼦⼯作外,如何下程序就最关键了。
所以搜罗了些资料,经过⼀番研究,终于懂得了⼀些,拿出来分享⼀下。
有些前辈们在⽹上早就写过的资料,摘了⼀些。
特此感谢啊!副⾔:因为想做PIC16F877和16F887的板⼦,所以只对这两个做了研究,但是貌似其他的型号的PIC单⽚机的在线编程和这个⼀样!正⽂:ICSP,全称In-Circuit Serial Programming,在线串⾏编程。
这⾏英⽂和ICSP这四个字母,⼀般使⽤时都带有TM标记的,也就是说,这是MICROCHIP的商标。
也是MicroChip 独有的吧。
呵呵!ICSP分⾼电压在线串⾏编程(High-voltage In Circuit Serial Programing)和低电压在线串⾏编程(low-voltage ICSP)两种⽅法。
低电压编程和⾼电压编程只是略微有⼀些不同(详见下⽂)。
硬件连接⽅式:MicroChip的ICSP,只需要使⽤芯⽚上的5个脚就可以,其中包括VDD、VSS(GND),,然后就是VPP编程电压和输⼊的数据和时钟两个脚。
⼀般是端⼝B⼝的RB6(PGC,也叫ICSPCLK)和RB7(PGD,也叫ICSPDAT)。
若要对芯⽚的Flash和其他内存等进⾏编程,要使单⽚机⼯作到“编程/校验模式”。
编程器可以通过以下两种⽅法单⽚机⼯作到“编程/校验模式”。
第⼀种,VPP优先,时序图如下:说明:⾸先,保持和为低电平。
在此期间,先将从低电平(VIL)拉⾼到编程电压(VIHH,⼤约13V),然后将拉⾼,为芯⽚供电。
接下来,就可以通过和对芯⽚编程了。
不管芯⽚内的配置字(Configuration Word)如何配置,都可以使单⽚机⼯作到“编程校验模式”。
双机串行通讯设计实验报告

双机串行通讯设计实验报告实验报告:双机串行通讯设计实验一、实验目的本实验的目的是通过双机串行通讯设计,实现两台计算机之间的数据传输和通信,掌握串行通讯的基本原理和应用。
二、实验原理串行通讯是指信息逐位地按顺序传送的通信方式。
串行通讯的优点是只需一对逻辑线路即可完成数据传输,可以减少硬件成本和物理排布空间。
而并行通讯需要多对逻辑线路,更加复杂。
在本实验中,我们使用两台计算机分别作为发送端和接收端。
数据通过串行通讯线路逐位传输,接收端按照发送端发送的顺序恢复数据。
具体步骤如下:1.确定双机串行通讯的物理连接方式,例如通过串口线连接两台计算机的串行端口。
2.在发送端,将待传输的数据进行串行化处理,即将数据逐位拆分成一个个比特,按照一定的传输格式进行编码。
3.将编码后的数据按照一定的速率逐位地通过串行线路发送到接收端。
4.在接收端,根据发送端的传输格式,逐位地接收并解码数据。
5.接收端将解码后的数据进行处理,恢复为原始数据。
三、实验步骤和结果1.硬件连接:使用串口线将两台计算机的串行端口连接起来。
2.软件设置:在两台计算机上分别进行串口的设置,确定串口的参数(波特率、数据位、停止位等)一致。
3.发送端设计:编写发送端的程序,将待传输的数据进行串行化处理,并按照约定的传输格式进行编码。
4.接收端设计:编写接收端的程序,根据发送端的传输格式,逐位接收和解码数据,并进行恢复处理。
5.实验测试:分别在发送端和接收端运行程序,进行数据传输和通信测试。
通过观察接收端接收到的数据是否与发送端发送的数据一致来验证通讯是否成功。
实验结果显示,通过双机串行通讯设计,发送端的数据能够成功传输到接收端,并且接收端能够正确解码和恢复数据,实现了双机之间的数据传输和通信。
四、实验总结本实验通过双机串行通讯的设计,实现了两台计算机之间的数据传输和通信。
实验结果表明串行通讯的设计和实现是可行的。
串行通讯具有硬件成本低、占用空间少等优点,因此在实际应用中被广泛使用。
串行口实验报告

图 5-1 电路原理图
-1-
3、程序设计流程(预习)
姓名:
开始
设置串口工作方 式
并入 74166 数据
学号:
4、实验结果及分析
将 74166 数据移 位串出
数据处理,将处 理后的数据送给 P1 口显示
结束
图 5-2 程序流程图
图(1)
-2-
图(2)
姓名:
学号:
图(3)
分析:这次试验将原有的 74164 改为 74166,74166 作为一款并入串出的移位寄存器,将并 口采集到的电平信号通过串口送入单片机,再把信号送到 P1 端口显示,所以外部哪几个按 键按下时,P1 口对应的哪几个灯点亮
姓名:
实 验 报 告5
学号:
实验项目名称: 串行口实验
同组人:
实验时间: 月 号
实验室: K2-407 单片机室 指导教师: 胡蔷
一、实验目的:
(l)学习单片机串行口的应用。串行口 4 种工作方式的区别,波特率设置,串行口初始化。
(2)熟悉 Proteus 软件电路设计和 Keil 软件程序调试方法。
判断 3 个按键 是否按下
串口发送 对应字符
图 5-4 程序流程图
分析:程序中设置为每一个按键分别显示一句话
-4-
姓名:
学号:
四、思考题: AT89S51 单片机串行口有几种工作方式,有几种帧格式?各种工作方式的波特率如何确定?
指导教师批阅及成绩
-5-Βιβλιοθήκη 重点:串行口 4 种工作方式的区别应用
二、实验顶备知识: (l)AT89S51 串行口的基本原理,方式 0 的扩展应用,单片机与 PC 机的通信方式。 (2)Proteus 软件应用,Keil 软件程序调试应用。
基于MPC860与ST16C654的串行通信设计

基于MPC860与ST16C654的串行通信设计按照项目设计要求处理器作为服务器,串行端口收发信息,经迅速以太网接口实时发送到局域网。
客户端将需要发送到串口的数据通过迅速以太网接口经处理器转发到串口。
因此,这是提出一种基于MPC860与ST16C654的串行通信设计计划。
采纳MPC860衔接ST16C654。
MPC860是目前在网络与通信领域应用广泛的一款微处理器,其高速的PowerPC 内核,连同集成的网络与通信外围设备,为用户提供一个建立高端通信系统的解决计划。
ST16C654是一个带有收发各64字节、可扩展4路串行通道FIF0的扩展通用异步,用于和高速调制解调器及需要迅速处理数据时光的分享网络环境一起工作。
1 系统硬件设计1.1 主要器件选型1.1.1 MPC860型微处理器MPC860 PowerQIUCC(简称MPC860)内部集成了2个处理单元。
一个处理单元是嵌入的PowerPC核(PowerPCCore),是主处理单元 (CPU),是一个RISC芯片,通常编译后的程序命令都是由它执行;另一个处理单元是通信处理模块CPM(CommunicaTIons Processor Module),内部集成有一个RISC微处理器,对各种常用的通信模块举行管理。
通信处理模块内部集成有4个串行通信控制器SCC、2个串行管理控制器 SMC、1个串行外围接口SPI和1个I2C接口。
另外,还有一个系统接口单元SIU,主要功能是提供内外的接口及一些其他功能(如SIU中断) 的管理等。
本设计利用通信处理模块CPM强大功能,与ST16C654通信。
MPC860硬件结构1所示。
1.1.2 ST16C654ST16C654是一个带有收发各64 Byte的FIF0的扩展通用异步收发器,自动软硬件流程控制,速率最高达到1.5 Mb/s(24 MHz时钟),支持16(Intel)/68(Motorola)总线接口类型。
RS232与RS485串行接口转换电路及其编程实现

・ 9・ 6
R 2 2与 R 4 5串行 接 口转 换 电路及 其编 程 实现 S3 S8
胡 玮 ,魏 伟
( 中科技大学电气学院 , 华 武汉 4 07 ) 3 04
摘要 :文章给 出了一种通用 R 22一R 45串口通信转换 器的硬件 结构和程序 实现。介 绍 了该 转换 器在 电路 测试技 术课 程 S3 S8
实 现 R 2 2与 R 4 5间的转换 。 s3 S8
电工 实验 台数字仪 表数 据采集 系统 的结构 如 图 1 所示 。在系 统 中 ,主控计 算机 为普 通 的 8 X 6系 08 列 微机 ,下位机 为 8 5 系 列的单 片机应 用 系统 ( 01 包
现实验 数据误 差 大而登 记重 新做 实验 的现象 。 作 者在 电路 测试技 术 电子实 验报告 软件 开发 中 完 成 了数字仪 表数 据采 集 R 22一R 45串 口通 信 S3 S8 转换 器 的研制 工作 。本 文将 给出转 换器 硬件结 构 图 和软件 编程节 选 ,探讨 完成后 的电子实 验报告 软件
通 信 中使 用最广 泛 的接 口电路 。R 45接 口电路采 S8
用 平衡差 分结构 ,且 收发器 共用 总线 。其最 大 的优
件 平 台制作 完成 。通过 使用该 软 件 ,学 生可 以在课 堂上完 成实 验 的同时完 成实 验报告 ,并 在 网络打 印
机上打印出来。学生使用电子实验报告可以当堂完 成 当堂改正 。由于 有 P p e软 件进 行 电路 的仿 真 , si c
在 电工 实验 台上使 用 的普 通计 算机 输 出串 口为
I
l
l下位机 J2下位机 * J
R 45 I R 45 5 . 8 I ¥ 8
VxWorks下串口通信程序设计与实例

1 . 前 言
V x W o r k s 是 一个具 有微 内核 、可裁剪 的 高 性 能 强 实 时 操 作 系 统 ,在 全 球 和 国 内 被 大 量 使 用 。 它 以其 良好 的 可 靠 性 和 卓 越 的 实 时 性被广泛 地应用在 通信 、军 事、航空 、航天 等高精 尖技术及 实时性要求 极高 的领域 中 。 P o w e r P C 处理 器有 非常 强的嵌入 式表 现 ,因 为它具有 优异 的性 能、较低 的能量损耗 以及 较低 的散 热量 ,包 含 串行和 以太 网控制 器这 样功 能强 大 的集成 i / o 。在计 算机 系统通 信 应 用 中 ,R S 2 3 2 串 口是 目前 广 泛 使 用 的 设 备 通信控 制接 口,在 嵌入式实 时操作系 统中实 现 串口通信 ,可大 大提高系 统的应用 范围, 提高系统获取信 息的能力。 2 . 串口通信原理 及优 点 串 口通 信本质 是C P U 发 出的命 令数 据经 串行 端 口后 转换 为 串 行 的位 ,接 收 方又 把 串行 的位 转换 成字 节命令 回送C P U , 实 现 通 讯 串 口通信有 如下优 点: ( 1 ) 开 发简 单,用 户可 以自定义数 据格 式 ,独 占 串 口 与 另 一 方 通 讯 。 ( 2 ) 成 本低 廉 ,串 口通 信从转 换芯 片到 传输介质相对 其他通信成本廉价 。 ( 3 ) 使 用灵活 ,有 全双工R S 2 3 2 ,亦有但 双工R S 4 8 5 ,而 且 转 换 方 便 。 在 传输数据量 不大,传输距 离不大 ,比 如一个变 电站 内,非常适合使用串 口通信 。 3 . 串口通 信在V x w o r k s 实现原理 在V x W o r k s 中 ,将 i / o 系统设计成 为任何 类 型 的 设 备 提 供 一 个 简 单 、 统 一 、独 立 于 设 备 的接 口 ,任 何对 于 串 口 的 操 作 都 可 以视 为 对 一个 文 件 的 操 作 ,而 不 必 了 解 串 口设 备 或 程 序 驱 动 实现 的 细 节 。 下 面 以M P C 8 3 0 9 C P U 添 加1 2 个 串口为例解释 实现过程: ( 1 ) 软件 添 加 ,修 改对 应B S P 包 ,使 系 统 支持 1 2 个 串 口,并且 申请 资源 。编译B S P 包 ,生成v x w o r k s 系统文件 及b o o t r o m 文件 。 系统启动时用d e v s 命令 可以查看到串 口。 ( 2 ) 硬件支持 ,使C P U 连接 串 口芯片 。实 际 应 用 上 串 口应 该 是 可 灵 活 插 拔 的 。 系 统 支 持l 2 个 ,但具 体数 目及 串 口位置按 实际连接 串 口数 为 准 。 节 约 成 本 。 ( 3 ) 以上完 成后就 可用o p e n 0函 数 打 开 串 口进 行 配置 , 用 r e a d0,w r i t e ( ) 函数进行 读 写操 作 。 ( 4 ) 为提 高数据 接收 的实时 性, 可采用 中断方式 ,利 用V x W o r k s 提供 的s e l e c t 函数 的 事 件 触 发 机 制 , 当 有 数 据 来 到 的 时候 该 任 务 会 立 刻 自动 响 应 。 节 省 对 C P U的 占用 , 提 高 系 统的实时性。 4 . 程序示例 以下程序对每 个参数有详细 的说 明,以 便 学 习交 流 。
通用串行总线USB的驱动程序设计

文章编号:1009-8119(2005)04-0040-03基于WDM的USB驱动程序设计赵娟1 仲顺安1 郭磊2(1.北京理工大学信息科学技术学院,北京 1000812.石家庄陆军参谋指挥学院教育技术专业,石家庄 050064)摘要简单介绍了USB的特性。
为了介绍USB驱动,重点阐述了WDM驱动程序的原理和Windows系统内核管理机制和应用程序的区别。
并给出了利用Driverstudio的C++语言编写的例程。
关键词 USB设备,WDM,操作系统,驱动程序The Implementation of the USB Driver Based on WDMZhao Juan Zhong Shun'an Guo LeiAbstrct The attribute of the USB is descripted in the paper. For developing usb driver, the mechanism of kenerl management and the privilege level of applications in window2000 are introduced in the paper. An example of the driver handling USB transfer programmed by using C++ with the help of the driverstudio is given. Keyword USB device,WDM,OS,Driver1 引言USB,全称是Universal Serial Bus(通用串行总线),它是由Compaq、Microsoft、Intel、IBM等七家公司共同开发的,旨在解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信的标准,自1995年在Comdex上亮相以来已广泛地为各PC厂家支持。
单片机系统的设计(三)——单片机系统程序设计的步骤与方法

单片机系统的设计(三)——单片机系统程序设计的步骤与方法
单片机系统程序设计的步骤与方法是指在硬件系统和外围电路设计完成之后,利用汇编语言、C语言等相关的编程语言,通过串行端口、I/O端口等方式进行数据传输,从而使单片机系统能够正常工作并实现功能要求的一般性程序设计过程。
1、需求分析:首先,必须明确系统的功能要求,包括系统的实现原理、用户界面设计以及实现所需的硬件设备。
根据功能要求,分析硬件系统的组成,并确定每个部件的功能。
2、系统流程图设计:根据分析硬件系统的组成,设计系统的流程图,以便于更好的理解系统的功能。
3、程序代码编写:根据系统流程图,利用汇编语言、C语言等编程语言,编写程序代码,实现功能要求。
4、程序调试:将程序代码下载到单片机中,使用串行端口、I/O端口等方式进行数据传输,使得系统能够正常工作。
5、性能测试:对程序代码进行性能测试,以确保系统能够满足功能要求,并确保系统的可靠性,避免出现意外情况。
6、系统调试:当系统能够正常工作时,在实际环境中对系统进行调试,以确保系统能够正常工作,并满足用户的要求。
以上就是单片机系统程序设计的步骤与方法,经过以上步骤,可以有效的完成单片机系统的程序设计,使得单片机系统能够正常工作,并实现功能要求。
基于VB 6.0的串口通讯程序设计

基于VB 6.0的串口通讯程序设计摘要:详细介绍了VB6.o中通讯控件MSComm的一些重要属性及在Windows环境下用通讯控件来实现串行通信的编程方法,并结合实例给出了一个基本的通讯程序。
关键词:串行通信;通信控件;Visual Basic 6.01引言随着计算机的迅速普及和计算机控制技术的发展,计算机被广泛应用于自动化控制领域之中。
而要完成一个控制过程一般都要利用集散式计算机控制系统。
在这种控制系统中,下位机主要完成对现场数据采集和对设备一级的监控,上位机则要完成对整个系统的采集、分析、处理和控制以及数据、图形显示、打印、人机对话等工作。
而上位机与下位机大多是通过PC机的RS-232串行接口实现通信。
随着Windows系统的普及,越来越多的用户由DOS系统转向了Windows系统,这使得数据采集及工业控制软件也上升到了Windows环境下。
这就给程序员提出了如何编写面向Windows的串行通信程序问题。
虽然Windows提供了完备的开放式通用增强的W32API(应用程序接口)函数,它把对串口和其他通信设备的支持和基本输入驱动程序集于一体。
但是,对于非专业软件设计人员来说,使用VC++,C等高级语言来完成这类程序的设计,其复杂性与专业化程度依然很高。
而Visual Basic 6.0(以下简称VB)是一个Windows下简单、易学、高效的可视化软件开发平台,它以所见即所得的可视化界面设计风格和32位面向对象程序设计的特点,已被广泛应用到各个领域,成为众多开发人员采用的工具。
VB 不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能。
它提供的Microsoft Communication control(以下简称MSComm)这样一个通信控件,该控件“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,它使用户能够方便地访问Windows下串口通信驱动程序的大多数特性。
所以整个串行通信程序的开发过程变得十分简单易行,程序员不需要处理繁琐的细节,而通过利用通信控件,只需编写少量的代码来实现主要应用功能和界面的设计,就可以完成软件的开发过程。
线程安全的.NET平台串口通信程序设计研究

控 制’ 串行端 口的类 , 重 要 的类 S r lo t为 同步 最 ei P r a 和事件 驱动 I O 提供 框架 , 供对 串 口针 脚 和 中断 / 提
[ 稿 日期 ]2 1 一O 一 1 收 01 l 6
R -3 S 2 2串行 端 口通 信 技 术 大 量 应 用 予 工 业 控
制 系 统 , co o 在 其 . T F a wok 加 入 了 Mirs ̄ NE rme r 串行 端 口类 S r lo t 以支 持 Wid ws软件 界 面 ei P r, a no
状态 的访 问 以及对 串行 驱动 程序属 性 的访 问.
心 的 8通 道 A/ 转换 模 块之 间进 行 串 口数 据 通信 D
与 图文 显 示 测 试 .
针 , 与 C. T
1 . T 串行 端 口类相 关 技 术 NE
1 1 串行 端 口类简 介 .
.
对 象 和类 型 安全 的 , 通用 语 言 运 行 时 ( L 会 确保 C R)
与可视 化组 件不 在 同一线 程 上运 行 . 过 查 阅 MS 通 —
D 技术 手 册 可 知 , NE 串 口通 信 组 件 与 可 视 化 N . T 显 示组 件虽 然处 于 同 一 窗体 , 串 口数 据 接 收事 件 但 却是 在辅 助线程 上 引 发 , 并 非 与 窗体 中其他 可视 它
S raP r 、 ee a e Th e d及 B c g o n W o k r e il o t d lg t 、 r a a k r u d r e
类 相关 技术 , 究 解 决. T 开 发 环境 下 串 口通 信 研 NE 程 序 中的线 程安 全 问题 , 与 以 P C微 控 制器 为核 并 I
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串行端口程序设计
一、实验目的
了解在linux环境下串行程序设计的基本方法。
掌握终端的主要属性及设置方法,熟悉终端I /O函数的使用。
学习使用多线程来完成串口的收发处理。
二、实验内容
读懂程序源代码,学习终端I /O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。
三、预备知识
有C语言基础。
掌握在Linux下常用编辑器的使用。
掌握Makefile 的编写和使用。
掌握Linux下的程序编译与交叉编译过程
四、实验设备及工具
硬件:UP-CUP S2410 经典平台、PC机Pentium 500以上, 硬盘10G以上。
软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境
五、实验原理
异步串行I /O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
图2.3.1串行通信字符格式
图2.3.1给出异步串行通信中一个字符的传送格式。
开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。
也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。
至此一个字符传送完毕,线路又进入空闲,持续为“1”。
经过一段随机的时间后,下一个字符开始传送才又发出起始位。
每一个数据位的宽度等于传送波特率的倒数。
微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600等。
接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:
●奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。
●帧格式错:一个字符从起始位到停止位的总位数不对。
●溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。
每一种错误都会给出相应的出错信息,提示用户处理。
一般串口调试都使用空的MODEM 连接电缆,其连接方式如下:
图2.3.2实用RS-232C通讯连线
六、程序分析
Linux 操作系统从一开始就对串行口提供了很好的支持,为进行串行通讯提供了大量的函数,我们的实验主要是为掌握在Linux中进行串行通讯编程的基本方法。
本实验的程序流程图如下:
本实验的代码如下:
下面我们对这个程序的主要部分做一下简单的分析 头文件
在Linux下串口文件位于/dev下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为/dev/ttyS1,在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接,方法如下:
打开串口是通过标准的文件打开函数来实现的
最基本的设置串口包括波特率设置,效验位和停止位设置。
串口的设置主要是设置 struct termios 结构体的各成员值,关于该结构体的定义可以查看
/arm2410cl/kernel/linux-2.4.18-2410cl/include/asm/termios.h文件。
设置这个结构体很复杂,可以参考man手册或者由赵克佳、沈志宇编写的《UNIX程序编写教程》,我这里就只考虑常见的一些设置:
●波特率设置:
下面是修改波特率的代码:
●校验位和停止位的设置:
无效验 8位
奇效验(Odd) 7位
偶效验(Even) 7位
●设置停止位:
1位:
2位:
设置好串口之后,读写串口就很容易了,把串口当作文件读写就可以了。
●发送数据:
使用文件操作read函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read函数返回的字符数是实际串口收到的字符数。
可以使用操作文件的函数来实现异步读取,如fcntl,或者select等来操作。
关闭串口就是关闭文件。
七、实验步骤
1、阅读理解源码
进入/arm2410cl/exp/basic/03_tty目录,使用vi编辑器或其他编辑器阅读理解源代码。
2、编译应用程序
运行make产生term可执行文件
3、下载调试
切换到minicom终端窗口,使用NFS mount开发主机的/arm2410cl到/host目录。
进入
/host/exp/basic/03_tty目录,运行term,观察运行结果的正确性。
由于内核已经将串口1 作为终端控制台,所以可以看到term发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2进行收发测试;这时要修改一下执行命令,在term 后要加任意参数(下面以./term www 为例)
Ctrl+c或者ESC可使程序强行退出。
注意:如果我们需要使用串口1通讯,比如做Zigbee或微型打印机实验时,需要加载串口1的驱动,这个在光盘里做了补充,请到实验补充里面找一下驱动程序s3c2410-tty.o。
insmod s3c2410-tty.o 就可以了。