找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

液晶12864串口的畫任意像素點(diǎn)的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:434807 發(fā)表于 2018-12-8 09:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
          近期想做個(gè)俄羅斯方塊玩一玩,現(xiàn)有的材料有12864,普中科技的開發(fā)板(沒有鎖存器),芯片12C5A60S2,
看了許多前輩寫的貪吃蛇、俄羅斯都是用并口寫的,但是我只有串口的12864,所以想寫一個(gè)串口的玩,也許有人會(huì)說串口發(fā)送數(shù)據(jù)比并口慢,但是我覺著
12C5A60S2芯片還是夠強(qiáng)大,反應(yīng)速度可以接受。
我查了很多資料,說串口的時(shí)候不支持讀數(shù)據(jù),導(dǎo)致寫任意一個(gè)點(diǎn)的程序有點(diǎn)復(fù)雜,網(wǎng)上說建一個(gè)顯存,但不知道是什么具體意思。經(jīng)過幾天的摸索,我發(fā)現(xiàn)每次畫一個(gè)點(diǎn)之后,橫向在這個(gè)點(diǎn)旁,無法畫點(diǎn)。還有就是那種在上邊顯示一個(gè)圓,傾斜直線,等,用串口來寫,各位有什么建議或者是想法嗎?

  提煉一下問題:
1.12864串口如何打點(diǎn),任意打點(diǎn), 連續(xù)打點(diǎn),總之就是給坐標(biāo)按坐標(biāo)打點(diǎn)的想法;
2.12864串口自己建一個(gè)顯存是什么意思,怎么建的;
3.12864串口畫圓,畫傾斜直線這種是怎么辦到的;
歡迎大家前來討論,謝謝!




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

使用道具 舉報(bào)

來自 2#
ID:123289 發(fā)表于 2018-12-8 13:18 | 只看該作者
簡單:
1、顯示屏每次最低的數(shù)據(jù)操作是一個(gè)字節(jié),即8個(gè)水平的點(diǎn),不可以一個(gè)點(diǎn)一個(gè)點(diǎn)的操作。
2、你要顯示的是一個(gè)點(diǎn),只有一個(gè)辦法:事先必須知道其余7個(gè)點(diǎn)的當(dāng)前數(shù)據(jù),將它們與你要顯示的1個(gè)點(diǎn)拼在一起,形成一個(gè)字節(jié),再送到屏上去。這樣才能保證:你只改變了一個(gè)點(diǎn)的數(shù)據(jù),而其余7個(gè)點(diǎn)不變。
3、“事先知道其余7個(gè)點(diǎn)的當(dāng)前數(shù)據(jù)”方式,有兩種:一種是讀屏,取得8個(gè)點(diǎn)的數(shù)據(jù);另一種是,建立一個(gè)顯示緩沖區(qū),區(qū)的大小是1024個(gè)字節(jié),每個(gè)字節(jié)對(duì)應(yīng)8個(gè)顯示點(diǎn),這樣可以對(duì)應(yīng)1024*8=128*64。顯示屏只從緩沖區(qū)取數(shù)據(jù)顯示。由于緩沖區(qū)中的數(shù)據(jù)是你寫入的,你當(dāng)然就知道屏上任意一個(gè)點(diǎn)的數(shù)據(jù)了。

評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
謝小康4 + 12 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

來自 3#
ID:123289 發(fā)表于 2018-12-9 10:46 | 只看該作者
所謂緩沖區(qū),在這里就是1024個(gè)字節(jié)的RAM就可以了。
例如:你可以用1000H-13FFH這個(gè)區(qū)域做緩沖區(qū)。
將1000H是的數(shù)據(jù)固定送至屏的最上最左8個(gè)點(diǎn);
將1001H是的數(shù)據(jù)固定送至屏的最上次左8個(gè)點(diǎn);
……
將13FFH是的數(shù)據(jù)固定送至屏的最下最右8個(gè)點(diǎn)。
這需要資料嗎?要改顯示的內(nèi)容,就修改1000H-13FFH中對(duì)應(yīng)的數(shù)據(jù),再記住將修改過的數(shù)據(jù)對(duì)應(yīng)送到屏上去刷新一下屏,不就可以了,有何難的呢?

評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
謝小康4 + 12 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:434807 發(fā)表于 2018-12-9 08:56 | 只看該作者
yzwzfyz 發(fā)表于 2018-12-8 13:18
簡單:
1、顯示屏每次最低的數(shù)據(jù)操作是一個(gè)字節(jié),即8個(gè)水平的點(diǎn),不可以一個(gè)點(diǎn)一個(gè)點(diǎn)的操作。
2、你要顯 ...

請(qǐng)教一下如何在12864上修改一個(gè)1024字節(jié)的緩沖區(qū)?推薦點(diǎn)資料也行,網(wǎng)上相關(guān)的介紹比較少,謝謝
回復(fù)

使用道具 舉報(bào)

5#
ID:434807 發(fā)表于 2018-12-9 21:29 | 只看該作者
yzwzfyz 發(fā)表于 2018-12-9 10:46
所謂緩沖區(qū),在這里就是1024個(gè)字節(jié)的RAM就可以了。
例如:你可以用1000H-13FFH這個(gè)區(qū)域做緩沖區(qū)。
將1000 ...

請(qǐng)?jiān)徫业挠掴g,還想再次請(qǐng)教一下如何在屏幕的一塊區(qū)域?qū)?yīng)一塊內(nèi)存的區(qū)域?我今天看了很多12864的資料也沒有找到相關(guān)的,可以請(qǐng)您說詳細(xì)點(diǎn)嗎?
我自己的想法是定義一個(gè)8*64字節(jié)的數(shù)組,對(duì)應(yīng)一行8*16個(gè)像素點(diǎn)以及縱向64個(gè)像素點(diǎn)的數(shù)據(jù),每次在數(shù)組內(nèi)畫圖,在把數(shù)組更新進(jìn)去。但是這是理論層面上的,并不知道實(shí)際如何操做,去寫這個(gè)顯示緩沖區(qū)。
關(guān)于 如何將把數(shù)據(jù)給到相應(yīng)的地址然后存起來?

回復(fù)

使用道具 舉報(bào)

6#
ID:434807 發(fā)表于 2018-12-12 09:22 | 只看該作者
https://wenku.baidu.com/view/2dbf0852a45177232f60a2ca.html分享網(wǎng)址嘍,如何畫點(diǎn)已解決,其實(shí)不存在的沒有這么難,主要是看自己有沒有耐性去找資料。
回復(fù)

使用道具 舉報(bào)

7#
ID:434807 發(fā)表于 2018-12-12 09:24 | 只看該作者
void drawpoint(uchar x,uchar y)  
{
  uchar row,column,offset;
        row=x;
        column=((y-1)/8)+1;       
        if(y%8!=0)
        offset=y%8-1;
        else
        offset=7;
        table[4*(x-1)-1+column]|=0x80>>(offset);
}
至于table嘛,就是一個(gè)所謂的顯示緩沖區(qū)。
回復(fù)

使用道具 舉報(bào)

8#
ID:314566 發(fā)表于 2019-3-27 17:13 | 只看該作者
最近也在研究LCD12864,用的是ST7920驅(qū)動(dòng),串行方式。不知lz有沒有實(shí)用的資料或者例程推薦一下。目前手上只有官方的datasheet
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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