实验二ARM串行口实验
串行接口实验报告

课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二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两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。
串行口通信实验 单片机实验报告

实验六串行口通信实验一、实验内容实验板上有RS-232接口,将该接口与PC机的串口连接,可以实现单片机与PC机的串行通信,进行双向数据传输。
本实验要求当PC机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC机上显示,并用串口助手工具软件进行调试。
二、实验目的掌握单片机串行口工作原理,单片机串行口与PC机的通信工作原理及编程方法。
三、实验原理51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。
进行串行通讯信要满足一定的条件,比如电脑的串口是RS232电平(-5~-15V为1,+5~+15V为0),而单片机的串口是TTL电平(大于+2.4V为1,小于- 0.7V为0),两者之间必须有一个电平转换电路实现RS232电平与TTL电平的相互转换。
为了能够在PC机上看到单片机发出的数据,我们必须借助一个Windows软件进行观察,这里我们可以使用免费的串口调试程序SSCOM32或Windows的超级终端。
单片机串行接口有两个控制寄存器:SCON和PCON。
串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。
在这种方式下,数据为8位,只能从RXD端输入输出,TXD端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12。
由软件置位串行控制寄存器(SCON)的REN位后才能启动,串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。
待8位数据输完后,硬件将SCON寄存器的T1位置1,必须由软件清零。
单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和远近通信接口的不同处理技术。
在DOS操作环境下,要实现单片机与微机的通信,只要直接对微机接口的通信芯片8250进行口地址操作即可。
WINDOWS的环境下,由于系统硬件的无关性,不再允许用户直接操作串口地址。
如果用户要进行串行通信,可以调用WINDOWS的API 应用程序接口函数,但其使用较为复杂,可以使用KEILC的通信控件解决这一问题。
单片机串行通讯接口实验报告(附程序)

串行通讯接口实验——串行接口扩展学生姓名:学号:班级:测控班时间:课程名称:微机机原理及应用总学时:64 教师:成绩:一.实验原理串行通信方式0为:八位移位寄存器方式:1)串行数据由RXD输入或输出,同步时钟脉冲由TXD输出(波特率固定为fosc/12,即一个机器周期发送一位数据),主要用于扩展输入、输出接口;2)串行口控制寄存器SCON (98H) :用于通信方式选择,接收和发送控制,工作状态指示。
◆TI:发送中断标志。
发送缓冲器SBUF已空(=1), 需由软件清零做好下一次发送准备;◆RI:接收中断标志。
接收缓冲器SBUF已满(=1), 需由软件清零做好下一次接收准备;◆TB8:用于存放发送数据的第9位,RB8:用于存放接收数据的第9位;◆SM0、SM1: 串行口工作方式控制位(编程选择)。
3)方式0的波特率方式0时,每个机器周期产生一个移位时钟,发送或接收一位数据。
因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。
方式0波特率= fosc / 12二.实验内容及要求:1)基本功能:采用方式0通过串行口输出数据,经过74LS164将串行数据并行输出,控制发光二极管轮回显示。
2)电路连接将单片机的TXD引脚与74LS164的CLOCK脚相连,从TXD脚输出脉冲信号控制74LS164的移位操作,RXD输出串行数据,与A、B引脚相连,/CLEAR通过单片机的P1.0引脚连接,作为控制数据输出的使能信号,在74LS164的数据输出端控制八个LED发光二极管轮回闪亮。
3)改进功能:增加按键一个,通过按键控制切换流水灯的流向。
(最好采用中断方式)4)绘制实验电路原理图,编程实现发光二极管流水灯循环闪烁功能;5)在KEIL uvision开发环境下,建立工程文件,编译运行C语言驱动程序,并生成Hex文件;6)将编译程序生成.Hex文件,导入PROTEUS仿真运行,验证实验结果。
ARM硬件实验

