RS232组网通信实验

合集下载

#RS232通信编程实验指导书

#RS232通信编程实验指导书

目录0 序言 21 理论背景 3串口通讯的见解及接口电路 3传输速率与传输距离 5波特率 5发送/接收时钟 6波特率因子 7传输距离 7奇偶校验 8网络通讯的数据包 <帧) 91.4.1 HDLC 的帧构造 10点对点协议PPP的帧构造111.5 调制解调器 <MODEM)和流控制 11调制解调器<MODEM)11流控制132 技术背景162.1 RS-23216电气特点17连结器的机械特点192.1.3 RS-232的接口信号202.2 远距离通讯 25采用Modem(DCE>和电话网通讯时的信号连结25采用专用电话线通讯262.3 近距离通讯 27零Modem的最简单连线<3线制)27零Modem标准连结283 设计过程303.1 串行通讯资料 30串行通讯端口30串口通讯线303.2 整体设计见解与功能描绘32整体设计见解32字节传输33文本文件传输344 设计成就与运行过程354.1 实时信息交互功能354.2 文本和文件的传输440序言在各样单片机应用系统设计中,如智能仪器仪表、各样手持设备、 GPS 接收器等,都会碰到怎样与PC 机进行通讯的问题。

在数据量不大、传输速率要求不高的情况下,一般都采用串行通讯方式,即经过与PC 机配置的RS-232标准串行接口COM1 、 COM2 等相连结来实现应用系统与PC 机之间的数据互换。

比方南天加密键盘,它是南天自主开发的新产品,采用扫描式16 键金属键盘,用单片机与DES 芯片实现管理和控制,经过RS232 通讯口与PC 机相连。

它是针对南天自助产品而研制的,可对键盘敲入的键码加密,以密文形式送到PC 机,保证通讯过程中的数据加密,有效地保护键盘交易信息的安全。

本课题以计算机科学与技术专业的理论知识为基础,以计算机通讯技术为支撑,在全面掌握计算机通讯基本理论和基本技术的基础上,利用RS— 232 接口接口规范,设计与实现一个计算机通讯系统。

RS232串口通信实验报告

RS232串口通信实验报告

RS232串口通信实验报告学院:电子信息学院班级:08031102姓名:张泽宇康启萌余建军学号:2011301966 2011301950 2011301961时间:2014年11月13日学校:西北工业大学一.实验题目:设计一个简单的基于串口通信的信息发送和接受界面二.实验目的:1.熟悉并掌握RS232串口标准及原理。

2.实现PC机通过RS232串口进行数据的收发。

3.熟悉VC语言编写程序的环境,掌握基本的VC语言编程技巧。

三.实验内容程序代码:P// PC1PC2Dlg.cpp : implementation file//#include "stdafx.h"#include "PC1PC2.h"#include "PC1PC2Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif//////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CPC1PC2Dlg dialogCPC1PC2Dlg::CPC1PC2Dlg(CWnd* pParent /*=NULL*/): CDialog(CPC1PC2Dlg::IDD, pParent){//{{AFX_DATA_INIT(CPC1PC2Dlg)m_send = _T("");m_receive = _T("");m_bt = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CPC1PC2Dlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CPC1PC2Dlg)DDX_Control(pDX, IDC_MSCOMM1, m_Comm);DDX_Text(pDX, IDC_EDIT1, m_send);DDX_Text(pDX, IDC_EDIT2, m_receive);DDX_CBString(pDX, IDC_COMBO1, m_bt);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CPC1PC2Dlg, CDialog)//{{AFX_MSG_MAP(CPC1PC2Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CPC1PC2Dlg message handlersBOOL CPC1PC2Dlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herem_Comm.SetCommPort(1); //选择COM1m_Comm.SetInputMode(1); //输入方式为二进制方式m_Comm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件// CString str;// str="9600,n,8,1";// m_Comm.SetSettings(str);m_Comm.SetPortOpen(TRUE);//打开串口return TRUE; // return TRUE unless you set the focus to a control}void CPC1PC2Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CPC1PC2Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CPC1PC2Dlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}//把字符通过串口发送出去void CPC1PC2Dlg::OnButton1(){// TODO: Add your control notification handler code hereUpdateData(TRUE); //读编辑框内容if(strlen(m_send)==0)MessageBox("发送的数据不能为空!","提示",MB_OK);else{m_Comm.SetOutput(COleV ariant(m_send));Sleep(100);}}BEGIN_EVENTSINK_MAP(CPC1PC2Dlg, CDialog)//{{AFX_EVENTSINK_MAP(CPC1PC2Dlg)ON_EVENT(CPC1PC2Dlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE)//}}AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()void CPC1PC2Dlg::OnOnCommMscomm1(){// TODO: Add your control notification handler code hereV ARIANT data;COleSafeArray data2;CByteArray datatemp;CString strtemp,buffer;LONG len,i;BYTE Inbyte[2048],temp;UpdateData(TRUE); //读编辑框内容if(m_Comm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符{data=m_Comm.GetInput(); //读缓冲区data2=data; //V ARIANT型变量转换为ColeSafeArray型变量len=data2.GetOneDimSize(); ////得到有效数据长度if(len>0){for(i=0;i<len;i++)data2.GetElement(&i,Inbyte+i);//转换为BYTE型数组for(i=0;i<len;i++) //将数组转换为Cstring型变量{temp=*(char*)(Inbyte+i); //字符型strtemp.Format("%c",temp); //将字符送入临时变量strtemp存放buffer+=strtemp; //将字符串送入临时变量buffer中存放}}m_receive=m_receive+buffer+" ";}UpdateData(FALSE); //更新编辑框内容// MessageBox("gegnxin","提示",MB_OK);}void CPC1PC2Dlg::OnButtonSet(){// TODO: Add your control notification handler code hereUpdateData(TRUE);CString str;str.Format("%s,n,8,1",m_bt);m_Comm.SetSettings(str);}void CPC1PC2Dlg::OnButton2(){// TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT2)->SetWindowText(_T(""));}四.实验过程:(1)将9针RS232串口通信线与PC机串口连接,并用跳线将RS232串口通信线另一端2(RXD)和3(TXD)短接。

基于RS232双机通信实验

基于RS232双机通信实验

实验报告基于RS232双机通信实验一、实验目的1、理解串行通信的基本概念和51系列单片机的串行通信接口结构。

