原创 【博客大赛】如何通过SPI口驱动数码管?来实现动态显示

2012-10-5 21:09 3551 24 31 分类: MCU/ 嵌入式

如何通过SPI口驱动数码管?

SPI接口在单片机所有的接口中速度是较快的,运用的场合也非常广泛,像LED显示屏的驱动接口就是SPI口,驱动芯片为74HC595。我要介绍的是用595来驱动数码管,通过动态扫描的形式,来实现用单个595来驱动多个数码管。

595是串行输入/输出或者8位并行输出移位寄存器,具有高阻关断状态。三态。与74HC164相比,74HC164串入数据时不能输出,否则为乱码,等串入完毕后才可并出;而595有输出存储器,数据串入和输出可以同时进行,通过控制存入输出存储器的时钟和输出使能端是否有效,来确定是否输出新串入的数据。所以在很多场合,595都取代了164成为LED驱动的主打芯片。

595的真值表如下:

595真值表.jpg

其实,学习一个芯片,最好的方法就是实际的使用他,这样才能在使用中发现问题,逼着自己解决问题,这个解决问题的过程也是学习的过程,而且这种记忆对于个人来说也是非常之深刻的。

我用的驱动电路,用SPI口来驱动,只写不读那种

595接口电路.jpg
我是用一个SPI口,一颗芯片来驱动四个共阴数码管,通过三极管选通的形式来决定某一时候,那个数码管在亮,从而实现设计简化和低成本的目标。
软件大致设计思路:
既然是动态显示,那么必须有一个定时切换的时钟,这里我选定时器0,设定1MS产生一个中断,在中断中切换显示顺序。
要根据图纸对显示码进行核实:
如0x7c;//显示电压U
    0xfd; //显示数字0
    0x61; //显示数字1
     。。。。。。。
   0xf7; //显示数字9
其他的一概同理
通过显示指针切换来实现动态显示。
 

文章评论7条评论)

登录后参与讨论

ydcman_691947663 2013-11-28 20:01

把间隔时间算好是不会的,用定时来点,保证每个灯亮时间间隔相同

用户1527100 2013-11-25 17:07

会出现段码亮度不均的现象

用户377235 2013-3-1 18:39

HAO

用户425322 2012-11-30 15:02

不错,赞一个!

用户431407 2012-11-26 10:10

发的

用户613343 2012-9-24 08:35

谢谢

ydcman_691947663 2012-9-18 08:55

谢谢哦笑脸,请多指教!

用户1637227 2012-9-18 08:43

思想很独特,支持下

用户593939 2012-9-16 23:19

参考学习了
相关推荐阅读
ydcman_691947663 2014-06-07 12:47
从AD9.4的PCB中,输出带有钻孔文件的CAD图形
遇到一位做工艺的工程师,要求我从PCB导出的CAD图形中,包含有钻孔文件。这个要求我第一次听说,有点汗!姑且不讨论这要求是否合理,但我还得试一试! 就在网络上搜了一通,发现不论是PRO99SE...
ydcman_691947663 2014-01-17 08:24
公司职场环境评估表格---2013版
主要功能: 从一个工作者的角度,对自己熟悉的企业评估  适用范围: 本标准适用于入职时间<2年,非管理技术岗位。 计分说明: 实施总分百分制,单项也为百分,以权重来区分,...
ydcman_691947663 2013-11-16 21:35
闲来扯淡,这些事你们做过吗?
呵呵,纯手工绘制的原理图,整理以前的资料和图纸时发现的 一.窗口比较器和555构成的触发单稳 二.这是什么?好像是检测电路,忘记了 三.这个是纯硬件设计的查...
ydcman_691947663 2013-07-26 22:08
神马是工作的原动力--我认为是兴趣
   今天领导不在,作为硬件工程师,我做的项目所缺的元件来了,我就迫不及待的“埋头苦干”;一心想着快点焊好,可以做调试,及时发现其中BUG。   干的累了看看同事们都在”逍遥“。呵呵,难免会有...
ydcman_691947663 2013-07-25 06:34
天太热了,这酷暑什么时候结束?
连续一个星期都是晴天,中午空旷地最少40度,神马天气预报还说36度,超搞笑啊!...
ydcman_691947663 2013-07-21 20:54
推荐好书<越控越有趣-TI C2000 LaunchPad炼成记>
这两年TI的活动很多,DSP开发板也很容易通过建议的途径得到,不像以前大都在代理商手里。去年我通过积极参与,也得到一个LAUNCH2000的开发板,早就想下手,但一直苦于没有简单实用的入门的资料,...
我要评论
7
24
关闭 站长推荐上一条 /2 下一条