本帖最后由 慢慢思考 于 2025-12-1 11:36 編輯
什么叫做手工玩轉?就是不要單片機,只要幾個撥碼開關一個按鈕開關加幾個電阻,就能在12864屏上顯示出你想要顯示的東西。 看下圖,這個就是已完成的實物,就這點東西哦:
實物圖.jpg (210.62 KB, 下載次數: 0)
下載附件
2025-11-30 15:55 上傳
12864屏能干什么?它能顯示字符包括漢字,也能顯示圖形。 顯示屏嘛,目前為止,都是點陣式的,靠亮滅一個個的點來顯示字符或圖形。12864,就是說它的點陣,是橫向128個點縱向64個點,形成一個矩陣。 這個12864屏屬于單色屏,于是每個點的狀態參數只有兩個即亮與不亮,可以標記為1與0,所以,對每個點的控制只需一位就夠了,也就是說你輸入一比特即8位數據就可以控制8個點。 在它本身的功能設計上,它有兩種工作模式,一種是字符顯示模式,一個是圖形顯示模式。 所謂字符顯示模式,就是你想讓它顯示一個什么字符,你直接輸入這個字符的編碼就行了,比如你要輸入“2”這個數字,你查表,它的編碼是十六進制數0x32,你把這個0x32按12864屏的操作規定輸入進去就可以顯示出來了。這個屏在字符顯示模式下,它是被設計成8*4個小方塊的,也就是說它被分成了4行,每行分成8個小方塊,則每個小方塊就是橫向16個點縱向16個點。每個小方塊又被分成了左右兩塊,每塊都可以顯示一個8*16點陣的字符,每個8*16點陣字符由一個8位二進制數作為這個字符的編碼來控制它的顯示,比如上面說的你要顯示數字2,則0x32(二進制數00110010)就是它的完整的編碼值。 所謂圖形顯示模式,就是說若是你要想在屏在顯示什么東西,包括字符,你得先把這個你要顯示的東西變成由許多點組成的圖形,然后你得一個點一個點地去操作點亮它們以在屏幕上顯示出來。 這兩個顯示模式是可以切換的,向顯示屏輸入相關指令就行了。很重要的一點,這個屏上電復位后,它的顯示模式是字符模式,也就是說,它上電后你就可以直接使用字符模式了。 好了,我們先來實驗它的字符顯示功能,我們來讓它顯示數字“2”。 想要使用一種電路模塊,當然先得看看它的使用說明書,說明書先看什么?接口啊,看了它,才好先把電路圖搭建起來。
接口表.png (4.66 MB, 下載次數: 0)
下載附件
2025-11-30 15:59 上傳
這個電路這樣搭建:為了增強對它的功能和實現方法的體驗感,也為了讓實驗更加簡單,我們不走尋常路,不用單片機來控制它,而是用撥碼開關和按鈕開關來控制。具體電路圖如下:
12864屏手工電路圖.png (1.41 MB, 下載次數: 0)
下載附件
2025-11-30 16:00 上傳
此電路中,開關KRW的作用是用于告訴該屏我現在是要向你寫入數據還是讀取你內部的數據,本電路中開關的ON位置為寫入;KRS的作用是確定放在數據端口的數據是命令類數據還是即將要顯示的內容,開關ON的位置為命令;KEN的作用是給屏發信號要求它讀取數據口的數據,撥動開關放置好數據之后,按一下就行了;KDB0~KDB7的作用是改變數據端口電位的高低來實現向這個端口上放置我們想要輸入的數據的目的,開關ON位置為置0。 搭建好的電路實物圖已經在前面給出了。 電路搭建完成并通電后,首先要調節可調電阻R1以調節其對比度到能顯示內容,這個要是沒調節到位,那是顯示不出內容的,那接下來的實驗必然失敗。調節的方法是邊調節邊肉眼觀察屏幕,如果全屏是均勻一色,那不對,應該是可以看到一個個的小方格,它應該是128*64個小方格,如下圖就算調節到位了:
調整屏.jpg (292.8 KB, 下載次數: 0)
下載附件
2025-11-30 16:02 上傳
好了,下面我們就開始做實驗了,先試試輸入它的命令,試哪一條呢?這時自然是要查它的指令表了,先看字符模式下的命令表,也就是手冊上說的基本指令表:
基本指令集.png (6.69 MB, 下載次數: 0)
下載附件
2025-12-1 11:36 上傳
我們先前不是說要顯示數字2么?它的二進制編碼我們已經知道是00110010,接下來,我們把撥碼開關撥到這個狀態,然后KRS開關為OFF,KRW開關為ON,完畢,按一下KEN,沒顯示?怎么回事?是我們這個手工實驗的思路不成立么?不慌,再查上述指令表,發現里面有一個“顯示狀態開/關”指令,是不是因為這個指令沒有設置而導致其不顯示呢?管它呢,試試不就知道了。 這個指令的二進制,已經在上述表中寫得很清楚了,全開就是00001111,我們把這個撥碼開關撥到這個狀態,然后我們看到這個屬于命令類、輸入式,那自然得將KRS改撥到ON位置,再按KEN,好,我們就看到了一個閃爍的白色的方塊,看來我們的思路是沒有問題的。 關于這個按按鈕輸入數據的方法,前面一篇已經講過實驗了,在這里能用到這個屏的身上,說明這個屏內部應該也有個中央控制單元。 接下來,我們再讓數據端口處于00110010的狀態,KRS為OFF,再按KEN,2就出來了不是?再按,再按,我們發現,屏幕上會從左到右顯示出一個一個的“2”,然后,一行滿了之后,它跑到第三行去了,然后是才是第二行,然后是第四行。這個,誰的問題?屏幕本身的問題,它的設計就是這樣的,有點傷腦筋,我們在以后的應用中得注意處理這個問題,不然的話,你知道的。 還有,我們在按按鈕時,我們有可能發現按一下按鈕會出現兩個及以上的“2”,這個問題,就是按鈕的問題了,它可能接觸不良,正宗的說法叫“抖動”,這個抖動,在我們以后的按鍵應用程序中,是有相應的處理方法的。在這里,我們可以思考一下,在我們進行命令輸入時,這個抖動會不會有什么影響?為什么?然后做實驗來驗證你的判斷。 想試試它能不能輸入漢字么?簡單,查中文字型表(顯示屏手冊后附),隨便查一個字,比如“北”字,編碼十六進制數是B1B1,換算成二進制數就是10110001 10110001,然后我們把撥碼開關調成10110001狀態,KRS為數據狀態,KRW為輸入狀態,完成后按兩下KEN,看,“北”字出來了。 好了,手工控制12864屏算是成功了,接下來,看你的興趣,試一試對“顯示狀態開/關”指令改變DB0~DB2的電位狀態再進行輸入,看看會出現什么現象。其它的指令,你也可以按這個方法一一試試,這個方法,比用單片機去操作,簡單直觀快捷得多。 這里補充一點知識,手冊上沒說清楚的:這個12864屏的設計,怎么說呢,你把它當作一個256*32的點陣屏,然后它被豎向劃了一刀,分成了左右兩個屏,然后設計者把右邊的那半個屏放在了左半邊屏的下方,組成了一個128*64的屏,所以,我們看到連續輸入時,它是從第一行跑到了第三行,再去的第二行。這個理解很重要,它不僅關系到在字符模式下的應用,也關系到其在圖形模式下的應用,它直接關系到要顯示的內容的定位問題,也就是在屏幕上的顯示位置問題。 在應用這個屏時,我們想在自己設想的位置上顯示一個內容,就得先知道這個屏在設計上的定位方式,在字符顯示模式下,我們前面已經說了,它是被分成了橫向8縱向4共32個方塊的,也就是說,給它32個地址就可以全部定位了,于是,在設計上,它采用了一維定位方式,也就是把這32個方塊按排成一行的方式來編排地址,這個字符地址指令的標志位是DB7位,也即這DB7位為1時,即表示這條指令后面DB6~DB0([DB6:DB0])為字符的坐標值(地址值),顯示屏上左上角的第一個方塊為首個顯示方塊,其地址值為0,加上DB7標志位的1值,就是十六進制的80,所以,我們在表上看到在字符模式下,定位首個方塊時,要求輸入的是0x80,而最后一個字符的坐標則是0x9F。 這個屏的設計是很奇特的,前面我們已經說過了,它的每個方塊在字符模式下是可以顯示兩個8*16點陣字符的,也就是說每一行它可以顯示16個8*16點陣字符,但它的定位方式在橫向上又只有8個值,那每一塊的第二個字符的定位是怎么確定的呢?首先定位這一個方塊,然后前后兩個字符的編碼連續輸入,真是有點傷腦筋。 這個在屏的字符模式下的手工控制看來是成功的,做到這里,是不是有那種本來覺得很高大上很神秘的單片機,原來卻是如此的簡單?接下來,你是不是應該很有把握地連上單片機去操控它了?在這里提醒一下,連上單片機之后你不一定能一次成功,你得先把這個屏的手冊看仔細想明白,這個看手冊的習慣應該養好。如果你手工過了卻過不了程序,那你可得好好查查手冊。 圖形模式就是手冊里說的擴充指令模式。關于圖形模式下的手工控制,我就不講了,有興趣的可以自己試試。這里要提示的是,在圖形模式下,定位不再是一維的,而是二維的,X方向是256個點,每16個點增量一個坐標值,也就是說X向的每一個坐標值,它管著16個點,所以,X向的坐標值是0~15;Y方向是32個點,每1個點增量一個坐標值,也就是說它的32行點的每一行都有一個Y坐標值,范圍是從0~31。為什么會是這個值?前面說過了,你可以把它看成是256*32的屏給分成兩半后再拼起來的,這個屏的設計反正就是這么奇怪。 圖形模式下坐標的輸入方式也很奇特,它是同樣表達方式的指令,即標志位同樣是DB7,后面跟的才是坐標值,區分的方式就是輸入的先后順序,先輸入的數據為X坐標,后輸入的數據為Y坐標,說是必須兩個緊跟著輸入。然后要顯示的內容數據也是兩個8位數據緊跟著輸入,控制該坐標下的16個點的亮滅。 小貼士:撥碼開關的操作,用鑷子比較合適,徒手操作有點麻煩的。 想在字符模式下顯示漢字的話,該屏必須自帶中文字庫,否則,你只能在圖形模式下自己編制漢字顯示數據包。 請諸君批評指正,先謝了。
|