2、理解现场仪表的通讯过程二、实验内容1、使用串口实现单片机1与单片机2的数据通信,实现互相控制。

要求按下单片机1系统板上的按键,单片机2系统板上LED点亮。

三、实验环境1、编程软件keil2、仿真软件proteus四、实验原理MAX232芯片用于电平转换,实现RS232电平与TTL电平(单片机)的互相转换。

本次实验单片机之间通信不使用握手信号,只需3根信号线:TXD(发送线),RXD(接收线),GND(地线)。

单片机之间通信的原理图如图1所示,当单片机1(主机) 查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。

图1 单片机之间通信的原理图五、实验过程1、实现实验要求(1)实验程序主机程序:#include<reg51.h>void main(){TMOD=0x20; //使用T1定时器工作方式2SCON=0X50; //使用串行接口方式一TH1=0XFD; //设置T1的初始值,使得波特率为9600TL1=0XFD;PCON=0x00;TR1=1; //启动T1定时器P1=0xff; //设置P1口初始值while(1) //开始死循环{SBUF=P1; //将P1值给SBUFwhile(!TI); //等待发送完成TI=0; //发送标志位置零等待下次发送}}从机程序:#include<reg51.h>void main(){TMOD=0x20; //使用T1定时器工作方式2SCON=0X50; //使用串行接口方式一TH1=0XFD; //设置T1的初始值,使得波特率为9600TL1=0XFD;PCON=0x00;TR1=1; //启动T1定时器P1=0xff; //设置P1口初始值while(1){P1=SBUF; //接受数据并用P1口显示while(!RI); //等待接受完成RI=0; //关闭接受使能位,等待下次接送}}(2)仿真图2、升级使得按钮按下闪三次并LED显示,每按下按钮显示加一,当LED达到15后重新开始计数。

RS232串口通讯

RS232串口通讯

实验九 RS232串口通讯应用一、实验目的串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如可以很直观地把红外遥控器键值的数据码显示在电脑上等。

本次实验目的:1、通过实际硬件连接及软件编程完成 51单片机和PC机之间的串口通讯,从而加深对异步串行通信接口的基本结构、工作原理等串行通信基本概念的理解;2、了解RS-232C电平规定与TTL电平规定的不同,及采用专用芯片MAX232实现两者之间电平转换的连接电路。

二、实验设备51单片机实验板、PC机、串口连接线、串口调试软件、Keil软件、连接导线等。

三、实验原理及内容51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。

进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,在此采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。

采用三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。

这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。

图1 串口通讯的硬件电路连接为了能够在电脑端看到单片机发出的数据,必须借助一个WINDOWS软件进行观察,这里利用一个免费的电脑串口调试软件(这是一个绿色的软件,无需安装,可以直接在当前位置运行这个软件)。

软件界面如下图,1先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。

串口选择为COM1,当然51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符成功。

RS232接口实验

RS232接口实验

RS232接口实验一、实验原理和电路说明数据通信设备与外部进行信息交换时,一般是通过数据接口进行。

在数据接口中主要是传输两类信息:(1)数据;(2)时钟。

有时也只有数据信息而没有时钟信息,这时时钟信息将由接收端从接收数据流中提取出来。

数据接口的设计取决于应用场合。

复杂的接口包括物理层、链路层等,简单的只包括物理层:即物理结构与信号方式的定义(信号的传输方式)。

在信号传输方式方面,目前可选的种类很多:TTL、RS232、RS422、V35、ECL等。

信号传输方式的选择与信号的速率、传输距离、抗干扰性能等有关。

对于低速、近距离信号的传输采用TTL方式,对于一般较高速率、距离较近时可选用RS232方式。

随着距离的增加、信号速率的提高可采用RS422、V35等信号方式,对于很高的信号速率通常采用ECL信号接口方式。

RS232是电气设备之间常用的串行数据接口标准之一。

RS232电气接口具有以下特点:RS232是一种不平衡接口,信号源开路电压小于25V,负载阻抗3000到700 0Ω,负载电容小于2500pF。

在接口端电压低于–3V时确定为1,接口电压高于3V时确定为数据0。

RS232电路采用接口专用集成芯片MAX232,其内部含两个独立的收发通道。

终端A模块的功能电原理框图如图8.2.1所示。

在该模块中,测试点的安排如下:1、TPF01(TPG01):RS232接收数据(RS232→—TTL)2、TPF02(TPG02):TTL接收数据(RS232→—TTL)3、TPF03(TPG03):TTL发送数据(TTL→—RS232)4、TPF04(TPG04):RS232发送数据(TTL→—RS232)注:括弧内为终端B模块内测试点。

其余测试点安排在JH02连接头的外部自环接头上。

自环连接头的制作见图8.2.2。

TPF02TPF03TPF01TPF04① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨⑩JF01 UF01发送数据接收数据图8.2.1 同步接口模块电原理框图RS232TTL1 3 5 7 92 4 6 8 10图8.2.2 RS232接口自环连接测二、实验仪器1、 Z H5001通信原理综合实验系统 一台2、 20MHz 双踪示波器一台三、实验目的1、 熟悉RS232接口的基本特性和应用;四、实验内容异步数据接口B调制器解调器信道TPG03收数据自环m 序列输入图8.2.3 终端接口测试系统连接示意图TTL RS232异步数据接口ATPG02发数据TPF03收数据准备工作:为便于引入观测信号,将来自解调器的数据送往RS232端口进行测试,测试系统连接参见图8.2.3所示。

计算机网络实验RS232串口通信程序的编写

计算机网络实验RS232串口通信程序的编写

计算机网络实验RS232串口通信程序的编写RS232是一种常见的串行通信接口,用于在计算机和其他外部设备之间传输数据。

它广泛应用于各种设备和应用程序,如串口调试工具、点阵打印机等。

本文将介绍如何编写一个基本的RS232串口通信程序。

我们将使用C 语言和Linux操作系统来演示。

在开始编写程序之前,我们需要了解一些RS232串口的基本概念和通信协议。

RS232串口由发送线(TX)、接收线(RX)、控制线(如RTS、CTS、DTR和DSR)等组成。

通信时,发送方将数据从TX线发送到接收方的RX线,然后接收方通过RX线接收数据。

