会不会是时钟的问题?把proteus和keil中的时钟设置一致。如果还不行,在程序里添加一些调试信息,如初始化LCD时串口输出“LCD初始化”,开始写数据时串口输出“正在写入数据”等等。用串口实时发送,就知道怎么回事了。proteus中有串口器件,然后结合串口虚拟软件和串口调试工具,就可以实时观察调试信息。串口是一种很好的调试方式。
Proteus6.94、95与keilC51联调设置方法
1、将KeilC51(u2、u3均可)、Proteus6(94、95均可)都安装好;
2、下载两个软件,一个是Proteu的Vdmagdi.exe,另一个是授权后的Prospice.dll(两个文件链接地址看下面)
3、先运行Vdmagdi.exe安装Keil接口,然后将Prospice.dll覆盖在Proteus的安装文件夹下的Bin中如:D:\Program
Files\Labcenter
Electronics\Proteus
6
Professional\BIN;
4、打开Proteus,在【菜单】【Debug】下拉菜单中选【User
Remote
Debug
Monitor】(在该项前打勾);
5、打开KeilC51,点击【菜单】【工程】【为目标'XX'设置选项】,在【调试】标签下选择右边的【使用U】单选,并在下拉框中选【Proteus
VSM
Simulator】仿真设备;
6、在Proteus侧做好硬件连线,Keil侧写好软件,点击Keil【调试】【运行】,您可以欣赏联调了。
proteus6.9
sp4与keil联调几点发现:
在这里联调的一些基本操作就不再赘述了
1,一定要把keil的工程和Proteus的文件放到同一个目录下(这里所说的Keil的工程指工程的目录,
即Proteus的工程Design文件(后缀名.DSN)要和包含Keil工程所有文件的那个文件夹在同一层目录下)
;
经过操作发现:
Keil的工程目录文件夹一定要命名为keil(可能与路径设置有关,目前还不清
楚),否则proteus报错:Unable
to
open
HEX
file
'Keil\DS1302.hex'.
keil报错:
target
dll
has
been
cancelled
debugger
aborted!),另外
针对其他版本的联调,以上两点原则也要遵守
2,6.9以上版本需要添加与Keil联调补丁Vdmagdi.exe,其作用就是添加在程序目录keil/c51/bin目录
下添加Vdm51.dll,(注意:与其他版本不同,6.9以上版本Proteus
6
Professional\MODELS\目录下没
有
VDM51.dll)并且修改keil目录下tools配置文件,添加两行文本:TDRV8=BIN\VDM51.DLL
("Proteus
VSM
Simulator")
BOOK2=HLP\VDMAGDI.HLP
("Proteus
VSM
AGDI
Driver"),经过实际
操作证明,不一定要安装补丁Vdmagdi.exe,手动操作也可成功实现联调功能,其中第二行非必需
3,至于Proteus
6
Professional\BIN目录下Prospice.dll的作用,有网友说与授权有关,有网友说与授权有关,确有可能。默认安装的版本是早于2006.6.26的版本,好像是2006.6.17,替换时没记清,联调失败。当用
2006.6.26版本代替后,联调才成功,但是用更新的2006.8.18版本替换时,联调又会失败。