|
这个帖子意在帮助有兴趣的初学者理解单片机驱动最基本的LED数码管电子钟的硬件原理,以及如何用c编程实现。图和代码是实打实的东西。这些内容对于仔细学过单片机的和会搞的人就不必浪费时间了。为了保持连续性,请勿跟帖。
实物图:重点是显示效果如下:
硬件主要部分电路:
从以下几个部分解析:
1,8段led数码管的原理
2,单片机如何动态驱动多个数码管
3,单片机怎样构成电子钟
4,怎样用c语言编程
5,程序代码详解
1:8段led数码管的原理:再复习一下
LED::发光二极管大家都用过吧?直流电源,串上限流电阻,再串上LED就成了一个小电灯,
8段数码管就是把8个LED按数字“8”的笔画安排,使各个LED按要求发光就形成数字或其他符号了。见下图:
这个8字数码管由7个LED构成笔画,另一个LED为小圆点。这8个笔段通常以a b c d e f g h 表示,这个位置是固定的。
用电路图表示在右边。注意,数码管都是由笔段电极和公共电极构成的,而按制造时的内部接法不同分为共阳极和共阴极两种,看图就明白。老式单片机,吸收电流能力较强而吐出电流较弱,用共阳极接法多些。 新式单片机两种都可以用。
对于共阳极接法,单片机的口线通过限流电阻和LED的笔段电极--阴极连接,正好一个8位口对应一个数码管的各段,公共阳极因电流较大,超出单片机的驱动能力所以另外用一个晶体管控制,这个晶体管的基极则另外用一个口线控制:显然只有这点为0才能使得数码管发光。设a b c d e f g 均为低,h为高,则显示不带点的8字。
共阴极数码管则相反,只有笔端电极-阳极为高,公共电极:阴极为低时才能显示。显然这个制作用的是共阴极数码管。下面,列出共阴极管显示各个数字时笔段电位高低的关系,也就是让单片机的一个8位口设为P0口,如原理图,和笔段对应时的驱动二进制数据对应的16进数和显示的字形:举例说显示2,要让P0口输出十六进数0X5B
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
h g f e d c b a
0 0 1 1 1 1 1 1 ==0X3F 显示“0“
0 0 0 0 0 1 1 0 ==0X06 1
0 1 0 1 1 0 1 1 ==0X5B 2
0 1 0 0 1 1 1 1 ==0X4F 3
0 1 1 0 0 1 1 0 ==0X66 4
0 1 1 0 1 1 0 1 ==0X6D 5
0 1 1 1 1 1 0 1 ==0X7D 6
0 0 0 0 0 1 1 1 ==0X07 7
0 1 1 1 1 1 1 1 ==0X7F 8
0 1 1 0 1 1 1 1 ==0X6F 9
0 1 0 0 0 0 0 0 ==0X40 —
此外还可以显示A b c d E F G H L P等,就不列举了。
另一点,上面小点h始终不显示 ,怎样显示它呢?以后用到再说,一般用它较少。好了休息一下。 |
评分
-
6
查看全部评分
-
|