那曲檬骨新材料有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>如何為LCD1602顯示器創建自定義字符

如何為LCD1602顯示器創建自定義字符

2022-10-21 | zip | 0.29 MB | 次下載 | 2積分

資料介紹

描述

在本教程中,您將學習如何為 LCD 1602 顯示器創建自定義字符,以及如何將這些字符轉換為完整的動畫。

自定義字符

1602 LCD 顯示器(16 個字符 x 2 行)使用 HD44780 驅動芯片芯片內置一個 5 x 8 像素的 ASCII 字符集。它還允許您向該字符集添加多達 8 個自定義字符。

自定義字符定義為 8 字節數組。只有每個字節的低 5 位用于組成 5 x 8 自定義字符。下面是 Heart 字符的定義。

const byte heart[8] =
{
    B01010,
    B11111,
    B11111,
    B11111,
    B01110,
    B00100,
    B00000,
    B00000
};

要將此自定義字符存儲在 LCD 顯示屏中,您需要傳遞一個介于 0 和 7 之間的值,該值標識您希望設置的自定義字符槽以及定義字符的字節數組。

#define HEART 0
lcd.createChar(HEART, heart);

要顯示自定義字符,請使用 write 函數并將自定義字符標識符傳遞給它。

lcd.write(HEART);

動畫角色

自定義字符可以在使用前隨時初始化或更改。限制是只能同時顯示八個自定義字符。

那就是你不能做這樣的事情:

lcd.createChar(0, heart);
lcd.setCursor(0, 0);
lcd.write(0);
lcd.createChar(0, club);
lcd.setCursor(1, 0);
lcd.write(0);

上面的示例顯示了試圖在不同位置同時顯示在屏幕上的心形符號和俱樂部符號,但兩者都使用相同的自定義字符“槽”。這行不通。

但是,您可以覆蓋一個字符,前提是被覆蓋的字符未在屏幕上的其他位置使用。

lcd.createChar(0, heart);
lcd.setCursor(0, 0);
lcd.write(0);
delay(1000);
lcd.createChar(0, club);
lcd.setCursor(0, 0);
lcd.write(0);

The上面的示例顯示了 1 秒鐘的心形字符,然后將其替換為俱樂部字符。

在老虎機中,每個“卷軸”包含 10 個符號。

#define REEL_SYMBOLS 10
#define TOTAL_REEL_SYMBOL_ROWS (REEL_SYMBOLS  * 8)
const byte reel[TOTAL_REEL_SYMBOL_ROWS] =
{
//Heart
  B00000,
  B01010,
  B11111,
  B11111,
  B11111,
  B01110,
  B00100,
  B00000,

  //Diamond
  B00000,
  B00100,
  B01110,
  B11111,
  B11111,
  B01110,
  B00100,
  B00000,

    :

  //Face
  B00000,
  B11011,
  B11011,
  B00000,
  B10001,
  B01110,
  B00000,
  B00000,
};

每個輪子都有自己的 8 字節內存緩沖區,卷軸數據將被復制到其中。

byte wheel[8];

通過在卷軸數組中保留索引,將 8 個字節復制到輪數組,然后設置為自定義字符并顯示。索引遞增,并在短暫延遲后重復該過程。

pYYBAGNPRLeAFkFEAAGtJfybpA0310.png
如何為動畫的每一幀創建自定義角色。
?

這是從卷軸數據中填充車輪字符的代碼。row變量是一個全局變量,指向要復制的下一行顯示新形成的字符后,行變量遞增。一旦到達列表的末尾,它又會重新開始。

#define SLOT 0
#define CURSOR_X 3
#define CURSOR_Y 0

int row = 0;

//Copy eight bytes into a character RAM from the reel array
// - global variable "row" points to top row to display
// - if "row + i" exceeds the array size, wrap round to the start
while (true)
{
  for (int i = 0; i < 8; i++)
  {
    wheel[i] = reel[(row + i) % TOTAL_REEL_SYMBOL_ROWS];
  }

  //This example uses custom character slot 0. If there is more than one wheel to
  //spin, each wheel will need its own unique custom character slot and cursor
  //position.
  lcd.createChar(SLOT, wheel);
  lcd.setCursor(CURSOR_X, CURSOR_Y);
  lcd.write(SLOT);

  //Increase row for next animation frame. Wrap round to start if it gets past
  //the end of the reel rows.
  row = (row + 1) % TOTAL_REEL_SYMBOL_ROWS;

  delay(100);
}

面包板賭場

實際的電子設備相當簡單。需要的零件有:

  • Arduino UNO, Nano, Pro Mini or Mega
  • 1602 LCD screen
  • 220 ohm resistor for the LCD backlight
  • 10K trim pot for the LCD contrast adjustment
  • 4 tactile push buttons
  • 1 piezo electric passive buzzer
poYBAGNPRLqAUY8BAAKjc9nf-Ak784.jpg
接線圖
?

如果您想知道為什么選擇 Arduino 引腳連接,那是為了簡化 PCB 布局。

連接 Arduino 后,將提供的草圖加載到 Arduino IDE 中并對 Arduino 板進行編程

玩游戲

有四個按鈕。從左邊開始,它們是 HIT、STAND、LESS 和 MORE。

HIT - 只要您可以選擇投注,此按鈕將帶您進入頂層菜單,讓您選擇不同的游戲。在二十一點中,它也用于表示玩家想要另一張牌。

STAND - 一般來說,這會開始一個新的游戲。在老虎機中,它旋轉輪子,在二十一點中,它開始新手,也用于表示玩家已完成抽牌并希望莊家玩,而在擲骰子中,它用于擲骰子。

LESS - 減少您想要下注的金額。在頂級菜單上,它選擇上一個菜單項。

更多 - 增加您想要下注的金額。在頂級菜單上,它選擇下一個菜單項。

演示視頻

?

賭場控制臺

將您的構建從面包板變成完整的控制臺將需要印刷電路板和一些額外的組件。如果您希望將 PCB 商業化制造或像我一樣自己制造,請附上 Eagle 文件。我使用了碳粉方法。

使用我在車間周圍的零件,將 Arduino UNO 替換為 ATMega328 DIL 芯片,并通過使用 DIL 28 針 IC 插座并將其引腳壓平安裝在電路板背面。除 47uF/16V 鉭 3528 電容器和 1206 10uF 陶瓷電容器外,所有電容器均為 0805 SMD 變體。晶體是一個 16Mhz 通孔變體,也安裝在背面。輕觸開關為 12x12mm,帶有圓形按鈕帽。

pYYBAGNPRLyAQsCHAAE9SXuF1H4671.jpg
PCB 頂視圖和底視圖
?

外殼是 3D 打印的,層高為 0.2 毫米,沒有支撐。使用 2.5 毫米鉆頭鉆出 PCB 安裝孔,并使用 3 毫米絲錐創建螺紋。使用 M3 6mm 螺釘將板固定到位。我還將 PCB 上的四個安裝孔鉆出 4 毫米,以便在固定電路板時進行任何必要的調整,以防止按鈕頂部粘在外殼上。

poYBAGNPRMGAI78eAAnh2SXcntU662.jpg
帶 PCB 的 3D 打印外殼
?

如果 ATMega328 芯片沒有 Arduino 引導加載程序,則需要先添加一個。我使用我的AVR ISP 程序員添加引導加載程序,然后使用 FTDI 程序員上傳草圖。

poYBAGNPRMSAPbIzAACCZVSV9ts679.png
FTDI程序員
?

結論

老虎機動畫效果非常好。希望您可以在未來的項目之一中使用此處描述的動畫技術。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1A7159和A7139射頻芯片的資料免費下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2PIC12F629/675 數據手冊免費下載
  4. 2.38 MB   |  36次下載  |  5 積分
  5. 3PIC16F716 數據手冊免費下載
  6. 2.35 MB   |  18次下載  |  5 積分
  7. 4dsPIC33EDV64MC205電機控制開發板用戶指南
  8. 5.78MB   |  8次下載  |  免費
  9. 5STC15系列常用寄存器匯總免費下載
  10. 1.60 MB   |  7次下載  |  5 積分
  11. 6模擬電路仿真實現
  12. 2.94MB   |  4次下載  |  免費
  13. 7PCB圖繪制實例操作
  14. 2.92MB   |  2次下載  |  免費
  15. 8零死角玩轉STM32F103—指南者
  16. 26.78 MB   |  1次下載  |  1 積分

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  452次下載  |  免費
  3. 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  141次下載  |  1 積分
  5. 3基于STM32單片機智能手環心率計步器體溫顯示設計
  6. 0.10 MB   |  137次下載  |  免費
  7. 4A7159和A7139射頻芯片的資料免費下載
  8. 0.20 MB   |  55次下載  |  5 積分
  9. 5PIC12F629/675 數據手冊免費下載
  10. 2.38 MB   |  36次下載  |  5 積分
  11. 6如何正確測試電源的紋波
  12. 0.36 MB   |  19次下載  |  免費
  13. 7PIC16F716 數據手冊免費下載
  14. 2.35 MB   |  18次下載  |  5 積分
  15. 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
  16. 1.97 MB   |  8次下載  |  10 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
卢克索百家乐的玩法技巧和规则 | 百家乐官网平台导航| 998棋牌游戏| 百家乐打揽法| 百家乐策略| 百家乐官网博彩通博彩网皇冠网澳门赌场真人赌博| bet365娱乐场150| 英皇百家乐的玩法技巧和规则 | 亚洲百家乐的玩法技巧和规则| 24 山杨公斗首择日吉凶| 欢乐博百家乐官网娱乐城| 南昌市| 大发888 备用6222.com| 香港百家乐娱乐场开户注册| 百家乐攻略投注法| 百家乐官网博娱乐平台| 百家乐官网开户代理| 六合彩聊天室| 大发888真钱下载| 海王星百家乐技巧| 百家乐娱乐城彩金| 荷规则百家乐官网的玩法技巧和规则 | 百家乐官网筹码桌| 时尚| 大发扑克网| 大发888 casino下载| 百家乐高手心得| 做生意门店风水知识| 诸子百家乐官网的玩法技巧和规则| 百家乐官网娱乐城备用网址| 百家乐官网试玩平台| 乐百家国际娱乐城| 大发888开户注册平台| 威尼斯人娱乐城购物| 狮威百家乐娱乐平台| 星河百家乐现金网| 线上百家乐官网平玩法| 高尔夫百家乐官网的玩法技巧和规则| 百家乐官网赌场游戏平台| 百家乐官网开户最快的平台是哪家| 玩百家乐官网最好方法|