tm1650.h
#ifndef _TM1650_H
#define _TM1650_H
#include "ecbm_core.h"
/*--------------------------------------变量定义-----------------------------------*/
typedef struct{
u8 model;
u8 id;
u8 scl;
u8 sda;
}tm1650_def;
#define TM1650 0x20
extern void tm1650_init(tm1650_def * dev,u8 model,u8 scl,u8 sda);
extern void tm1650_write(u8 add,u8 DATA);
#endif
tm1650.c
#include "tm1650.h"
u8 code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,//9
// 0 1 2 3 4 5 6 7 8 9
0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,//19
// 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
0x00,0x40};
//消隐 负号
void tm1650_init(tm1650_def * dev,u8 model,u8 scl,u8 sda){
dev->scl=scl; //将SCL引脚保存。
dev->sda=sda; //将SDA引脚保存。
dev->model=model; //将型号信息保存。
dev->id=soft_iic_init_linkage(scl,sda); //初始化引脚。
}
void tm1650_write(u8 add,u8 DATA)
{
soft_iic_start();
soft_iic_write(add);
soft_iic_read_ack();
soft_iic_write( DATA);
soft_iic_read_ack();
soft_iic_stop();
}
main.c
/*ECBM I2C SOFT 驱动TM1650测试例程*/
#include "ecbm_core.h" //加载库函数的头文件。
#include "tm1650.h"
extern u8 code tab[];
void main(void){
u8 i,j;
tm1650_def tm1650;
system_init(); //系统初始化函数,也是必须的。
delay_ms(500);
tm1650_init(&tm1650,TM1650,D21,D20);//IO的编号,比如P1.0脚就是D10,P2.3脚就是D23
//SDA=P2^0 SCL=P2^1;
tm1650_write(0x48,0x01);
while(1){
for(i=0;i<16;i++)
{
for(j=0;j<4;j++)
{
tm1650_write(0x68+2*j,tab[(j+i)%16]|0x80);
}
delay_ms(500);
}
}
}