求助:单片机接口? 点击:1532 | 回复:12



剑心33

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-15 11:11:00
楼主
   我开发了一个系统,在单片机的P0口上挂了LCD和打印机,单片机工作正常;
但是,当我在P0口上加上AD0809后,工作不正常,LCD没有显示,打印机打印出乱码,
当我把ADC0809取下来后,一切正常。谁能告诉我这是什么原因?



周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2005-12-15 15:10:00
1楼
应该是 ADC0809 读完数据后,片选没有恢复高电平。
系统总线还挂什么了?

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-12-16 13:29:00
2楼
若干个端口连在一起,同一时间最多只能有一个是输出状态,若有两个或两个以上的端口处于输出状态,倒底是谁的输出有效?不烧毁端口算你走运;当然有些端口是集电极开路的,可以多个这种输出端口并接,构成[color=#FF0000]线或电路[/color]。

朱可夫

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 35回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2005年11月22日
发表于:2005-12-16 15:44:00
3楼
我曾设计了一套电源控制系统,AT89S52,AD1674,DAC1230,232接口,矩阵键盘,LED,TPUP打印机,在开发过程中也几次遇到类似问题,现按顺序详述如下:
1: 我的AD1674有MC4558做前级放大,再往前是CD4051与74HC373进行通道选择,一开始,我的通道编码有误,选通了无效的悬空端接入4558,使4558的输出达到最大,从而AD输出全1,而且,我发觉,如对输入通道切换过频,切换后立即启动转换,有可能诱发硬件错误,从而在CPU取消对AD的片选后,AD1674的输出仍然有效,就将数据线钳在高电平,使得同挂在总线上的DA只能按最大输出。ADC0809将通道选择集成于片内,同样也有类似问题。
2:查一下你的上电复位。我的系统在仿真器调试成功后,用8952却不工作,问题在于仿真器可以独立复位,而后正常工作,但MCU则依赖上电复位,虽然我按经典电路设计复位,单不知为何却有问题,8952复位不好,其P0口恐怕不是FF,从而使得读键盘接口的8155时,不能正确读入常高,误以为一直有键按下,陷入键释放等待无法脱出。如果你的CPU复位不好,那就有可能带某些器件出问题,我当时的办法是人为模拟复位效果,即一开机就往P0里写入FF并延时,解决了这个问题,你可类推一下。
3:查一下你的ADC0809的ALE引脚的接法。我曾错把74373当作74377使用,使得其ALE管脚在常高时始终直通,数据线无法负载,系统死机。如果你的ADC0809的ALE引脚接错或其中的锁存已坏直通,就会发生这种问题。我曾遇到过这样的坏打印机,一接入,系统就完蛋。

剑心33

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-16 20:43:00
4楼
谢谢!

剑心33

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-16 20:46:00
5楼
但是,我把ADC0809取出后,LCD恢复正常,若加上ADC,LCD就不正常了,可是打印机却能正常工作呢?这是为什么呢?
进一步如何解决呢? 

朱可夫

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 35回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2005年11月22日
发表于:2005-12-19 08:52:00
6楼
你不是说有ADC0809时打印机打印出乱码吗?

剑心33

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-20 19:44:00
7楼
   这是,由于上次没有加上拉电阻,出现不正常(打印机),加了上拉电阻后,打印机正常,但是LCD仍然无法显示,(当加上ADC0809时)。

朱可夫

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 35回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2005年11月22日
发表于:2005-12-21 09:39:00
8楼
你是说,你用P0口以端口方式与打印机通信吗?这样的话,因为P0口开漏,是需要加上拉的,但是P0端口加上拉之后,再进行总线操作有可能出问题,尤其在高晶振情况下,我曾以P0端口方式操作低速DA,再用总线读写XRAM,发现当晶振超过6M时,读RAM总出错,这似乎是硬件连接不妥,不是软件逻辑问题。建议你去掉P0口上拉,单纯以总线方式输出,如是早期的打印机,如TPUP-40C等,其速较慢,选通脉冲应宽于320NS,则应在P0口与打印机间加74LS377锁存数据,以P1~P3端口某点接打印机的STB,如是新式打印机,如TPUP-T40,其选通脉冲仅几十个NS,理论上讲,在12M系统中也可用总线直连,我的一套6M系统这样工作得很好。去掉上拉后再按我上次说的查问题吧,祝你顺利。

剑心33

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-23 08:56:00
9楼
谢谢!!
我试试。

剑心33

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-23 10:52:00
10楼
我去掉P0口的上拉后,只要接入ADC0809的输出,LCD仍然无法显示,请问这是又是什么原因呢?
接下来如何解决呢?

朱可夫

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 35回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2005年11月22日
发表于:2005-12-23 13:35:00
11楼
"剑心33":
         你还是应该参考我第一次说的先查一查,另外,你的LCD是八段还是点阵的,是几个模块为一组的? 

剑心33

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 210回
  • 年度积分:0
  • 历史总积分:1008
  • 注册:2005年7月14日
发表于:2005-12-30 10:16:00
12楼
现在,LCD和数据采集的问题解决了,我把接线的顺序换一下,就是先接ADC,在弄打印机,问题就解决了。真是,不可想象呢。
现在,还有一个问题,想请教,就是如何让LCD显示一幅图画?
能否给个程序(汇编)的?

热门招聘
相关主题

官方公众号

智造工程师