找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14509|回復(fù): 48
打印 上一主題 下一主題
收起左側(cè)

[原創(chuàng)]發(fā)布一個ST7920的LCD12864 Proteus仿真模型,支持串口和4bit模式通訊

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:67925 發(fā)表于 2021-9-29 23:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
網(wǎng)絡(luò)上已經(jīng)有了一個12864A(ST7920)仿真模型,但其功能非常有限,不支持4位并行接口,不支持串行接口,不支持ASCII字母和數(shù)字顯示,也不支持繪圖顯示,所以我就自己動手,實現(xiàn)了此模型,并分享源代碼,方便有需要的朋友修改支持其他規(guī)格的器件,倉庫托管于 <https://github.com/cdhigh/lcd12864_st7920_proteus>。










全部資料51hei下載地址:
LCD12864B_DLL.rar (147.38 KB, 下載次數(shù): 310)
更新V1.0.3,編譯為靜態(tài)鏈接,不需要VC運行庫,并優(yōu)化漢字顯示效率。
LCD12864B_1.0.3.7z (212.51 KB, 下載次數(shù): 384)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏27 分享淘帖 頂4 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:262 發(fā)表于 2021-9-30 17:52 | 只看該作者
這個是好東西,下載測試一下,看來可以替換掉用了很久LCD12864a.DLL了
回復(fù)

使用道具 舉報

板凳
ID:67925 發(fā)表于 2021-9-30 21:18 | 只看該作者
升級為1.0.1,修正了4bit模式下回讀ST7920數(shù)據(jù)錯誤的問題。
如果不使用4bit讀,則原來的版本沒問題。

LCD12864B_DLL_1.0.1.rar

189.91 KB, 下載次數(shù): 49, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報

地板
ID:67925 發(fā)表于 2021-10-1 00:59 | 只看該作者
繼續(xù)升級1.0.2,從芯片手冊PDF里面截圖進(jìn)行0x20以下非標(biāo)準(zhǔn)字符進(jìn)行取模。
現(xiàn)在0x20以下的ASCII也能正常顯示。

LCD12864B_DLL_1.0.2.rar

189.8 KB, 下載次數(shù): 124, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報

5#
ID:44037 發(fā)表于 2021-10-1 09:51 | 只看該作者
謝謝分享  現(xiàn)在可以任意位置,但是上部有殘影

1.png (56.96 KB, 下載次數(shù): 218)

1.png
回復(fù)

使用道具 舉報

6#
ID:610681 發(fā)表于 2021-10-1 16:00 | 只看該作者
感謝分享,好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

7#
ID:7503 發(fā)表于 2021-10-1 18:00 | 只看該作者
謝謝樓主分享,為什么我仿真始終要報錯?External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.

回復(fù)

使用道具 舉報

8#
ID:67925 發(fā)表于 2021-10-1 21:20 | 只看該作者
本帖最后由 cdhigh 于 2021-10-3 03:17 編輯
by64214 發(fā)表于 2021-10-1 09:51
謝謝分享  現(xiàn)在可以任意位置,但是上部有殘影

在真實硬件上測試有沒有殘影?
有大字體小字體,使用了繪圖功能,清屏不能僅使用 0x01命令,根據(jù)手冊,0x01僅清除DDRAM,還需要全部GDRAM寫0x00。

如果只是仿真有的話,能否將 源碼和工程 發(fā)到附件?
只需要能重現(xiàn)問題的代碼即可,可以將其他你不想分享的代碼刪除。
回復(fù)

使用道具 舉報

9#
ID:67925 發(fā)表于 2021-10-1 21:28 | 只看該作者
by64214 發(fā)表于 2021-10-1 09:51
謝謝分享  現(xiàn)在可以任意位置,但是上部有殘影

AVR的清屏例子,需要發(fā)送 0x01,和全部 GDRAM寫0x00。

//顯示清屏函數(shù)
void LCD_clear(void)
{
    unsigned char x, y;
    LCD_write_command(0x08);  //避免清屏過程中閃爍,先關(guān)顯示
    _delay_us(100);
    LCD_write_command(0x01);  //清DDRAM

    //清GDRAM,12864僅用了一半的GDRAM,清一半即可
    //如果沒有使用到繪圖GDRAM,也可以不清GDRAM,省點時間和代碼空間
    LCD_startGraphic();
    for (y = 0; y < 32; y++)
    {
        LCD_write_command(0x80 + y); //y
        LCD_write_command(0x80 + 0); //x
        for (x = 0; x < 16; x++)
        {
            LCD_write_data(0x00);
            LCD_write_data(0x00);
        }
    }
    LCD_endGraphic();

    LCD_write_command(0x0C);  //顯示開
    _delay_ms(10);
}
回復(fù)

