实验二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单片机和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串口通信实验一、认识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串口通信实验报告

RS232串口通信实验报告

// DDX/DDV support
// Implementation protected:
//{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资配0料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度பைடு நூலகம்题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并中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`,如果打开失败则会输出错误信息并退出。

关于串口的实验报告

关于串口的实验报告

关于串口的实验报告1. 实验目的本实验的目的是通过学习并实践串口通信的基本原理和方法,加深对串口通信的理解,掌握串口通信的使用技巧和开发工具。

同时,了解串口通信在实际应用中的重要性和应用场景。

2. 实验原理串口是一种用于计算机与外部设备之间进行数据通信的接口标准。

在计算机中,串口通常通过RS-232或RS-485等标准来实现。

串口通信采用的是异步通信方式,即接收方和发送方的时钟不同步,通过发送和接收的数据包中的控制信息来实现数据的传输。

串口通信的基本原理如下:- 串口通信通过一个物理接口连接计算机和外部设备。

- 通信数据被分为一个个字节进行传输,每个字节由一定的控制信息和实际数据组成。

- 发送方通过发送字节的方式将数据发送给接收方。

- 接收方通过接收字节的方式将数据接收并进行处理。

3. 实验步骤步骤一:准备实验环境为了进行串口通信的实验,我们需要准备以下工具和设备:- 一台计算机- 一个串口转USB转换器- 一个外部设备(如Arduino、传感器等)步骤二:安装串口驱动程序在开始实验之前,我们需要安装串口转USB转换器所需的驱动程序。

驱动程序的安装方式因不同的设备而有所差异,一般可以通过官方网站下载并按照说明进行安装。

步骤三:编写串口通信程序根据所使用的编程语言和开发工具,编写一个简单的串口通信程序。

该程序应包括以下功能:- 打开指定的串口端口- 配置串口的波特率、数据位、停止位等参数- 循环读取串口接收缓冲区中的数据,并进行处理- 将需要发送的数据写入串口发送缓冲区步骤四:测试串口通信将串口转USB转换器插入计算机,并将外部设备连接至串口转USB转换器。

运行编写好的串口通信程序,并观察实验结果。

测试串口通信的方法可以有很多,可以通过发送和接收数据包来验证通信是否正常。

步骤五:总结与分析根据实验结果,总结并分析串口通信的性能和应用场景。

可以考虑以下问题:- 串口通信在哪些领域得到了广泛应用?- 串口通信有哪些特点和优势?- 在实际应用中,串口通信可能遇到哪些常见问题,如何解决?4. 实验结论通过本实验,我们了解了串口通信的基本原理和实际应用方法。

串行口实验实验报告

串行口实验实验报告

串行口实验实验报告实验报告:串行口实验一、实验目的:1. 掌握串行口通信原理;2. 熟悉使用串行口进行数据通信;3. 学习使用串行口进行数据的发送和接收。

二、实验仪器和材料:1. 串行口连线2. 上位机软件(如串口调试助手)3. PCB板三、实验原理:串行口通信是一种通过传送位来传送数据的通信方式。

通过串行口,计算机可以与其他设备进行数据交换。

串行通信需要发送方和接收方之间通过一条传输线连通,在一定的波特率下,发送方将数据转换为一系列位发送给接收方,接收方将接收到的位转换为相应的数据。

四、实验步骤:1. 将串行口连线正确连接好,一端连接到计算机的串行口,另一端连接到实验设备;2. 打开上位机软件,配置串行口参数,如波特率、数据位等;3. 在上位机软件中发送数据,观察实验设备上接收到的数据;4. 在实验设备中发送数据,观察上位机软件接收到的数据。

五、实验数据记录:在实验过程中,我们尝试了不同的波特率和数据位设置,并记录了每次的实验数据接收情况。

以下是其中一次实验的数据记录:- 实验参数:波特率9600bps,数据位8位,无校验位,停止位1位;- 发送数据:0x55;- 接收到的数据:0x55。