以下是一个简单的RS232串口通信程序示例:```c#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <termios.h>#include <unistd.h>int maiint fd = open("/dev/ttyS0", O_RDWR , O_NOCTTY); // 打开串口设备if (fd == -1)perror("打开串口失败");exit(1);}struct termios options;tcgetattr(fd, &options); // 获取当前串口设置//设置波特率为9600cfsetispeed(&options, B9600);cfsetospeed(&options, B9600);//设置数据位为8位,无奇偶校验,停止位为1位options.c_cflag &= ~PARENB;options.c_cflag &= ~CSTOPB;options.c_cflag &= ~CSIZE;options.c_cflag ,= CS8;//更新串口设置tcsetattr(fd, TCSANOW, &options);char buffer[255];while (1)ssize_t len = read(fd, buffer, sizeof(buffer)); // 从串口读取数据if (len == -1)perror("读取串口失败");exit(1);}printf("接收到数据:%.*s\n", len, buffer);ssize_t nwrite = write(fd, buffer, len); // 向串口写入数据if (nwrite == -1)perror("写入串口失败");exit(1);}}close(fd);return 0;```该程序首先打开串口设备`/dev/ttyS0`,如果打开失败则会输出错误信息并退出。

RS232组网通信实验

RS232组网通信实验

实验一RS-232组网通信实验(一)PC及其兼容工控机的异步通讯接口PC及其兼容工控机都有两个异步通讯接口:COM1和COM2,其关键部件是通用异步收发器(UART)INS8250。

INS8250的内部有10个寄存器,分别用于通讯参数的设置、线路及MODEM的控制与状态查询、数据收发及中断管理等。

要在中断方式下收发数据,必须对INS8250的寄存器直接操作,各寄存器名称及其相应的端口地址列于表1。

由表1可知:THR、RBR和DLL占用同一个端口地址3F8H(2F8H),IER和DLM也占用同一个端口地址3F9H(2F9H),对它们进行访问时,如果设置LCR的最高位为1,访问的是除数寄存器;如果设置LCR的最高位为0,则访问的是THR、RBR和IER。

而THR是只写寄存器,RBR是只读寄存器,在LCR的最高位设置为0时,对端口地址3F8H(2F8H)的写入操作访问的是THR,读出操作访问的是RBR。

硬件连接方式:将2台PC机的COM1/COM2串行通信口通过9针D型接口3线连接。

(二)INS8250有关寄存器的设置串行口的初始化主要是对INS8250的有关寄存器进行设置,以确定通讯的数据格式、波特率、中断的触发方式等。

①确定数据格式数据格式是通过设置线路控制寄存器(LCR)来确定的,LCR的定义如下:其中:WSL1、WSL0用于选择每个发送或接收的串行字符的位数,分别设置这两位为00、01、10、11时,对应的字长依次是5位、6位、7位、8位;STB用于确定停止位的位数,STB =0时使用1位停止位,STB=1时,如果WSL1、WSL0设置为00,使用1.5位停止位,其它情况下使用2位停止位;PEN用于选择是否允许奇偶校验,PEN=0时,不进行奇偶校验,PEN=1时有奇偶校验;此时,EPS选择校验方式,EPS=0时是奇校验,EPS=1时是偶校验;SP用于选择是否在奇偶校验位和停止位之间插入奇偶标志位,SP=0时不插入,SP=1时插入1位奇偶标志位,偶校验时插一个0,奇校验时插入一个1;SB是设置间断控制位,SB=1时输出数据强迫为0,SB=0时可进行正常的数据收发;DLAB是除数寄存器访问位,DLAB =1时访问除数寄存器,DLAB=0时访问THR、RBR和IER。

实验四Zigbee无线通信及RS232串口通信实验

实验四Zigbee无线通信及RS232串口通信实验

实验四Zigbee⽆线通信及RS232串⼝通信实验实验四 Zigbee⽆线通信及RS232串⼝通信实验实验预习要求1、了解Zigbee⽆线通信原理。

2、学习RS232串⼝和定时器编程⽅法。

⼀、实验⽬的1、了解Zigbee驱动函数的功能。

2、了解MSP430F6638中USCI_Ax模块的UART模块的使⽤。

3、掌握MSP430F6638的串⼝通信和定时器的使⽤。

⼆、实验器材PC机、两个CC2520模块、两台MSP430F6638实验箱、USB数据线、杜邦线三、实验内容1、验证性实验利⽤两个Zigbee模块通信,⼀个模块作发射,⼀个作接收。

发射模块所在实验箱按下按键控制接收模块所在实验箱上LED1的亮灭,从⽽实现⽆线点灯的功能。

2、设计性实验利⽤MSP430F6638单⽚机的USCI_Ax模块进⾏RS232串⼝通信,实现PC机和单⽚机的双向通信,要求如下:(1)单⽚机发送数字0到9⾄ PC机,从数字5开始发送,每隔1s发送⼀个数。

若单⽚机开发板上按下⼀按键(例如S3),则数字加1后进⾏发送,加到9以后,⼜从0开始,若没有按键按下,则继续发送当前的数字。

在PC机上⽤串⼝调试助⼿软件查看PC机接收的数据是否正确。

(2)PC机向单⽚机发送点灯的命令。

如果单⽚机接收到PC机发送的数字1,则点亮单⽚机开发板上的LED1;接收到PC机发送的数字2,则点亮单⽚机开发板上的LED2,……,直到LED5点亮。

四、实验原理1、验证性实验Zigbee是基于IEEE802.15.4标准的低功耗个域⽹协议。

根据这个协议规定的技术是⼀种短距离、低功耗的⽆线通信技术。

这⼀名称来源于蜜蜂的⼋字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在⽅位信息,也就是说蜜蜂依靠这样的⽅式构成了群体中的通信⽹络。

其特点是近距离、低复杂度、⾃组织、低功耗、低数据速率、低成本。

主要适合⽤于⾃动控制和远程控制领域,可以嵌⼊各种设备。

【VIP专享】RS232串口通信实验报告

【VIP专享】RS232串口通信实验报告

6.培养学生观察、思考、对比及分析综合的能力。过程与方法1.通过观察蚯蚓教的学实难验点,线培形养动观物察和能环力节和动实物验的能主力要;特2征.通。过教对学观方察法到与的教现学象手分段析观与察讨法论、,实对验线法形、动分物组和讨环论节法动教特学征准的备概多括媒,体继课续件培、养活分蚯析蚓、、归硬纳纸、板综、合平的面思玻维璃能、力镊。子情、感烧态杯度、价水值教观1和.通过学理解的蛔1虫.过观适1、察于程3观阅 六蛔寄.内列察读 、虫生出蚯材 让标容生3根常蚓料 学本教活.了 据见身: 生,师的2、解 问的体巩鸟 总看活形作 用蛔 题线的固类 结雌动态业 手虫 自形练与 本雄学、三: 摸对 学动状习人 节蛔生结4、、收 一人 后物和同类 课虫活构请一蚯集 摸体 回并颜步关 重的动、学、蚓鸟 蚯的 答归色学系 点形教生生让在类 蚓危 问纳。习从 并状学理列学平的害 题线蚯四线人 归、意特出四生面体以形蚓、形类 纳大图点常、五观玻存 表及动的鸟请动文 本小引以见引、察璃现 ,预物身类 3学物明 节有言及的、导巩蚯上状 是防的体之生和历 课什根蚯环怎学固蚓和, 干感主是所列环史 学么据蚓节二样生练引牛鸟 燥染要否以举节揭 到不上适动、区回习导皮类 还的特分分蚯动晓 的同节于物让分答。学纸减 是方征节布蚓物起 一,课穴并学蚯课生上少 湿法。?广的教, 些体所居归在生蚓前回运的 润;4泛益学鸟色生纳.靠物完的问答动原 的4蛔,处目类 习和活环.近在成前题蚯的因 ?了虫以。标就 生体的节身其实端并蚓快及 触解寄上知同 物表内特动体结验和总利的慢我 摸蚯生适识人 学有容点物前构并后结用生一国 蚯蚓在于与类 的什,的端中思端线问活样的 蚓人飞技有 基么引进主的的考?形题环吗十 体生行能着 本特出要几变以动,境?大 节活的1密 方征本“特节化下物.让并为珍 近习会形理切 法。课生征有以问的小学引什稀 腹性态解的 。2课物。什游题主.结生出么鸟 面和起结蛔关观题体么戏:要利明蚯?类 处适哪构虫系察:的特的特用确蚓等 ,于些特适。蛔章形殊形征板,这资 是穴疾点于可虫我态结式。书生种料 光居病是寄的们结构,五小物典, 滑生?重生鸟内学构,学、结的型以 还活5要生类部习与.其习巩鸟结的爱 是如原活生结了功颜消固类构线鸟 粗形何因的存构腔能色化练适特形护 糙态预之结的,肠相是系习于点动鸟 ?、防一构现你动适否统。飞都物为结蛔。和状认物应与的行是。主构虫课生却为和”其结的与题、病本理不蛔扁的他构特环以生?8特乐虫形观部特8征境小理三页点观的动位点梳相组等、这;,哪物教相,理适为方引些2鸟,育同师.知应单面导鸟掌类结了;?生识的位学你握日构解2互.。办特生认线益特了通动手征观识形减点它过,抄;察吗动少是们理生报5蛔?物,与的解.参一了虫它和有寄主蛔与份解结们环些生要虫其。蚯构都节已生特对中爱蚓。会动经活征人培鸟与飞物灭相。类养护人吗的绝适这造兴鸟类?主或应节成趣的为要濒的课情关什特临?就危感系么征灭来害教;?;绝学,育,习使。我比学们它生可们理以更解做高养些等成什的良么两好。类卫动生物习。惯根的据重学要生意回义答;的3.情通况过,了给解出蚯课蚓课与题人。类回的答关:系线,形进动行物生和命环科节学动价环值节观动的物教一育、。根教据学蛔重虫点病1.引蛔出虫蛔适虫于这寄种生典生型活的线结形构动和物生。理二特、点设;置2.问蚯题蚓让的学生生活思习考性预和习适。于穴居生活的形态、结构、生理等方面的特征;3.线形动物和环节动物的主要特征。

RS232串口通信实验

RS232串口通信实验

RS232串口通信实验一、认识RS232单片机的串行口是非常有用的,通过他我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作,在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。

RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口. 它是在1970年由美国电子工业协会(EIA)联合贝尔系统,调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准.它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定.后来IBM的PC机将RS232简化成了DB-9连接器,从而成为事实标准.而工业控制的RS-232口一般只使用RXD,TXD,GND三条线.在讨论RS-232C接口标准的内容之前,先说明两点:首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。

因此这个标准的制定,并未考虑计算机系统的应用要求。

但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。

显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。

有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。

其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。

由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。

(1)RS232(DB9)的接口说明1 DCD 载波检测2 RXD 接收数据3 TXD 发送数据4 DTR 数据终端准备好5 SG 信号地6 DSR 数据准备好7 RTS 请求发送8 CTS 允许发送9 RI 振铃提示(2)接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。

实验一 RS232与modem通信编程

实验一 RS232与modem通信编程

DB-9针连接头 ------------\12345/ \6789/ ------从计算机连出的线的截面。
1.2 RS-232接口物理层规范
RS-232针脚的功能: 数据: TXD(pin 3):串口数据输出 RXD(pin 2):串口数据输入 握手: RTS(pin 7):发送数据请求 CTS(pin 8):清除发送 DSR(pin 6):数据发送就绪 DCD(pin 1):数据载波检测 DTR(pin 4):数据终端就绪
(4 ) 在线传送数据 两个 Modem连接好后,就可以通过电话线 传送数据。双方都可以接收和发送。 如果通信配置成全双工的(full—duplex),则 两个用户都可以同时发送和接收信息。如果通 信连接是半双工的(half—duplex),则只能有 一个用户发送,一个用户接收。 通信时,可能由于线路噪声,设备出问题 或用户操作错误而中止连接,这时Modem会指 示丢失了载波,返回NO CARRIER结果码。 为了重新建立连接,必须重新拨号。
2)串口属性的设置
3)发送和接收数据
Modem通信程序设计

Modem的工作状态

AT指令集
Modem通信编程

1. Modem的工作状态
(1)状态转换
连接建立 离线命令状态 载波丢失 ATH命令 ATO命令 换码序列+++
在线状态
在线命令状态
(1)状态转换
命令状态和在线状态可以进行相互转 换。 离线命令状态到在线状态:当建立连 接后,Modem由离线命令状态转为在线状 态。 在线状态到在线命令状态:在通信过程中, 如果DTE向Modem发送换码序列+++,在 发送前后均有1秒钟的保护时间(即 Modem空闲),Modem将由在线状态转为 在线命令状态。

RS232串口通信实验

RS232串口通信实验

实验名称:RS-232串口通信实验实验目的:利用单片机的TXD、RXD口,学会单片机串行口的使用。

