设为首页 收藏本站
网站首页 | 学习天地 | 资料下载 | 产品介绍 | 软件下载 | 邮购说明 | 联系方式 | 发货查询 | 轻松一下 | 万年日历

 

第四章 EM78系列单片机程序设计 ( 3 end )

 

 

5.3.7.  串行实时时钟芯片的接口

HT1380串行实时时钟芯片具有接口简单、功耗低、工作电压范围宽、计时精确、功能全(可对分、秒、时、日、日期、月及带闰年补偿的年进行计数)、成本低等优点,因此在实际应用中被广泛采用,下面先简单介绍一下该芯片的情况,然后实际工作中采用的子程序供读者参考。
HT1380是一种串行实行时时钟芯片,它提供秒、分、时、日、日期、月和年的信息。对于小于31天的月的月末日期能自动进行调整,还包括闰年校正功能。低功耗设计且时钟的运行可以采用24小时格式或带AM/PM指示的12小时的格式。HT1380含有若干寄存器用以存储相应信息。采用外部32.768KHZ晶振以提供正确定时。最少引脚数的串行I/0通信方式。与微处理器通信仅需三根线:1.YRST(复位)2.YSCLK(串行时钟)3.YIO(数据线).数据传送采用两种模式,即单字节模式和多字节模式(至多为8个字节,每一数据传送由命令字节初始化,命令字节如下所示,最高位MSB(位7)必须置1;最低位LSB(位0)置1/0,表示为写/读周期;位3--1指定所需访问的寄存器。

1.引脚排列
    2.引脚说明
   X1,X2:   32.768KHZ晶体振荡器引脚
   VSS:      地
   YRST:     串行通信复位引脚
   YIO:       串行通信数据输入/输出引脚
   YSCLK:    串行通信的串行时钟脉冲引脚
       VDD:      电源
3.命令字节
每一数据传送由命令字节初始化。命令字节如下所示,最高位MSB(位7)必须置1;最低位LSB(位0)置I/O,表示为写/读周期;位3~1指定所需访问的寄存器。
下表显示寄存器地址和它的数据格式:
Pegister
Address
A2~A0
Function
Command
Address
(HEX)
Write=w
Read=R
Range
Data
(BCD)
Register Definition
7
6
5
4
3
2
1
0
0
Seconds
80
81
W
R
00~59
CH
10SEC
SEC
1
Minutes
82
83
W
R
00~59
0
10MIN
MIN
2
12HRS
24HRS
84
85
W
R
01~12
00~23
12
24
0
0
AP
10
HR
HR
HOUR
3
Date
86
87
W
R
01~31
0
0
10DATE
DATE
4
Month
88
89
W
R
01~12
0
0
0
10M
MONTH
5
Day
8A
8B
W
R
01~07
0
0
0
0
DAY
6
Year
8C
8D
W
R
00~09
10YEAR
YEAR
7
Write
Protect
8E
8F
W
R
00~80
WP
ALWAYS ZERO
注:*CH: 时钟暂停标志                 *寄存器2的位7:  12/24模式标志
            CH=0 允许振荡器工作                            位7=1:  12小时模式
            CH=1时钟振荡器停止                            位7=1:24小时模式
    *WP:  写保护位                     *寄存器2的位5:  AM/PM模式设置
            WP=0 允许写人数据                             AP=1  PM模式
            WP=1 禁止写人数据                             AP=0  AM模式
4. 图5.11为单字节及多字节模式传送时隙

 

 
图5.11 单字节及多字节模式传送时隙

4.         应用框图
             
 
6.实际例程清单:

HT1380                        EQU 0X06
COUNT0                     EQU 0X10
TXBUF                        EQU 0X11
RXBUF                        EQU 0X12
DATABUF           EQU 0X13
ADDRPOINT              EQU 0X14
HT_SDA_IN                EQU 0B01001000
HD_SDA_OUT  EQU 0B00001000
HT_SCL                       EQU 0
HT_RST                      EQU 1
Ht_SDA                        EQU 2
;
TX_1380:  MOV         A,@HT_SDA_OUT
                            IOW          HT1380
                            BC              HT1380,HT_SCL
                            MOV         A,@8
                            MOV         COUNT0,A
TX_1380_LP:    
                            BC              HT1380,HT_SDA
                            JBC            TXBUF,0
                            BS              HT1380,HT_SDA
                            BS              HT1380,HT_SCL
                            RRC           TXBUF
                            BC              HT1380,HT_SCL
DJZ           COUNT0
JMP           TX_1380_LP
RET
;读HT1380子程序
READ_HT:         
                            MOV         TXBUF,A
                            BC              HT1380,HT_SCL
                            BS              HT1380,HT_RST
                            MOV         A,@HT_SDA_OUT
                            IOW          HT1380
                            MOV         A,@8
                            MOV         COUNT0,A
TX_1_LP:
                            BC              HT1380,HT_SDA
                            JBC            TXBUF,0
                            BS              HT1380,HT_SDA
                            BS              HT1380,HT_SCL
                            RRC           TXBUF
                            BC              HT1380,HT_SCL
                            DJZ            COUNT0
                            JMP           TX_1_LP
                            MOV         A,@HT_SDA_IN
                            IOW          HT1380
                            MOV         A,@8
                            MOV         COUNT0,A
RX_1380_LP:
                            RRC           RXBUF
                            BC              RXBUF,7
                            JBC            HT1380,HT_SDA
                            BS              RXBUF,7
                            BS              HT1380,HT_SCL
                            BC              HT1380,HT_SCL
                            DJZ            COUNT0
                            JMP           RX_1380_LP
                            BC              HT1380,HT_RST
                            RET
;写HT1380子程序
WRITE_HT:
                            MOV         ADDRPOINT,A
                            BC              HT1380,HT_SCL
                            BS              HT1380,HT_RST
                            MOV         A,@0B1000110
                            MOV         TXBUF,A
                            CALL         TX_1380
CLR           TXBUF
CALL        TX_1380
BC             HT1380,HT_RST
NOP
BS              HT1380,HT_RST
MOV         A,ADDRPOINT
                            MOV         TXBUF,A
                            CALL         TX_1380
MOV         A,DATABUF
MOV         TXBUF,A
CALL        TX_1380
BC             HT1380,HT_RST
NOP
BS              HT1380,HT_RST
MOV         A,@0B10001110
MOV         TXBUF,A
CALL        TX_1380
MOV         A,@0B10000000
MOV         TXBUF,A
CALL        TX_1380
BC             HT1380,HT_RST
MOV         A,HT_SDA_IN
IOW          HT1380
RET
END

5.3.8.  HD7279串行接口8位LED数码管及64键键盘智能控制芯片

 

HD7279(A)是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵。
HD7279内部含有译码器,可直接接受16进制码,HD7279A还同时具有2种译码方式,HD7279(A)还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
特点:
·串行接口
·各位独立控制译码/不译码及消隐和闪烁属性
·(循环)左移/(循环)右移指令
·具有段寻址指令,方便控制独立LED
·64键键盘控制器,内含去抖动电路
控制指令
HD7279的控制指令分为二大类——纯指令和带有数据的指令。
·纯指令
1、复位(清除)指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
1
0
0
当HD7279收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。
2、测试指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
1
1
1
1
1
该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试
3、左移指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
0
0
1
使所有的显示自右向左(从第1位向第8位)移动一位(包括处于消隐状态的显示位),但对各位所设置的消隐及闪烁属性不变。移动后,最右边一位为空(无显示)。例如,原显示为
4
2
5
2
L
P
3
9
其中第2位‘3’和第4位‘L’为闪烁显示,执行了左移指令后,显示变为
2
5
2
L
P
3
9
 
第二位‘9’和第四位‘P’为闪烁显示。
4、右移指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
0
0
0
与左移指令类似,但所做移动为自左向右(从第8位向第1位)移动,移动后,最左边一位为空。
 
5、循环左移指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
0
1
1
与左移指令类似,不同之处在于移动后原最左边一位(第8位)的内容显示于最右位(第1位)。在上例中,执行完循环左移指令后的显示为
2
5
2
L
P
3
9
4
第二位‘9’和第四位‘P’为闪烁显示。
6、循环右移指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
0
1
0
与循环左移指令类似,但移动方向相反。
·带有数据的指令
1、下载数据且按方式0译码
D7
D6
D5
D4
D3
D2
D1
D0
 
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
0
0
a2
a1
a0
 
DP
X
X
X
d3
d2
d1
d0
X=无影响
命令由二个字节组成,前半部分为指令,其中a2 ,a1,a0为位地址,具体分配如下:
a2
a1
a0
显示位
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1
8
d0—d3为数据,收到此指令时,HD7279(A)按以下规则(译码方式0)进行译码,如下表:
 
十六进制
d3
d2
d1
d0
7段显示
00H
0
0
0
0
0
01H
0
0
0
1
1
02H
0
0
1
0
2
03H
0
0
1
1
3
04H
0
1
0
0
4
05H
0
1
0
1
5
06H
0
1
1
0
6
07H
0
1
1
1
7
08H
1
0
0
0
8
09H
1
0
0
1
9
0AH
1
0
1
0
-
0BH
1
0
1
1
E
0CH
1
1
0
0
H
0DH
1
1
0
1
L
0EH
1
1
1
0
P
0FH
1
1
1
1
空(无显示)
小数点的显示由DP位控制,DP=1时,小数点显示,DP=0时,小数点不显示。
2、下载数据且按方式1译码(仅对HD7279A有效)
 
D7
D6
D5
D4
D3
D2
D1
D0
 
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0
0
1
a2
a1
a0
 
DP
X
X
X
d3
d2
d1
d0
X=无影响
此指令与上一条指令基本相同,所不同的是译码方式,且只有HD7279A才具有此指令。该指令的译码按下表进行:
 
 
 
 
十六进制
d3
d2
d1
d0
7段显示
00H
0
0
0
0
0
01H