六、实验结果分析:根据实验数据,我们可以发现发送的数据0x55成功被接收到,说明串行口通信正常工作。

这说明我们正确配置了串行口参数,并且发送和接收的数据没有出现错误。

七、实验总结:通过本次实验,我们掌握了串行口通信的原理,学会了如何使用串行口进行数据通信。

实验结果表明,我们成功地发送和接收了数据。

在实际应用中,串行口通信在许多领域中都有广泛的应用,比如计算机与外设的连接、嵌入式系统的开发等。

掌握串行口通信技术对于我们的学习和工作都具有重要意义。

八、存在的问题和改进方向:在本次实验中,我们没有发现明显的问题。

但是,在实际应用中,串行口通信可能会面临一些问题,比如数据丢失、传输错误等。

我们可以进一步学习调试和排查这些问题,并学习如何处理和解决这些问题。

串口传输实验原理

串口传输实验原理

串口传输实验原理串口传输是一种常见的数据传输方式,它通过串行通信的方式将数据从一个设备传输到另一个设备。

串口传输通常用于连接计算机和外部设备,例如打印机、调制解调器、传感器等。

本文将介绍串口传输的原理和实验方法。

一、串口传输的原理串口传输是一种基于异步通信的数据传输方式。

异步通信是指数据传输时没有固定的时钟信号,而是通过发送和接收方之间的协议来确定数据的传输速率和传输时序。

串口传输通常使用RS-232协议进行通信,该协议定义了数据传输的格式和电气特性。

串口传输的数据传输格式通常包括起始位、数据位、校验位和停止位。

起始位用于标识数据传输的开始,通常为逻辑0。

数据位用于传输实际的数据,通常为8位或9位。

校验位用于检测数据传输的正确性,通常为奇偶校验或循环冗余校验。

停止位用于标识数据传输的结束,通常为逻辑1。

串口传输的电气特性包括信号电平、波特率和数据位宽。

信号电平通常为±12V或±5V,波特率通常为9600bps或115200bps,数据位宽通常为8位或9位。

这些参数需要在发送和接收方之间进行协商,以确保数据传输的正确性和稳定性。

二、串口传输的实验方法为了验证串口传输的原理,我们可以进行一些简单的实验。

下面是一个基于Arduino的串口传输实验。

1. 实验材料- Arduino UNO开发板- USB数据线- 串口调试助手软件2. 实验步骤(1)将Arduino UNO开发板连接到计算机上,并打开Arduino IDE软件。

(2)在Arduino IDE软件中,打开“串口接收器”示例程序,并将波特率设置为9600bps。

(3)将Arduino UNO开发板通过USB数据线连接到计算机上,并上传“串口接收器”示例程序到开发板中。

(4)打开串口调试助手软件,并将波特率设置为9600bps。

在串口调试助手软件中,选择正确的串口号和数据位宽。

(5)在串口调试助手软件中,输入一些字符或数字,并点击“发送”按钮。

RS232串口通信实验

RS232串口通信实验