实验二、熟悉实验平台,快速启动开发板一、实验目的1、了解嵌入式系统教学科研平台UP-NETARM2410 的主要组成部分和硬件外围端口。
2、学会通过终端仿真程序连接到开发板上,熟悉开发流程。
利用Windows超级终端软件控制开发板,学会超级终端的使用和参数配置。
3、学会下载程序并运行。
二、实验内容1、熟悉硬件平台UP-NETARM2410开发板是博创科技推出的嵌入式开发板。
1.1、UP-NETARM2410开发板资源* 基于ARM9架构的嵌入式芯片S3C2410,主频202MHz * 64MB SDRAM * 64MB NAND FLASH * 2MB NOR FLASH(预留) * LCD(可选)带有一个32脚薄膜线插座 * 触摸屏(可选)带有一个8脚插座 * 1个主USB口、1个从USB口 * 1个JTAG接口 * 1个100M 网卡* 两个串口 * CAN总线接口 * 8通道10位AD转换器* 2通道10位DA转换和2路PWM输出* SD/MMC 接口 * IDE硬盘接口 * CF卡(IDE模式)接口* 2片IIC存储器 * 2个用户自定义LED数码管 * 高性能立体声音频模块,支持放音、录音* 麦克风接入 * 三个40Pin的扩展插座,硬件可无限扩展* 三个可产生中断的按键* DC5V电源、备有RESET、RTC电路。
1.2、 UP-NETARM2410开发板软件资源*提供完整的Linux、WinCE操作系统移植*bootloader:vivi*操作系统:linux 2.4.x*驱动程序:提供所有板级设备的驱动程序1.3、UP-NETARM2410开发板应用软件*mplayer 媒体播放器,实现MPEG4、AVI、WMV 等多种媒体解码。
*摄像头视频采集,QT/E图形界面。
2、开箱指南UP-NETARM2410开发板实验平台包含以下部分:开发板、电源、网线、串口线、并口线、JTAG 线、配套光盘,保修卡,配置单。
实验二 ARM的串行口与IO端口控制实验

实验二、ARM的串行口与I/O端口控制实验
1、ARM的串行口实验(内容、要求见实验指导书)
2、I/O端口控制实验
内容:利用ARM通用I/O端口实现对LED灯的循环控制。
目的:
(1)掌握ARM的通用I/O端口访问与控制原理。
(2)学习编程实现LED灯的循环控制。
(3)掌握循环程序设计方法。
说明:1、“ARM的串行口实验”大家结合实验指导书和附件程序实例预习,特别是串口编程用到的的几个寄存器,可要参考相应的、有中文解释的教材。
2、“I/O端口控制实验”也要结合、参考相应的教材,预习ARM通用端口的访问与编程方
法。
ARM通用端口有A、B、C、D、E、F、G、H,我们将用C即GPC中的3个引脚来控制3个LED灯,从而实现对LED灯的循环控制。
arm实验报告——串口

