智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11006|回复: 15
打印 上一主题 下一主题

[软件类] XS128串口通信

  [复制链接]

6

主题

232

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2021
QQ
威望
1003
贡献
540
兑换币
472
注册时间
2012-9-22
在线时间
239 小时
跳转到指定楼层
1#
发表于 2012-12-5 16:38:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
大侠!为什么向计算机发送‘1’,但是却接收的是‘1C E0’,而且波特率应该没算错!但是调节不同的波特率会出现不同的乱码?
求解???????
?????????
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
/*************  锁相环24M  **************/
void PLL_Init()
{
    CLKSEL=0x00;                //初始时还没有PLL
    PLLCTL=0xe1;                //时钟监控使能,PLL允许,VCOCLK调频2%,禁止快速苏醒,禁止自给时钟,伪停止下禁止实时中断和看门狗
    SYNR=2;
    REFDV=1;                    //PLLCLK=2*OSCCLK*(SYNR+1/((REFDV+1))=48M;
    asm NOP;asm NOP;asm NOP;    //等待锁相环稳定
    while(!(CRGFLG&0x08));      //锁相环稳定标志位
    CLKSEL=0x80;                //时钟选择寄存器,Bus Clock=PLLCLK/2,停止模式下振荡器、系统时钟、锁相环、内核时钟、看门狗继续工作
}
/*************  SCI设定9600波特  ***************/
void SCI_Init()
{
    SCI0BDH=0x00;
    SCI0BDL=0x9a;       //9600bps BaudRate=BusClock/(16*SCIBD)
    SCI0CR2=0x2C;       //发送允许 接受中断允许
}
void delay(void)
{
  unsigned int loop_i,loop_j;
  for(loop_i=0;loop_i<500;loop_i++)
  {
    for(loop_j=0;loop_j<500;loop_j++)
    {
    ;}
  }

  }
/*********** 串口发送程序:此部分为网上下载************/
void uart_putchar ( unsigned char c)
{

  while(!(SCI0SR1&0x80)) ;       //keep waiting when not empty  
  SCI0DRL=c;
}


void main(void) {
  /* put your own code here */
  unsigned char loop_index;
   SCI_Init();
    uart_putchar ('1');
/*for(loop_index=0;loop_index<100;loop_index++)
  {
    while(!SCI0SR1_TDRE);
    SCI0DRL=loop_index;
    delay();

  }
     */

最佳答案

查看完整内容

串口线的问题

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
2#
发表于 2012-12-5 16:38:33 | 只看该作者
串口线的问题
回复

使用道具 举报

21

主题

892

帖子

0

精华

常驻嘉宾

爱板者

Rank: 8Rank: 8

积分
3857

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1833
贡献
1048
兑换币
736
注册时间
2012-12-4
在线时间
488 小时
3#
发表于 2012-12-6 14:48:14 | 只看该作者
好用
回复

使用道具 举报

6

主题

232

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2021
QQ
威望
1003
贡献
540
兑换币
472
注册时间
2012-9-22
在线时间
239 小时
4#
 楼主| 发表于 2012-12-6 17:37:25 | 只看该作者
谢了,硬件连错了
回复

使用道具 举报

21

主题

892

帖子

0

精华

常驻嘉宾

爱板者

Rank: 8Rank: 8

积分
3857

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1833
贡献
1048
兑换币
736
注册时间
2012-12-4
在线时间
488 小时
5#
发表于 2013-1-3 14:23:31 | 只看该作者
早安,徐威 发表于 2012-12-5 16:38
串口线的问题

怎么解决的  我也是同样的问题
回复

使用道具 举报

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
6#
发表于 2013-1-3 14:27:51 | 只看该作者
mxj1005071012 发表于 2013-1-3 14:23
怎么解决的  我也是同样的问题

上位机不要用十六进制显示 。我们的是串口线的问题 后来用51单片机的P3.1 做中介就可以了 通过五一的串口功能来解的
回复

使用道具 举报

21

主题

892

帖子

0

精华

常驻嘉宾

爱板者

Rank: 8Rank: 8

积分
3857

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1833
贡献
1048
兑换币
736
注册时间
2012-12-4
在线时间
488 小时
7#
发表于 2013-1-3 14:28:31 | 只看该作者
qi亚 发表于 2012-12-6 17:37
谢了,硬件连错了

我和你的程序基本一样 硬件好像没有问题 可是串口助手收不到数据时怎么回事  你是怎么解决的
回复

使用道具 举报

21

主题

892

帖子

0

精华

常驻嘉宾

爱板者

Rank: 8Rank: 8

积分
3857

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1833
贡献
1048
兑换币
736
注册时间
2012-12-4
在线时间
488 小时
8#
发表于 2013-1-3 14:30:23 | 只看该作者
早安,徐威 发表于 2013-1-3 14:27
上位机不要用十六进制显示 。我们的是串口线的问题 后来用51单片机的P3.1 做中介就可以了 通过五一的串口 ...

我用的是51开发板上的RS232  没有用51单片机 求详解 谢谢了 不知道怎么搞啊  发愁
回复

使用道具 举报

6

主题

232

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2021
QQ
威望
1003
贡献
540
兑换币
472
注册时间
2012-9-22
在线时间
239 小时
9#
 楼主| 发表于 2013-1-3 18:55:58 | 只看该作者
把单片机的数据发送端TXD 连接到单片机的TXD ,这里仅仅用到单片机的硬件结构,然后连接PC机,用上位机接受就行了。
回复

使用道具 举报

1

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
637
威望
329
贡献
204
兑换币
215
注册时间
2012-12-20
在线时间
52 小时
毕业学校
河北省实验中学
10#
发表于 2013-1-21 01:46:13 | 只看该作者
你看看是不是因为波特率不匹配造成误码率太高。我也是弄了一下午,现在数据流稳定了。。。你用PLL变频到26M再用9600的波特率,可实现0.76%的误码率。效果不错。只不过我现在发00,单片机返回80。。。不过误码率几乎可以忽视了。。。24M在9600下的误码率在6.9%左右,太高了,发00 回的数据都不一样,通讯就是不可靠的。。。。
都是新手,如有不妥之处还请包涵哦~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-27 19:02 , Processed in 0.058782 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表