实验原理:1、51单片机内置全双工异步串行口,共有4种工作方式,电原理图如下:2、串行通信的编程:(1)串行口控制寄存器SCON(2)SM0、SM1—串行口工作方式选择位SM0 SM1 方式功能说明0 0 0 同步移位寄存器方式(用于扩展I/O口)0 1 1 8位异步收发,波特率可变(由定时器控制)1 02 9位异步收发,波特率为fosc/64或fosc/321 1 3 9位异步收发,波特率可变(由定时器控制)(3)REN—允许串行接收位该控制为由软件置“1”或清“0”。

REN=1 允许串行口接收数据。

REN=0 禁止串行口接收数据。

(4)TB8—发送的第9位数据方式2和3时,TB8是要发送的第9位数据,可作为奇偶校验位使用,也可作为其他标志。

(例:在多机通讯中,可以标注传输内容为地址或数据)RB8—接收到的第9位数据方式2和3时,RB8存放接收到的第9位数据。

在方式1,如果SM2=0,RB8是接收到的停止位。

在方式0,不使用RB8。

(5)TI——发送中断标志位方式0时,串行发送第8位数据结束时由硬件置“1”,其它工作方式,串行口发送停止位的开始时置“1”。

TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。

CPU响应中断后, 向SBUF写入要发送的下一帧数据。

TI必须由软件清0。

RI——接收中断标志位方式0时,接收完第8位数据时,RI由硬件置1。

其它工作方式,串行接收到停止位时,该位置“1”。

RI=1,表示一帧数据接收完毕,并申请中断, CPU从接收SBUF取走数据。

该位状态也可软件查询。

RI必须由软件清“0”。

(6)特殊功能寄存器PCONSMOD:波特率倍增位方式0,波特率=fosc/12方式2,波特率= fosc*2SMOD/64方式1、3,波特率=定时器T1的溢出频率*2SMOD/643、多机通讯:主机传输的信息包括地址+数据,每个从机根据自己的地址来判断是否参与通讯SM2 —多机通信控制位用于方式2或方式3中的多机通信控制。

实验项目1 RS232串行通信接口模块设计与采样信号显示

实验项目1  RS232串行通信接口模块设计与采样信号显示

实验项目1RS232串行通信接口模块设计与采样信号显示(1) 实验目的:学习利用状态机设计通用异步RS232硬件通信模块,并通过此通信模块设计信号信号采集、分析、显示与处理模块。

由于篇幅所限,不拟展开详细介绍,请首先查阅相关资料。

UART即Universal Asynchronous Receiver Transmitter通用异步收发器,是一种应用广泛的短距离串行传输接口。

往往用于短距离、低速、低成本的微机与下位机的通讯中。

8250、8251、NS16450等芯片都是常见的UART器件。

这类芯片有些已经做得相当复杂,含有许多辅助的模块,比如含FIFO等。

相关的通信口是TXD和RXD,它们是交错连接的。

TXD 是UART发送端,为输出;RXD是UART接收端,为输入。

在TXD、RXD信号线上的电平也不是普通的TTL 5V电平,而是RS232的接口电平。

基本UART只需要两条信号线(TXD、RXD)就可以完成数据的相互通信,接收与发送是互不干扰的,也就是全双工的。

但要求在TXD、RXD制定一定的规则,以使接收、发送之间能协调一致。

需要注意的是,在UART 上是不传送时钟信号的(这就是所谓的“异步”),而两个设备的时钟不可能是同步的,这就要求UART必须通过检测进行数据同步。

图8-37 UART通信设计顶层电路(2) 实验内容1:验证检测示例设计(图8-37)。

完成已有设计的验证性实验:将RS232通信线的一头接5E+系统,另一头接PC机的串行1口(COM1口),接上USB电源。

下载/KX_7C5EE+/DEMOs/EXPL5_SPCTR_ANALZ_232/SPC,到FPGA中;按复位键K1,即与PC进行通信。

进入“FOR_PC_FILE”目录,运行(双击)并安装通信软件:FASetup.exe 。

图8-37是UART通信与数据采集电路设计。

其中KX232模块即本项基于状态机的UART 综合通信模块;LPMRAM是数据缓冲存储器,其控制状态机是KXRAM模块;ROMJ是正弦波示例数据ROM,如果改变其中数据,可以看到图8-38显示的波形随之而变。

rs232串口通信实验报告

rs232串口通信实验报告

计算机网络实验————实现RS232串口通信程序及MODBUS协议的编程一.实验目的:1.熟悉并掌握RS232串口标准及原理。

2.实现PC机通过RS232串口进行数据的收发。

3.掌握MODBUS协议。

4. 掌握MODBUS协议编程的编写二、实验设备PC机一台,RS232串口通信线(9针)一条,跳线一个(一台PC实验时,将其中的2和3短接)三、实验内容界面内容:(1)打开串口与关闭串口按钮(2)信息发送区:信息编辑区,发送信息按钮(3)信息接受区:信息显示区,接收信息按钮四、实验原理rs-232-c :RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。

它规定连接电缆和机械、电气特性、信号功能及传送过程。

常用物理标准还有有EIA&#0;RS-232-C、EIA&#0;RS-422-A、EIA&#0;RS-423A、EIA&#0;RS-485。

这里只介绍EIA&#0;RS-232-C(简称232,RS232)。

例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。

RS232原理如图1-3。

图1 RS232接口电缆和引脚外观图2 RS232 引脚定义(DB9)RS232接口硬件握手方式1 概述在现代的各种实时监控系统和通信系统中,在Windows 9X/NT下利用VC++对RS-232串口编程是常用的手段。

Windows 9X/NT是抢先式的多任务操作系统,程序对CPU的占用时间由系统决定。

多任务指的是系统可以同时运行多个进程,每个进程又可以同时执行多个线程。

进程是应用程序的运行实例,拥有自己的地址空间。

RS232串口通信实验

RS232串口通信实验

RS232串口通信实验一.实验目的利用单片机的TXD、RXD 口,使用户学会单片机串行口的使用。

二.实验设备及器件IBM PC 机一台DP-51PROC 单片机综合仿真实验仪一台(本实验不需要导线)三.实验内容1.编写一段程序,利用单片机的串行口向PC 机发送0X55。

2.编写一段程序,接收PC 机串行口发送的0X55(ASCII 码为字母U),在单片机接收到0X55 的时候返回一个0X41(ASCII 码为字母A)。

