四川师范大学成都学院电子工程学院课程设计报告
定时器TI溢出率=(fosc/12)*(1/(2^k-初值)) 式中T1计数率= fORC/12,(2^k-初值)为生溢产出所需机器周期数,K为定时器位数,与定时器设定工作方式有关:方式0时 K=13;方式1时 K=16;方式2时 K=8。
SM2:多机通信控制位。主要用于方式2,3.当SM2=1时可以利用收到的RB8来控制是否激活RI,当SM2=0时均可以将数据送入缓存器,并激活RI。
REN:接收允许控制位。软件置1允许接收;软件置0禁止接收。 TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。
RB8:在方式2或3时,RB8位接收到的第9位数据,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。
RI:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。 (3)输入移位寄存器
接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。 (4)波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。 (5)电源寄存控制器(PCON)
其最高位为SMOD即波特率倍增位,当SMOD=1时波特率提高一倍,复位时,SMOD=0。
2.4 MAX232芯片
电平转换芯片MAX232专用于进行将TTL电平转换为RS232电平的芯片,MAX232内部有泵电源,能将+5V电源电压在芯片内提高到RS232电平所需的+10V或者-10V电平。引脚介绍:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数
5
四川师范大学成都学院电子工程学院课程设计报告
据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。第三部分是供电。15脚GND、16脚VCC(+5v)。
图8 MAX232芯片
2.5整体连接原理图
P1.7——P1.0口分别接DP,G,F,E,D,C,B,A,其整体连接图如下:
图9 整体连接原理图
6
四川师范大学成都学院电子工程学院课程设计报告
3.软件设计
3.1 串行通信软件设计
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。从机收到16个正确数据后送到一个数码管显示。
3.2 程序流程图
(1)发送端
主程序开始
图10 发送端程序流程图
程序初始化 主机发送AAH 从机是否回答 BBH N 主动发送数据,检验和 输出完成 N 清除标志位 7
四川师范大学成都学院电子工程学院课程设计报告
串行口工作于方式1,用定时器1产生9600bit/s的波特率,工作于方式2,即TMOD=0x20。功能:将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。通信协议:主机首先发送连络信号(AAH),从机接收到之后返回一个连络信号(BBH)表示从机已准备好接收。 (2)接收端
通信过程使用校验和校验。从机接收到16个数据后,进行校验和检查,若数据没有错误,则返回00H,否则返回FFH。主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。
主程序开始
显示 图11 接收端程序流程图 清除标志位 程序初始化 接收数据,计算检验和 检验和相等? N 发送FFH, 并修改 发送OOH至主机 接收完成? N 8
四川师范大学成都学院电子工程学院课程设计报告
3.3 LED显示原理
LED多数情况用于显示数字,对于十六进制的,要将0~F的数字用7段显示,必须将数字转换为LED对应七段码的信息,比如,要显示“0”,就是让a、b、c、d、e和f段发光,显示“1”,让b和c段发光,等等如表所示。然后根据LED是共阴极还是共阳极接法确定LED各输入端应接逻辑1还是逻辑0,我选用的是共阴接法,要显示“0” 时,a、b、c、d、e和f段就要输入逻辑1,即其段码为3F,通过从机的P1口将编码输出给LED。
4.系统调试与仿真结果
4.1 软件调试
系统软件设计利用Keil进行C语言编写。在系统的软件设计中采用了模块 化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。实验的程序通过Keil软件编译,打开Keil软件,首先,建立工程文件,然后新建一文档,输入自己编写的程序,保存为.C文件。然后再单击Add Files to Group Source Group1。然后勾选生成.HEX文件,最后点击编译。
图12 编译输出结果
9