嵌人式工业自动化仪表中常常需要显示系统的工作状态或测量结果。显示方法有很多种,如液晶显示屏、LED数码管等。近年来,光柱模拟加数字混合显示的仪表很受欢迎。光柱模拟显示具有直观性,数字显示具有准确性,二者配合生动直观。LED光柱产品有两类:一类是由10个发光二极管为一组(共阴或共阳)显示单元,1个光柱由10组或5组显示单元构成;另一类是由8个矩形发光二极管纵向排列成一组显示单元,每个二极管的引脚独立,由用户根据需要接成共阴或共阳,可任选几组进行显示。本文介绍后一类,利用单片机两根口线外接串行输入并行输出移位寄存器,实现串行动态显示的方法、电路及控制程序。
1 电路设计
图1中8OC51通过P3.3,P3.4与串行移位寄存器74HC595相连。74HC595内部带有锁存器,串行
位结束后,用P3.5控制锁存器的输出,以防止在串行移位的过程中输出状态不断变化,引起不该发亮的数码段也发出暗光或微微闪动。R1为470Ω,R2为50Ω,数码管的16个限流电阻为1500Ω,
图1 串行动态显示电路图
单片机每次发送3个字节数据:Rl,R2,R3。其中R1为光柱显示的段码,R2为数码管显示的段码,R3为位码。位码只能有一位为1,由U3的Q3~Q7送出。因图1中大小数码管的每位都共用了一个三极管9014作位驱动,所以在选通某一位(个、十、百、千)时,若需要小数码管显示,则将大数码管的个位段码全送黑;若需要大数码管显示,则将小数码管的个位段码全送黑,即交替送出显示段码。
2 程序设计
- S595: CLR P3.3
- CLR P3.4
- CLR P3.5
- MOV R0,#08H
- MOV A,R1
- L1: RRC A
- MOV P3.3,C
- NOP
- NOP
- SETB P3.4
- NOP
- NOP
- CLR P3.4
- DJNZ R0,L1
- MOV R0,#08H
- MOV A,R2
- RRC A
- MOV P3.3,C
- NOP
- NOP
- SETB P3.4
- NOP
- NOP
- CLR P3.4
- DJNZ R0,L2
- MOV R0,#08H
- MOV A,R3
- L3: RRC A
- MOV P3.3,C
- NOP
- NOP
- SETB P3.4
- NOP
- NOP
- CLR P3.4
- DJNZ R0,L3
- SETB P3.5
- NOP
- NOP
- CLR P3.5
- RET
3 实际应用
在图1 显示电路的基础上,只要再用单片机的1根口线就可以完成按键的设计。如图1中的P1.2 ,当有键按下时, P l.2 得到高电平, 此时可根据送出的位码判断出是哪个按键被按下。识别按键方法极为简单, 例如判断加键“ △” 是否按下, 程序如下:
- JIA: MOV R1,#0FFH
- MOV R2,#0FFH
- MOV R3,#08H
- LCALL S595
- SETB P1.2
- JNB P1.2,JIAN
- LJMP ... ;去加法处理
- JIAN: ...
此电路已用于嵌人式液位显示控制仪表和温度显示控制仪表中。实践证明, 这种方案可以充分节省单片机的有限资源, 仅用4 根口线就可以实现多种显示和按键的判断, 稍加变化又可以实现双组数字双光柱、 双组数字单光柱、 单组数字双光柱、 单组数字单光柱的各种显示仪表中。