课程:嵌入式设计实验日期:2011 年 6 月成绩:实验三串口通讯实验一实验目的1 掌握ARM的串行口工作原理;2 学习并编程实现S3C2410的UART串口通讯;3 学习并掌握S3C2410寄存器的配置方法。
二实验内容1 实现查询方式串口的收发功能。
实现实验装置通PC平台的串口通讯,接受PC 平台发送出的数字,并将该数字重新返回给PC平台。
三实验设备1 硬件:DM2410B+实验系统PC机JTAG仿真器串口线。
2 软件:PC机操作系统(WINDOWS 2000)ARM DEVELOPER SUITE V1.2四、实验说明1, S3C241}串行A控制寄存器S3C2410自带三个异步串行口控制器,每个控制器有lfi字节的F工FO(先入先出寄存器),最大波特率115. 2Ko每个DART有7种状态:溢出错误,校验错误,帧错误,暂停态,接收缓冲区准备好,发送缓冲区空,发送移位缓冲器空。
通过设置UCONn寄存器选择UA RT时钟是由S3C2410的系统内部时钟PCLK产生还是有外部UART设备的时钟UCLK产生。
波特率的大小可以通过设置波特率寄存器CUBRDIVn)控制。
使用PCLK时的计算公式如下:UBRDIVn=(in七)CPCLYI/ (bps*lE))一1使用UCLK时的计算公式如下:UBRD工介=(int)CUCLYI/ Cbps}1E))一1与DART有关的寄存器有以下几个,关于寄存器的详细说明请参考S3C2410数据手册。
课程:嵌入式设计实验日期:2011 年 6 月成绩:1)线路控制寄存器ULCONn该寄存器的第6位决定是否使用红外模式,位5-3决定校验方式,位2决定停止位长度,位1 和位D决定每帧的数据位数。
2)控制寄存器UCONn该寄存器决定UA RT的各种模式。
3) FIFO控制寄存器UFCONn该寄存器用于收发缓冲的管理,包括缓冲的触发字节数的设置、F工FO的清除和使能。
4} MODEM控制寄存器UMCONn该寄存器用于设置流控方式。
2023年嵌入式实验报告ARM的串行口实验
贵州大学实验报告学院:专业:班级:姓名学号实验组实验时间05.03 指导教师余佩嘉成绩实验项目名称ARM的串行口实验实验目的1.掌握ARM的串行口工作原理2.学习编程实现ARM的UART通讯3.掌握CPU运用串口通讯的方法实验原理1.异步串行I/O异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。
接受方对于同一根线上一连串的数字信号,一方面要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,并且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立拟定起始和结束(即每个字符都要重新同步),字符和字符间还也许有长度不定的空闲时间,因此效率较低。
图3-1给出异步串行通信中一个字符的传送格式。
开始前,线路处在空闲状态,送出连续“1”。
传送开始时一方面发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。
也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表信号地所有的信号都要通过信号地线构成耦合回路。
通信线有以上三条(TXD、RXD和信号地)就能工作了。
其余信号重要用于双方设备通信过程中的联络(握手信号),并且有些信号仅用于和MODEM的联络。
若采用微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设立成不要任何联络信号,则其它线都可不接。
有时在通信线的同一端将相关信号短接以“自握手”方式满足联络规定。
这就是如图3-2(a)所示的情况。
RTS/CTS 请求发送值号RTS是发送器输出的准备好信号。
接受方准备好后送回清除发送信号CTS后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准备好即可发送。
ARM的串行口实验.
课程名称:嵌入式技术开课机房:11号机房2012年4月1日星期二8:10~11:35专业班级通信09( 班学号Xb09680204姓名江立坤实验项目名称实验3——ARM的串行口实验指导教师陈玮一、实验任务与实验目的实验目的1. 了解UART的基本知识2. 掌握基于群星系列CM3程序库的UART配置、数据收发编程3. 学会串口调试助手或超级终端的使用实验任务任务一:使用Stellaris驱动库函数,编写可以接收及发送字符串的基于EASY ARM 8962开发板的UART驱动程序任务二:在Microsoft Visual Studio开发环境下,使用C#编写一桌面程序,要求可以通过串口发送指令,使用其打开LED3~LED6。
命令协议可以自己定义。
二、报告内容任务一#include"uartGetPut.h"#include"systemInit.h"#include#include#include#define PART_LM3S8962#include// 定义接收缓冲区#define MAX_SIZE 40 // 缓冲区最大限制长度char RxBuf[1 + MAX_SIZE]; // 接收缓冲区int BufP = 0; // 缓冲区位置变量tBoolean RxEndFlag = false; // 接收结束标志// UART2中断服务函数void UART0_ISR(void {char c;unsigned long ulStatus;ulStatus = UARTIntStatus(UART0_BASE, true; // 读取当前中断状态UARTIntClear(UART0_BASE, ulStatus; // 清除中断状态if ((ulStatus & UART_INT_RX || (ulStatus & UART_INT_RT // 若是接收中断或者{ // 接收超时中断for (;; {if (!UARTCharsAvail(UART0_BASEbreak; // 若接收FIFO里无字符则跳出c = UARTCharGetNonBlocking(UART0_BASE; // 从接收FIFO里读取字符if (c == '\r' {UARTCharPut(UART2_BASE, '\r'; // 回显回车换行UARTCharPut(UART2_BASE, '\n';RxEndFlag = true; // 接收结束标志置位break;}if (isprint(c // 若是可打印字符{if (BufP < MAX_SIZE {UARTCharPut(UART2_BASE, c; // 回显RxBuf[BufP++] = c;RxBuf[BufP] = '\0';}}}}}// 以FIFO中断方式接收一个字符串,不回显,返回实际接收到的有效字符数int uartFIFOGets(char *s, int size {int n;while (!RxEndFlag;n = BufP;BufP = 0;RxEndFlag = false;strncpy(s, RxBuf, size;s[MAX_SIZE] = '\0';return (n;}// UART初始化void uartInit(void {SysCtlPeripheralEnable (SYSCTL_PERIPH_UART0; SysCtlPeripheralEnable (U0TX_PERIPH; // 使能RX/TX所在的GPIO端口GPIOPinTypeUART(U0RX_PORT, // 配置RX/TX所在管脚为U0RX_PIN; // UART收发功能GPIOPinTypeUART(U0TX_PORT, // 配置RX/TX所在管脚为U0TX_PIN; // UART收发功能UARTConfigSet(UART0_BASE, // 配置UART端口9600, // 波特率:9600UART_CONFIG_WLEN_8 | // 数据位:8UART_CONFIG_STOP_ONE | // 停止位:1UART_CONFIG_PAR_NONE; // 校验位:无UARTFIFOLevelSet(UART0_BASE, // 设置收发FIFO中断触发深度UART_FIFO_TX2_8, // 发送FIFO为2/8深度(4B)UART_FIFO_RX6_8; // 接收FIFO为6/8深度(12B)UARTIntEnable(UART0_BASE, UART_INT_TX; // 使能发送中断IntEnable (INT_UART0; // 使能UART总中断IntMasterEnable(; // 使能处理器中断UARTEnable (UART0_BASE; // 使能UART端口}// 通过UART发送一个字符void uartPutc(const char c {UARTCharPut(UART0_BASE, c;}// 通过UART发送字符串void uartPuts(const char *s {while (*s != '\0'uartPutc(*(s++;}// 通过UART接收一个字符char uartGetc(void {return (UARTCharGet(UART0_BASE;}// 功能:通过UART接收字符串,不回显,退格修改,回车结束// 参数:*s保存接收数据的缓冲区,只接收可打印字符(ASCII码32~127)// size是缓冲区*s的总长度,要求size >= 2(包括末尾'\0',建议用sizeof(来获取)// 返回:接收到的有效字符数目int uartGets(char *s, int size {char c;int n = 0;*s = '\0';if (size < 2return (0;size--;for (;; {c = uartGetc(; // 接收1个字符if (c == '\b'// 遇退格修改{if (n > 0 {*(--s = '\0';n--;}}if (c == '\r'// 遇回车结束{break;}if (n < size // 如果小于长度限制{if (isprint(c // 如果接收到的是可打印字符{*(s++ = c; // 保存接收到的字符到缓冲区*s = '\0';n++;}}}return (n; // 返回接收到的有效字符数目}任务二1. 控制协议命令格式: space space space响应格式: >space space space其中:space表示空格,亦可以其他字符替代,如,(逗号)、;(分号)之类例如,LED 3 0字段名称长度(字符个数)可选值列表Command 设备类型4 LEDS——0BUZZ——1LM75——2DeviceNo 设备号1 0~9LED:只能为3~6BUZZ:只能为1LM75:只能为1RD/WR 读写方向1 0——读1——写DeviceValue p设备值PC-ARMspan:1ARM-PC:1~N0——关闭1——打开X——温度值2. 协议实现桌面程序Device.cs using System;using System.Collections.Generic;using System.Text;using System.IO.Ports;namespace WindowsFormsApplication1{public class Device{#region Feilds Defintion//////属性///public LM8962DeviceType DeviceType { get; set; }Several terrorists have claimed to be responsible for the blast几个恐怖主义者已经声称对这起爆炸负责。
单片机仿真实验报告:串行口
学号:姓名:单片机仿真实验报告七:串行口一、仿真设计要求用串行口工作方式实现数码管的显示,当按下按键一数码管显示2010,当按下按键二数码管显示1213。
二、串行口电路原理图三、程序设计内容及源程序#include<reg52.h>#define uchar unsigned charsbit p10=P1^0;sbit p11=P1^1;uchar data discode1[4]={0xfc,0x60,0xfc,0xda};uchar data discode2[4]={0xf2,0x60,0xda,0x60};void delay(){uchar i,j;for(i=0;i<0xff;i++)for(j=0;j<0xff;j++);}void display(){uchar i;if(p10==0){for(i=0;i<4;i++){SBUF=discode1[i];while(TI==0);TI=0;delay();}p10=1;}if(p11==0){for(i=0;i<4;i++){SBUF=discode2[i];while(TI==0);TI=0;delay();}p11=1;}}void main(){SCON=0x00;p10=1;p11=1;while(1){display();}}四、实验总结:串行通信是数据一位一位顺序发送或接受。
虽然串行通信比并行通信慢。
但采用串行通信不管发送或接收位数有多少,最多只需要两根导线。
一根用于发送,另一根用于接收。
基于ARM的串行口通讯实验PPT教学课件
2020/12/10
3
硬件电路图—核心板电路接口
2020/12/10
4
硬件电路图—MAX3232
2020/12/10
5
接口连线
2020/12/10
6
串口的操作流程图
开发板初始化 ARMTargetInit()
( uhal.h)
从串口读取数据
向串口发送数据
2020/12/10
7
相关寄存器
➢ UART线控制寄存器包括ULCONn ➢ UART控制寄存器包括UCONn ➢ UART错误状态寄存器包括UERSTATn ➢ UART发送/接收寄存器UTXHn, URXHn
2020/12/10
8
波特率的计算
➢ UART包括三个波特率因子寄存器UBRDIV0, UBRDIV1 and UBRDIV2
➢ 波特率计算公式:
UBRDIVn = (int)(MCLK / (bps x 16) ) –1
➢ 实例:
如果波特率是115200,MCLK 是40 MHz,那么UBRDIVn UBRDIVn = (int)(40000000 / (115200 x 6)+0.5 ) -1
= (int)(21.7+0.5) -1 = 22 -1 = 21
2020/12/10
9
PPT教学课件
谢谢观看
Thank You For Watching
2020/12/10
ห้องสมุดไป่ตู้
实验二 ARM的串行口实 验
2020/12/10
1
实验内容
学习串行通讯原理,了解串行通讯控制器。 阅读试验讲义,掌握ARM的UART相关寄存器
的功能。 熟悉ARM系统硬件的UART相关接口。 编程实现ARM和计算机实现串行通讯:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实例:
如果波特率是115200,MCLK 是40 MHz,那么UBRDIVn UBRDIVn = (int)(40000000 / (115200 x 6)+0.5 ) -1
= (int)(21.7+0.5) -1 = 22 -1 = 21
8
思考题
修改源代码,实现连续输出已输入的字符 串功能。 即连续输入字符串,当按“enter”键时,显 示此字符串。
9
实验二 ARM的串行口实 验
1
实验内容
学习串行通讯原理,了解串行通讯控制器。 阅读试验讲义,掌握ARM的UART相关寄存器
的功能。 熟悉ARM系统硬件的UART相关接口。 编程实现ARM和计算机实现串行通讯:
2
实验目的
1.掌握ARM的串行口工作原理。 2.学习编程实现ARM的UART通讯。
3
硬件电路图—核心板电路接口
4
硬件电路图—MAX3232
5
接口连线
6
串口的操作流程图
开发板初始化 ARMTa向串口发送数据
7
波特率的计算
UART包括三个波特率因子寄存器UBRDIV0, UBRDIV1 and UBRDIV2
波特率计算公式: