作者sdfwer ( 寻)
看板Electronics
标题Re: [问题] 透过8051接收rs232讯号 送LCM显示
时间Sat May 9 16:17:20 2009
※ 引述《sdfwer ( 寻)》之铭言:
我的目标是使用8051不断读取 RXD 收到的字串
将字串送到LCM显示
目前有个装置会连续以rs232送出ASCII字串
我希望8051可以接收装置传出的字串,然後送到LCM
以下是主要的CODE
START:
MOV TMOD,#20H ;TIMER1,MODE1
ANL PCON,#3FH ;SMOD=0
MOV TH1,#0F4H ;BAUDRATE=2400
SETB TR1 ;启动 Timer1
MOV SCON,
#11010000B
;
READ:
JNB RI,$ ;判断RI是否为0,0的话等待,1的话下一步
CLR RI ;清除RI
MOV A,SBUF ;将SBUF暂存器内的8bits(某字元)送去A
CALL OUTPUT
JMP READ ;等待下一个字元送入
;
OUTPUT:
SETB P1.6 ;EN=1 LCM设定
CLR P1.5 ;RW=0 LCM设定
SETB P1.4 ;RS=1 LCM设定
MOV p2,A ;输出至LCM显示 8bits (LCM连接於P2.)
CLR P1.6 ; LCM设定
RET
装置的输出讯号有用电脑的terminal软体检视,确定能输出字串 (BAUDRATE=2400)
但是送到LCM显示时,却会显示"乱码"
以下有两种猜测,但是却有实验否定,因此不晓得原因为何
猜测1.装置传送的字串太快,8051的SBUF暂存器来不及传送到A暂存器就被覆盖
或是A暂存器来不及传送到显示器就被覆盖
->以terminal软体连打字串,以8051 RXD接收後传送到LCM显示 ok
猜测2.LCM显示器来不及显示字串
->以8051不断送字串到LCM显示 OK
是否该将SBUF读到的字串,"即时"的依序的存到一段位址内。
等到装置传送完字串,8051再将这段位置的字串一一输出显示?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.192.73
1F:推 beagle:你的 8051 是接何种 crystal ? cycle 是 6T 还是 1T ? 05/09 00:57
2F:→ beagle:这会影响 baud rate 所以先检查看看 05/09 00:58
我是用石英振荡器,频率是11.0592MHz,搭配8051 TH1,#0F4H 的设定好像不会有误差?
cycle不晓得怎麽看? google没有找到相关知识 (请前辈指导)
此外,曾经
以装置送讯号到terminal软体,可以成功和电脑传送与接收
(terminal软体设定baudrate2400,不晓得这样是不是可以确定8051的baudrate没错?)
3F:→ narcissusli:加长装置传送的interval,不然如果字串太长,51会溢位 05/09 04:33
4F:→ narcissusli:先拉长时间,一个字一个字慢慢送. 05/09 04:34
装置输出的interval是固定的,没有办法调整
字串长度倒是可以限制在一次输出26个字,不晓得26 bytes是否还会溢位?
5F:推 utility:所以问题是只要接所谓的装置传送资料.就会在LCM显示乱码? 05/09 10:56
6F:→ utility:振荡器频率是多少?检查一下用这频率产生的鲍率误差有多大? 05/09 10:58
7F:→ utility:另一个可能.用示波器勾装置和8051之间的波形是否不够好. 05/09 10:59
8F:→ utility:反正玩MCU这种东西..有问题时.就是量波形.最直接.. 05/09 11:01
9F:推 ksmrt0123:可能是两边baudrate有误差... 装置的比2400快一点, 05/09 12:57
10F:→ ksmrt0123:51的慢一点... 05/09 12:58
总结我目前的实验结果为:
PC 的 terminal 可顺利与装置沟通,传送与接收字串
PC 的 terminal 可顺利与8051沟通,传送与接收字串,并送至LCM显示器显示
但是8051和装置之间的沟通就出现问题,无法正确显示字串
谢谢各位前辈的建议,下一步我会去看看装置输出的波形和检察baudrate误差,
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.171.170
11F:→ narcissusli:我常用的方法: 确认UART设定无误, 用示波器看传输 05/09 19:50
12F:→ narcissusli:用示波器就可以很清楚地知道问题在哪里了 05/09 19:51
13F:推 TroyLee:有用跳线吗 @@ 本板 3833 这个问题 05/09 20:36
14F:→ ksmrt0123:若是用错线 里论上应该是什麽都收不到 而不是乱码 05/09 21:01
15F:推 TroyLee:也对後.. 05/09 22:16
16F:推 utility:其实收到乱码都不会什麽问题.大部份是波形或baudrate弄错 05/10 00:15