Alcor6L/PicoLisp/lcd
此 PicoLisp 模組包含用於驅動 Mizar32 顯示模組的雙行字元 LCD 面板的函式。
從物理上講,顯示器每行有 16 個字元,但內部具有 40 個字元乘以兩行的記憶體。它一次顯示這 40 列中的 16 列,透過多種方式來確定這 40 列中的哪些列出現在 16 列的顯示器中。如果你只想顯示 16x2 個字元,reset、goto 和 print 函式就足夠了。
初始化顯示器,將所有內容重置為初始狀態:清除螢幕,無游標,顯示 40 列記憶體的第 1-16 列,準備在 (1,1) 列印,從左到右寫入文字,並在每個字元後將游標向右移動一個位置。你不需要在程式開始時呼叫 reset,但這樣做可以確保即使顯示器處於由先前執行留下的奇怪狀態時,你的程式也能正常工作。
(mizar32-lcd-reset)
這可以用來設定 LCD 顯示器的一些更奇怪的操作模式。兩個引數都是可選的,如果你省略它們,它們預設為 false,這將設定明智的模式。
(mizar32-lcd-setup display-shift right-to-left)
- display-shift - 如果為 T,那麼在你隨後列印的每個字元中,游標將在字元記憶體中像往常一樣移動一個位置,但顯示器的內容也會在水平方向上向相反方向移動一個位置,從而使游標保持在物理顯示器的同一列中。這可以用來實現“滾動文字”效果。但是請注意,當游標從第 40 列移到第 1 列(反之亦然)時,它會翻轉到另一行。
- right-to-left - 如果為 T,文字將從右到左列印:游標將在字元記憶體中向左移動一個位置,並且如果也啟用了顯示器移動,顯示器的內容將向右移動,從而使游標保持在螢幕上的同一列中。
清除顯示器,將游標移動到左上角(位置 1,1)並重置顯示器移動,以顯示第 1 到 16 列。
(mizar32-lcd-clear)
將游標移動到左上角(位置 1,1)並重置顯示器移動。
(mizar32-lcd-home)
將游標移動到指定的行和列。
(mizar32-lcd-goto row column)
- row - 一個數字(1 或 2),表示你要移動到的行。
- column - 一個數字(1 到 40),表示該行中字元記憶體中的位置。
(setq pos-lst mizar32-lcd-getpos))
返回一個列表,該列表指示當前的游標位置。
返回值
(car pos-lst)- 一個數字(1 或 2),表示當前的行。(cadr pos-lst)- 一個數字(1 到 40),表示字元記憶體中的當前列。
從當前游標位置開始,寫入 LCD 字元記憶體。游標將為每個列印的字元前進一個位置。當它超過第 40 列時,它會移動到另一行的第 1 列(反之亦然,當從右到左列印時)。
(mizar32-lcd-prinl [any1] [any2] ... [anyn])
- any -
any的每個專案都可以是 PicoLisp 值 - 整數、符號或列表。字串是顯示 ASCII 文字訊息的正常方式。整數引數的值應為 0 到 255,以顯示單個字元,它可以是使用者定義的字元 0-7 中的一個,常規 ASCII 字元 32-125 以及 126 和 127 用於表示向右和向左的箭頭,以及程式碼為 160-255 的中文、希臘語和數學符號。
設定在游標位置顯示的游標型別或將游標向左或向右移動。
(mizar32-lcd-cursor 'what)
- what - 一個字串,用於說明要執行的操作
"none"、"line"或"block"分別會在游標位置顯示不可見的游標、一條持續的下劃線或一個閃爍的實心塊。"left"或"right"將游標在字元記憶體和顯示器上向左或向右移動一個位置,而不更改底層字元。在這種情況下,顯示器永遠不會移動,並且像往常一樣,游標會在某一行的第 40 列和另一行的第 1 列之間迴圈。
開啟或關閉物理顯示器,或將顯示的字元向左或向右移動。
(mizar32-lcd-display 'what)
- what - 一個字串,用於說明要執行的操作
"off"和"on"分別關閉和開啟物理顯示器。當顯示器關閉時,它看起來是空白的,但字元記憶體的內容、游標的位置和型別、使用者定義的字元和設定模式都會被記住,你可以在顯示器關閉時寫入字元記憶體並執行所有其他操作。這使你能夠更新顯示器,而不會讓觀看者看到太多閃爍。"left"或"right"將顯示的字元向左或向右移動一個位置。例如,如果它正在顯示通常的第 1-16 列,而你輸入 mizar32.lcd.display("left"),它將顯示第 2-17 列:可見的字元向左移動,但字元記憶體上的視窗向右移動。
程式設計八個使用者可定義字元中的一個,其程式碼為 0 到 7。定義後,可以使用 (mizar32-lcd-print n) 顯示字元,其中 n 是從 0 到 7 的數字。如果正在顯示該字元,則其可見形式將在顯示器上立即更改。在通電時,這 8 個字元被定義為隨機垃圾。
(mizar32-lcd-definechar code glyph)
- code - 一個數字(0 到 7),表示你要重新定義的字元的程式碼。
- glyph - 最多包含八個數字的列表,表示字元的八行的位模式,從上到下按順序排列。這些數字中的每一個的值都為 0 到 31,以定義該行中應為黑色的 5 個位中的哪些。畫素的值從左到右依次為 16、8、4、2 和 1。例如,列表 (1 3 7 15 31 15 7 3 1 0) 將在最上面的 7 行中定義一個左指的實心三角形。額外的行將被忽略,缺少的行將被空白。
告訴當前按下的是五個使用者按鈕中的哪一個。
(setq buttons (mizar32-lcd-buttons))
返回值
- buttons - 一個字串,包含最多五個字元 L、R、U、D 和 S,表示當前是否按下了左、右、上、下和選擇按鈕。如果沒有任何按鈕被按下,則返回一個空字串。硬體允許可靠地檢測選擇按鈕以及最多兩個其他四個按鈕:如果按下左、右、上和下中的三個按鈕,則返回所有四個按鈕。