找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17407|回复: 48
打印 上一主题 下一主题
收起左侧

[原创]发布一个ST7920的LCD12864 Proteus仿真模型,支持串口和4bit模式通讯

  [复制链接]
跳转到指定楼层
#
ID:67925 发表于 2021-9-29 23:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
网络上已经有了一个12864A(ST7920)仿真模型,但其功能非常有限,不支持4位并行接口,不支持串行接口,不支持ASCII字母和数字显示,也不支持绘图显示,所以我就自己动手,实现了此模型,并分享源代码,方便有需要的朋友修改支持其他规格的器件,仓库托管于 <https://github.com/cdhigh/lcd12864_st7920_proteus>










全部资料51hei下载地址:
LCD12864B_DLL.rar (147.38 KB, 下载次数: 310)
更新V1.0.3,编译为静态链接,不需要VC运行库,并优化汉字显示效率。
LCD12864B_1.0.3.7z (212.51 KB, 下载次数: 384)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏28 分享淘帖 顶4 踩
回复

使用道具 举报

48#
ID:259035 发表于 2024-9-5 16:58 | 只看该作者
谢谢分享,有没有串行通迅的程序
回复

使用道具 举报

47#
ID:349276 发表于 2024-8-15 14:31 | 只看该作者
CDHIGH您好!非常感谢您git上完善的12864B,非常好用。我在使用时碰到一个问题:keil c51,proteus,就是向它发送一个char字符时,它不会显示,继续发送第二个字符时,第一个字符和第二个字符才一起显示出来。有什么办法可以解决不呢?谢谢。 LCD12864B.rar (76.21 KB, 下载次数: 1)
回复

使用道具 举报

46#
ID:1053880 发表于 2024-4-2 13:17 | 只看该作者
cdhigh 发表于 2021-10-1 00:59
继续升级1.0.2,从芯片手册PDF里面截图进行0x20以下非标准字符进行取模。
现在0x20以下的ASCII也能正常显 ...

太棒了
回复

使用道具 举报

45#
ID:190577 发表于 2024-1-16 21:48 | 只看该作者
by64214 发表于 2021-10-1 09:51
谢谢分享  现在可以任意位置,但是上部有残影

External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.
我的咋提示这个错误
回复

使用道具 举报

44#
ID:190577 发表于 2024-1-16 21:48 | 只看该作者
ab560 发表于 2021-10-1 18:00
谢谢楼主分享,为什么我仿真始终要报错?External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.
...

楼主,后来解决了吗
回复

使用道具 举报

43#
ID:303735 发表于 2023-12-26 16:28 | 只看该作者
heicad 发表于 2022-4-23 21:49
我刚开始也是这个错误,后来把楼主的LCD12864B.dll文件放到Proteus8.8的MODELS目录里面去就ok了,如图

高手谢谢分享
回复

使用道具 举报

42#
ID:59185 发表于 2023-12-7 17:52 | 只看该作者
by64214 发表于 2022-8-21 10:06
谢谢楼主分享  现在可以仿真很多以前做不到的程序

你用的真好,我还不知道咋用,怎么使用它的元件?
回复

使用道具 举报

41#
ID:59185 发表于 2023-12-7 17:45 | 只看该作者
大佬真厉害,太棒了 下来用用试试
回复

使用道具 举报

40#
ID:1078904 发表于 2023-5-21 16:19 | 只看该作者
Proteus8.15,AT89C52使用串行模式好像汉字会乱码and乱飘
回复

使用道具 举报

39#
ID:405840 发表于 2023-5-7 12:40 | 只看该作者
十分感谢楼主的无私分享 这个很有用 下载来试试 感谢!
回复

使用道具 举报

38#
ID:1072453 发表于 2023-4-18 13:32 | 只看该作者
cdhigh 发表于 2022-1-10 21:43
Proteus的仿真模型有很多种,你希望是哪方面的呢?
具体一点,希望仿真哪个器件?

您好,可以给我发一下lcd12864的dll文件吗 我下载不来
谢谢
回复

使用道具 举报

37#
ID:1051956 发表于 2022-11-14 18:44 | 只看该作者
proteus7用不了吗
回复

使用道具 举报

36#
ID:32627 发表于 2022-9-12 06:31 | 只看该作者
这个是好东西,下载测试一下
回复

使用道具 举报

35#
ID:137736 发表于 2022-9-4 15:59 | 只看该作者
水平真高
回复

使用道具 举报

34#
ID:44037 发表于 2022-8-21 10:06 | 只看该作者
谢谢楼主分享  现在可以仿真很多以前做不到的程序

1.png (17.66 KB, 下载次数: 138)

1.png
回复

使用道具 举报

33#
ID:67925 发表于 2022-7-20 18:35 来自触屏版 | 只看该作者
Michael_xie 发表于 2022-7-20 14:13

首先到对应目录看这个DLL是否存在?
如果DLL存在,可以安装VC运行环境
回复

使用道具 举报

32#
ID:543845 发表于 2022-7-20 14:13 | 只看该作者

回复

使用道具 举报

31#
ID:67925 发表于 2022-7-3 07:18 来自触屏版 | 只看该作者
新昌小徐 发表于 2022-7-2 15:23
楼主使用了好压软件制作压缩包,RAR软件是打不开的,好压这软件就是改了下较验码,使RAR等其它压缩软件因为 ...

没有使用好压,我的电脑中很难找到国内软件(汉化不算)。
国内软件大多数没有底线,能不用就不用,除非找不到替代品。
如果你解压不了,可能需要升级WinRAR,或7Zip
回复

使用道具 举报

30#
ID:496636 发表于 2022-7-2 15:23 | 只看该作者
楼主使用了好压软件制作压缩包,RAR软件是打不开的,好压这软件就是改了下较验码,使RAR等其它压缩软件因为数据较验出错而打不开。
回复

使用道具 举报

29#
ID:32627 发表于 2022-7-2 07:16 | 只看该作者
这个是好东西,下载测试一下
回复

使用道具 举报

28#
ID:1010880 发表于 2022-4-25 23:41 | 只看该作者
您好,如图,我设计了一个超声波测距仿真没问题,但一添加LCD12864B(没做任何操作,只是添加了放那里)结果LCD自动通电了,原先的超声波仿真就出问题,请问是什么情况
回复

使用道具 举报

27#
ID:262 发表于 2022-4-23 21:49 | 只看该作者
wo0105250030 发表于 2022-4-23 21:22
同样的错误,不知道怎么处理,有知道的大神麻烦帮下忙

我刚开始也是这个错误,后来把楼主的LCD12864B.dll文件放到Proteus8.8的MODELS目录里面去就ok了,如图

51hei.gif (66.42 KB, 下载次数: 173)

51hei.gif

51hei.png (3.63 KB, 下载次数: 260)

51hei.png
回复

使用道具 举报

26#
ID:789905 发表于 2022-4-23 21:22 | 只看该作者
ab560 发表于 2021-10-1 18:00
谢谢楼主分享,为什么我仿真始终要报错?External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.
...

同样的错误,不知道怎么处理,有知道的大神麻烦帮下忙
回复

使用道具 举报

25#
ID:67925 发表于 2022-2-18 16:46 来自触屏版 | 只看该作者
带字库的,对于部分proteus版本,需要将lcd左上角移到坐标零点,一般为屏幕中心
回复

使用道具 举报

24#
ID:576900 发表于 2022-2-17 20:24 | 只看该作者
你这LCD是不是不带字库的呢
回复

使用道具 举报

23#
ID:576900 发表于 2022-2-17 20:18 | 只看该作者
我的上电后不显示是啥问题呢
回复

使用道具 举报

22#
ID:67925 发表于 2022-1-10 21:43 来自触屏版 | 只看该作者
by64214 发表于 2022-1-10 09:39
楼主能出个制作教程吗,看了一些资料 还是不太明白

Proteus的仿真模型有很多种,你希望是哪方面的呢?
具体一点,希望仿真哪个器件?
回复

使用道具 举报

21#
ID:44037 发表于 2022-1-10 09:39 | 只看该作者
楼主能出个制作教程吗,看了一些资料 还是不太明白
回复

使用道具 举报

20#
ID:102963 发表于 2022-1-8 08:57 | 只看该作者
楼主,能制作个STC8H8K64U单片机的仿真模型吗?
回复

使用道具 举报

19#
ID:102963 发表于 2022-1-8 08:55 | 只看该作者
楼主能出个制作教程吗,估计很多人都很想学习这个。
回复

使用道具 举报

18#
ID:994589 发表于 2021-12-20 11:40 来自触屏版 | 只看该作者
感谢楼主分享文件,太有用了这个。
回复

使用道具 举报

17#
ID:67925 发表于 2021-11-6 18:19 来自触屏版 | 只看该作者
lihainingt3 发表于 2021-11-2 09:32
很好奇楼主是如何知道用户可以自己制作模型dll文件?  以及如何编译制作模型dll文件? 好像普通用户通常不必 ...

开始搜索下载别人制作的st7920仿真,发现功能不全,但是至少知道可以自己制作非官方模型,然后再搜索如何制作,一步一步的仿照别人的例子和一些代码片段就可以开始了。
一旦起步,剩下的就容易了,不停的码代码即可,有疑问就翻sdk文档,还有疑问要不再搜索要不写代码尝试。
一旦完整写完一个模型,其他的就很容易了
回复

使用道具 举报

16#
ID:475655 发表于 2021-11-2 09:32 | 只看该作者
很好奇楼主是如何知道用户可以自己制作模型dll文件?  以及如何编译制作模型dll文件? 好像普通用户通常不必涉及这个问题, 是根据proteus的用户帮助手册? 还是楼主提供的ProteusVSMSDK.pdf文件? 希望楼主能够提示一二。
最后感谢楼主的分享!!!,膜拜ing!!!
回复

使用道具 举报

15#
ID:475655 发表于 2021-11-2 09:09 | 只看该作者
本帖最后由 lihainingt3 于 2021-11-2 09:13 编辑

很好奇楼主是如何知道用户可以自己制作模型的dll文件? 以及如何制作模型的dll文件? 是根据用户手册? 还是你提供的ProteusVSMSDK.pdf文件? 好像普通proteus使用者都不会涉及到这个问题,希望能够指点一二,
最后感谢楼主的分享, 膜拜ing!!!
回复

使用道具 举报

14#
ID:67925 发表于 2021-10-25 00:27 来自触屏版 | 只看该作者
13487086265 发表于 2021-10-23 07:32
VSM model LCD12864B.DLL not found for 'L1'.GLE=0x00000002

要不安装vc2012运行库,要不在github上下载最新版本,最新版本不需要运行库
回复

使用道具 举报

13#
ID:701852 发表于 2021-10-23 07:32 | 只看该作者
VSM model LCD12864B.DLL not found for 'L1'.GLE=0x00000002
回复

使用道具 举报

12#
ID:67925 发表于 2021-10-3 07:35 | 只看该作者
by64214 发表于 2021-10-1 09:51
谢谢分享  现在可以任意位置,但是上部有残影

你用的代码应该是这个帖子里面的吧。
http://www.51hei.com/bbs/dpj-98264-1.html
如果是的话,这个帖子的代码里面有BUG。
在函数 LCD_PrintfNumPicture()有这个语句:
  1. LCD_WriteCommand(0x36);   //设置扩展命令集,开显示
复制代码
此语句打开了绘图显示,表明接下来的设置地址和写数据都会作用到 GDRAM,但是在完成后代码没有切换回基本指令,在主循环的下一次循环调用 LCD_PrintfASCII(),里面也没有切换回基本指令的语句,而直接使用
  1. LCD_WriteCommand(0x80|addr);  //要写入DDRAM的地址
复制代码
代码的本意是设置DDRAM,但是现在实际设置的是GDRAM,导致你所说的残影,所以在实际屏幕上应该也是有残影的。
而且进入绘图模式的命令也不规范,根据芯片手册,建议需要两条指令,先 0x34 进入扩展指令,然后再 0x36 进入绘图模式。

我的测试代码中有两个函数可以参考:
  1. //开启扩展命令的绘图指令
  2. void LCD_startGraphic(void)
  3. {
  4. #if LCD_INTERFACE == MODE_4BIT
  5. LCD_write_command(0x24); //扩展指令集
  6. LCD_write_command(0x26); //绘图命令开启
  7. #else
  8. LCD_write_command(0x34); //扩展指令集
  9. LCD_write_command(0x36); //绘图命令开启
  10. #endif
  11. }
  12. //结束扩展命令的绘图指令(可选)
  13. void LCD_endGraphic(void)
  14. {
  15. #if LCD_INTERFACE == MODE_4BIT
  16. LCD_write_command(0x26); //绘图命令关闭
  17. LCD_write_command(0x20); //回到基本指令
  18. #else
  19. LCD_write_command(0x36); //绘图命令关闭
  20. LCD_write_command(0x30); //回到基本指令
  21. #endif
  22. }
复制代码
建议在开始绘图前使用 LCD_startGraphic() 进入绘图模式,在绘图完成后使用 LCD_endGraphic() 退出绘图模式,避免错误。


此帖子中LCD_PrintfASCII()函数的存在是因为之前的仿真模型LCD12864A.DLL不支持ASCII,其使用全角数字代替半角数字,属于取巧方法。
实际ST7920屏幕是支持ASCII的,所以在使用我的LCD12864B.DLL后,可以删除此函数,直接LCD_PrintfStr()输出ASCII即可,和实际硬件屏幕一致。
回复

使用道具 举报

11#
ID:67925 发表于 2021-10-2 21:29 | 只看该作者
ab560 发表于 2021-10-2 14:23
安装云更新库后仿真正常了,谢谢!

之前没注意,下次编译一个不需要运行库的版本。
回复

使用道具 举报

10#
ID:7503 发表于 2021-10-2 14:23 | 只看该作者
安装云更新库后仿真正常了,谢谢!
回复

使用道具 举报

9#
ID:67925 发表于 2021-10-1 22:56 | 只看该作者
ab560 发表于 2021-10-1 18:00
谢谢楼主分享,为什么我仿真始终要报错?External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.
...

如果你确认放的目录没错的话,尝试下载并安装 VC2010运行库?
不是 VS2010开发环境,是 大约10M左右的运行库。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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