R S232串口通信实验(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验名称: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. 理解串行通信的基本原理和概念;2. 掌握串行通信的常用接口和协议;3. 学会使用串行通信进行数据传输;4. 熟悉串行通信在嵌入式系统中的应用。

二、实验原理串行通信是一种数据传输方式,通过一根或多根数据线,将数据一位一位地按顺序传送。

与并行通信相比,串行通信在传输速度和成本上具有优势,广泛应用于嵌入式系统、工业控制、远程通信等领域。

串行通信的基本原理如下:1. 数据格式:串行通信中,数据以字节为单位进行传输,每个字节由起始位、数据位、校验位和停止位组成。

2. 通信方式:串行通信主要有同步通信和异步通信两种方式。

a. 同步通信:通信双方使用统一的时钟信号进行数据传输,数据在传输过程中保持同步。

b. 异步通信:通信双方使用不同的时钟信号进行数据传输,数据在传输过程中不保持同步。

3. 串行通信接口:常用的串行通信接口有RS-232、RS-485、USB等。

三、实验设备1. 单片机开发板:STC89C52;2. 串口通信模块:MAX232;3. 串口通信线;4. 电脑;5. 串口调试助手。

四、实验步骤1. 连接电路:将单片机开发板、串口通信模块和电脑通过串口通信线连接起来。

2. 初始化单片机串口:设置单片机串口的工作方式、波特率、校验位和停止位等参数。

3. 编写串口发送程序:在单片机上编写程序,实现数据的串行发送。

4. 编写串口接收程序:在单片机上编写程序,实现数据的串行接收。

5. 使用串口调试助手进行测试:在电脑上打开串口调试助手,设置相应的通信参数,发送和接收数据。

五、实验结果与分析1. 实验结果:通过串口调试助手,成功实现了单片机与电脑之间的数据传输。

2. 分析:a. 在初始化单片机串口时,设置了正确的波特率、校验位和停止位等参数,保证了数据的正确传输。

b. 在编写串口发送程序时,正确地实现了数据的串行发送。

c. 在编写串口接收程序时,正确地实现了数据的串行接收。

六、实验总结1. 通过本次实验,掌握了串行通信的基本原理和概念;2. 学会了使用串行通信进行数据传输;3. 熟悉了串行通信在嵌入式系统中的应用。

基于RS232上、下位机的串口通信实验程序和电路图

基于RS232上、下位机的串口通信实验程序和电路图

基于RS232上、下位机的串口通信实验一、实验目的1.通过串口实现单片机与PC机的数据通信。

2.了解下位机与上位机通讯过程。

二、实验内容使用串口实现单片机与PC机的数据通信。

要求按下单片机系统板上中断INT0时,单片机向PC机发送0-9这十个数字,并用“串口调试助手”接收显示。

在“串口调试助手”上发送0-9中任何一个数字时,单片机用8个发光二极管显示对应的ASCII码值。

三、实验环境1、编程软件keil2、仿真软件proteus四、实验原理单片机与PC机之间通信原理图如图1所示。

S3键接P3.2,作为外部中断INT0输入端,当S3按下,产生中断,执行中断程序发送0-9这十个数字,在PC机上接收并显示。

图1 单片机与PC机之间通信五、实验过程单片机程序:#include<reg52.h>#define uchar unsigned char //宏定义#define unit unsigned int //宏定义uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //7段共阳极数码管显示数组uchar code fasong[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; // 发送0~9的ASCLL数值数组unsigned char rec_c;uchar num=0;unit x;//主函数void main(){TMOD=0x20; //定时器1工作方式2TH1=0xFD; //11.0592Mhz 9600bpsTL1=0xFD;TR1=1; //启动定时器1SCON=0x50; //模式1:8位数据可变波特率,允许接收EA=1; //打开总中断ES=1; //打开串口1中断EX0=1; //打开外部中断0IT0=1; //设置外部中断0为边沿触发}//外部中断void chufa() interrupt 0{ES=0; //关闭串口中断for(x=0;x<10;x++) //循环发送0~9的ASCLL值{SBUF=fasong[num];num=num+1;while(!TI); //等待发送结束TI=0; //发送标志位}num=0;ES=1; //打开串口中断}//接收中断void rec() interrupt 4{RI= 0; //清除接收标志位rec_c= SBUF-'0'; //将接收到的ASCLL值转换成十进制数P0= table[rec_c]; //通过查LED数码管的数组将接收到的数值显示出来}六、实验结论在这个实验中我遇到了很多的问题,而且这个程序也是调了很长时间才调了出来。

双机通信实验报告

双机通信实验报告

一、实验目的1. 掌握双机通信的基本原理和实现方法。

2. 熟悉串行通信的硬件接口和软件编程。

3. 通过实验,加深对单片机串行通信的理解和应用。

二、实验原理双机通信是指两台计算机或单片机之间的数据交换。

串行通信是双机通信中常用的一种通信方式,它将数据一位一位地按顺序传送,适合于远距离通信。

本实验采用单片机串行通信,通过串行口实现数据传输。

三、实验设备1. 两套单片机实验装置(如AT89S51单片机最小系统)2. 串行通信线(如RS-232线)3. 串口调试工具(如串口助手)4. 连接线和电源四、实验内容1. 硬件连接将两套单片机实验装置通过串行通信线连接起来,确保连接线正确无误。

2. 软件编程(1)单片机编程编写单片机程序,实现数据的发送和接收。

程序主要包括以下部分:- 初始化串行口:设置波特率、数据位、停止位和校验位等。

- 发送数据:将数据写入发送缓冲区,启动发送。

- 接收数据:检测接收缓冲区是否有数据,读取数据。

(2)PC端编程编写PC端程序,实现数据的发送和接收。

程序主要包括以下部分:- 串口配置:设置串口号、波特率、数据位、停止位和校验位等。

- 发送数据:将数据写入串口缓冲区,启动发送。

- 接收数据:从串口缓冲区读取数据,显示或处理。

3. 调试与测试(1)单片机端调试- 使用串口调试工具,发送数据到单片机。

- 检查单片机接收到的数据是否正确。

(2)PC端调试- 使用串口调试工具,发送数据到PC。

- 检查PC接收到的数据是否正确。

五、实验结果与分析1. 硬件连接硬件连接正确,两套单片机实验装置通过串行通信线连接。

2. 软件编程(1)单片机程序```c// 单片机程序示例(AT89S51)#include <reg51.h>#define BAUDRATE 9600sbit TXD = P3^1; // 发送引脚sbit RXD = P3^0; // 接收引脚void Serial_Init() {TMOD = 0x20; // 定时器1工作在模式2TH1 = 0xFD; // 设置波特率TL1 = 0xFD;TR1 = 1; // 启动定时器1SCON = 0x50; // 设置串行口工作在模式1 }void main() {Serial_Init();while (1) {// 发送数据TXD = 1; // 发送起始位while (!TXD); // 等待发送完成// 发送数据字节for (char i = 0; i < 8; i++) {TXD = 1; // 发送数据位while (!TXD);TXD = 0; // 发送停止位while (!TXD);}// 接收数据RXD = 1; // 接收起始位while (!RXD); // 等待接收完成// 接收数据字节for (char i = 0; i < 8; i++) {RXD = 1; // 接收数据位while (!RXD);RXD = 0; // 接收停止位while (!RXD);}}}```(2)PC端程序```c// PC端程序示例(C#)using System;using System.IO.Ports;class Program {static void Main() {SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);serialPort.Open();while (true) {// 发送数据serialPort.WriteLine("Hello, world!");// 接收数据string receivedData = serialPort.ReadLine();Console.WriteLine("Received: " + receivedData);}serialPort.Close();}}```3. 调试与测试通过串口调试工具,发送数据到单片机和PC,检查接收到的数据是否正确。

串口发送显示实验报告(3篇)

串口发送显示实验报告(3篇)

第1篇一、实验目的1. 了解串口通信的基本原理和流程。

2. 掌握使用串口发送数据的基本方法。

3. 学习如何通过串口接收并显示接收到的数据。

二、实验原理串口通信是指通过串行接口进行数据传输的一种通信方式。

在计算机系统中,串口通常用于连接外部设备,如打印机、鼠标、键盘等。

串口通信的原理是将数据按位依次发送,每发送一位数据后需要一定的延迟,以保证数据的正确传输。

串口发送显示实验主要涉及以下几个方面:1. 串口初始化:设置串口的波特率、数据位、停止位和校验位等参数。

2. 发送数据:通过串口发送指定的数据。

3. 接收数据:通过串口接收发送端发送的数据。

4. 显示数据:将接收到的数据在屏幕上显示出来。

三、实验环境1. 硬件环境:计算机、串口设备(如打印机、鼠标等)、串口线。

2. 软件环境:操作系统(如Windows、Linux等)、串口通信软件(如PuTTY、串口助手等)。

四、实验步骤1. 连接串口设备:将串口设备通过串口线连接到计算机的串口。

2. 初始化串口:打开串口通信软件,选择正确的串口和波特率,并设置其他参数。

3. 发送数据:在软件中输入要发送的数据,然后点击发送按钮。

4. 接收数据:在软件中观察接收到的数据,确认数据是否正确。

5. 显示数据:在软件中设置数据显示格式,将接收到的数据在屏幕上显示出来。

6. 实验结果分析:根据实验结果,分析串口发送显示实验的原理和步骤。

五、实验结果与分析1. 实验结果:在实验过程中,成功实现了串口发送和显示数据的功能。

2. 实验分析:(1)串口初始化:通过设置串口参数,确保数据能够正确传输。

(2)发送数据:在软件中输入要发送的数据,并通过串口发送出去。

(3)接收数据:通过串口接收发送端发送的数据,并显示在屏幕上。

(4)显示数据:在软件中设置数据显示格式,将接收到的数据在屏幕上清晰显示。

六、实验总结通过本次实验,我们了解了串口通信的基本原理和流程,掌握了使用串口发送数据的基本方法,并学习了如何通过串口接收并显示接收到的数据。

RS232通信实验

RS232通信实验

实验一RS232通信实验一、实验目的学习单片机串行通信协议的设计,设计程序实现单片机与PC机间的RS232串口通信。

二、实验设备及器件计算机(带串口)一台单片机实验仪一台三、实验内容在单片机上用定时器0实现编写电子钟程序,将时分秒在LCD上显示,同时编写串口程序,实现由PC机修改和读取电子钟时间,通信采用ASCII码,波特率4800,协议如下:四、实验步骤图1、RS232转TTL接口1、RS232接PC机的串行口,J8的RXD、TXD分别接单片机的P3.0、P3.1;2、编写程序并仿真后,用STC下载器下载到单片机执行,首先验证电子种的功能。

3、PC机上采用STC下载器中的串口助手,通过发送ASCII码的命令,进行电子钟时间的读取和修改。

五、实验预习要求学习单片机的串口设置的有关特殊寄存器的设置,学习ASCII码通信协议的有关知识。

#include <STC_NEW_8051.h>#define uchar unsigned char#define uint unsigned int#define tim0 -50000#define BPS4800 -13 //Fosc=12MHz uchar sec,min,hour;uchar year=13 ,mon=10 ,day=14;bit dis;sbit LT1=P1^6;sbit LT2=P1^7;#define LCD_COM 0 // Command#define LCD_DAT 1 // Datasbit LcdRS=P1^0;sbit LcdRW=P1^1;sbit LcdEN=P1^2;void time(uint t){uchar i;while(t--)for(i=0;i<12;i++);}void LCD_WRITE(uchar x,bit WS){LcdRW=0; LcdRS=WS;LcdEN=0;P0=x;LcdEN=1;LcdEN=0;time(50);}void LCD_Initial(){LCD_WRITE(0x38,LCD_COM); time(200); LCD_WRITE(0x38,LCD_COM); time(200); LCD_WRITE(0x38,LCD_COM); time(200); LCD_WRITE(0x38,LCD_COM); time(200); LCD_WRITE(0x01,LCD_COM); time(100); LCD_WRITE(0x06,LCD_COM); time(100);LCD_WRITE(0x0c,LCD_COM); time(100);}void GotoXY(uchar x,uchar y){uchar code table[4]={0x00,0x40,0x10,0x50}; LCD_WRITE(0x80+table[x]+y, LCD_COM);}void Print(uchar *str){while(*str!='\0'){LCD_WRITE(*str,LCD_DAT);str++;}}void Delay1ms(uint t){uint j;while(t--)for(j=0;j<120;j++);}void timer0() interrupt 1 using 1{static ts=20;TH0=tim0>>8; TL0=tim0&0xff;if(--ts==0){ts=20; dis=1;if(++sec>=60){sec=0;if(++min>=60){min=0;if(++hour>=24){hour=0;day++;if(day>=30){day=0;mon++;if(mon>=12){mon=0;year++;}}}}}}}uchar Rbuf[24],Rptr,Rnum;uchar Tbuf[10],Tptr,Tnum;code uchar asc[]="0123456789ABCDEF";void serial() interrupt 4 using 2{uchar m;if(RI){RI=0; m=SBUF;if(m=='#') {Rptr=0; Rnum=0;}else if(Rnum<23){Rbuf[Rptr++]=m; Rnum++;} }if(TI){TI=0;if(Tnum>0) {SBUF=Tbuf[Tptr++]; Tnum--;}}}main(){uchar i,s1,s2;IE=0x92; TMOD=0X21;SCON=0X50; PCON=0X80;TH0=tim0>>8; TL0=tim0&0xff; TR0=1;TH1=BPS4800; TL1=BPS4800; TR1=1;Delay1ms(200);LCD_Initial();GotoXY(0,0); Print("data: : : ");GotoXY(1,0); Print("time: : : ");while(1){if(dis)dis=0; LT1=!LT1;GotoXY(1,6);LCD_WRITE((hour/10)+0x30,LCD_DAT); LCD_WRITE((hour%10)+0x30,LCD_DAT); GotoXY(1,9);LCD_WRITE((min/10)+0x30,LCD_DAT); LCD_WRITE((min%10)+0x30,LCD_DAT); GotoXY(1,12);LCD_WRITE((sec/10)+0x30,LCD_DAT); LCD_WRITE((sec%10)+0x30,LCD_DAT);GotoXY(0,6);LCD_WRITE((year/10)+0x30,LCD_DAT); LCD_WRITE((year%10)+0x30,LCD_DAT); GotoXY(0,9);LCD_WRITE((mon/10)+0x30,LCD_DAT); LCD_WRITE((mon%10)+0x30,LCD_DAT); GotoXY(0,12);LCD_WRITE((day/10)+0x30,LCD_DAT); LCD_WRITE((day%10)+0x30,LCD_DAT);}if(Rnum>=1 && Rbuf[0]=='R'){Rnum=0; Rptr=0;Tbuf[0]='T'; Tbuf[1]='=';Tbuf[2]=asc[hour/10];Tbuf[3]=asc[hour%10];Tbuf[4]=asc[min/10];Tbuf[5]=asc[min%10];Tbuf[6]=asc[sec/10];Tbuf[7]=asc[sec%10];Tptr=0; Tnum=8; TI=1;}if(Rnum>=0 && Rbuf[0]=='D'){Rnum=0; Rptr=0;Tbuf[0]='T'; Tbuf[1]='=';Tbuf[2]=asc[year/10];Tbuf[3]=asc[year%10];Tbuf[4]=asc[mon/10];Tbuf[5]=asc[mon%10];Tbuf[6]=asc[day/10];Tbuf[7]=asc[day%10];Tptr=0; Tnum=8; TI=1;if(Rnum>=7 && Rbuf[0]=='S'){LT2=!LT2;s1=Rbuf[1]&0x0f; s2=Rbuf[2]&0x0f; hour=s1*10+s2;s1=Rbuf[3]&0x0f; s2=Rbuf[4]&0x0f; min=s1*10+s2;s1=Rbuf[5]&0x0f; s2=Rbuf[6]&0x0f; sec=s1*10+s2;Rnum=0; Rptr=0;}}}。

rs232串口通信实验报告

rs232串口通信实验报告

RS232串口通信实验一、实验题目:设计一个简单的基于串口通信的信息发送和接受界面 二.实验目的:1.熟悉并掌握RS232串口标准及原理。

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

3.熟悉VB语言编写程序的环境,掌握基本的VB语言编程技巧二、实验设备PC机一台,RS232串口通信线(9针)一条,跳线一个(一台PC实验时,将其中的2和3短接)三、实验内容1、界面内容:(1)打开串口与关闭串口按钮(2)信息发送区:信息编辑区,发送信息按钮(3)信息接受区:信息显示区,接收信息按钮2、主窗体的程序代码:Private Sub Form1_load()MSComm1.PortOpen = TrueEnd SubPrivate Sub Command1_Click() MSComm1.Output = Text1.TextEnd SubPrivate Sub Command2_Click()Dim buf$buf = MSComm1.InputIf Len(buf) = 0 ThenText2.Text = "empty"ElseText2.Text = bufEnd IfEnd SubPrivate Sub Command3_Click() MSComm1.PortOpen = FalseEndEnd SubPrivate Sub Command4_Click()If MSComm1.PortOpen = True ThenMSComm1.PortOpen = FalseEnd IfMSComm1.Settings = "9600,N,8,1"MSComm1.RThreshold = 1MSComm1.PortOpen = TrueMSComm1.InputLen = 0End Sub然后生成R232.EXE可执行文件:3、实验过程:(1)将9针RS232串口通信线与PC机串口连接,并用跳线将RS232串口通信线另一端2(RXD)和3(TXD)短接。

串行实验报告

串行实验报告

实验名称:串行通信实验实验目的:1. 了解串行通信的基本原理和常用接口。

2. 掌握串行通信的编程方法和数据传输过程。

3. 验证串行通信在实际应用中的可行性。

实验器材:1. PC机一台2. 串口通信模块(如USB转串口模块)3. 短路板4. 连接线若干5. 相关软件(如串口调试助手)实验原理:串行通信是指数据在一条线路上按位进行传输的通信方式。

与并行通信相比,串行通信具有线路简单、传输速率较低等特点。

在串行通信中,数据按照一定的顺序一位一位地传输,每个数据位占用一个固定的位时间。

串行通信通常采用以下接口:RS-232、RS-485、RS-422等。

本实验采用USB转串口模块实现串行通信。

实验步骤:1. 将USB转串口模块插入PC机USB接口。

2. 在PC机上安装驱动程序,确保模块正常工作。

3. 使用短路板将USB转串口模块与PC机的串口连接。

4. 打开串口调试助手,设置串口参数:波特率、数据位、停止位、校验位等。

5. 编写串行通信程序,实现数据发送和接收。

6. 运行程序,观察串口调试助手中的数据传输情况。

实验内容:1. 发送数据(1)编写发送数据函数,实现数据的串行发送。

(2)在PC机上发送一段文本数据,观察串口调试助手中的接收情况。

2. 接收数据(1)编写接收数据函数,实现数据的串行接收。

(2)在PC机上发送一段文本数据,观察串口调试助手中的接收情况。

实验结果与分析:1. 发送数据实验结果:在串口调试助手中成功接收到了发送的文本数据,证明发送数据功能正常。

2. 接收数据实验结果:在串口调试助手中成功接收到了发送的文本数据,证明接收数据功能正常。

结论:通过本次实验,我们掌握了串行通信的基本原理和编程方法,验证了串行通信在实际应用中的可行性。

在实验过程中,我们遇到了以下问题:1. 串口参数设置不正确导致数据无法正常传输。

2. 编程时,数据发送和接收函数编写不正确。

针对以上问题,我们进行了以下改进:1. 仔细阅读相关资料,正确设置串口参数。

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)请用户思考一下,如果是单片机与单片机之间进行串行口通讯应如何进行。

