首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于DSP和单片机通信的液晶显示设计
来源:本站整理  作者:佚名  2011-10-13 08:52:40



1. 3   单片机与DSP通信的软件实现

  在异步通信中必须先规定3 件事: 一是字符格式,即传输的每一帧数据的格式; 二是通信双方要设置为相同的波特率, 且该波特率能适应双方的时钟频率; 三是通信双方要有约定的通信协议, 也就是双方要互相确认后才能传输数据。

  在本设计中, DSP 和单片机采用的数据帧格式是1 位起始位, 8 位数据位和1 位停止位。由于数据包采用校验和的方式进行校验, 因而在数据帧格式中没有设置奇偶校验位。因而MCS51 单片机应设置工作在串口方式1 状态下, 此时串行口为8 位异步通信接口。为了保证数据传输具有较高的速率, 同时又有比较低的传输误码率, 因而选择波特率为9600 b/ s。通过相应的波特率设置计算公式计算出DSP 和单片机的初始化时寄存器的初值, 即可完成设置。这样就保证了通信双方帧格式的统一和波特率的统一, 从而使数据通信正确、可靠[。

  DSP 的串口初始化设置程序如下:

  EALLOW;

  GpioMuxReg s. GPGMUX. bit. SCIRXDB_GPIOG5 = 1;/ / 设置SCI??RX 引脚外设功能

  GpioMuxReg s. GPGMUX. bit. SCIT XDB_GPIOG4 = 1;/ / 设置SCI??TX 引脚外设功能EDIS;

  ScibRegs. SCICCR. all = 0x07; / / 1 位停止位, 无奇偶校验,8 位字符长度, 使用空闲线模式协议

  ScibRegs. SCICTL1. all = 0x 03;/ / 使能发送和接收缓冲

  ScibRegs. SCICTL2. all= 0x 02;/ / 使能RXRDY 中断, 禁止T XRDY 中断

  ScibRegs. SCIPRI. all = 0x0000;/ / 禁止接收错误中断和休眠模式

  ScibRegs. SCIH BAUD= 0x01;/ / LSPCLK = 37. 5 MH z, 波特率设为9 600 b/ s

  ScibRegs. SCILBAUD = 0xE1; ??

  ScibRegs. SCICTL1. all = 0x 0023;/ / 重新使能SCI

  51 单片机串口初始化程序如下:

  TMOD= 0x 21;/ / 定时器1 工作在方式2, 用于产生0 串口的波特率

  SCON= 0x 50;/ / 串行口0 工作在方式1, 允许接收, 清标志位

  TH 0= 0xfd; / / 晶振12 MH z, 设置波特率为9 600 b/ s

  TH 1= 0xfd; PS= 1; / / 串口中断优先

  PCON| = 0x 00; / / 波特率不加倍

  TR1= 1;

  在本设计中, 采用自己规定的通信协议, 首先DSP发送出握手信号, C51 收到握手信号后, 进入中断子程序, 判断握手信号是否正确, 若正确才握手成功, 开始接收数据包, 接收完成后对数据进行和校验, 正确后刷新液晶的显示数据存储区; 若错误则放弃本次数据, 并将接收数据存储区清零, 等待下一次通信。其程序流程图如图3 所示。

 

图3   DSP 和单片机的通信程序流程图

DSP 向单片机的定时发送程序如下:

  ScibRegs. SCITXBUF = Sci_VarRx [ i] ;/ / 将数据包写入发送缓冲区

  i+ + ; / / 依次发送数据包

  if( i= = 12) i= 0; / / 重新计数

  IER | = M_INT1; / / 清除中断标志位

  EINT;

  PieCTR lReg s. PIEACK. all = PIEACK_GROUP1;

  51 单片机串口中断服务程序如下:

  Rx0_Buffer[ Rx0_Ptr] = SBUF; / / 读取数据到接收数组

  RI= 0; / / 清除接收标志位

  Rx0_Ptr+ + ; / / 计数加1

  Rx_flag= 1;

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:57,468.75000 毫秒