從0開始手擼HPDL -1414驅動


  暑假的時候被人安利了HPDL1414這款數碼管,當時還不清楚這個數碼管是啥,就是看外形比較中意吧。最近因為武漢發生了新型肺炎這破事,於是這個買回來吃灰了半年的數碼管被我翻出來了,准備寫一寫他的驅動。找到淘寶賣家要到了一份datasheet才知道他的名字是HPDL-1414。帶着這個名字去百度搜索一下,也能搜索到一些文章,用HPDL-1414作電腦狀態顯示等。

  這些文章我也點進去看了,其中電腦狀態顯示的那個是開源的,但是我沒有積分,故沒有下載他的代碼,我只看了文章。文章對底層也沒有一個清晰明確的講解,很多地方都是一筆帶過,可能對於萌新電子愛好者,以及其他非電子類的朋友而言比較難於理解。所以本文會結合1414的datasheet來講解如何驅動1414數碼管。

  首先來說說要准備的東西:主控一塊、3.3v電源一個、5v電源一個、1414數碼管一個、杜邦線若干、焊台、焊錫、洞洞板、2.54mm間距的電子積木插座(圓孔排母)若干、2.54mm間距排針若干。

  我使用的主控是STM32F429IGT6,這塊芯片要用3.3V供電,然而1414使用的是5V(Typ)供電,因此要准備兩個電源。但是如果你使用的是51或者Arduino這類本身就是5V供電的芯片,可以共用一個電源。

 

 

 

  洞洞板、插座、排針這些自然是制作一個固定1414的底座,並且能引出1414的引腳,通過杜邦線與主控相連。

  打開1414的datasheet,首先看引腳部分:

 

  1414一共有12個引腳,6、7腳作為供電腳,7個數據腳和一個寫使能腳寫使能腳為3腳,並且低電平有效

  datasheet中告知了如何辨別1腳:

 

  即有字的一面左邊第一個引腳是一腳,按照逆時針旋轉過去依次為12個引腳的排序。

  

 

   接着來看時序圖:

 

  這個時序圖是我們寫程序的說明書,根據時序圖我們可以知道操作引腳的順序,並且引腳保持高/低電平的時間也有標注:

 

  主要是值得我們關注。在操作的時候,先把D0~D6(段選)操作到自己想要的結果,然后操作A0、A1(位選),操作完成后,經過操作WS對1414進行寫操作,WS要維持時間,也就是說,每次寫操作的間隔要在以上(也可以理解為這款數碼管的刷新率吧)。不過從上表可以看到典型值為100ns,這個時間已經非常短了。

 

 

  以上大概是這么個思路,為了更加簡潔明了一些,我畫了一個流程圖來表示:

 

  接着開始寫代碼了,由於我使用的是STM32的芯片,ST提供了一個叫做STM32CUBEMX的工具,我直接使用這個工具對代碼環境進行配置。

  引腳配置:

 

  

 

 

 

 

 

 

   時鍾配置:

 

  

 

 

   工程配置:

 

 

  這個軟件比較方便的就是配置起來很舒服,不用自己再去開時鍾,開外設,並且我配置的GPIO它在生成代碼時會自動幫我我宏定義在main.h中:

 

 

 

 

 

 

   這樣做有什么好處呢?如果我更換了一款芯片,或者我跟換了引腳,我的程序可以不需要任何修改,直接修改軟件中的配置然后生成新的代碼就可以使用了。

  下面是具體代碼

  寫使能與寫失能:非常簡單,拉低WR線就是代表1414可以寫入顯示的數據,拉高WR線就是代表1414顯示當前數據保持不變。


  位選:這個要看datasheet

 

 

 

 

  根據datasheet可知,A0和A1為00、01、10、11的時候,位選為0、1、2、3。因此程序如下:

 

   然后是段選,說到這里,就體現這款米字數碼管和普通的數碼管區別了。1414的段選直接和ASCII對應起來的,可以顯示64種ASCII字符,從0x20顯示到0x5F:

 

  寫程序就是把對應的ASCII碼轉換成7位GPIO的狀態。所以我定義了7個變量用於表示ASCII的每一位,也是GPIO的狀態。

 

  通過一個形參輸入ASCII,然后解析每一位是0還是1,來拉高或拉低對應的數據線:

 

  完成了段選位選之后,就可以寫一個功能函數了:寫操作。這個函數自然包含兩個形參:段選(要寫進去的字或符號)、位選(要顯示在哪里)。

 

  要注意這里我在寫操作的時候延時了1ms,因為HAL庫中支持的最快的延時單位就是ms,雖然也有一些花里胡哨的操作可以弄成us,但是為了保證系統的穩定(其實是想偷懶),這里就用了1ms。根據之前的分析,100ns以上都是可以的。即想要效率更高的話可以選擇延時500ns或者1us之類。

   然后還可以酌情加一些清屏之類的功能函數(就是讓四個管全部顯示空格):

 

  來一個實例展示:

 

  顯示效果:

 

 

 

  其實還是挺簡單的,主要是之前懶,現在是在家里百無聊賴,就隨手寫了寫。

  PS:我在某寶買的4個,60塊錢(含郵費),壞了3個,還差點把我的F4燒壞了,要不是我警覺,怕要大大損失一筆。

 

 

  22:18:09 更新:

  加了一個滾動顯示功能上去,代碼也挺簡單的:

 

 

   視頻地址:https://www.bilibili.com/video/av85324219?from=search&seid=14388677469779731988

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM