实验4(串行通行实验报告)

合集下载

串行通信实验报告

串行通信实验报告

串行通信实验报告串行通信实验报告引言:串行通信是一种数据传输方式,通过将数据一位一位地传输,相比并行通信具有更高的传输效率和更少的硬件成本。

本实验旨在通过搭建串行通信系统,了解串行通信的原理和应用,并探究不同参数对传输效果的影响。

一、实验目的本实验旨在:1. 了解串行通信的原理和基本概念;2. 掌握串行通信的实验搭建方法;3. 分析不同参数对串行通信传输效果的影响。

二、实验原理串行通信是一种将数据一位一位地传输的通信方式。

在串行通信中,数据以二进制形式传输,每一位的传输时间相等。

常见的串行通信方式有同步串行通信和异步串行通信。

同步串行通信中,发送端和接收端的时钟信号同步,以确保数据的准确传输。

发送端将数据按照一定的帧格式发送,接收端通过时钟信号进行同步,按照相同的帧格式接收数据。

异步串行通信中,发送端和接收端的时钟信号不同步,通过起始位和停止位来标识数据的开始和结束。

发送端在每个数据帧前加上一个起始位,接收端通过检测起始位来判断数据的开始。

三、实验步骤1. 搭建串行通信系统:将发送端和接收端连接,通过串口线进行数据传输。

2. 设置串行通信参数:根据实验要求,设置波特率、数据位、停止位等参数。

3. 编写发送端程序:通过编程语言编写发送端程序,实现数据的发送。

4. 编写接收端程序:通过编程语言编写接收端程序,实现数据的接收和显示。

5. 调试和测试:进行通信测试,观察数据的传输效果,记录实验结果。

四、实验结果与分析在实验中,我们通过设置不同的串行通信参数进行测试,观察数据的传输效果。

实验结果显示,在较低的波特率下,数据传输速度较慢,但传输稳定性较高;而在较高的波特率下,数据传输速度较快,但传输稳定性较差。

此外,我们还测试了不同数据位和停止位对传输效果的影响。

结果显示,增加数据位可以提高数据的传输精度,但也会增加传输的时间和成本。

增加停止位可以增加数据的传输稳定性,但也会降低传输速度。

五、实验总结通过本次实验,我们深入了解了串行通信的原理和应用,并通过实验搭建了串行通信系统。

实验四 串行口实验

实验四 串行口实验

【1.实验目的和要求】(1)掌握8051单片机串行口工作原理;(2)掌握串口编程与调试方法;(3)掌握TDS220示波器的使用【2. 实验工具与软件】计算机、Keil uVision4集成开发环境、Proteus 8 Professional仿真软件【3.主要原理和方法步骤】(1)任务说明➢单片机外连4*4的键盘矩阵,每次按击按键,串口自动将键值发送给上位机;➢上位机可下发数据(单字节,自定义)禁止或开启键盘扫描键值上传功能,并用一个发光二极管指示状态(点亮:代表键值允许上传;熄灭:代表键值禁止上传)。

➢开机时,系统默认为按键值禁止上传。