使用道具 舉報

10#
ID:67925 發(fā)表于 2021-10-1 22:56 | 只看該作者
ab560 發(fā)表于 2021-10-1 18:00
謝謝樓主分享,為什么我仿真始終要報錯?External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.
...

如果你確認(rèn)放的目錄沒錯的話,嘗試下載并安裝 VC2010運行庫?
不是 VS2010開發(fā)環(huán)境,是 大約10M左右的運行庫。
回復(fù)

使用道具 舉報

11#
ID:7503 發(fā)表于 2021-10-2 14:23 | 只看該作者
安裝云更新庫后仿真正常了,謝謝!
回復(fù)

使用道具 舉報

12#
ID:67925 發(fā)表于 2021-10-2 21:29 | 只看該作者
ab560 發(fā)表于 2021-10-2 14:23
安裝云更新庫后仿真正常了,謝謝!

之前沒注意,下次編譯一個不需要運行庫的版本。
回復(fù)

使用道具 舉報

13#
ID:67925 發(fā)表于 2021-10-3 07:35 | 只看該作者
by64214 發(fā)表于 2021-10-1 09:51
謝謝分享  現(xiàn)在可以任意位置,但是上部有殘影

你用的代碼應(yīng)該是這個帖子里面的吧。
http://www.torrancerestoration.com/bbs/dpj-98264-1.html
如果是的話,這個帖子的代碼里面有BUG。
在函數(shù) LCD_PrintfNumPicture()有這個語句:
  1. LCD_WriteCommand(0x36);   //設(shè)置擴(kuò)展命令集,開顯示
復(fù)制代碼
此語句打開了繪圖顯示,表明接下來的設(shè)置地址和寫數(shù)據(jù)都會作用到 GDRAM,但是在完成后代碼沒有切換回基本指令,在主循環(huán)的下一次循環(huán)調(diào)用 LCD_PrintfASCII(),里面也沒有切換回基本指令的語句,而直接使用
  1. LCD_WriteCommand(0x80|addr);  //要寫入DDRAM的地址
復(fù)制代碼
代碼的本意是設(shè)置DDRAM,但是現(xiàn)在實際設(shè)置的是GDRAM,導(dǎo)致你所說的殘影,所以在實際屏幕上應(yīng)該也是有殘影的。
而且進(jìn)入繪圖模式的命令也不規(guī)范,根據(jù)芯片手冊,建議需要兩條指令,先 0x34 進(jìn)入擴(kuò)展指令,然后再 0x36 進(jìn)入繪圖模式。

我的測試代碼中有兩個函數(shù)可以參考:
  1. //開啟擴(kuò)展命令的繪圖指令
  2. void LCD_startGraphic(void)
  3. {
  4. #if LCD_INTERFACE == MODE_4BIT
  5. LCD_write_command(0x24); //擴(kuò)展指令集
  6. LCD_write_command(0x26); //繪圖命令開啟
  7. #else
  8. LCD_write_command(0x34); //擴(kuò)展指令集
  9. LCD_write_command(0x36); //繪圖命令開啟
  10. #endif
  11. }
  12. //結(jié)束擴(kuò)展命令的繪圖指令(可選)
  13. void LCD_endGraphic(void)
  14. {
  15. #if LCD_INTERFACE == MODE_4BIT
  16. LCD_write_command(0x26); //繪圖命令關(guān)閉
  17. LCD_write_command(0x20); //回到基本指令
  18. #else
  19. LCD_write_command(0x36); //繪圖命令關(guān)閉
  20. LCD_write_command(0x30); //回到基本指令
  21. #endif
  22. }
復(fù)制代碼
建議在開始繪圖前使用 LCD_startGraphic() 進(jìn)入繪圖模式,在繪圖完成后使用 LCD_endGraphic() 退出繪圖模式,避免錯誤。


此帖子中LCD_PrintfASCII()函數(shù)的存在是因為之前的仿真模型LCD12864A.DLL不支持ASCII,其使用全角數(shù)字代替半角數(shù)字,屬于取巧方法。
實際ST7920屏幕是支持ASCII的,所以在使用我的LCD12864B.DLL后,可以刪除此函數(shù),直接LCD_PrintfStr()輸出ASCII即可,和實際硬件屏幕一致。
回復(fù)

使用道具 舉報

14#
ID:701852 發(fā)表于 2021-10-23 07:32 | 只看該作者
VSM model LCD12864B.DLL not found for 'L1'.GLE=0x00000002
回復(fù)

使用道具 舉報

15#
ID:67925 發(fā)表于 2021-10-25 00:27 來自手機(jī) | 只看該作者
13487086265 發(fā)表于 2021-10-23 07:32
VSM model LCD12864B.DLL not found for 'L1'.GLE=0x00000002

要不安裝vc2012運行庫,要不在github上下載最新版本,最新版本不需要運行庫
回復(fù)

使用道具 舉報

16#
ID:475655 發(fā)表于 2021-11-2 09:09 | 只看該作者
本帖最后由 lihainingt3 于 2021-11-2 09:13 編輯

很好奇樓主是如何知道用戶可以自己制作模型的dll文件? 以及如何制作模型的dll文件? 是根據(jù)用戶手冊? 還是你提供的ProteusVSMSDK.pdf文件? 好像普通proteus使用者都不會涉及到這個問題,希望能夠指點一二,
最后感謝樓主的分享, 膜拜ing。!
回復(fù)

使用道具 舉報

17#
ID:475655 發(fā)表于 2021-11-2 09:32 | 只看該作者
很好奇樓主是如何知道用戶可以自己制作模型dll文件?  以及如何編譯制作模型dll文件? 好像普通用戶通常不必涉及這個問題, 是根據(jù)proteus的用戶幫助手冊? 還是樓主提供的ProteusVSMSDK.pdf文件? 希望樓主能夠提示一二。
最后感謝樓主的分享。!,膜拜ing。!
回復(fù)

使用道具 舉報

18#
ID:67925 發(fā)表于 2021-11-6 18:19 來自手機(jī) | 只看該作者
lihainingt3 發(fā)表于 2021-11-2 09:32
很好奇樓主是如何知道用戶可以自己制作模型dll文件?  以及如何編譯制作模型dll文件? 好像普通用戶通常不必 ...

開始搜索下載別人制作的st7920仿真,發(fā)現(xiàn)功能不全,但是至少知道可以自己制作非官方模型,然后再搜索如何制作,一步一步的仿照別人的例子和一些代碼片段就可以開始了。
一旦起步,剩下的就容易了,不停的碼代碼即可,有疑問就翻sdk文檔,還有疑問要不再搜索要不寫代碼嘗試。
一旦完整寫完一個模型,其他的就很容易了
回復(fù)

使用道具 舉報

19#
ID:994589 發(fā)表于 2021-12-20 11:40 來自手機(jī) | 只看該作者
感謝樓主分享文件,太有用了這個。
回復(fù)

使用道具 舉報

20#
ID:102963 發(fā)表于 2022-1-8 08:55 | 只看該作者
樓主能出個制作教程嗎,估計很多人都很想學(xué)習(xí)這個。
回復(fù)

使用道具 舉報

21#
ID:102963 發(fā)表于 2022-1-8 08:57 | 只看該作者
樓主,能制作個STC8H8K64U單片機(jī)的仿真模型嗎?
回復(fù)

使用道具 舉報

22#
ID:44037 發(fā)表于 2022-1-10 09:39 | 只看該作者
樓主能出個制作教程嗎,看了一些資料 還是不太明白
回復(fù)

使用道具 舉報

23#
ID:67925 發(fā)表于 2022-1-10 21:43 來自手機(jī) | 只看該作者
by64214 發(fā)表于 2022-1-10 09:39
樓主能出個制作教程嗎,看了一些資料 還是不太明白

Proteus的仿真模型有很多種,你希望是哪方面的呢?
具體一點,希望仿真哪個器件?
回復(fù)

使用道具 舉報

24#
ID:576900 發(fā)表于 2022-2-17 20:18 | 只看該作者
我的上電后不顯示是啥問題呢
回復(fù)

使用道具 舉報

25#
ID:576900 發(fā)表于 2022-2-17 20:24 | 只看該作者
你這LCD是不是不帶字庫的呢
回復(fù)

使用道具 舉報

26#
ID:67925 發(fā)表于 2022-2-18 16:46 來自手機(jī) | 只看該作者
帶字庫的,對于部分proteus版本,需要將lcd左上角移到坐標(biāo)零點,一般為屏幕中心
回復(fù)

使用道具 舉報

27#
ID:789905 發(fā)表于 2022-4-23 21:22 | 只看該作者
ab560 發(fā)表于 2021-10-1 18:00
謝謝樓主分享,為什么我仿真始終要報錯?External model DLL "LCD12864B.DLL" not found. GLE=0x0000007E.
...

同樣的錯誤,不知道怎么處理,有知道的大神麻煩幫下忙
回復(fù)

使用道具 舉報

28#
ID:262 發(fā)表于 2022-4-23 21:49 | 只看該作者
wo0105250030 發(fā)表于 2022-4-23 21:22
同樣的錯誤,不知道怎么處理,有知道的大神麻煩幫下忙

我剛開始也是這個錯誤,后來把樓主的LCD12864B.dll文件放到Proteus8.8的MODELS目錄里面去就ok了,如圖

51hei.gif (66.42 KB, 下載次數(shù): 173)

51hei.gif

51hei.png (3.63 KB, 下載次數(shù): 260)

51hei.png
回復(fù)

使用道具 舉報

29#
ID:1010880 發(fā)表于 2022-4-25 23:41 | 只看該作者
您好,如圖,我設(shè)計了一個超聲波測距仿真沒問題,但一添加LCD12864B(沒做任何操作,只是添加了放那里)結(jié)果LCD自動通電了,原先的超聲波仿真就出問題,請問是什么情況
回復(fù)

使用道具 舉報

30#
ID:32627 發(fā)表于 2022-7-2 07:16 | 只看該作者
這個是好東西,下載測試一下
回復(fù)

使用道具 舉報

31#
ID:496636 發(fā)表于 2022-7-2 15:23 | 只看該作者
樓主使用了好壓軟件制作壓縮包,RAR軟件是打不開的,好壓這軟件就是改了下較驗碼,使RAR等其它壓縮軟件因為數(shù)據(jù)較驗出錯而打不開。
回復(fù)

使用道具 舉報

32#
ID:67925 發(fā)表于 2022-7-3 07:18 來自手機(jī) | 只看該作者
新昌小徐 發(fā)表于 2022-7-2 15:23
樓主使用了好壓軟件制作壓縮包,RAR軟件是打不開的,好壓這軟件就是改了下較驗碼,使RAR等其它壓縮軟件因為 ...

沒有使用好壓,我的電腦中很難找到國內(nèi)軟件(漢化不算)。
國內(nèi)軟件大多數(shù)沒有底線,能不用就不用,除非找不到替代品。
如果你解壓不了,可能需要升級WinRAR,或7Zip
回復(fù)

使用道具 舉報

33#
ID:543845 發(fā)表于 2022-7-20 14:13 | 只看該作者

回復(fù)

使用道具 舉報

34#
ID:67925 發(fā)表于 2022-7-20 18:35 來自手機(jī) | 只看該作者
Michael_xie 發(fā)表于 2022-7-20 14:13

首先到對應(yīng)目錄看這個DLL是否存在?
如果DLL存在,可以安裝VC運行環(huán)境
回復(fù)

使用道具 舉報

35#
ID:44037 發(fā)表于 2022-8-21 10:06 | 只看該作者
謝謝樓主分享  現(xiàn)在可以仿真很多以前做不到的程序

1.png (17.66 KB, 下載次數(shù): 138)

1.png
回復(fù)

使用道具 舉報

36#
ID:137736 發(fā)表于 2022-9-4 15:59 | 只看該作者
水平真高
回復(fù)

使用道具 舉報

37#
ID:32627 發(fā)表于 2022-9-12 06:31 | 只看該作者
這個是好東西,下載測試一下
回復(fù)

使用道具 舉報

38#
ID:1051956 發(fā)表于 2022-11-14 18:44 | 只看該作者
proteus7用不了嗎
回復(fù)

使用道具 舉報

39#
ID:1072453 發(fā)表于 2023-4-18 13:32 | 只看該作者
cdhigh 發(fā)表于 2022-1-10 21:43
Proteus的仿真模型有很多種,你希望是哪方面的呢?
具體一點,希望仿真哪個器件?

您好,可以給我發(fā)一下lcd12864的dll文件嗎 我下載不來
謝謝
回復(fù)

使用道具 舉報

40#
ID:405840 發(fā)表于 2023-5-7 12:40 | 只看該作者
十分感謝樓主的無私分享 這個很有用 下載來試試 感謝!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表