码迷,mamicode.com
首页 > 其他好文 > 详细

从0开始手撸HPDL -1414驱动

时间:2020-01-27 09:18:33      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:效率   讲解   代码   转换   手写   asc   com   sci   选择   

  暑假的时候被人安利了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烧坏了,要不是我警觉,怕要大大损失一笔。

 

 

 

 

 

 

 

 

 

  

从0开始手撸HPDL -1414驱动

标签:效率   讲解   代码   转换   手写   asc   com   sci   选择   

原文地址:https://www.cnblogs.com/Wishengine/p/12235397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!