(2)仿真电路原理图(3)软件流程图(4)实例代码及注释分析#include <reg51.h>sbit LED_KEY = P2^0;unsigned char key_value=16; //键值unsigned char ascii_num[10] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39}; //数字0~9的ASCII码unsigned char flag, temp;void delay_ms(unsigned int ms) //ms延时函数(******************){unsigned int i;while(ms--)for(i = 0; i < 110; i++);}void putc_to_SerialPort(unsigned char c) //串口发送一个字符{SBUF = c;while(TI == 0);TI = 0;}void puts_to_SerialPort(unsigned char *s) //串口发送一个字符串{while(*s != '\0'){putc_to_SerialPort(*s);s++;delay_ms(5);}}char keys_scan() //按键扫描子程序{unsigned char temp, value;P1 = 0x0f;delay_ms(10);temp = P1 ^ 0x0f;//高4位输出,低4位输入delay_ms(5);switch(temp){case 1: value = 0; break;case 2: value = 4; break;case 4: value = 8; break;case 8: value = 12; break;}P1 = 0xf0;delay_ms(5);temp = P1 >> 4 ^ 0x0f;//高4位输入,低4位输出switch(temp){case 1: value += 0; break;case 2: value += 1; break;case 4: value += 2; break;case 8: value += 3;}while(P1!=0xf0);return value;}void main(){SCON=0x50; //方式1,10位异步收发(8位数据)PCON=0x00; //波特率不加倍TH1=0xFD; //设置波特率为9600TL1=0XFD;TMOD=0X20; //工作方式2,自动重载的8位的定时器/计数器EA=1; //总中断允许ES=1; //串口中断使能TR1=1; //开始计时while(1){if(flag == 1) //点亮LED,允许接收下位机数据{LED_KEY = 0;P1 = 0x0f;if(P1 != 0x0f) //如果有按键按下{delay_ms(10);if(P1 != 0x0f) //去抖动{key_value = keys_scan(); //按键扫描,获取键值if(key_value != 16) //如果有按键按下,向上位机发送键值{putc_to_SerialPort('S');if(key_value/10!=0)putc_to_SerialPort(ascii_num[key_value/10]);putc_to_SerialPort(ascii_num[key_value%10]);puts_to_SerialPort("\r\n");key_value = 16;}}}}Else //熄灭LED,不允许向上位机发送数据LED_KEY = 1;}}void intrr() interrupt 4{if(RI)//接收上位机发送的数据{temp = SBUF;if(temp == 0x31)flag=1;if(temp == 0x30)flag=0;RI=0;}}【4. 数据记录】(1)发光二极管处于熄灭状态,按下矩阵键盘的按键,不能向虚拟主机发送数据;(2)虚拟主机发送数据“1”给单片机,点亮发光二极管,表示允许上传功能,按下矩阵键盘的按键,将键值发送给虚拟主机,在虚拟窗口中显示接收到的键值;(3)虚拟主机发送数据“0”给单片机,熄灭发光二极管,表示禁止上传功能,按下矩阵键盘的按键,虚拟主机不能够接收到的键值;【5. 实验思考与小结】通过本次串口实验,我掌握8051单片机串行口工作原理以及串口编程与调试的方法,对串口通信的知识了解的更透彻,怎么去使用virtual terminal虚拟主机去仿真,其中特别要注意的就是串行通信的波特率要一致,以及测试程序和仿真器件的晶振频率要一致。

串行通信技术实验报告

串行通信技术实验报告

#### 实验目的1. 理解串行通信的基本原理和常用通信协议。

2. 掌握串行通信硬件设备的连接与配置。

3. 熟悉串行通信软件编程,实现数据传输。

4. 通过实验验证串行通信的稳定性和可靠性。

#### 实验时间2023年10月15日#### 实验地点电子实验室#### 实验设备1. 两台PC机2. 串行通信模块(如USB转串口模块)3. 串行通信软件(如PuTTY)4. 串行通信协议转换器(如RS-232转RS-485模块)5. 数据线、电源线等辅助连接线#### 实验原理串行通信是一种通信方式,将数据一位一位地依次传输,按位顺序组成字符或字节。

与并行通信相比,串行通信在传输距离、传输速率和设备复杂度上具有优势。

本实验采用RS-232协议进行串行通信。

#### 实验步骤1. 硬件连接:- 将两台PC机通过串行通信模块连接,确保通信模块与PC机的串口正确对应。

- 如果需要,使用RS-232转RS-485模块实现串行通信协议的转换。

2. 软件配置:- 在PC机上安装并运行串行通信软件,如PuTTY。

- 设置串行通信参数,包括波特率、数据位、停止位、校验位等,确保两台PC机的串行通信参数一致。

3. 编程实现:- 在PC机上编写串行通信程序,实现数据的发送和接收。

- 使用C语言或Python等编程语言,调用串行通信库函数进行编程。

4. 实验验证:- 在一台PC机上发送数据,另一台PC机上接收数据。

- 检查接收到的数据是否与发送的数据一致,验证串行通信的稳定性。

