📄 zlg7290b.c
字号:
/*
ZLG7290B.c
数码管显示与键盘管理芯片ZLG7290 的MSP430 驱动程序C 文件
说明:该库函数使用了IIC.c的库函数,故必须将IIC.C包含在工程中
在使用该库函数前,要在该头文件上,根据硬件实际电路进行端口修改
使用时,只需将ZLG7290B.C包含在工程中,在使用库函数的地方,包含头文件
ZLG7290B.H就行了
使用时,至少要调用一次ZLG7290_Init()初始化函数
该库函数不包含中断函数,用户需自行在必要的模块添加中断函数
Copyright (c) 2008,323实验室 罗佳芳
All rights reserved.
*/
#include "IIC.h"
#include "ZLG7290B.h"
/*
*函数: ZLG7290_Init()
*功能: 对ZLG7290进行初始化
*说明: 在使用键盘和LED时,必须调用这个初始化程序
*/
void ZLG7290_Init(void)
{
ZLG7290_intSEL &= ~ZLG7290_pinINT; //将中端位设置为外围功能
ZLG7290_intIFG &=~ZLG7290_pinINT; //清除中断标志
ZLG7290_intIE |= ZLG7290_pinINT; //使中断使能
ZLG7290_intIES |=ZLG7290_pinINT; //下降沿触发
_EINT(); //开总中断
}
/*
函数:ZLG7290_WriteReg()
功能:向ZLG7290 的某个内部寄存器写入数据
参数:
RegAddr:ZLG7290 的内部寄存器地址
dat:要写入的数据
返回:
0:正常
1:访问ZLG7290 时出现异常
*/
unsigned char ZLG7290_WriteReg(unsigned char RegAddr,unsigned char dat)
{
unsigned char b;
b = IIC(&dat,1,RegAddr,ZLG7290_IIC_WRITE); //调用IIC库函数,输出数据
return b;
}
/*
函数:ZLG7290_ReadReg()
功能:从ZLG7290 的某个内部寄存器读出数据
参数:
RegAddr:ZLG7290 的内部寄存器地址
dat:保存读出的数据
返回:
0:正常
1:访问ZLG7290 时出现异常
说明:读出的值会保存在dat指针所指的地址,只读一个字节
*/
unsigned char ZLG7290_ReadReg(unsigned char RegAddr,unsigned char *dat)
{
unsigned char b;
b = IIC(dat,1,RegAddr,ZLG7290_IIC_READ);
return b;
}
/*
函数:ZLG7290_cmd()
功能:向ZLG7290 发送控制命令
参数:
cmd0:写入CmdBuf0 寄存器的命令字(第1 字节)
cmd1:写入CmdBuf1 寄存器的命令字(第2 字节)
返回:
0:正常
1:访问ZLG7290 时出现异常
*/
unsigned char ZLG7290_cmd(char cmd0, char cmd1)
{
unsigned char b;
unsigned char buf[2];
buf[0] = cmd0;
buf[1] = cmd1;
b = IIC(buf,2,ZLG7290_CmdBuf,ZLG7290_IIC_WRITE);
return b;
}
/*
函数:ZLG7290_SegOnOff()
功能:段寻址,单独点亮或熄灭数码管(或LED)中的某一段
参数:
seg:取值0~63,表示数码管(或LED)的段号
b:0 表示熄灭,1 表示点亮
返回:
0:正常
1:访问ZLG7290 时出现异常
说明:
段寻址的命令字格式:
0 0 0 0 0 0 0 1 on 0 S5 S4 S3 S2 S1 S0
在每一位数码管中,段号顺序按照“a,b,c,d,e,f,g,dp”进行
*/
unsigned char ZLG7290_SegOnOff(char seg, unsigned char b)
{
char cmd;
cmd = seg & 0x3F; //D0~D5是段位
if ( b ) cmd |= 0x80; //最高位的0表示关,1表示亮
return ZLG7290_cmd(0x01,cmd); //段寻址的的命令字的第一个字节是0x01
}
/*
函数:ZLG7290_Download()
功能:下载数据并译码
参数:
addr:取值0~7,显示缓存DpRam0~DpRam7 的编号
dp:是否点亮该位的小数点,0-熄灭,1-点亮
flash:控制该位是否闪烁,0-不闪烁,1-闪烁
dat:取值0~31,表示要显示的数据
返回:
0:正常
1:访问ZLG7290 时出现异常
说明:
指令格式:
0 1 1 0 A3 A2 A1 A0 dp flash 0 d4 d3 d2 d1 d0
显示数据具体的译码方式请参见ZLG7290 的数据手册
*/
unsigned char ZLG7290_Download(char addr, unsigned char dp, unsigned char flash, char dat)
{
char cmd0;
char cmd1;
cmd0 = addr & 0x0F;
cmd0 |= 0x60;
cmd1 = dat & 0x1F;
if ( dp ) cmd1 |= 0x80;
if ( flash ) cmd1 |= 0x40;
return ZLG7290_cmd(cmd0,cmd1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -