搜索
bottom↓
回复: 33

大家以后用Proteus仿真LCD1602时,要注意啊,血的教训

[复制链接]

出0入0汤圆

发表于 2008-6-30 16:07:31 | 显示全部楼层 |阅读模式
用Proteus仿真LCD1602时,一定不要在程序中检测“忙”信号,否则会进入死循环,不显示,实际使用时再加上

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-6-30 16:14:13 | 显示全部楼层
哈哈,什么叫仿真?
就是像真的一样,但是毕竟不是真的:)

用过两次仿真后,就不用仿真了,直接搭电路,真刀真枪,行就行不行就不行。

出0入0汤圆

发表于 2008-6-30 16:15:39 | 显示全部楼层
留个位...

出0入0汤圆

 楼主| 发表于 2008-6-30 17:09:30 | 显示全部楼层
没办法,有BUG

出0入0汤圆

 楼主| 发表于 2008-6-30 17:15:35 | 显示全部楼层
仿真好了,但我的TS1620-1还是没显示,不知道和1602相同吗

出0入0汤圆

发表于 2008-6-30 18:35:33 | 显示全部楼层
从不用仿真,不是信不过,只是最后的程序还是要在真实环境上运行的,何不一开始就真刀真枪的上呢。

常常听见有人说:我仿真是没问题的呀,然后就N个人争执不下....

出0入0汤圆

发表于 2008-6-30 18:37:49 | 显示全部楼层
没有硬件条件下才软件仿真,有条件为什么要仿真啊,而不是真实啊!!!

出0入0汤圆

发表于 2008-6-30 19:12:13 | 显示全部楼层
定量硬件实验!

出0入0汤圆

发表于 2008-6-30 19:12:15 | 显示全部楼层
定量硬件实验!

出0入90汤圆

发表于 2008-6-30 20:35:08 | 显示全部楼层
有条件当然用真实的。但是,如果是学生呢?大家有钱,有条件,但是这个世界上有很多应届本科生都不怎么有钱,不怎么有条件啊!现在都要求动手能力,如果没钱买硬件,又不去用软件仿真,那还哪来动手能力!
我觉得,可以用仿真软件入门。想提高就不行了!

出0入0汤圆

发表于 2008-6-30 21:41:33 | 显示全部楼层
Proteus这玩意对于实际开发产品来说是害人的,对于学生来说学习用用还是可以的。

手边有硬件就绝不用Proteus!

出0入0汤圆

发表于 2008-7-1 13:54:10 | 显示全部楼层
我看不惯Proteus已经很久了,没有器件时玩玩还可以。




QQ:185932251
电子攻城师群:64485187
学习电子技术,共同提升水平,交流工作经验及工作机会!

出0入0汤圆

 楼主| 发表于 2008-7-1 15:26:10 | 显示全部楼层
我想还有很多的BUG

出0入0汤圆

 楼主| 发表于 2008-7-1 15:27:07 | 显示全部楼层
那个花了我2天的时间

出0入0汤圆

 楼主| 发表于 2008-7-1 15:27:39 | 显示全部楼层
一直没找到毛病

出0入0汤圆

发表于 2008-7-1 18:13:13 | 显示全部楼层
Proteus还是不错,本人在工地,没实验条件,就用这个软件学点东西。
AD,按键部份模拟比较差,响应速度慢

出0入0汤圆

发表于 2008-7-2 08:49:31 | 显示全部楼层
我做过两次仿真,等真做在电路时,都不行.像上面说的一样,真枪真刀

出0入0汤圆

发表于 2010-8-11 16:10:50 | 显示全部楼层
为什么我的通过了啊?我用的lm016和mega16

出0入0汤圆

发表于 2010-8-11 17:12:46 | 显示全部楼层
仿真适合对硬件依赖不高的场合,主要是对算法之类的有个把握,适合做算法密度较高的快速验证,如果是以硬件为主体的设备,那么一定要用硬件测试,没条件创造条件也要用硬件测试。

出0入0汤圆

发表于 2012-2-2 00:23:41 | 显示全部楼层
回复【楼主位】qkj1575 齐开军
-----------------------------------------------------------------------

我也是这个问题,调了一晚上,在硬件上可以有,就是在Proteus上通不过;
发现在模拟的时候,它一直在测试BUSY;
后来,在测试BUSY时,先把DatePort设为低电平就可以了。

出0入0汤圆

发表于 2012-5-8 21:18:13 | 显示全部楼层
感谢啊 我的问题也解决了!

出0入4汤圆

发表于 2012-5-8 22:13:57 | 显示全部楼层
使用工具,但是不能依赖工具。

使用工具也是有技巧的,不然抓着刀刃瞎舞,无非自伤。

出0入0汤圆

发表于 2012-5-12 23:21:12 | 显示全部楼层
仿真只是参考而已,当不得真!

出0入0汤圆

发表于 2012-5-13 01:35:30 来自手机 | 显示全部楼层
仿真忙检测是没问题的,一个要注意忙检测的写法,一个是双击1602,会看到有一个频率,把那个频率调大一些就可以了,兆级

出15入9汤圆

发表于 2012-5-13 01:51:34 | 显示全部楼层
用仿真失败,该!

出0入0汤圆

发表于 2012-5-13 02:31:02 | 显示全部楼层
痛恨proteus的都是卖开发板的,有了proteus他们生意差了很多,

出0入0汤圆

发表于 2012-5-13 06:38:09 | 显示全部楼层
用Proteus仿真LCD1602时,一定不要在程序中检测“忙”信号,否则会进入死循环,不显示,实际使用时再加上


you are so wrong that's not funny.

出0入0汤圆

发表于 2012-5-14 16:33:29 | 显示全部楼层
上一个通过的
  1. static void LCD_Dat( const unsigned dat )
  2. {
  3.     u8 i;
  4.     u8 cnt=255;
  5.     do{
  6.         LCD_DATA( 0xff );   
  7.         RS_LOW();
  8.         RW_HIGH();
  9.         EN_HIGH();      
  10.         _nop_();        
  11.         i = LCD_STATUS();        
  12.         EN_LOW();      
  13.         cnt--;
  14.     }while( i && cnt );
  15.       
  16.     if ( cnt )
  17.     {
  18.         RS_HIGH();
  19.         RW_LOW();
  20.         LCD_DATA( dat );
  21.         _nop_();
  22.         EN_HIGH();
  23.         _nop_();
  24.         EN_LOW();
  25.     }
  26. }

  27. static void LCD_Cmd( const unsigned cmd )
  28. {
  29.     u8 i;
  30.     u8 cnt=255;
  31.     do{
  32.         LCD_DATA( 0xff );   
  33.         RS_LOW();
  34.         RW_HIGH();
  35.         EN_HIGH();      
  36.         _nop_();        
  37.         i = LCD_STATUS();        
  38.         EN_LOW();      
  39.         cnt--;
  40.     }while( i && cnt );
  41.    
  42.     if ( cnt )
  43.     {
  44.         RS_LOW();
  45.         RW_LOW();
  46.         LCD_DATA( cmd );
  47.         _nop_();
  48.         EN_HIGH();
  49.         _nop_();
  50.         EN_LOW();
  51.     }
  52. }
复制代码

出200入2554汤圆

发表于 2012-5-14 16:39:44 | 显示全部楼层
我之前也是这个问题,后来发现不是仿真的问题,是仿真软件把信号传输延时都干出来了。

检测忙标志位是,大体上是先读允许,再加载数据端口的电平状态,然而问题就出在这里:
读允许后,p仿出了信号延时,要过一阵子才能在BIT7给出空闲信号。

最后解决办法是,读允许后,等一段时间再检测BIT7。此法仿真实物均通过。

后来想想的确是这样的,哪能刚以读允许,1602就传来信号啊;实物通过那是RP好,真正重要的其实是软件不稳定

出0入0汤圆

发表于 2012-7-21 11:18:51 | 显示全部楼层
我这个已经很多天了

出0入0汤圆

发表于 2012-7-22 09:54:54 | 显示全部楼层
  1. #include<reg51.h>
  2. #include"delay.h"

  3. #define uchar unsigned char

  4. sbit RS  = P2^0;
  5. sbit RW  = P2^1;
  6. sbit E   = P2^2;

  7. uchar CheckBusy(void)
  8. {
  9.         uchar BF;
  10.         RS = 0;
  11.         RW = 1;
  12.         E  = 1;
  13.         BF = P0;
  14.         E  = 0;
  15.         RW = 0;
  16.         return BF;
  17. }

  18. void Command(uchar com)
  19. {
  20.         uchar BF;
  21.         do
  22.         {
  23.                 BF = CheckBusy();
  24.                 BF &= 0x80;
  25.         }while(BF == 1);
  26.         RS = 0;
  27.         RW = 0;
  28.         E  = 1;
  29.         P0 = com;
  30.         E  = 0;
  31.         delay(1);
  32. }

  33. void Data(uchar dat)
  34. {
  35.         uchar BF;
  36.         do
  37.         {
  38.                 BF = CheckBusy();
  39.                 BF &= 0x80;
  40.         }while(BF == 1);
  41.         RS = 1;
  42.         RW = 0;
  43.         E  = 1;
  44.         P0 = dat;
  45.         E  =0;
  46.         RS =0;
  47. }

  48. void LCD1602_Init(void)
  49. {
  50.         Command(0x3c);
  51.         Command(0x0c);
  52.         Command(0x01);
  53.         Command(0x04);
  54.         Command(0x80);
  55. }

  56. void Write_LCD1602(uchar Address, uchar *WData)
  57. {
  58.         uchar temp = 0;
  59.         while(WData[temp] != '\0')
  60.         {
  61.                 Command(Address);
  62.                 Data(WData[temp]);
  63.                 temp++;
  64.                 Address += 0x01;
  65.         }
  66. }
复制代码
Proteus仿真绝无问题

出0入0汤圆

发表于 2012-7-22 10:29:10 | 显示全部楼层
仿真有时和实际有区别

出0入0汤圆

发表于 2013-4-30 14:45:34 | 显示全部楼层
t3486784401 发表于 2012-5-14 16:39
我之前也是这个问题,后来发现不是仿真的问题,是仿真软件把信号传输延时都干出来了。

检测忙标志位是,大 ...

任何软件都可能存在BUG。但是大多数人总是把自己的BUG也算在软件的身上。
Proteus中的1602检忙的问题,很多年前我也过不去这道坎。无奈,只好采用延时的办法。
一年之后,事实证明,BUG在自己一方。

出0入0汤圆

发表于 2013-4-30 14:47:45 | 显示全部楼层
忙信号检测要有检测超时
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-21 16:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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