1、 单片机课程设计报告姓名: 学号:组员: 班级:电子信息工程1班题目:单片机双机串行通信学院:信息科学技术学院指导老师: 设计时间:2014年9月10日 - 9月15日2一、总体设计1.实现功能:用单片机的串口模拟短信的收发,当A主机要向B主机发送一行字符串时,首先A主机把这行字符串打印到1602LCD液晶屏幕上,当A主机按发送按键的时候,A主机向B主机发送一行字符串,这时字符串会通过串口发送到B主机上,当B主机收到字符串时,会在1602LCD液晶屏幕上把字符串打印出来,这时按下B主机上的接受按键,B主机会把要发送的字符串,打印到B主机的1602LCD液晶屏幕上,按下B主机的发送按键,这时B主机会通过串口向A主机发送字符串。最后用两个矩阵键盘模拟发送短信用的字母键盘,A主机可以通过矩阵键盘输入想要发送的数据,然后按发送按键发送,同样B主机也可以通过矩阵键盘输入信息,然后通过发送按键发送。2. 设计方案:首先把两个ATS89C51各自连接成单片机最小系统,在把他们的TXD、RXD口分别与MAX232相连,然后一个MAX232的T1out和R1IN ,分别与另一个MAX232的R1IN和T
2、1out相连,P0口接矩阵键盘,P1口接液晶显示的数据端。总的电路图如图:图1、总电路图二、设计基础1.单片机串行口通信方式图2.AT89C51计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:(1)数据缓冲器(SBUF)接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,用同一个接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。(2)串行控制寄存器(PCON)SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:SM0SM1SM2RENTB8RB8TIRISM0,SM1:串行接口工作方式选择位,这
3、两位组合成00,01,10,11对应于工作方式0、1、2、3。串行接口工作方式特点见下表SM0SM1工作方式功能波特率 0008位同步移位寄存器(用于I/O扩展)fORC/1201110位异步串行通信(UART)可变(T1溢出率*2SMOD/32)10211位异步串行通信(UART)fORC/64或fORC/3211311位异步串行通信(UART)可变(T1溢出率*2SMOD/32)SM2:多机通信控制位。REN:接收允许控制位。软件置1允许接收;软件置0禁止接收。TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。RB8:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。RI:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。(3)输入移位寄存器接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。(4)波特率发生器波
4、特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。(5)电源控制寄存器PCON,其最高位为SMOD。(6)波特率计算对于方式1和方式3,波特率都是由定时器1的溢出率决定,计算公式如下: 定时器T1工作于方式0时,k=13;定时器T1工作于方式1时,k=16;定时器T1工作于方式2和方式3,k=8;2、1602LCD操作(1)1602LCD特性:+5V电压,对比度可调内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器DDRAM内建有160个5X7点阵的字型的字符发生器CGROM8个可由用户自定义的5X7的字符发生器CGRAM字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚)图3、1602各引脚的定义HD44780内置了DDRAM(显示数据存储RAM)、CGROM(字符存储ROM)和CGRAM(用户自定义RAM)。 DDRAM就是显
5、示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个“A”字,就要向DDRAM的00H地址写入“A”的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会讲到的。一行有40个地址 在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: DDRAM地址与显示位置的对应关系 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常 用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点 阵字符图形显示出来,我们就能看到字母“A” 图4、1602字符表上表中的字符代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1A这样的方法。PC在编译时就把“A”先转为41H代码了。字符代码0x000x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可
6、以存放8组),就是CGRAM了。对DDRAM的内容和地址操作,HD44780的指令集及其设置说明,共有11条指令:基本操作时序: 读状态 输入:RS=L,RW=H,E=H输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无 1.清屏指令 功能: 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为0。 2.光标归位指令 功能: 把光标撤回到显示器的左上方; 把地址计数器(AC)的值设置为0; 保持DDRAM的内容不变 3.输入模式设置指令 功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名设置 I/D0=写入新数据后光标左移 1=写入新数据后光标右移 S0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字 4. 显示开关控制
7、指令功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下: 位名设置 D0=显示功能关 1=显示功能开 C0=无光标 1=有光标 B0=光标不闪烁 1=光标闪烁 5. 设定显示屏或光标移动方向指令 功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L设定情况 0 0光标左移1格,且AC值减1 0 1光标右移1格,且AC值加1 1 0显示器上字符全部左移一格,但光标不动 1 1显示器上字符全部右移一格,但光标不动 6.功能设定指令 功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名设置 DL 0=数据总线为4位 1=数据总线为8位 N 0=显示1行 1=显示2行 F0=57点阵/每字符1=510点阵/每字符 7.设定CGRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。8.设定DDRAM地址指令 功能:设定下一个要存入数据的CGRAM的地址。 (注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因) 9.读取忙信号或AC地址指令 功能: 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; 读取地址计数器(AC)的内容。 10.数据写入DDRAM或CGRAM指令 功能: 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符; 将用户自己设计的图形存入CGRAM。 11.从CGRAM或DDRAM读出数据的指令功能:读取DDRAM或CGRAM中的内容。 基本操作时序: 读状态 输入:RS=L,RW=H,E=H输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无 2.MAX232芯片用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信
《单片机单片机课程设计-双机串行通信》由会员博****1分享,可在线阅读,更多相关《单片机单片机课程设计-双机串行通信》请在金锄头文库上搜索。