单片机开发 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串口通信实验

实验二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)。

昆明理工大学信息工程与自动化学院学生实验报告
( 2011 —2012 学年第 2 学期 )
课程名称:嵌入式技术基础与实验 开课实验室:信自楼234 2012 年 5 月 10 日 年级、专业、班
学号 姓名 成绩 实验项目名称
RS-232串口通信实验 指导教师


评语 教师签名: 年 月 日 注:报告内容按实验须知中七点要求进行。

一、实验目的
通过该实验实习,进一步熟悉CodeWarrior 嵌入式开发系统环境、汇编和C 语言以及调试方式;加强串口通信(SCI )基本原理及编程原理;理解课本中的程序代码;分别运用查询方式、中断方式实现通信。

二、实验原理及基本技术路线图(方框原理图)
AW60 MCU 的SCI 有2个,能接收其他设备信息供MCU 处理,也能将MCU 内部的信号输出给外部设备,显示数据或者控制对象。

SCI 的使用涉及波特率寄存器、控制寄存器、状态寄存器和数据寄存器。

接收方和发送方必须在相同的波特率和模式的条件下接收和发送信息。

引脚连接图如图4-1所示。

图4-1 SCI 的连接图
PC SCI 接口Rx(2) Tx(3) GND(5) MAX232
AW60 PTE0/TxD1(13) PTE1/TxD1(14) GND
三、所用仪器、材料(设备名称、型号、规格等)
飞思卡尔试验箱
四、实验方法、步骤
1、资源使用
SCI连接图雷同演示实验,即MCU的SCI发送引脚E口的1号引脚接MAX232的TTL电平接收引脚11号,MCU的SCI接收引脚E口的0号引脚接MAX232的TTL电平发送引脚12号。

