文档章节

自制数码管显示模块(串口通信)

e哥
 e哥
发布于 2017/03/04 21:42
字数 1123
阅读 131
收藏 0

        对于喜欢电子DIY的人来说,焊板子是常有的事,其中数码管是被经常用到的元器件之一。焊接数码管是一件非常烦人的活,管脚多容易焊错,块头又大占地方。我就在想能不能做个数码管显示模块,用它的时候直接插上去就可以了,只留下几个外部通信接口就可以了。

        既然有了想法那就开始干呗,感觉也挺有趣的。首先我得想好用什么通信方式,SPI、IIC、单总线、串口还是自己定义一种新得通信协议呢?怎么选呢?选的通信方式最好大家熟悉的,操作简便的,最后我选择了串口。串口通信有几个好处:1、通信方式大部分人都了解,2、国际规范,3、大部分单片机有串口,4、可异步中断。

        选择了通信方式后,接下来就要定好控制指令了。串口通信一个重要前提是要在同一波特率上,所以模块必须可以用指令修改波特率,指令设为:B。

        这次DIY数码管使用的是四位共阳的,数码管中间有两个点,当数码管作为时间显示时这两个点是要显示的,所以得用指令控制这两个点,指令设为:T。

        要四位数码管显示指定内容,则需要定义操控指令,该指令设为:W。

        当外部想获取模块信息,也得使用特定指令,设为:R。

        模块使用的控制单片机是stc12c2052ad,该单片机IO口有强推功能,当某个IO设置为强推时,它可以输出更大的电流,这样就可以使数码管高亮。什么时候需要高亮,什么时候不需要,我们最好也用个指令控制,设为:H。

        下面就是各个指令对应的发送形式,只要外面设备向模块发送这些指令,模块就会显示相应的内容或修改相应参数。

**串口波特率设置(设置后会保存在EEPROM中):发送字符B0   //B表示串口波特率设置指令,后面的0是波特率类型,0--9600、1--19200、2--57600、3--115200
**时间标志位设置:T0    //0表示不显示、1表示显示、2表示闪烁
**高亮显示设置:H0    //0表示普通亮度、1表示高亮
**写四位显示数:W0123    //如果某位不显示要用空格符表示,如不显示第二位:W1 23
**读数据指令:R    //可以获取格式(B:0 T:0 H:0 W: 123)数据

        指令已经定好,那就把电路图画好,开始焊板子了。

        电路图挺简单的,一个四位数码管,一个stc单片机,一个外部接口。外部接口有五根线,从上到下依次为电源正极V、串口Rx、串口Tx、使能EN、电源地G。stc单片机烧录程序是通过串口,所以这个接口也可以向模块stc控制单片机烧录程序。使能EN端口是高电平有效,默认为高电平,如果不想操作模块要把EN置为低电平。有了这个使能端口,我们就可以操作多个数码管显示模块了,比如你想显示8位数字,就可以串联两个数码管显示模块。

        电路图好了,接下来就是写驱动程序了,程序代码也比较简单。具体思路是:模块串口读取外面操作指令,根据指令做相应操作。因为串口可以异步中断传输,所以模块也不需要实时读取串口,只当有串口中断才读取串口数据,其他时间模块只负责控制数码管显示。

详细程序:https://git.oschina.net/ginnywzj/led-segment-displays-module

        有了这个模块以后需要数码管显示的时候就不需要再焊额外的电路了,只要把它和串口接上,打开外部芯片串口就OK了。

        制作好的实物图:

背面用了透明亚克力板盖住了,防止使用时飞线容易断开、接触点短路问题。

程序文件:下载

© 著作权归作者所有

共有 人打赏支持
e哥
粉丝 7
博文 4
码字总数 7777
作品 0
深圳
私信 提问
[Beautifulzzzz的博客目录] 快速索引点这儿O(∩_∩)O~~,红色标记的是不错的(⊙o⊙)哦~

3D相关开发 [direct-X] 1、direct-X最小框架 [OpenGL] 1、环境搭建及最小系统 [OpenGL] 2、企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [51单片机] 1602液晶显示控制代码 [51单片机] 1...

史迪奇2号
2017/08/01
0
0
PIC16F883单片机EUSART串口通信

在两个单片机之间建立串口通信。 说明:我们使用数码管显示接收到的数据,数据是对方的按键编号。 硬件连接图: 有一点至关重要,就是两个单片机要共地。发送和接收引脚在两个单片机上交叉相...

0101
2012/07/07
0
1
【目录】电子发烧友, 持续更新

目录内容: 1)Geek 2)C51单片机学习平台搭建 3)入门 4)提高 5)红外发射 6)树莓派 7)物联网 8)模电基础 【Geek】 C51单片机 SIM900A 手机给门禁解锁 智能家居 【C程序代码已开源,更新...

990487026
2015/09/26
0
0
小插曲:我和Nios II的故事

想必学习Altera家FPGA的小码农们都会有一个共同的困扰吧,那就是Nios II该不该学的问题。这个问题说白了,就是学Nios II到底有没有用。观点1、无用论,常常会听FPGA群里的某位前辈说道,目前...

qq_39210023
2017/07/16
0
0
普中PZ6806开发板 STM32学习笔记1 环境配置

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/83956071 开发板介绍 普中PZ6806L (STM32-F1)开发板,使用STM32F103ZET6...

谢厂节
11/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用 React 和 Vue 创建相同的应用,他们有什么差异?

在工作中应用 Vue 之后,我对它有了相当深刻的理解。 不过,俗话说「外国的月亮比较圆」,我好奇「外国的」 React 是怎么样的。 我阅读了 React 文档并观看了一些教程视频,虽然它们很棒,但...

阿K1225
10分钟前
0
0
如何使用Kubernetes的configmap通过环境变量注入到pod里

在Kubernetes官网里,有这样一篇文章,提到了Kubernetes里的一个最佳实践就是把应用代码同配置信息分开,一种方式就是使用Kubernetes 1.2里引入的configmap概念。 https://kubernetes.io/bl...

JerryWang_SAP
26分钟前
0
0
2天闭门培训|以太坊智能合约从入门到实战(北京)

2天培训 16个课时 探寻技术原理,精通以太坊智能合约开发 以太坊智能合约是现在应用的最广泛的区块链应用开发方式,HiBlock区块链社区针对以太坊智能合约的学习特别推出2天闭门研修班,通过2...

HiBlock
28分钟前
0
0
限定某个目录禁止解析php,限制user_agent,php相关配置

11月20日任务 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php相关配置 1.限定某个目录禁止解析php 核心配置文件内容 <Directory /data/wwwroot/www.123.com/upload> p...

hhpuppy
39分钟前
2
0
Spring的好文章

孤傲苍狼 https://www.cnblogs.com/xdp-gacl/p/4249939.html 跟我学spring http://jinnianshilongnian.iteye.com/blog/1413846 SpringIoc 和Spring Aop 代理模式: 静态代理 动态代理 cglib代......

wangwei2134
50分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部