在PC 机一端,以接收到0X41(ASCII 码为字母A)为完成。

四.实验要求深刻理解MAX232芯片的作用,学会使用单片机的的串行口,如果有时间用户可以做一下单片机之间的串行通讯。

五.实验步骤1.用串口线连接PC 机和DP-51PROC 单片机综合仿真实验仪。

图3.18RS232 串行口电路图2.编写一段程序,利用单片机的串行口发送0X55,波特率为9600 Bps。

(该程序不能在DP-51PROC 上进行仿真,所以只能下载,下载的操作可以参考本书的2.6 节)3.程序下载运行后可以在PC 的接收软件上看见接收到“UUUUUUU…”。

4.编写一段程序,在单片机接收到0X55(…U‟)的时候返回一个0X41(…A‟)。

在PC 机一端,以接收到0X41(…A‟)为完成,波特率为9600 Bps。

(该程序不能在DP-51PROC 上进行仿真,所以只能下载,下载的操作可以参考本书的2.6 节)。

5.下载程序运行后,先从PC 机发送一个0X55(…A‟),这时可以在PC 的接收软件看见接收到“A”。

六.实验预习要求阅读本书的2.6 节内容,理解硬件结构,还可以先把程序编好,然后在Keil C51环境下进行软件仿真。

还要学会PC 机上的的串口调试软件的使用(DPFLASH 也内嵌七.实验参考程序程序1:ORG 0000HLJMP MainORG 00F0HMain:MOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2 MOV TH1,#0FDH ;设置波特率为9600 MOV TL1,#0FDHMOV SCON,#50H ;设置串口位方式1 MOV PCON,#00HSETB TR1 ;定时器1 开始计数Mainloop:MOV SBUF,#55H ;开始发送SENDWT:JBC TI,MainloopAJMP SENDWT;End程序2:ORG 0000HLJMP MainORG 00F0HMain:MOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2 MOV TH1,#0FDH ;设置波特率为9600 MOV TL1,#0FDHMOV SCON,#50H ;设置串口位方式1 MOV PCON,#00HSETB TR1 ;定时器1 开始计数REC:JBC RI,SENDWTAJMP RECSENDWT:MOV A,SBUFCLR RICJNE A,#55H,RECMOV SBUF,#41H ;开始发送AJMP $;End(1)请用户思考一下,如果是单片机与单片机之间进行串行口通讯应如何进行。

RS-232通信编程实验指导书

RS-232通信编程实验指导书

目录0引言 (2)1理论背景 (3)1.1串口通讯的概念及接口电路 (3)1.2传输速率与传输距离 (5)1.2.1 波特率 (5)1.2.2 发送/接收时钟 (6)1.2.3 波特率因子 (7)1.2.4 传输距离 (7)1.3奇偶校验 (8)1.4网络通信的数据包(帧) (9)1.4.1 HDLC的帧结构 (10)1.4.2 点对点协议PPP的帧结构 (11)1.5调制解调器(MODEM)和流控制 (12)1.5.1 调制解调器(MODEM) (12)1.5.2 流控制 (14)2技术背景 (17)2.1RS-232 (17)2.1.1 电气特性 (18)2.1.2 连接器的机械特性 (20)2.1.3 RS-232的接口信号 (22)2.2远距离通信 (26)2.2.1 采用Modem(DCE)和电话网通信时的信号连接 (26)2.2.2 采用专用电话线通信 (28)2.3近距离通信 (28)2.3.1 零Modem 的最简单连线(3线制) (29)2.3.2 零Modem标准连接 (30)3设计过程 (32)3.1串行通信材料 (32)3.1.1 串行通信端口 (32)3.1.2 串口通信线 (32)3.2总体设计概念与功能描述 (34)3.2.1 总体设计概念 (34)3.2.2 字节传输 (35)3.2.3 文本文件传输 (36)4设计成果与运行过程 (38)4.1实时信息交互功能 (38)4.2文本和文件的传输 (47)5总结 (82)0 引言在各种单片机应用系统设计中,如智能仪器仪表、各类手持设备、GPS接收器等,都会遇到怎样与PC机进行通讯的问题。

在数据量不大、传输速率要求不高的情况下,一般都采用串行通讯方式,即通过与PC机配置的RS-232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。

例如南天加密键盘,它是南天自主开发的新产品,采用扫描式16键金属键盘,用单片机与DES芯片实现管理和控制,通过RS232通讯口与PC机相连。

单片机开发 RS232通信实验

单片机开发 RS232通信实验
10位×240个/秒 = 2400 bps
2.F28335的SCI介绍
2.1 串口通信简介
串口通信(Serial Communication),是指外设和计算机间,通过 数据信号线、地线等,按位进行传输数据的一种通信方式,属于串 行通信方式。串口是一种接口标准,它规定了接口的电气标准,没 有规定接口插件电缆以及使用的协议。
2.3 SCI 结构框图
(1)SCI 数据格式 SCI 的发送和接收都采用不归零码格式,具体包括: ①1 位起始位 ②1~8 位数据。 ③1 个奇偶校验位(可选择)。 ④1 位或 2 位停止位。 ⑤区分数据和地址的附加位(仅在地址位模式存在)
数据的基本单元称为字符,它有 1~8 位长。每个字符包CI 通信中,带有格式信息的数字字符称为帧,如下图所示:
由此可见,RS-232C是用正负电压来表示逻辑状态,与晶体管晶体管逻辑集成电路(TTL)以高低电平表示逻辑状态的规定正好 相反。
串口通信中还需要注意的是,串口数据收发线要交叉连接,计 算机的TXD要对应单片机的RXD,计算机的RXD要对应单片机的TXD
, 并且共GND,如下图:
(2)通信协议 RS232的通信协议比较简单,通常遵循96-N-8-1格式。
(2)同步通信 同步通信时要建立发送方时钟对接收方时钟的直接控制,使双
方达到完全同步。此时,传输数据的位之间的距离均为“位间隔” 的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也 保持字符同步关系。发送方对接收方的同步可以通过两种方法实 现。
1.3 单工、半双工与全双工通信 (1)单工通信
(1)接口标准 串口通信的接口标准有很多,有RS-232C、RS-232、RS-422A、RS-485
等。常用的就是RS-232和RS-485。RS-232其实是RS-232C的改进,原理是 一样的。这里我们就以RS-232C接口进行讲解,RS-485在后面章节中会介 绍。

实验九 RS232通信实验

实验九 RS232通信实验

实验九RS232通信实验
一、实验目的
1.了解8051串行口的工作原理以及发送的方式。

2.了解PC机通讯的基本要求。

二、实验说明
8051串行口经RS232电平转换后,与PC机串行口相连。

PC机使用串口调试应用程序V2.2.exe,实现上位机与下位机的通讯。

本实验使用查询法接收和发送资料。

上位机发出指定字符,下位机收到后返回原字符。

波特率设为4800。

三、实验内容及步骤
注:次实验要用PC机的两个串口,一个用于仿真器通信,另一个串口用于实验8051通讯,若PC只有一个串口,可以把实验程序烧录到单片机(不用在线仿真)运行(串口用232平行线)。

1)安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。