#### 实验结果与分析1. 硬件连接:- 成功连接了两台PC机,并使用串行通信模块进行通信。

2. 软件配置:- 串行通信软件成功运行,并设置好通信参数。

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

4. 实验验证:- 发送数据成功,接收到的数据与发送的数据一致,验证了串行通信的稳定性。

#### 结论通过本次实验,我们成功实现了两台PC机之间的串行通信。

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。

2.掌握Keil与Proteus的联调技巧。

3.掌握串行通信在单片机系统中的使用。

4.掌握调度器设计的基础知识:函数指针。

二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。

b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。

i.甲机发送“A”,控制乙机LED1闪烁。

ii.甲机发送“B”,控制乙机LED2闪烁。

iii.甲机发送“C”,控制乙机LED1,LED2闪烁。

iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。

c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。

两机的程序要分别编写。

d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。

2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。

b.单片机把计算结果向PC机发送字符串。

c.PC机接收计算结果并显示出来。

d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。

单片机串行通信实验结果描述

单片机串行通信实验结果描述

单片机串行通信实验结果描述一、引言单片机串行通信是嵌入式系统中常用的一种通信方式,通过串行通信可以实现单片机与其他外部设备的数据交换。

本文将详细描述单片机串行通信实验的结果。

二、实验目的本次实验的目的是通过单片机串行通信,实现与计算机之间的数据传输。

具体要求如下: 1. 使用串口通信模块与计算机进行数据交互; 2. 在计算机端编写相应的程序,实现数据的发送和接收; 3. 确保数据的准确传输和接收。

三、实验器材1.单片机开发板;2.串口通信模块;3.计算机。

四、实验步骤1. 连接硬件将单片机开发板与计算机通过串口通信模块连接,确保连接稳定。

2. 编写单片机程序在单片机开发板上编写程序,实现与计算机的串行通信。

具体步骤如下: 1. 初始化串口通信模块的相关参数,包括波特率、数据位、停止位等; 2. 设置串口通信模块为发送模式; 3. 通过串口发送数据。

3. 编写计算机程序在计算机上编写程序,实现与单片机的串行通信。

具体步骤如下: 1. 打开串口通信端口,并设置相关参数,与单片机的配置保持一致; 2. 接收串口发送的数据,并进行处理; 3. 将处理后的数据显示在计算机的界面上。

4. 运行实验将单片机程序烧录到开发板上,运行计算机程序。

观察数据的传输和接收情况,并记录实验结果。

五、实验结果与分析经过实验,我们得到了如下结果: 1. 数据传输稳定:通过串行通信,单片机与计算机之间的数据传输稳定可靠,没有出现丢失数据或传输错误的情况。

2. 传输速率较快:串行通信的传输速率较快,可以满足实际应用的需求。

3. 数据处理准确:计算机程序正确接收并处理了从单片机发送的数据,实现了数据的正确显示。

六、实验总结通过本次实验,我们掌握了单片机串行通信的基本原理和操作方法,实现了与计算机之间的数据传输。

实验结果表明,单片机串行通信是一种稳定可靠的通信方式,能够满足实际应用的需求。

在今后的实际工作中,我们可以利用串行通信实现更多功能,提高系统的性能和可靠性。

实验四 串行口实验预习报告

实验四  串行口实验预习报告

实验四 串行口实验预习报告一.4.1流程图.4.2程序试验4.1程序 ORG 0000H JMP MAIN ORG 001BH RETIORG 0023H JMP S_INTMAIN: ;初始化MOV R0,#30H ;R0发送起始地址 MOV R1,#40H ;R1接收起始地址 MOV R2,#0 ;R2用来判断按键值 MOV R3,#0 ;R3计按下次数 MOV SP,#60HMOV TMOD,#20H ;T1工作方式2通信A 班 洪俊强 0915231017MOV TL1,#0FAH ;在fosc=11.0592MHz 时 MOV TH1,#0FAH ;波特率为4800b/s MOV PCON,#00H MOV SCON,#50H SETB ET1 SETB TR1 SETB ES SETB EA LOP1:MOV P1,#0FFHACALL DELAY ;防抖 MOV A,P1CJNE A,#0FFH,LOP2 JMP LOP1LOP2: ;按键按下时计算按键值 RRC A JNC LOP3 INC R2 ; JMP LOP2 LOP3:MOV A,R2 ;按键值送AMOV @R0,A ;按键值存入发送区 MOV SBUF,A ;发送按键值 INC R0 ;放送地址指针加一 LOP4:MOV A,P1 ; 重新扫描判断按键 CJNE A,#0FFH,LOP4 MOV R2,#0INC R3 ;按键按下个数加一 JMP LOP1 RETS_INT: ; 串行口中断程序JB TI,SEND ;判断是发送还是接收 MOV A,SBUFMOV @R1,A ;把接收数据存入接收地址INC R1ACALL DISP ;调用显示子程序YNNY 开始初始化计数按键值计数返回接受并显示写入SBUF判断按键? 判断是发?CLR RI ;清发送标志位 RETISEND: ;清发送标志位 CLR TI RETIDISP: ;显示子程序 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A RETTABLE:db3fh,06h,5bh,4fh,66h,6DH,7DH,07H; 0 1 2 3 4 5 6 7DELAY: ;延时子程序 MOV 20H,#100H DEL1:MOV 21H,#100H DJNZ 21H,$ DJNZ 20H,DEL1 RET 二.4.2流程图4.2程序 ORG 0000H JMP MAIN ORG 0023H JMP S_INT MAIN:CLR F0 ;F0 用于区分接收到的数据是 MOV P0,#0 ;按键次数,还是按键值MOV P2,#0MOV R0,#30H ;R0发送起始地址 MOV R1,#40H ;R1接收起始地址 MOV R2,#0 ;R2用来判断按键值 MOV R3,#0 ;R3计按下次数 MOV SP,#60HNYYNNY开始初始化计数按键值返回送P0口按键值写入SBUF判断按键? 奇校验判断对? 按键次数写入SBUF接收显示判断是键值?MOV TMOD,#20H ;T1工作方式2MOV TL1,#0F4H ;在fosc=11.0592MHz时MOV TH1,#0F4H ;波特率为2400b/s MOV PCON,#00HMOV SCON,#0D0H ;工作方式3,允许接收SM2=0CLR ET1SETB TR1 ;开中断SETB ESSETB EALOP1:MOV P1,#0FFHACALL DELAY ;防抖MOV A,P1CJNE A,#0FFH,LOP2 ;等待按键按下JMP LOP1LOP2: ;按键按下时计算按键值RRC AJNC LOP3INC R2JMP LOP2LOP3:MOV A,R2MOV C,P ;进行奇校验CPL CMOV TB8,C ;把奇校验位送入TB8 MOV @R0,A ;按键值存入发送区ACALL DISPMOV SBUF,@R0 ;发送按键值JNB TI,$CLR TIINC R0 ;发送地址指针加一LOP4:MOV A,P1 ; 重新扫描按键CJNE A,#0FFH,LOP4MOV R2,#0INC R3 ;按键按下个数加一MOV P0,R3 ;按下次数送P0显示MOV A,R3MOV C,P ;奇校验CPL CMOV TB8,CMOV SBUF,R3 ;送按下次数JNB TI,$CLR TIJMP LOP1 RETS_INT: ; 串行口中断程序PUSH AJB TI,SEND ;TI=1则发送结束跳到SEND CPL F0CLR RI ;清接收标准位MOV A,SBUF ;接收取值MOV C,P ;进行奇校验JNC S1 ;JB RB8,REP ;AJMP S2 ;S1:JNB RB8,REPs2:JNB F0,GESHU ;F0=0则接收到按键个数数据MOV @R1,A ;把接收数据存入接收地址INC R1 ;接收地址指针加一ACALL DISP ;调用显示子程序REP:POP ARETIGESHU:MOV P0,SBUF ;把接收到的按键次数送显POP ARETISEND: ;发送结束POP ARETIDISP: ;显示子程序MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,ARETTABLE:db3fh,06h,5bh,4fh,66h,6DH,7DH,07H; 0 1 2 3 4 5 6 7DELAY: ;延时子程序MOV 20H,#100HDEL1:MOV 21H,#100HDJNZ 21H,$DJNZ 20H,DEL1RET三.表格实验1按键编号发送数据地址发送数据接收数据地址接收数据数码管显示值实验2发送按键编号发送动作次数接收按键编号接收动作次数。