另外,要讲SCI线一头接PC的COM1,一头接实验箱的COM1或COM2,小灯的连接是用D口的1号引脚和一个小灯接口连接。

波特率为19200bps,计算波特率寄存器的值,计算过程:
公式为
SCI1BD=fsys/(波特率*16)(其中fsys=sysclk*1000000)
SCI1BD=20000000/(19200*16)=65
然后将其结果供后语句使用。

SCI1BDH=0x00;
SCI1BDL=0x41;
2、硬件设计
先阅读源程序,查看相应的端口的宏定义,再根据端口号来接线。

3、软件设计(主要的程序流程图)
MCU端程序流程图
4、编程(关键性程序段)
串行通信中断方式的主程序部分代码:
//-------------------------------------------------------------------------*
#include "Includes.h"
void main(void)
{
//1 关总中断
DisableInterrupt(); //禁止总中断
//2 芯片初始化
MCUInit();
//3 模块初始化
//3.1 指示灯初始化
Light_Init(Light_Run_PORT,Light_Run,Light_OFF);
//3.2 串行口初始化
//使用SCI1模块,使用系统时钟作为SCI的时钟源
//波特率为38400
SCIInit(SCI_NUM_1,SYSTEM_CLOCK,38400);
//4 开放中断
EnableSCIReInt(); //开放SCI接收中断
EnableInterrupt(); //开放总中断
//5 主循环
while (1)
{
}
}
2)、串行中断方式子程序部分代码:
interrupt void SCI1_Recv(void)
{
uint8 i;
uint8 SerialBuff[1]; //存放接收数据的数组
DisableInterrupt(); //禁止总中断
i = SCIReN(SCI_NUM_1,1,SerialBuff); //等待接收1个数据
if (i == 0) SCISendN(SCI_NUM_1,1,SerialBuff);//发送接到的数据
if (SerialBuff[0]=='1')
Light_Control(Light_Run_PORT,Light_Run,Light_ON);
if (SerialBuff[0]=='0')
Light_Control(Light_Run_PORT,Light_Run,Light_OFF);
EnableInterrupt(); //开放总中断
}
五、实验过程原始记录(数据、图表、计算等)
六、实验结果、分析和结论(误差分析与数据处理、成果总结等。

其中,绘制曲线图
时必须用计算纸)
本次实验虽属简单小型实验,却着实遇到不少问题,通过实验,我也进一步发现了自己在动手能力和自学能力方面的不足,当然对本实验所涉及到的东西也算是有了不少兴趣,感觉越来越有意思了。

同时也对rs232串口的发送与接收信息有了进一步的了解,初步认识了MODBUS协议传输数据的原理,相信本实验对我日后的进一步学习有莫大帮助。

相关文档
最新文档