📄 7290.h
字号:
#include <avr/io.h>
#include "i2c.h"
#include "i2c.c"
#include "styte.h"
#include <delay.c>
#define zlg7290 0x70
//0x70是zlg7290的从地址
#define SubKey 0x01
//键值寄存器Key(地址:01H),码键值子地址
#define SubCmdBuf 0x07
//寄存器CmdBuf0(地址:07H),命令缓冲区子地址
#define SubDpRam 0x10
//显示缓冲区DpRam0(地址:0x10),显示子地址
/*状态标志*/
uchar disp_buf[8]={0,0,0,0,0,0,0,0};
uchar rd[8]={1,2,3,4,5,6,7,8}; //1234-56-78
/********************************************************************************************/
/*************************以下是对ZLG7290的定义和使用****************************************/
/********************************************************************************************/
/**************************ZLG7290库函数程序**************************************************/
/*ZLG7290的I2C接口传输速率可达32kbit/s,容易与处理器接口.并提供键盘中断信号,提高主处
理器时间效率.ZLG7290的从地址 (slave address)为70H(01110000B).*/
/*ZLG7290B的I2C总线器件地址是70H(写操作)和71H(读操作).*/
/*ZLG7290提供两种控制方式:寄存器映象控制和命令解释控制,
寄存器映象控制是指直接访问底层寄存器,实现基本控制功能,这些寄存器须字节操作
命令解释控制是指通过解释命令缓冲区(CmdBuf0CmdBuf1)中的指令,间接访问底层寄存器实
现扩展控制功能.如实现寄存器的位操作,对显示缓存循环,移位;对操作数译码等操作.*/
//***************寄存器映象控制******************//
/***********************************************************************
** 函数名称: ZLG7290_SendData
** 功能描述: 发送数据
** 输 入:SubAdd : 输入数据
** DATA : 输入值
**
** 输 出: 0 : Fail
** 1 : OK
** 全局变量: 无
** 调用模块: delayMS
**--------------------------------------------------------------------------------------------------
***********************************************************************/
//功能:向器件地址为zlg7290的ZLG7290芯片的SubAdd地址的寄存器写一字节Data
uchar ZLG7290_SendData(uchar SubAdd,uchar Data)
{
if(SubAdd>0x17)//0x17表示:DpRam0~7的最大地址,它的范围是(0x10~0x17),共八位数码管
return 0;//超出于0x17的范围,即超出八位数码管数目就返回0
twi_write_byte(zlg7290,SubAdd,Data);//twi_write_byte为发送一字节,zlg7290表示从机,SubAdd为地址,Data为数据
DelayMs11(10);
return 1;
}
//************发送命令函数***********************/
/***********************************************************************
** 函数名称: ZLG7290_SendCmd
** 功能描述: 发送命令(对子地址7、8)
** 输 入:DATA1 : 命令1
** DATA2 : 命令2
**
** 输 出: 0 : Fail
** 1 : OK
** 全局变量: 无
** 调用模块: TWI_Send_Mux、delayMS
**--------------------------------------------------------------------------------------------------
***********************************************************************/
//功能:向命令缓冲区0x07、0x08发送命令,(0x07~0x08是CmdBuf0~2命令接口:包括译码,移位)
// 寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同组成命令缓冲区。
//通过向命令缓冲区写入相关的控制命令可以实现段寻址、下载显示数据、控制闪烁等功能
uchar ZLG7290_SendCmd(uchar Data1,uchar Data2)
{uchar Data[2];
Data[0]=Data1;
Data[1]=Data2;
twi_write_str(zlg7290,0x07,Data,2);//twi_write_str发送N个字节(这里N为2),zlg7290为从机,0x07是地址
DelayMs11(10);
return 1;
}
//**********向显示缓冲区送显示数据***************
/***********************************************************************
** 函数名称: ZLG7290_SendBuf
** 功能描述: 向显示缓冲区发送数据
** 输 入: * disp_buf : 要发送数据的起始地址
** num : 发送个数
**
** 输 出: 无
** 全局变量: 无
** 调用模块: ZLG7290_SendCmd
**--------------------------------------------------------------------------------------------------
***********************************************************************/
//功能:送显示数据。需要给出显示缓冲区首址和显示的数据个数(<8个)
/*显示缓存寄存器(DpRam0~DpRam7):地址10H~17H,复位值00H~00H.缓存中一位置
1表示该像素亮,DpRam7~DpRam0的显示内容对应Dig7~Dig0引脚 */
/*void ZLG7290_SendBuf(uchar *disp_buf,uchar num)
{uchar i;
for(i=0;i<num;i++)
{
//ZLG7290_SendCmd(0x60+i,*disp_buf);//在第i位数码管译码并显示DpBuf[i]
disp_buf++;
DelayMs(10);
}
}
/***********取得按键编号****************/
/***********************************************************************
** 函数名称: ZLG7290_GetKey
** 功能描述: 读取键值
** 输 入: 无
**
** 输 出: >0 键值
** =0 无键按下
** 全局变量: 无
** 调用模块: TWI_Receive、delayMS
**
**-------------------------------------------------------------------------------------------------
***********************************************************************/
/*uchar ZLG7290_GetKey()
{uchar rece;
rece=twi_read_byte(zlg7290,1);//键值寄存器Key地址是01H,所以此处Address=1;zlg7290为从机
DelayMs(10);
return rece;
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -