下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及接口技术课程设计报告课题名称两个单片机之间的串行通讯接口设计学院自机学院专业机械设计制造及其自动化班级1班姓名 学号 时间 目录、 设计任务概述 3(1) 设计的目的3(2) 课程设计要求 3(3) 课程设计的内容 41、设计要求: 32、设计方案: 3、硬件设计31、51片机串行通信功能 32、 MAX232芯 63、DS18B20温度传感4、整体电路设计三、软件设计101、串行通信软件实现 102 串行通信的传输方式 103、串行通信工作方式 104、 程序流程图 10四、联合调试 12附录 13一设计任务概述(1)设计的目的单片机课程设计作为独立的数学环节, 是自动化及相关专
2、业集中 实践性环节系列之一,是学习完单片机原理及应用课程后,并在 进行相关课程设计基础上进行的一次综合练习。单片机课程设计过程中,我们通过查阅资料、接口设计、程序设 计、安装调试等环节,完成一个基于 MCS-51 系列单片机,涉及多种 资源应用, 并具有综合功能的小应用系统设计。 让我们不仅将课堂上 学到的理论知识与实际应用结合起来, 而且能够对电子电路、 电子元 器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪 器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。 让我 们增加了对单片机的感性认识, 加深对单片机理论方面的理解, 同时 也加深单片机的内部功能模块的应用。 使我
3、们了解和掌握单片机应用 系统的软硬件设计过程、 方法及实现, 强化单片机应用电路的设计与 分析能力。 提高我们在单片机应用方面的实践技能和科学作风; 培育 我们综合运用理论知识解决问题的能力。(2)课程设计要求 通过对课题的分析,进行系统功能设计,选择器件,划分软 硬件的功能,用Proteus软件在PC机上完成硬件原理图设计。用汇 编语言,完成软件设计。然后使用 Proteus仿真软件在PC机上进行 系统仿真, 调试电路和修改调试程序, 直至达到设计的要求和取得满 意的效果。( 3)课程设计的内容1).A机控制B机的两个LED闪烁,B机控制A机的数码管加一显示。2).使用DS18B20温度传感
4、器,由B机测量温度后由A机显示.二、主要步骤及方案(1)主要步骤1)对题目进行分析2)确定电路图需要的元件3)画出电路图4)写出运行程序5)加载并调试修改程序(2)主要方案利用 AT89C51 芯片、复位电路、时钟电路、 LED 数码管等,使A机控制B机的两个LED闪烁,B机控制A机的数码管加一显示。使用DS18B20 温度传感器,由B机测量温度后由A机显示.把P1 口的高7位与数码管 相连,绿灯表示通行方向。P2 口与LED显示器相连,用来输出显示 的数字。系统的原理框图如下:【摘要】串行通信是单片机的一个重要应用。本次课程设计就是要利用 单片机来完成一个系统,实现双片单片机串行通信。通信的
5、结果实用数码管进行 显示。两个单片机之间采用 RS232进行双机通信。在通信过程中,使用通信协议进行通信。【关键字】52单片机,串行通信,接口 QS18B20、总体设计1. 设计要求:(1单片机之间进行串行通信,发送端将0f循环发送到接收端,并在接收端 显示。(2) 使用DS18B20温度传感器,由B机测量温度后由A机显示.2. 设计方案:本次设计,对于两片 AT89C51,采用RS232进行双机通信。发送方的数据 由串行口 TXD段输出,经过电平转换芯片 MAX232将TTL电平转换为RS232 电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收
6、方串行口的接收端。接受方接收后,在数码管上显示 接收的信息及利用LED显示通信结果,与此同时由DS18B20测量温度后由另一 单片机显示。为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。软件部分,通过通信协议进行发送接收,主机先送信号给从机,从机接收信号后发出应答信号并显示相应内容.二、硬件设计1. 51单片机的串行通信图 1.AT89C51计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信, 并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线
7、 (一条信号线,再加一条地线作为信 号回路)即可完成通信,成本低,传输的距离较远。51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51片机串行接口的结构如下:(1)数据缓冲器(SBUF接受或发送的数据都要先送到 SBUF缓存。有两个,一个缓存,另一个接受, 用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指 令将SBUF中接收到的数据取出。(2)串行控制寄存器(PCONSCONB于串行通信方式的选择,收发控制及状态指示,各位含义如下:SM0SM1SM2RENTB8RB8TIRISM0,SM1串行接口工作
8、方式选择位,这两位组合成 00, 01,10,11对应于 工作方式0、1、2、3。串行接口工作方式特点见下表M0M1;工作方式功能波特率0C08位同步移位寄存器(用于I/O扩展)fORC1201110位异步串行通信(UART可变(T1溢出率*2 smo/32)1C211位异步串行通信(UARTf orC64 或 f orC3211311位异步串行通信(UART可变(T1溢出率*2 smo/32)SM2多机通信控制位。REN接收允许控制位。软件置1允许接收;软件置0禁止接收。TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。RB9在方式2或3时,RB8位接收到的第9位数
9、据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。TI :发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须 要软件清零后才能继续发送。RI :接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须 要软件清零后才能继续接收。(3)输入移位寄存器接收的数据先串行进入输入移位寄存器, 8位数据全移入后,再并行送入接 收 SBUF中。(4)波特率发生器波特率发生器用来控制串行通信的数据传输速率的, 52 系列单片机用定时 器T1作为波特率发生器,T1设置在定时方式。波特率时用来表示串行通信数据 传输快慢程度的物理量,定义为每秒钟传
10、送的数据位数。(5)电源控制寄存器 PCON其最高位为SMOD(6)波特率计算当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/ (产 生溢出所需机器周期)。由于是定时方式,T1计数率=f orC12。产生溢出所需机 器周期数=模 M-计数初值X。2. MAX232芯片用89C51串行接口通信,如果两台单片机之间的距离很近(不超过1.5m),可以采用直接将两台单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变, 以至于检测不出数据或数据出错。 此时可利 用RS23
11、2标准总线接口,将单片机输出的 TTL电平转换为RS232标准电平(逻 辑1为-15 -5V;逻辑0为+5- +15V)。用RS232可将传输距离提高到15m如 果想远距离传输,可以采用 RS422或者RS485电平转换芯片MAX23是美信公司(MAXIM生产,专用于进行将TTL电 平转换为RS232电平的芯片,MAX23初部有泵电源,能将+5V电源电压在芯片内 提高到RS232电平所需的+10V或者-10V电平。图 2. 电平转换芯片 MAX2323. DS18B20温度传感器数字温度传感器 DS18B20介绍1、DS18B20的主要特性1.1、 适应电压范围更宽,电压范围:3.05.5V,
12、在寄生电源方式 下可由数据线供电1.2、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B2 0的双向通讯1.3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一 的三线上,实现组网多点测温1.4、 DS18B20在使用中不需要任何外围元件,全部传感元件及转 换电路集成在形如一只三极管的集成电路内1.5、温范围55T+ 125C,在-10+85C时精度为土 0.5 C1.6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5 C、0.25 C、0.125 C和0.0625 C,可实现高精度测温1.7、 在9位分辨率时最多在
13、93.75ms内把温度转换为数字,12位 分辨率时最多在 750ms内把温度值转换为数字,速度更快1.8、 测量结果直接输出数字温度信号,以"一线总线"串行传送给 CPU同时可传送CRC校验码,具有极强的抗干扰纠错能力1.9、 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不 能正常工作。2、DS18B20的外形和内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B2 0的外形及管脚排列如下图1:DS18B20引脚定义:(1) DQ为数字信号输入/输出端;(2) GND为电源地;(3)
14、VDD为外接供电电源输入端(在寄生电源接线方式时接地)。图2:DS18B20内部结构图3、DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms,DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响 很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55 r所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存
15、器的值将加 1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器 2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。4、整体电路设计最终设计电路如下图3所示,发送方的数据由串行口 TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传 送到接收端。接收方也使用 MAX232 芯片进行电平转换后,信号到达接收方串 行口的接收端。接受方接收后,通过 P1 口在数码管上显示接收的信息。A 机控制
16、 B 机 LED,B 机控制 A 机数码管加一显示B 机 DS18B20 温度传感器检测温度送 A 机显示三、软件设计1.串行通信软件实现(1)串行口工作于方式 1;用定时器 1 产生 9600bit/s 的波特率,工作于方 式 2。(2)功能:将本机 ROM 中数码表 TAB16 中的 16 个数发送到从机 ,并保存 在从机内部 ROM 中,从机收到这 16 个数据后送到一个数码管循环显示。(3)通信协议 :主机首先发送连络信号 (信号),从机接收到之后返回一个连络 信号(BBH)表示从机已准备好接收。(4)通信过程使用第九位发送奇偶校验位。(5)从机接收到一个数据后,立即进行奇偶校验,若数
17、据没有错误,则返 回00H,否则返回FFH。(6) 主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下 一个数据,若为FFH,则重新发送数据。(7)通过通信协议进行发送接收, A 机向 B 机发送操作代码 A、B、C 或 停止发送,对应的开关 K1 按一下两机 LED1 都亮,按第二下两机 LED2 都亮, 再按下时, LED1、LED2 全亮,再按则四灯全灭。( 8) K2 控制 B 机向 A 机发送字符,根据按键次数逐次加 1 至 9, 10 为关 闭状态,同时 B 机接收 A 机命令,受 K1 控制 LED 灯的亮、灭。( 9) 由 B 机 DS18B20 测量温度后 A 机
18、显示测量的温度值 .2 串行通信的传输方式串行通信的传送方向通常有三种( 1)单向(或单工)配置,只允许数据向一个方向传送;( 2)半双向(或半双工)配置,允许数据向两个方向中的任一方向传送,但 每次只能有一个站点发送;( 3)全双向(全双工)配置,允许同时双向传送数据,因此,全双工配置是 一对单向配置, 它要求两端的通信设备都具有完整和独立的发送和接受能力。3、串行通信工作方式方式1接收时,数据从引脚RXD(P3.0)端输入。接收是在SCON寄存器中 REN位置1的前提下,并检测到起始位(RXD上检测到1-0的跳变,即起始位) 而开始的。接收时,定时信号有两种:一种是接收移位时钟( RX 时
19、钟),它的 频率和传送波特率相同,也是由定时器 T1 的溢出信号经过 16 或 32 分频而得到 的;另一种是位检测器采样脉冲,它的频率是 RX 时钟的 16 倍,亦即在一位数 据期间有 16 位检测器采样脉冲,为完成检测,以 16 倍于波特率的速率对 RXD 进行采样。4程序流程图(1)发送端程序流程图(2)接收方程序流程图四、联合调试在protues上进行仿真实验。首先使用 KeilC将编写完成的程序编译生 成HEX文件,将HEX文件烧录到两片单片机中,进行仿真实验,结果如下图 所示,可以看到,接收端已将接受到的数据完整的显示了出来。附录A机控制B机LED#in clude<reg5
20、2.h>#defi ne uchar un sig ned char#defi ne uint un sig ned int sbit LED仁 P1A0;sbit LED2=P"3;sbit K仁 P1A7;uchar Operation_No;/ 操作代码/数码管代码uchar code DSY_CODE=0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; /延时void DelaysMS(uint ms)uchar i;while(ms-)for(i=0;i<120;i+);/向串口发送字符void Putc_to
21、_SerialPort(uchar c)SBUF=c;while(TI=0);TI=0;/主程序void main()LED1=LED2=1;P0=0x00SCON=0x50;/ 串口模式一 ,允许接收TMOD=0x20;/T1 工作模式 2PCON=0X00;/ 波特率不倍增TH1=0xfd;TL1=0xfd;TI=RI=0;TR1=1;IE=0x90;/ 允许串口中断while(1)DelaysMS(100);if(K1=0)/ 按下 K1 时选择操作代码 0,1,2,3while(K1=0);Operation_No=(Operation_No+1)%4;switch(Operation
22、_No)/ 根据操作代码发送 A/B/C 或停止发送case 0: Putc_to_SerialPort( 'X') ; LED1=LED2=1;break;case 1: Putc_to_SerialPort( 'A'); LED1=LED1;LED2=1;break;case 2:Putc_to_SerialPort( 'B'); LED2=LED2;LED1=1; break;case 3:Putc_to_SerialPort( 'C'); LED1=LED1;LED2=LED1; break; /甲机串口接收中断函数voi
23、d Serial_INT()interrupt 4if(RI)RI=0; if(SBUF>=0&&SBUF<=9)P0=DSY_CODESBUF; elseP0=0x00;B 机控制 A 机数码管加一显示 #include<reg52.h> #define uchar unsigned char #define uint unsigned intsbit LED1=P1A0;sbit LED2=P"3;sbit K2=P1A7;uchar NumX=-1;/延时void DelaysMS(uint ms)uchar i; while(ms-)f
24、or(i=0;i<120;i+); /主程序 void main() LED1=LED2=1;P0=0x00;SCON=0x50;/ 串口模式一 ,允许接收TMOD=0x20;/T1 工作模式 2 TH1=0xfd;/ 波特率 9600TL1=0xfd;PCON=0X00;/ 波特率不倍增RI=TI=0;TR1=1;IE=0x90;while(1) DelaysMS(100); if(K2=0) while(K2=0);NumX=+NumX%11;/ 产生 010 范围内的数字 ,其中 10 表示关闭 SBUF=NumX;while(TI=0);TI=0; void Serial_INT
25、()interrupt 4if(RI) / 如收到则 LED 则动作RI=0;switch(SBUF)/ 根据所收到的不同命令字符完成不同动作 case 'X': LED1=LED2=1;break; / 全灭case 'A': LED1=0;LED2=1;break;/LED1 亮case 'B': LED2=0;LED1=1;break;/ LED2 亮 case 'C': LED1=LED2=0; / 全亮 B 机 DS18B20 温度传感器检测温度送 A 机显示A 机程序 #include<reg52.h> #
26、define uchar unsigned char #define uint unsigned int #include <intrins.h> #define delayNOP() _nop_();_nop_();_nop_();_nop_(); sbit LCD_RS = P2A0;sbit LCD_RW =卩2人1;sbit LCD_EN = P2A2;uchar code Temp_Disp_Title="Current Temp : ";uchar Current_Temp_Display_Buffer=" TEMP:";ucha
27、r code Temperature_Char8 =0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00 ;uchar code df_Table= 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;uchar CurrentT = 0;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0,0;bit DS18B20_IS_OK = 1;int b;sbit DQ = P3A4;void DelayXus(uint x) uchar i; while(x-) for(i=0;i<200;i+);v
28、oid Delay(uint x) while(-x);uchar Init_DS18B20()uchar status;DQ = 1;Delay(8);DQ = 0;Delay(90);DQ = 1;Delay(8);DQ = 1; return status;bit LCD_Busy_Check()bit result;LCD_RS = 0; LCD_RW = 1;LCD_EN = 1; delayNOP();result = (bit)(P0&0x80);LCD_EN=0;return result;void Write_LCD_Command(uchar cmd) while(
29、LCD_Busy_Check(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0;void Write_LCD_Data(uchar dat) while(LCD_Busy_Check(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0;void LCD_Initialise()Wr
30、ite_LCD_Command(0x01);DelayXus(5);Write_LCD_Command(0x38);DelayXus(5);Write_LCD_Command(0x0c);DelayXus(5);Write_LCD_Command(0x06);DelayXus(5);void Set_LCD_POS(uchar pos)Write_LCD_Command(pos|0x80);void Display_Temperature(b)uchar i; uchar t = 150, ng = 0;if(Temp_Value1&0xf8)=0xf8)/ 是负温度Temp_Valu
31、e1 = Temp_Value1;Temp_Value0 = Temp_Value0+1; if(Temp_Value0=0x00)Temp_Value1+;ng = 1;Display_Digit0 = df_TableTemp_Value0&0x0f;/ 取低四位CurrentT = (Temp_Value0&0xf0)>>4) | (Temp_Value1&0x07)<<4);Display_Digit3 = CurrentT/100;/ 百位Display_Digit2 = CurrentT%100/10;/ 十位Display_Digi
32、t1 = CurrentT%10;/ 各位Current_Temp_Display_Buffer11 = Display_Digit0 + '0'Current_Temp_Display_Buffer10 = '.'= Display_Digit1 + '0'= Display_Digit2 + '0'= Display_Digit3 + '0'Current_Temp_Display_Buffer9Current_Temp_Display_Buffer8Current_Temp_Display_Buffer7if
33、(Display_Digit3 = 0)Current_Temp_Display_Buffer7if(Display_Digit2 = 0&&Display_Digit3=0) Current_Temp_Display_Buffer8 = ' ' if(ng) if(Current_Temp_Display_Buffer8 = ' ')Current_Temp_Display_Buffer8= ' ')else if(Current_Temp_Display_Buffer7Current_Temp_Display_Buffer7
34、elseCurrent_Temp_Display_Buffer6Set_LCD_POS(0x00); for(i=0;i<16;i+)Write_LCD_Data(Temp_Disp_Titlei);Set_LCD_POS(0x40); for(i=0;i<16;i+)Write_LCD_Data(Current_Temp_Display_Bufferi);Set_LCD_POS(0x4d);Write_LCD_Data(0x00);Set_LCD_POS(0x4e);Write_LCD_Data('C');/延时void DelaysMS(uint ms)ucha
35、r i;while(ms-)for(i=0;i<120;i+);void Read_Temperature()if(Init_DS18B20()=1)DS18B20_IS_OK=0;elseWriteOneByte(0xcc);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xcc);WriteOneByte(0xbe);Temp_Value0 = ReadOneByte();Temp_Value1 = ReadOneByte();DS18B20_IS_OK=1;/主程序void main()SCON=0x50;/ 串口模式一 ,允许接收T
36、MOD=0x20;/T1 工作模式 2PCON=0X00;/ 波特率不倍增TH1=0xfd;TL1=0xfd;TI=RI=0;TR1=1;IE=0x90;/ 允许串口中断LCD_Initialise();Read_Temperature();while(1) if (RI) /RI 接受中断标志 RI=0;/清除 RI 接受中断标志 b=SBUF; /SUBF 接受 /发送缓冲器Display_Temperature(b);B 机程序#include<reg52.h>#define uchar unsigned char#define uint unsigned int#include <intrins.h>#define delayNOP() _nop_();_nop_();_nop_();_nop_();uchar CurrentT = 0;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0,0;bit DS18B20_IS_OK = 1;sbit DQ = P3A4;/延时void Delay(uint x)while(-x);void DelaysMS(uint ms)uchar i;wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心肌炎护理中的静脉输液管理与护理要点
- 水痘患儿的日常活动管理
- 疼痛护理中的疼痛缓解
- 生态沟渠施工设计方案
- 护理妆容健康妆容理念
- 2026年长护险待遇按护理服务实际天数计发规则
- 2026年现代化首都都市圈空间协同规划核心要点解析
- 2026年工厂数字化设计与数字孪生交付
- 2026年智慧交通边缘RSU车路协同信号优先绿波通行
- 2026年虚拟电厂参与电力交易:充电运营商新利润增长点
- 2025-2026 学年下学期八年级英语下册教学计划
- 幼儿园春季育儿知识分享:守护成长健康同行
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(预热题)
- 2025年安徽审计职业学院单招职业适应性测试试题及答案解析
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 2025年西南计算机有限责任公司招聘笔试真题
- 养生馆公司章程标准文本范例
- 陶瓷工艺学:第4章 传统陶瓷的生产-原料预处理
- 邻居房屋漏水调解协议书
- 智能门锁采购投标方案(技术方案)
- 玉石之分-课件.正式
评论
0/150
提交评论