打印

51单片机232串口 断电时问题

[复制链接]
4609|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhaohualiang 于 2011-1-5 14:12 编辑

我用的是STC89C58,用串口调试助手与PC通讯,单片机发送数据给PC,上电后PC能接收到正确的数据,但是断电时PC又接收到一些乱码。百思不得其解,用另一块板子试验,结果一切正常。于是断定是板子的问题,但是电路一样啊,请各位帮忙看看。


#include <reg52.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
sfr T2MOD=0xC9;
uchar i;
uchar dat1[]="2010-1-5 11:55";
void com_init()
{
TCLK=1;
RCLK=1;

  TH2=0xFF;  //9600bps  11.0592MHz的时钟频率
  TL2=0xDC;
  RCAP2H=0xFF;  //方式1和方式3的波特率=fosc/(32-(65535-(RCAP2H,RCAP2L))
  RCAP2L=0xDC;
SCON=0X50;
TR2=1;
}
void print(uchar ch)
{
SBUF=ch;
while(TI==0)
  {};
TI=0;
}
void main()
{
com_init();
for(i=0;i<strlen(dat1);i++)
  print(dat1);
while(1);
}

相关帖子

沙发
ayb_ice| | 2011-1-5 14:28 | 只看该作者
断电时IO掉电相当于UART的开始信息

使用特权

评论回复
板凳
zhaohualiang|  楼主 | 2011-1-5 14:31 | 只看该作者
有些不太明白,大哥能具体说说吗,怎样解决啊

使用特权

评论回复
地板
ayb_ice| | 2011-1-5 14:44 | 只看该作者
通常UART通信格式是开始信号0+字节数据信号+停止1
一旦通信开始信息0有效,后面强制接收...

使用特权

评论回复
5
zhaohualiang|  楼主 | 2011-1-5 14:50 | 只看该作者
我是想让单片机向PC发送数据,没办法检测开始信息0,

使用特权

评论回复
6
ayb_ice| | 2011-1-5 14:52 | 只看该作者
本来就是MCU向PC发数据嘛...

使用特权

评论回复
7
zhaohualiang|  楼主 | 2011-1-5 14:57 | 只看该作者
我还是不明白,我第一次用串口,能再具体点吗

使用特权

评论回复
8
onmyway12| | 2011-1-5 16:34 | 只看该作者
网上搜下,几吨资料。

使用特权

评论回复
9
handlike| | 2011-1-5 16:45 | 只看该作者
这是正常的事,上电断电电平变化时都有可能发送或接收到数据。
不用在这上面花大的精力。

使用特权

评论回复
10
zhaohualiang|  楼主 | 2011-1-5 17:29 | 只看该作者
我是用单片机控制微型打印机,用的是串口,第一块板打印出是乱码,第二块正常打印。所以用串口调试助手看了看发送的数据,结果就是上面说的第一块板上电时PC接收到正确数据,断电接收到乱码;第二块板上电时PC接收到正确数据,断电时没有任何乱码。

使用特权

评论回复
11
okay007| | 2011-1-5 18:33 | 只看该作者
本帖最后由 okay007 于 2011-1-5 18:39 编辑

既然只有第一块板子有问题,就用串口调试助手十六进制接收单片机发送的乱码数据分析问题。
奇怪,难道你没有定义通讯协议?数据一帧一帧传输不会出现这种问题。
上面2楼说的情况,“断电时IO掉电相当于UART的开始信息”如果定义了应用层通讯协议就会避免的(实际是忽略了)。

使用特权

评论回复
12
ayb_ice| | 2011-1-5 19:10 | 只看该作者
实际通信一定要有协议才可靠的
必须接收到指定格式的数据才有效
建议LZ还是去看一下UART的具体发送格式吧

使用特权

评论回复
13
denisetuj| | 2011-1-5 22:30 | 只看该作者
如果定义了应用层通讯协议就会避免的(实际是忽略了)。

使用特权

评论回复
14
chunyang| | 2011-1-5 22:59 | 只看该作者
断电时,MCU端口的电压下降率高于232电平转换芯片的电荷泵失电率,这时端口会被误认为零电平,解决办法是加强上拉,在232输入端口上加10K的上拉电阻。

使用特权

评论回复
15
okay007| | 2011-1-6 08:43 | 只看该作者
大概看了一下LZ的程序,应该是没有定义通讯协议,这样的程序只能用于学习,如果用于实际产品可能会出问题。

使用特权

评论回复
16
wgz1626| | 2011-1-6 09:42 | 只看该作者
我同意,上电和断电,串口有数据传送很正常,在串口调试助手可以看到,所以设计产品一定要定义设备之间的通讯协议。

使用特权

评论回复
17
A2000wps| | 2011-1-6 10:49 | 只看该作者
俺是菜鳥,sfr是什麽意思?估計是我忘了

使用特权

评论回复
18
zhaohualiang|  楼主 | 2011-1-6 13:07 | 只看该作者
SFR增加特殊功能寄存器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

218

帖子

1

粉丝