单片机制作
0 |0 l l 0 _ --
51单片机和 HD7279A的接口与编程
HD7279A芯片与 MAX7219芯片的功能类似 ,能
驱动 8位共阴式数码管(或 64只独立 LED)的智能显
示驱动芯片,不同的是该芯片同时还可连接多达 64键
的键盘矩阵。单片可完成 LED显示、键盘接口的全部功
能。该芯片具有片选信号 ,可方便地实现多于 8位 LED
显示或多于 64个键的键盘接 口。
HD7279A具有如下特点:
①串行接口,无需外围元件可直接驱动 LED;
②各位独立控制译码/不译码及消隐和闪烁属性;
③(循环)左移 /(循环)右移指令;
④具有段寻址指令,方便控制 LED;
⑤64键键盘控制器,内含去抖动电路。
一
、 HD7279A的结构和功能
1.引脚说明
HD7279A的引脚排列如图 1所示,各引脚功能叙
述如下:
1 28
2 27
3 26
4 25
5 24
6 HD7279A 23
7 22
8 21
9 20
10 19
11 18
12 17
13 16
14 15
图 1 HD7279A引脚排列
①②脚:VDD,正电源输入端;
③⑤脚:NC,无连接,必须悬空;
④脚:VSS,接地端;
海南三亚亚龙湾 92351部队 ◎张松松 左绍义
⑥脚:cs,片选输入端,此引脚为低电平时,可向芯
片发送指令及读取键盘数据;
⑦脚 :CLK,同步时钟输入端 ,向芯片发送数据及读
取键盘数据时,此引脚电平上升沿表示数据有效;
⑧脚:DATA,串行数据输入 /输出端 ,当芯片接收
指令时,此引脚为输入端;当读取键盘数据时,此引脚
在“读”指令最后一个时钟的下降沿变为输出端;
⑨脚:KEY,按键有效输出端,平时为高电平 ,当检
测到有效按键时,此引脚变为低电平 ;
⑩~⑩脚:SG~SA,段g一段a驱动输出;
⑥脚:DP,小数点驱动输出;
⑩ ③脚:DIGO DIG7,数字 0~数字 7驱动输
出 ;
③脚:CLKO,振荡输出端;
⑤脚:RC,RC振荡器连接端;
③脚:RESET,复位端。
2.串行接口通信
HD7279A采用串行方式与微处理器通讯,串行数
据从 DATA引脚送人芯片,并由CLK端同步。当片选信
号变为低电平后,DATA引脚上的数据在 CLK引脚的
上升沿被写入 HD7279A的缓冲寄存器。
HD7279A的控制指令分为两大类——纯指令和带
有数据的指令,按指令结构可分为三种类型:
(1)不带数据的纯指令
指令的宽度为 8个 BIT,即微处理器需发送 8个
CLK脉冲。该类数据串行传送时序如图2所示 ,该类数
据主要有以下几种:
··- 11 ·! 3 11
n
图 2 不带数据的纯指令串行传送时序图
2008年第4期 电子制作 ·31
维普资讯 http://www.cqvip.com
制作天地 f
①复位(清除)指令A4H。当HD7279A收到该指令
后,将所有的显示消除,所有设置的字符消隐、闪烁等
属性也被一起清除。执行该指令后 ,芯片所处的状态与
上电后所处的状态一样。
②测试指令 BFH。该指令使所有的 LED全部点
亮,并处于闪烁状态,主要用于测试。
③左移指令A1H。使所有的显示自右向左移动一
位(包括处于消隐状态的显示位),但对各位所设置的消
隐及闪烁属性不变。移动后,最右边一位为空。
④右移指令 A0H。与左移指令类似,但所做移动为
自左向右移动,移动后,最左边一位为空。
⑤循环左移指令 A3H。与左移指令类似 ,不同之处
在于移动后原左边一位的内容(第8位)显示于最右位
(第 1位)。
⑥循环右移指令A2H。与循环左移指令类似,但移
动方向相反。
(2)带有数据的指令
宽度为 l6个 BIT,即微处理器需发送 l6个 CLK
脉冲。该类数据串行传送时序如图3所示,该类数据主
要有以下几种:
] 厂
一 T4:...
c K』 ⋯⋯⋯ f.1几 几 几⋯⋯.,J_L一
。
- 一 - - - -· ::::)0 · :::Ⅺ ---
、_——————、,_—————一 \I——————.、,————一
8位指令(高位在前) 8位数据(高位在前)
图 3 带有数据的指令串行传送时序图
①下载数据且方式 0译码。该类命令由两个字节
组成,前半部分为指令,其中a2,al,a0为位地址,范围
为 000~111,分别对应显示位 1~8。dO~d3为数据,收
到此指令时,HD7279A按下列规则进行译码,如表 1所
示。
表 1 方式 0译码规则
D7lD6lD5lD4lD31D2lD1 D71D6ID5l D4ID3l D2ID1I Do
0 1 0 l 0 1 0 l a2l a1 1 a01IDPI X l X l X 1 d3l d2l d1
小数点的显示由 DP位控制,DP=1时,小数点显
示,DP:0时,小数点不显示,X位无影响。
②下载数据且方式 1译码。此指令与上一条指令
基本相同,所不同的是译码方式,该指令译码方式如表
2所示。
③下载数据但不译码。在该指令a2,al,ao为位地
32·电子一作 2008年簟4期
表 2 方式 1译码规则
d3一dO(十六进制1 d3 d2 dl dO 7段显示
o0H 0 0 0 0 0
01H 0 0 0 1 1
O2H 0 0 1 0 2
03H 0 0 l 1 3
04H 0 1 0 0 4
05H 0 1 0 1 5
O6H 0 1 1 0 6
07H 0 1 1 l 7
08H 1 0 0 0 8
O9H 1 0 0 1 9
0AH 1 0 1 0
0BH 1 0 1 1 E
OCH 1 1 0 0 H
0DH 1 1 0 1 一 L
0EH 1 1 1 0 P
0FH 1 1 1 1 空(无显示)
D7fD6ID5fD4fD3fD2fD1 D7f D6fD5f D4fD3fD2lD1IDo
0 J 0 J 1 j 0 l a2 J al j a0IJDPj A J B J C I D I E J F G
址 ,范围为 000~111,分别对应显示位 1~8。A~G和
DP为显示数据,分别对应 7段 LED数码管的各段。当
数据位为 1时,该段点亮,否则不亮。
④闪烁控制88H。此命令控制各个数码管的闪烁
属性 ,后 8位分别对应数码管 1-8,0为闪烁,1为不闪
烁。开机后,缺省的状态为各位均不闪烁。
⑤消隐控制98H。此命令控制各个数码管的消隐
属性。后 8位分别对应数码管 1~8,0为消隐,1为显示。
当某一位被赋予了消隐属性后,HD7279A在扫描时将
跳过该位,因此在这种情况下无论对该位写入何值,均
不会被显示,但写入值将被保留,将各位重新设为显示
状态后,最后一次写入的数据将被显示出来。
⑥段点亮指令 E0H。该指令主要用来点亮数码管
中某一指令段,或LED矩阵中某一指令的LED。
⑦段关闭指令 COH。该指令主要用来关闭数码管
中某一指令段,或LED矩阵中某一指令的LED。
(3)读取键盘数据指令 15H
该指令从HD7279A读出当前的按键代码,宽度为
l6个 BIT,前 8个为微处理器发送到 HD7279A的指
令,后 8个 BIT为 HD7279A返回的键盘代码,其范围
为 0~3FH f无键按下时为 rrn)。执行此指令时,
HD7279A的DATA端在第 9个 CLK脉冲的上升沿变
维普资讯 http://www.cqvip.com
为输出状态,并与第 16个脉冲的下降沿恢复为输入状
态,等待接收下一个指令。该类数据串行传送时序如图
4所示 。
j1⋯ ..n n 门 r-1 r_]⋯厂L
⋯ (== )
\-——————— ,.————J \———————v ————
读键盘指令(8位,高位在前)HD7279A输出的键盘代码 (8{,t-,高位在前)
图4 读取键盘数据指令串行传送时序图
=、HD7279A应用外围电路及编程实例
本例程中利用单片机 89C52对 HD7279A进行控
制 ,完成了 7位数码的显示 、6只发光二极管的驱动和
12个按键动作 的编码 ,HD7279A芯片引脚 CS、CLK、
DATE、KEY 分别与单片机引脚 po_o、po_l、po_2、P3—3
相连,通过 DIG0—7引脚和 SA、SB、SC、SD、SE、SF、SG、
SDP引脚直接驱动数码管和 LED发光二极管 ,通过
100kQ 排 电阻 和 200Q 电阻 连 接 按 键 , 图 5是
HD7279A的外 围电路 图 ,下 面给出 了 89C52控制
HD7279A的 C语言程序 ,此程序已经通过实验板调试
成功。
#define uint unsigned int
#define uchar unsigned char
#define CMD
_ RESET【ha4 //7279复位指令
#define CMD
_ TEST 0xbf //7279灯测试指令
单片机制作
。l'll - '_
#define CMD
_ READ 0x1 5 //7279渎键盘指令
#deftne DECODE1 Oxe8 //7279 16进制数译码
#define UNDECODE 0x90
//7279不译码可以用做模式指示灯的控制
bit intl— flag=O; //中断标志位
sbit cs =POLO; //设单片机 PO~o为7279片选信号
sbit elk= P0^ 1:
,/设单片机 P0_I为7279的串行时钟信号
sbit dat=P0^2; ∥设单片机 P0 2为7279的数据信号
sbit key = P3 3:
#7279的按键有效输出端连接到单片机的 INT1中断
//弓I脚,即 P3—3弓I脚
void delay(uint t)
,/延时子函数,延时时间可通过形参 t设置
{
uint i:
fnr(.:O;kt;i++);
}
void s
_ delay(void)
//89 S秒延时子函数(晶体为 11MHz时)
uchar t:
t=O;t:O;t=O;t:0;t=O;t=0;t:O;t:O;t=0;t=O;t=O;t=O;t=O;t:0;t=O;
t:O;t=O;t:O;t=O;t:0;t:O;t=O;
t=O;t:O;t:O;t=O;t=0;t=O;t=0;t:O;l:O;t:O;t=O;t=O;t=O;t:O;t:O;
t:0;t=O;t=O;【=0;【:O;I:0;t:O;
void send
~ byte(uchar out byte)
,/向 7279发送 8位纯指令的子函数
{
^ l LE00
I 厂* l曲 有 圈 L f囝 J J q 却 。1 G D1 G D。 v犯 U / ,rI,.
!
3 l
。 。’
∞
6
。 。
丁 I B D2 00
l 2 27 lH I'- / rI,.
4 c ∞U LED0
上 3 , ●、,t
5 D4U U-∞
曙 B
/ I
c 7 £ 舾kJ ∞
T^ 8 I
H 9
,
一
。 口
要
10
。
器
/
; 嚣
/ /
I{
12
13
图5 HD7279A的外围电路图
—上 上 ~
T T
L...
2008年第 4期 电子制作 ·33
鞫 霉
维普资讯 http://www.cqvip.com
uchar i;
cs=O;
delay(Ox04);
for(i=O;i<8;i++)
f
if(out byte&Ox80)
fdat=l;}
else
fdat--O;}
s_ delay0;
clk = 1:
s
_ delay0;
clk = 0:
s
_ delay0;
out_ byte<<=1;
}
dat= 0:
delay(Ox04);
CS= 1:
}
void write7279 uehar out
_ cmd,
uchar out byte)
,/向 7279发送 16位带数据
f
,/指令的子函数,out_emd
uchar i;
,/为指令,out_byte为数据
CS=0 :
delay(Ox04);
for(i--O;i<8;i++)
f
if(out_emd&Ox801
fdat=l;}
else
fdat--O;}
s
_ delay0;
clk = 1:
s
_ delay0;
clk = 0:
s
_ delay0;
ouLemd<<=1;
}
s
_ delay0;
for(i=O;i<8;i++)
34·毫子●I作 2∞8年第4期
ff(out_byte&Ox80)
fdat=l;}
else
fdat=0;}
s
_ dehy0;
clk = 1:
s
_ dehy0;
clk = 0:
s
_ delay0;
out_byte<<=1;
}
dat= 0:
dehy(0x04);
CS= 1:
delay(Ox04);
}
uchar read7279 uehar out
_ cmd)
,/读取 7279按键代码的子函数
fuchar i,in byte--O;
cs=0;
dehy(0x04);
for(i=O;i<8;i++)
f
if(out_emd&Ox801
fdat=l;}
else
fdat=0;}
s
_ delay0;
clk = 1:
s
— delay0;
clk = 0:
out
_
emd<<=1;
}
s
_ delay0;
for(i=O;i<8;i++)
f
elk=l;
s
_ dehy0;
if(dat)
fin_byt~in_bytelOxO1;}
elk--O;
s
_ delayO;
in
_ byte<<=1;}
dat=0;
s
_ delay0;
CS=1:
delay(Ox04);
return(in_byte);
,/返回键盘代码
}
void service
_ intl 0 interrupt 2
using 2
//7279按键有效中断服务子函数
f
intl』 ag=1;
,/当 7279按键有效时设 标志位
intl
_
tlag
}
main0
f
PX1 = 1:
,/设定外部中断 1为高优先级
IT1 = 1:
EA = 1:
EX1 = 1:
CS = 1:
dehy(0xl00);
send
— byte (CMD_RESET);
//7279复位指令发送
while(1)
f
delay(1O000);
write7279(DECODEI+2,Ox08);
译码方式 1,第 3位显示⋯8,显示控
制方法参照本文显示控制指令内容的
介绍,本条语句只是一个示例 ,
i珩ntl-flag)
如果标志位 intl_tlag为 1即 7279按
键有效则 ,
f
,/调用读取 7279按键代码的子函数
Y=read7279(CMD_READ);
intl
_ tlag=0; //清除
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
位
}
}
}
圜
维普资讯 http://www.cqvip.com