//==============================================================
// ZLG7289U.H
// 数码管显示与键盘管理芯片 ZLG7289 的NUC1XX驱动程序头文件
// 2011.09.18
//==============================================================
#ifndef _ZLG7289_H_
#define _ZLG7289_H_
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
//定义I/O 接口
#define CLR_CS DrvGPIO_ClrBit(E_GPA, 5)
#define SET_CS DrvGPIO_SetBit(E_GPA, 5)
#define OUT_CS DrvGPIO_Open(E_GPA, 5, E_IO_OUTPUT)
#define CLR_CLK DrvGPIO_ClrBit(E_GPA, 6)
#define SET_CLK DrvGPIO_SetBit(E_GPA, 6)
#define OUT_CLK DrvGPIO_Open(E_GPA, 6, E_IO_OUTPUT)
#define CLR_DIO DrvGPIO_ClrBit(E_GPA, 4)
#define SET_DIO DrvGPIO_SetBit(E_GPA, 4)
#define QUA_DIO DrvGPIO_Open(E_GPA, 4, E_IO_QUASI)
#define GETBIT_DIO DrvGPIO_GetBit(E_GPA, 4)
#define INPUT_DIO DrvGPIO_Open(E_GPA, 4, E_IO_INPUT)
#define CLR_KRY DrvGPIO_ClrBit(E_GPA, 3)
#define SET_KEY DrvGPIO_SetBit(E_GPA, 3)
#define INPUT_KEY DrvGPIO_Open(E_GPA, 3, E_IO_INPUT)
#define GETBIT_KEY DrvGPIO_GetBit(E_GPA, 3)
#define QUA_KEY DrvGPIO_Open(E_GPA, 3, E_IO_QUASI)
#define FMQ_OUT DrvGPIO_Open(E_GPB, 2, E_IO_OUTPUT);
#define FMQ_SET DrvGPIO_SetBit(E_GPB, 2);
#define FMQ_CLR DrvGPIO_ClrBit(E_GPB, 2);
//执行ZLG7289 纯指令
extern void ZLG7289_cmd(uint8_t cmd);
//执行ZLG7289 带数据指令
extern void ZLG7289_cmd_dat(uint8_t cmd, uint8_t dat);
//以下是ZLG7289 的用户指令集
//复位(清除)指令
#define ZLG7289_Reset() ZLG7289_cmd(0xA4)
//测试指令
#define ZLG7289_Test() ZLG7289_cmd(0xBF)
//左移指令
#define ZLG7289_SHL() ZLG7289_cmd(0xA0)
//右移指令
#define ZLG7289_SHR() ZLG7289_cmd(0xA1)
//循环左移指令
#define ZLG7289_ROL() ZLG7289_cmd(0xA2)
//循环右移指令
#define ZLG7289_ROR() ZLG7289_cmd(0xA3)
//下载数据
extern void ZLG7289_Download(uint8_t mod, uint8_t x, uint8_t dp, uint8_t dat);
//闪烁控制
// x 的8 个位分别对应数码管的8 个位,0-闪烁,1-不闪烁
#define ZLG7289_Flash(x) ZLG7289_cmd_dat(0x88,(x))
//消隐控制
// x 的8 个位分别对应数码管的8 个位,0-消隐,1-显示
#define ZLG7289_Hide(x) ZLG7289_cmd_dat(0x98,(x))
//段点亮指令
//seg=0~63,8 只数码管被看成64 只独立的LED
//每只数码管中各段的点亮顺序按照“g,f,e,d,c,b,a,dp”进行
#define ZLG7289_SegOn(seg) ZLG7289_cmd_dat(0xE0,(seg))
//段关闭指令
//seg=0~63,8 只数码管被看成64 只独立的LED
//每只数码管中各段的熄灭顺序按照“g,f,e,d,c,b,a,dp”进行
#define ZLG7289_SegOff(seg) ZLG7289_cmd_dat(0xC0,(seg))
//执行ZLG7289 键盘命令
extern char ZLG7289_Key();
//ZLG7289初始化
extern void ZLG7289_Init(void);
#endif //_ZLG7289_H_ |