串行通信 实验报告

串行通信 实验报告

串行通信实验报告串行通信实验报告引言:串行通信是一种在计算机科学和电子工程中广泛使用的通信方式。

与并行通信相比,串行通信通过逐位传输数据,具有更高的可靠性和稳定性。

本实验旨在研究串行通信的原理和应用,并通过实际操作来验证其性能。

一、实验目的本实验的主要目的是掌握串行通信的基本原理和操作方法,并通过实验验证串行通信的性能。

二、实验设备和材料1. 串行通信模块2. 电脑3. 串行通信线缆4. 示波器5. 逻辑分析仪三、实验步骤1. 连接串行通信模块和电脑,确保连接正确稳定。

2. 设置串行通信模块的波特率、数据位、停止位等参数,根据实际需求进行调整。

3. 编写电脑端的串行通信程序,实现数据的发送和接收功能。

4. 使用示波器和逻辑分析仪监测串行通信的信号波形,分析数据传输的过程和效果。

四、实验结果与分析通过实验,我们成功地建立了串行通信连接,并实现了数据的传输和接收。

通过示波器和逻辑分析仪的监测,我们可以清晰地观察到串行通信的信号波形和数据传输的过程。

在实验中,我们发现串行通信相较于并行通信,虽然传输速率较慢,但具有更高的可靠性和稳定性。

由于数据逐位传输,串行通信可以更好地应对信号干扰和传输错误的情况。

同时,串行通信可以通过调整参数来适应不同的传输距离和传输速率需求。

根据实验结果和分析,我们可以得出结论:串行通信是一种可靠且稳定的通信方式,广泛应用于计算机科学和电子工程领域。

在实际应用中,我们需要根据具体需求选择合适的串行通信参数,以确保数据的正确传输和接收。

五、实验总结通过本次实验,我们深入了解了串行通信的原理和应用。

实验结果表明,串行通信具有较高的可靠性和稳定性,适用于各种数据传输场景。

在今后的学习和工作中,我们将继续探索串行通信的更多应用领域,并不断提高串行通信技术的性能和效率。

六、参考文献[1] 张三, 串行通信技术研究, 电子通信学报, 2008.[2] 李四, 串行通信在计算机网络中的应用, 计算机应用技术, 2010.注:本实验报告仅供参考,如需引用请注明出处。

数电实验报告串行(3篇)

数电实验报告串行(3篇)

第1篇一、实验目的1. 理解串行通信的基本原理和方式。

2. 掌握串行通信接口电路的设计与调试方法。

3. 熟悉串行通信在实际应用中的使用。

二、实验原理串行通信是一种数据传输方式,它将数据一位一位地顺序传送,每位的持续时间远远大于数据信号的持续时间。

与并行通信相比,串行通信具有传输距离远、抗干扰能力强、成本低等优点。

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

同步串行通信使用统一的时钟信号来同步发送和接收设备,而异步串行通信则使用起始位和停止位来同步。

三、实验器材1. 实验箱2. 串行通信模块3. 信号发生器4. 示波器5. 计算器四、实验步骤1. 连接电路根据实验要求,将串行通信模块、信号发生器、示波器等设备正确连接到实验箱上。

2. 设置参数根据实验要求,设置串行通信模块的波特率、数据位、停止位和校验位等参数。

3. 发送数据使用信号发生器生成要发送的数据信号,通过串行通信模块发送出去。

4. 接收数据通过示波器观察接收到的数据信号,分析其波形和参数。

5. 调试与优化根据观察到的波形和参数,对串行通信模块进行调试和优化,确保数据传输的准确性和可靠性。

五、实验结果与分析1. 发送数据波形观察到发送的数据信号波形符合要求,波特率、数据位、停止位和校验位等参数设置正确。

2. 接收数据波形观察到接收到的数据信号波形与发送端一致,说明数据传输过程中没有发生错误。

3. 调试与优化通过调整串行通信模块的参数,提高了数据传输的稳定性和抗干扰能力。

六、实验结论1. 通过本次实验,掌握了串行通信的基本原理和方式。

2. 熟悉了串行通信接口电路的设计与调试方法。

3. 了解了串行通信在实际应用中的重要性。

七、实验心得1. 串行通信在实际应用中具有广泛的应用前景,如工业控制、远程通信等。

2. 在设计和调试串行通信接口电路时,要充分考虑抗干扰能力和数据传输的稳定性。

3. 要熟练掌握串行通信模块的参数设置,以确保数据传输的准确性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方案二:用到DS18B20,24C04,1602,测得的温度在四位数码管上显示,同样进行双机SPI通信和通过MCU的UART与PC通信
方案比较:方案一和方案二主要的区别就是数据的显示方式,方案一能显示出很精确的温度,方案二由于只有四位数码管,所以精度不高,但方案一的成本较高,对于精度要求不高的实验可以采用方案二,须要较高精度的,则采用方案一
sbitSCL=P3^6;//set clock io for24c04
sbitDQ=P1^7;//entrance for 18b20
sbitDS1=P1^5;//Serial datain 1
sbitST1=P1^4;//OutpuБайду номын сангаас flip-latch impulse 1
sbitSH1=P1^3;//Shift clock impulse 1
#define OP_WRITE 0xa0// address & write
#define OP_READ 0xa1 // address & read
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
sbitSDA=P3^7;//set data io for24c04
sbitMISO=P2^2; // P2.2 simulate master in
sbitSS1=P2^3; // P2.3 simulate choice
uinth,temp;
ucharDisdata,discan;
ucharcode ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//look decimal part from table
uchar code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
参考文献:
[1]《单片机基础》 李广弟 北京航空航天大学出版社
[2]24c04中文官方资料手册
[3]DS18B20资料手册
实验程序:
主机
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
从机模式下,SPI传输速度是晶振的128分频,传输时先高位传送。接着程序循
环查询标志位SPIF,当SPIF==1时说明程序已经接受到完整的一个字节数据。
可以从数据寄存器中读取接受到的数据,接着进行下一个字节数据的接受。
5.从机通过UART与PC机相连,将数据显示到串口调试助手上
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地
0
温度最低数据位
1
温度最高数据位
2
高温限制
3
低温限制
4
保留
5
保留
6
计数剩余值
7
计数器/℃
8
CRC校验
DS18B20与单片机相连,其DQ要接5K左右的上拉电阻来增加数据传输的准确性。其典型电路如图所示。
软件实现:
对DS18B20的操作一般包含下面四个步骤:1、初始化;2、ROM操作命令;3、存储器操作命令;4、执行/数据。其中的初始化如上面的时序中讲到的一样;然后就是对ROM的操作,DS18B20片内有光刻64位的ROM,它可以看成是该DS18B20的地址序列码。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个的目的。由于我们此次系统设计在单总线上左右一个DS18B20,那我们就直接跳过匹配ROM(Skip ROM)的操作就行了。接下来就是对存储器的读写操作,其中读写“1”和“0”与上面的时序操作一样。 最后就是将接收到的数据进行微机处理;这样就完成了一次对DS18B20的访问过程。其具体程序流程如图
3.主机向从机通过SPI总线发送温度数据
硬件实现:主机的MISO与从机的MISO相连,主机的MOSI与从机的MOSI相连,主机的SS与从机的SS相连,主机的SCLK与从机的SCLK相连。这样在主机发出的SCLK时钟脉冲下,主机将数据一位一位地传送给从机。
电路图:
SPI总线工作原理:
SPI接口有四个脚:SPICLK/ P1.7,MOSI/ P1.5,MISO/ P1.6,SS/ P1.4
程序流程图如下:
2.EEPROM24C04的操作
硬件实现:24C04的串行数据口SDA口与单片机的P3.6口线相连,串行时钟线SCL口与单片机P3.7口线相连。用24C04来保存流水灯的状态电路图如下:
IIC总线的工作原理:IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
系统结构图说明:
整个系统分为两部分:主机部分和从机部分。下面我们分别进行这两方面的介绍:
一、通信主控部分(主机):它在整个系统中起核心控制地位,首先,主机通过操作操作具有IIC总线结构的EEPROM器件24C04,将主机上流水灯状态传给24C04。这样当单片机系统掉电时,能够保存最后掉电前的流水灯状态,以便当系统上电时,单片机从24C04中读取数据,从上一次的状态接着运行。其次,通过主机对温度传感器的控制来采集本地环境温度;然后,把采集到的数据送到单片机中进行分析处理,并通过LCD进行本地温度显示;最后,就是主机的通信部分,它主要包括发射部分:主要利用STC单片机的SPI总线,利用它进行双机SPI通信,主机将温度数据发给从机。
uchar data pcplay[10]={'0','1','2','3','4','5','6','7','8','9'};//used in UART
/******Declaration for the following functions********/
起始和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
数据传送格式(1)字节传送与应答
每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
四.测试
DS18B20测得一个温度(如23.3392^C),在主机和从机的1602上显示该温度值,通过串口线在计算机串口调试助手显示同样的数值,说明在温度的误差范围内,实验大致正确。
五.总结
总结:通过本次实验,我们了解了I2C器件24C04和OneWire器件DS18b20的基本性能以及对他们的操作,学会了双机SPI通信,通过MCU的UART与PC通信,了解了串行通信的原理,本次实验中有一点需要注意,在进行双机通信的时候,两块实验板必须共地。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TL和TH、高速暂存器。DS18B20管脚排列如图,从左到右管脚分别为1、GND;2、I/O;3、VDD。
温度传感器可以完成对温度的测量。内部高速暂存器包含8个连续字节。暂存器具体分布如表所示。
字节序号
寄存器名称
二、从机通过SPI总线接收主机传过来的温度数据,在LCD1602上显示温度。同时从机通过UART把接受到的数据传到PC机进行通信,PC机通过串口调试工具显示温度,并且存储分析。
三.软硬件的系统设计
1.温度采集
硬件实现:数据采集电路由温度传感器DS18B20采集被控对象的实时温度,提供给STC单片机的P3.0口作为数据输入。在本次设计中我们所控的对象为所处室温。
SPICLK, MOSI, MISO,通常和两个或更多的SPI器件连在一起,数据通
过MOSI由主机传送到从机,通过MISO由从机传送到主机。
软件实现
程序首先初始化特殊寄存器SPCTL=0xd7,SPSTAT=0xc0,这样就工作在主机模式下,SPI传输速度是晶振的128分频,传输时先高位传送。接着向数据寄存器SPDAT写入一个字节的数据,循环等待标志位SPIF=1为止,当SPIF==1时,说明一个字节数据已经传送完毕。将SPIF清0。接着发送下一个字节数据。
具体的电路如图所示。
软件实现
程序首先初始化一些特殊寄存器,将TMOD设为0x20,将PCON设为0X00
(波特率不增),将TH1和TL1设为0Xfd,这样波特率就设成为9600bps。将SCON设为0X50,使得串口工作在工作方式一下。然后程序向SBUF写入温度数据循环等待标志位TI为1,这样串口就发送了一个字节的数据,如此循环,直到送完所有数据为止。
4从机通过SPI总线接受主机传过来的温度数据
硬件实现:主机的MISO与从机的MISO相连,主机的MOSI与从机的MOSI相连,主机的SS与从机的SS相连,主机的SCLK与从机的SCLK相连。这样在主机发出的SCLK时钟脉冲下,主机将数据一位一位地传送给从机。
软件实现:
程序首先初始化特殊寄存器SPSTAT=0xc0,SPCTL=0xc7。这样就工作在
sbitDS2=P1^2;//Serial datain 2
sbitST2=P1^1;//Output flip-latch impulse 2
sbitSH2=P1^0;//Shift clock impulse 2
sbitSCK=P2^0; // P2.0 simulate clock out
相关文档
最新文档