2)实验箱上的CON2和PC的其中一个串行口相连,J1的P1.0,P1.1打在左边,D18的四只短路冒在右边。

3)在所建的Project文件中添加“8051通信(任意口).ASM”,编译无误后,全速运行程序。

4)打开串口调试V2.2.exe 应用程序,选择下列属性:(注意选择通信串口)
波特率——4800数据位——8
奇偶校验——无停止位——1
在V2.2.exe‘发送的字符/数据’区输入一个字符/数据,点击手动发送或自动发送,接收区收到相同的字符/数据。

5)可把源程序编译成可执行文件,烧录到89C51芯片中。

四、实验参考程序:
见附件:实验指导参考程序。

实验二 RS232串口通信实验

实验二 RS232串口通信实验

实验二RS-232串口通信实验
一实验目的
(1)熟悉RS-232接口电路的作用与电路组成;
(2)掌握计算机间利用串口进行通信的连接方法;
(3)掌握串口通信软件的使用方法。

二实验所需材料
本实验要求使用:
◆UTP类电缆
◆两个RJ-45连接器
◆两个DB-9串口改RJ-45口连接器
◆两台计算机
◆一把网络压线钳
◆一把电缆剥线钳
◆一台电缆测试仪
三实验步骤
1、每两人一组,在老师指导下,根据下面的线序关系排列线序对;
一端:
2
3、使用压线钳将两端压紧。

4、使用测试仪测试连通性。

5、将两个DB-9连接器分别固定在两台计算机的串口(COM1)上。

6、将做好的线缆两端分别接入固定好的两个DB-9连接器的RJ-45端口上。

7、使用串口通讯软件测试,验证能否通讯。

四、实验总结
1.制作网线,选定一节双绞线,用剥线钳剥去两端的皮,按线序关系排列线序对,将两端分别插入水晶头中,用压线钳压好。

2.用测试仪测试网线的连通性。

3.将两个DB-9串口改RJ-45口连接器分别插入两台PC机的DB—9串口种,再用网线插入连接器的RJ-45口中,连接两台电脑。

4.用软件测试连接的状况。

一开始显示的界面
5.选择发送的文件,点击“打开”即可接收到。

6.接收文件的一端,显示文件内容。

RS232串口通信控制器实验报告

RS232串口通信控制器实验报告

摘要本实验报告为RS232串口通信控制器。

实验设计了基于VHDL描述的RS232串口通信控制器,通过串口调试工具实现PC和CPLD互发和接收数据。

完成的功能包括实现收发一帧10个bit、波特率为9600的串口通信控制器,CPLD接收数据后可译码显示在7段数码管上。

实验的重心放在了RS232串口通信控制器发送模块和接收模块的设计,采用了自顶向下的思路进行设计,系统的核心为有限状态机。

报告中给出了完整的设计思路和过程,并将系统分模块进行了详细的设计,给出了VHDL语言描述。

完成了状态机和核心模块以及系统整体的仿真验证。

最终下载到实验板上测试通过。

关键词:RS232;VHDL;串口通信;状态机第一部分任务要求 (4)1.1课题要求 (4)1.2设计目标 (4)第二部分系统设计 (5)2.1设计思路........................................................................................错误!未定义书签。

2.2系统结构设计 (5)2.2.1系统结构框图 (5)2.2.2系统逻辑功能划分 (5)2.2.3层次模块划分 (6)2.2.4模块设计图 (8)2.2.5发送模块设计 (9)2.2.6接收模块设计 (10)2.2.7分频模块设计 (11)2.2.8按键防抖模块设计 (11)2.2.9译码显示模块设计 (11)2.3系统硬件语言描述 (12)2.3.1VHDL描述思路 (12)2.3.2总体电路的描述 (12)2.3.3分块电路的描述 (13)2.4系统仿真验证 (20)第三部分结果与分析 (22)3.1实现功能说明 (22)3.2器件资源分析 (22)3.3故障和问题分析 (24)第四部分总结与结论 (25)4.1实验结论 (25)4.2总结体会 (25)第五部分附录部分 (26)5.1元器件和仪表清单 (26)5.2VHDL源代码 (26)5.3电路图 (37)5.4参考文献 (38)第一部分任务要求1.1课题要求设计并实现一个可以和PC机通过RS232协议进行通信的串口通信控制器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
textcolor(0);
textbackground(3);
clrscr();
gotoxy(3,2);
cprintf(" Receive from COM1:\n");
gotoxy(3,4);
cprintf(" 9600 bps,8 bit,2 stop,even\n");
gotoxy(3,6);
(四)推荐程序调实方式:
①在1台PC机上安装具有如下界面的软件工具——“串口调实助手”(图1),在另一台PC机上分别调实发送和接收程序;
②在2台PC机上联合调实完整的发送/接收程序。
(五)推荐基础程序1——Turbo C语言程序
1.程序说明:
本程序是通过硬件中断方式完成RS-232接收与发送串行通信的。使用COM1进行通信时,产生的硬件中断号为IQR4,对应的中断向量为0CH。
③中断机制的引发INS8250可由4个事件中的任一个来引发一个中断,这4个事件依此是:接收数据有效;发送保持寄存器空;接收数据出错;MO-DEM状态改变。通过IER的bit0~bit3可依次设置它们是否被允许,某位为1时相应的事件允许引发一个中断,为0时禁止。
INS8250通过INTRPT引脚的高电平向系统发出中断请求,为了使INS8250能够向系统发中断,MCR的第三位必须置1。
{
unsigned char B;
asyncvect=getvect(0x0c);
disable();
inportb(0x3f8);
inportb(0x3fe);
inportb(0x3fb);
inportb(0x3fa);
outportb(0x3fc,0x08|0x0b);
outportb(0x3f9,0x01);
textcolor(14);
port_init(PORT,255);
while(i!=1)
{
a=getche();/*由键盘输入数据*/
if(a=='*')break;
else
outportb(0x3f8,a);/*发送数据*/
outportb(0x3fc,0x08|0x0b);
outportb(0x3f9,0x01);
}
void check(unsigned char states)
{
while((inportb(0x3fd)&states)==0);
}
void putb(unsigned char ch)
{
int temp=0;
由表1可知:THR、RBR和DLL占用同一个端口地址3F8H(2F8H),IER和DLM也占用同一个端口地址3F9H(2F9H),对它们进行访问时,如果设置LCR的最高位为1,访问的是除数寄存器;如果设置LCR的最高位为0,则访问的是THR、RBR和IER。而THR是只写寄存器,RBR是只读寄存器,在LCR的最高位设置为0时,对端口地址3F8H(2F8H)的写入操作访问的是THR,读出操作访问的是RBR。
unsigned char Buffer[BUFFLEN];
intbuffin=0;
intbuffout=0;
inti=0,ii=0;
unsigned char temp_buffer[BUFFMAX];
unsigned char ch,flag;
/*开放串行口中断*/
void enableports(void)
③为保证通讯的可靠性以及不耽误CPU响应其它中断,中断服务程序应尽量短,一些费时的操作如数据存盘等应放在中断服务程序以外。
④在把一个数据写入发送保持寄存器(THR)之前,必须检查线路状态寄存器LSR,以保证发送保持寄存器为空。
⑤初始化中断系统时,应该关闭中断,初始化完成后再开放。可使用C语言的库函数disable()和enable()来完成。
clrscr();/*绘制数据发送窗口*/
window(3,2,41,10);
textcolor(0);
textbackground(3);
clrscr();
gotoxy(3,2);
cprintf(" Transfer from COM1:\n");
gotoxy(3,4);
cprintf(" 9600bps, 8bit,2stop,even\n");
enable();
setvect(0x0c,asyncvect);
}
/*对COM1串行口有关参数的初始化*/
void Init()
{
outportb(0x3fb,0x80);
outportb(0x3f8,0x0c);
outportb(0x3f9,0x00);
outportb(0x3fb,0x1f);
实验一RS-232组网通信实验
(一)PC及其兼容工控机的异步通讯接口
PC及其兼容工控机都有两个异步通讯接口:COM1和COM2,其关键部件是通用异步收发器(UART)INS8250。INS8250的内部有10个寄存器,分别用于通讯参数的设置、线路及MODEM的控制与状态查询、数据收发及中断管理等。要在中断方式下收发数据,必须对INS8250的寄存器直接操作,各寄存器名称及其相应的端口地址列于表1。
(三)程序设计要点
在程序设计时,应该考虑以下问题:
①设置中断向量,以保证CPU执行中断服务程序时有一个正确的入口地址。可使用C语言的库函数setvect()和getvect()对中断向量进行设置和读取。
②中断服务程序什么时候结束,CPU无法知道,8259中断控制器也无法知道,必须通过指令通知8259中断控制器。对于PC机,这条指令就是向端口地址20H写入一个命令字20H。
unsigned char getb(void)
{
if(buffout!=buffin)
{
if(++buffout==BUFFLEN)buffout=0;
return(Buffer[buffout]);
}
else return(0xff);
}
main()
{
clrscr();/*绘制数据接收窗口*/
window(3,2,41,10);
flag=1;
putb(ch);
outportb(0x20,0x20);
}
/*关闭串行口中断*/
void disableports(void)
{
disable();
outportb(0x3f9,0x00);
outportb(0x3fc,0x00);
outportb(0x21,inportb(0x21)&0x10);
②设置波特率INS8250内部包含一个可编程的波特率发生器,它允许用1~65535的任意除数对1.8432MHz的输入频率进行分频,分频后的信号即波特率发生器的输出频率,而波特率是波特率发生器输出频率的1/16。由此可知,除数=1843200/(波特率×16)。16位的除数应在初始化时写入除数锁存器。
PC使用8259中断控制器,它可以管理来自外设的8个各自独立的中断请求信号IRQ0~IRQ7,其中IRQ4和IRQ3分别用于COM1和COM2的中断申请。8259内部有一个中断屏蔽寄存器(IMR),端口地址为21H,它的bit0~bit7分别对应IRQ0~IRQ7,通过设置其中的某一位为0以允许与其对应的中断请求。
B=inportb(0x21)&0xef;
outportb(0x21,B);
setvect(0x0c,asyncint);
enable();
}
/*中断服务程序*/
void interrupt far asyncint(void)
{
unsigned char ch;
ch=inportb(0x3f8);
其中:WSL1、WSL0用于选择每个发送或接收的串行字符的位数,分别设置这两位为00、01、10、11时,对应的字长依次是5位、6位、7位、8位;STB用于确定停止位的位数,STB=0时使用1位停止位,STB=1时,如果WSL1、WSL0设置为00,使用1.5位停止位,其它情况下使用2位停止位;PEN用于选择是否允许奇偶校验,PEN=0时,不进行奇偶校验,PEN=1时有奇偶校验;此时,EPS选择校验方式,EPS=0时是奇校验,EPS=1时是偶校验;SP用于选择是否在奇偶校验位和停止位之间插入奇偶标志位,SP=0时不插入,SP=1时插入1位奇偶标志位,偶校验时插一个0,奇校验时插入一个1;SB是设置间断控制位,SB=1时输出数据强迫为0,SB=0时可进行正常的数据收发;DLAB是除数寄存器访问位,DLAB=1时访问除数寄存器,DLAB=0时访问THR、RBR和IER。
尹彦芝.C语言常用算法与子程序.清华大学出版社.1993年.239-241
袁征,杨仁树,严建新. C语言编程技巧程序集.电子工业出版社.1993年.233-234
2.接收数据子程序如下:
/*通过中断方式由RS-232接收数据*/
#include<stdlib.h>
#include<dos.h>
#include<process.h>
#include<h>
#include<bios.h>
#include<ctype.h>
#include<stdio.h>
#include<fcntl.h>
#define BUFFLEN 10800
#define BUFFMAX 900
void Init(void);
void check(unsigned char states);
#include"process.h"
相关文档
最新文档