《基础知识_数码管驱动与程序设计》由会员分享,可在线阅读,更多相关《基础知识_数码管驱动与程序设计(21页珍藏版)》请在金锄头文库上搜索。
1、5.4 数码管驱动与程序设计 TATA温馨提示:温馨提示: 此此PPTPPT对于数码管的介绍非常详细对于数码管的介绍非常详细 ,需要放映幻灯片后才能看出效果。后,需要放映幻灯片后才能看出效果。后 半部分的举例是用汇编语言举例,不必半部分的举例是用汇编语言举例,不必 纠结于具体语法,重点在于根据里面的纠结于具体语法,重点在于根据里面的 图示,明白数码管动态显示的原理。图示,明白数码管动态显示的原理。目 录LED数码管数码管驱动电路 段码表的生成 数码管的动态扫描显示 数字符号与数值的关系 LED数码管的内部结构单个LED数码管 单个数码管就是用8个独立的LED发光二极管按照“日”字形排列起来的。
2、在实际应用中,一般会将8个LED的阳极或者阴极并联在一起组成数码管。由此可见,一个数码管至少有9个引入端,其中ah被定义为段选端,并联在一起的公共端com被定义为位选 端。8个独立的LED发光二极管abcdefghCOM COM abcdefgh共阴:阴极并联 共阳:阳极并联 a b c d e f g h 为了方便地控制数码管的每个笔段,相应地将数码管的每个笔段分别命名为ah。 LED数码管的工作原理 abcdefghGND +5V abcdefgh 共阴极数码管 共阳极数码管 笔段发光:位选端输入低电平0;段选端输入高电平1。a b c d e f g h a b c d e f g h
3、笔段发光:位选端输入低电平1;段选端输入高电平0。COM COM 1000000010000000通过控制笔段发光,数码管可以显示数字09,以及一些字母符号等。单个共阳极数码管LN3161BSabcdefghcom com abcdefghVcc P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0LN3161BS引脚结构图它有10个管脚,2个内部相连的com端1和6,8个位选端。LN3161BS测试电路将段选端ah连接到单片机的P0口,则通过程序即可控制笔段的亮灭。与单片机相连 R8 1k R7 1k R6 1k R5 1k R4 1k R3 1k R2 1k R1
4、 1k一个数码管只能显示1位数字,如果要显示多位数字怎么办?方法一:将多只单个数码管并接在一起。 缺 点:4位并列的数码管就需要4 8=32根段选信号,管脚过多,连线复杂。方法二:动态扫描方式进行数码管显示。 优 点:不增加段选信号线,利用人眼的视觉暂留效应,使数字轮流显示来实现。 1 0 0 1 1 0 0 110011001abcdefghcom com abcdefgh4位动态数码管3 5 10 1 2 4 7 1168912COM1 COM2 COM3 COM43 5 10 1 2 4 7 1168912COM1 COM2 COM3 COM4LN3461AS四位动态共阴数码管内部结构
5、LN3461BS四位动态共阳数码管内部结构 段 选 端 复 用段 选 端 复 用 采用段选端复用的方法,仅需12个管脚。 两者外型尺寸大小、管脚的排列顺序和名称完全一样。4位数码管管脚排列图 目 录LED数码管数码管驱动电路 段码表的生成 数码管的动态扫描显示 数字符号与数值的关系 TinyView数码管电路组成 TinyView 数码管电路 4位共阳数码管 LN3461BS限流电阻PNP型三极管单片机I/O口驱动能力不够 ,增加三极管以提高com 口的电流驱动能力与单片机相连目 录LED数码管数码管驱动电路 段码表的生成 数码管的动态扫描显示 数字符号与数值的关系 笔段与数值的对应关系a b
6、 c d e f g h +5V hgfedcba共阳极数码管 11111110数码管有8个笔段,每个笔段有亮和灭两种状态,则每个数码管有28 = 256种显示组合,去掉“点(h)”,其余7个笔段有27 = 128种显示组合。笔段数值对应关系表笔段hgfedcba数值0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe11111101111110111111011111101111110111111011111101111111假设将ah对应8位二进制数的07位:七段共阳极数码管段码表 数字hgfedcba数值a b c d e f g h 假设将ah对应8位二进制数的07位:01
7、10000000xC01111110010xF92101001000xA43101100000xB04100110010x995100100100x926100000100x827111110000xF88100000000x809100100000x90A100010000x88b100000110x83C110001100xC6d101000010xA1E100001100x86F100011100x8E实验1TinyView段码表生成8个开关控制数码管的8个显示段, JP1与JP36的segAsegH连接将JP36的com连接到 与K9相连的JP1位选控制开关 8个段选控制开关 当位选控
8、制开关K9拨到位置0时,三极管导通,com1被拉到高电平,K1K8对段选端的控制才有效。 假设将K1K8对应8位二进制数的07位,通过实验验证:笔段数值对应关系表和七段共阳极数码管段码表。实验24位数码管显示1234实验分析:只要求在4位数码管上显示1234,但并没有要求在同一时间显示数字。实现方法:每次只让一个数码管显示。将与K9相连的JP1先与JP36中的com1相连, 拨动K1K8在第1个数码管上显示正确的数字;然后将K9拨到控制 com2,依此类推,实现在4个数码管上分别显示1234。实验步骤: 第1个数码管显示1; 第2个数码管显示2; 第3个数码管显示3; 第4个数码管显示4。根据
9、段码表,拨到显示字符“1”的 位置1111 1001与com1相连 根据段码表,拨到显示字符“2”的 位置1010 0100与com2相连 根据段码表,拨到显示字符“3”的 位置1011 0000与com3相连 根据段码表,拨到显示字符“4”的 位置1001 1001与com4相连 好像有点投机取 巧,对实际有什 么作用呢目 录LED数码管数码管驱动电路 段码表的生成 数码管的动态扫描显示 数字符号与数值的关系 数码管的动态扫描显示实验电路 与P1口相连,相当于K1 K8位置分别与P3.0、P3.1、P3.2 、P3.3相连,替代手动拨 插连接它们的引线动态扫描:每次只有一位数码管显示,即在实
10、际操作过程中数字是轮流显示的,但只要轮流操作的速度达到一定的范围,人眼看到的将是整体显示的效果。数码管的动态扫描显示程序实现.AREAHOME(ABS, CODE) .ORG 0x0000Start:MOV P1 , #0xF9 ;等效:将K1K8拨到显示字符“1”的位置 CLR P3.0 ;等效:将com1连接到K9(0电平)ACALL Delay ;延时 SETB P3.0 ;等效:拔掉com1的连接线MOV P1 , #0xA4 ;等效:将K1K8拨到显示字符“2”的位置 CLR P3.1 ;等效:将com2连接到K9(0电平)ACALL Delay ;延时 SETB P3.1 ;等效:
11、拔掉com2的连接线MOV P1 , #0xB0 ;等效:将K1K8拨到显示字符“3”的位置 CLR P3.2 ;等效:将com3连接到K9(0电平)ACALL Delay ;延时 SETB P3.2 ;等效:拔掉com3的连接线MOV P1 , #0x99 ;等效:将K1K8拨到显示字符“4”的位置 CLR P3.3 ;等效:将com4连接到K9(0电平)ACALL Delay ;延时 SETB P3.3 ;等效:拔掉com4的连接线 SJMP Start;返回Start,循环执行程序在第1位数码管显示字符“1”在第2位数码管显示字符“2”在第3位数码管显示字符“3”在第4位数码管显示字符“
12、4”0xF9:1111 1001 字符“1”的数值 将0xF9送往P1口,即数码 管的段选端segAsegHP3.0置0,三极管Q11导通 ,com1被拉高,第1位数码 管将显示字符“1” 延时长短:在保证数码管显 示亮度的前提下尽量短 P3.0置1,三极管Q11关闭,第1 位数码管的所有笔段全部熄灭 第1位数码管显示“1”熄灭第1位数码管第2位数码管显示“2”熄灭第2位数码管第3位数码管显示“3”熄灭第3位数码管第4位数码管显示“4”熄灭第4位数码管流程图 1 0 0 1 1 1 1 1100111110110数码管的动态扫描显示实验现象人眼看到的最终效果:第1位数码管显示“1”熄灭第1位数
13、码管第2位数码管显示“2”熄灭第2位数码管第3位数码管显示“3”熄灭第3位数码管第4位数码管显示“4”熄灭第4位数码管流程图 abcdefghcom1 com2 com3 com4 动态扫描:每次只有一位数码管显示,即在实际操作过程中数字是轮流显示的,但只要轮流操作的速度达到一定的范围,人眼看到的将是整体显示的效果。目 录LED数码管数码管驱动电路 段码表的生成 数码管的动态扫描显示 数字符号与数值的关系 数字符号的意义 1 ?1 个2 ?2 个对小孩而言,只有将数字字符和具 体的事物联系起来,才能真正理解 数字的含义,对机器而言同样如此 。数字符号只有和具体的事物联系起来才有意义,否则将什么也不是。让单片机能够识别数字字符在上一个实验中,显示了“1234”,但单片机并“不知道”显 示的“1234”是什么意思?如何让单片机“知道”这些数字符号呢?在数字字符和数值之间建立对应的关系。比如,数字“1”和数值“0xF9”之间的对应关系,即数 值“0xF9”在数码管上显示的符号就是数字“1”。“段码表”既建立了数字与数值之间的这种联系。如何用程序来实现呢?将这些无序的数据列成表格。如:对Table表格的数据,可以用指令“MOVC A, A+DPTR”查找, 其所查的表地址是由“DPTR”寄存器(16位)和A寄存器(8位)相加而 来,所以可以将DPTR的数值固