資源簡介
stm32-tm1650驅動程序帶pdf文件,加入直接可用,可修改引腳接口

代碼片段和文件信息
#include?“tm1650.h“
#include?“stdbool.h“
void?dtmelay(unsigned?char?x)
{
unsigned?char?i;
for(;x>0;x--)?for(i=110;i>0;i--);
}
void?TM16_SDA_IN(void?) //設置SDA為輸入模式
{
GPIO_InitTypeDef?GPIO_INIT; //設置SDA為輸入模式
GPIO_INIT.GPIO_Mode=GPIO_Mode_IPU;
GPIO_INIT.GPIO_Pin=TM16_SDA;
GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(TM16_PORT&GPIO_INIT);
}
void?TM16_SDA_OUT(void?) //設置SDA為輸出模式
{
GPIO_InitTypeDef?GPIO_INIT;
GPIO_INIT.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_INIT.GPIO_Pin=TM16_SDA;
GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(TM16_PORT&GPIO_INIT);
}
void?TM16_IIC_Start(void?) //開始信號
{
TM16_SDA_H;
TM16_SCL_H;
TM16_delay(5);
TM16_SDA_L;
TM16_delay(5);
TM16_SCL_L;
}
void?TM16_IIC_Stop(void?) //停止信號
{
TM16_SDA_L;
TM16_SCL_H;
TM16_delay(5);
TM16_SDA_H;
TM16_delay(5);
TM16_SCL_L;
}
bool?TM16_Read_ACK(void?) //讀取應答信號
{
bool?ack;
TM16_SDA_IN();
TM16_SCL_H;
if(TM16_ReadSDA()?==?SET)?ack=true;
else?ack=false;
TM16_SCL_L;
TM16_delay(5);
TM16_SDA_OUT();
return?ack;
}
void?TM16_Send_ACK(bool?ack)
{
TM16_SDA_OUT();
if(ack?==?true)?TM16_SDA_H;
else?TM16_SDA_L;
TM16_SCL_H;
TM16_delay(5);
TM16_SCL_L;
}
void?TM16_Send_Byte(unsigned?char?byte) //發送一位數據
{
unsigned?char?count;
TM16_SCL_L;
for(count=0;count<8;count++)
{
if(byte?&?0x80)?TM16_SDA_H;
else?TM16_SDA_L;
byte<<=1;
TM16_delay(2);
TM16_SCL_H;
TM16_delay(5);
TM16_SCL_L;
TM16_delay(5);
}
TM16_Read_ACK();
}
unsigned?char?TM16_Read_Byte(void?) //讀取一位數據
{
unsigned?char?bytecount;
TM16_SDA_IN();
TM16_SDA_H;
for(count=0;count<8;count?++)
{
TM16_SCL_H;
byte<<=1;
if(TM16_ReadSDA()?==?SET)?byte|=0x01;
else?byte&=0xfe;
TM16_SDA_L;
TM16_delay(5);
}
TM16_SDA_IN();
return?byte;
}
void?TM16_Write_REG(unsigned?char?reg?unsigned?char?data) //寫命令,設置
{
TM16_IIC_Start();
TM16_Send_Byte(reg);
TM16_Send_Byte(data);
TM16_IIC_Stop();
}
void?TM16_Set_Brig(unsigned?char?BRIG) //設置數碼管顯示的亮度
{
unsigned?char?brig[]={0x110x210x310x410x510x610x710x01};
if((BRIG>=0)?&&?(BRIG?<=7))?TM16_Write_REG(0x48brig[BRIG]);
else?TM16_Write_REG(0x48brig[0]);
}
void?TM16_INIT(unsigned?char?brig) //TM165?的初始化??brig為初始化亮度0-7
{
GPIO_InitTypeDef?GPIO_INIT;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB?ENABLE);
GPIO_INIT.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_INIT.GPIO_Pin=TM16_SDA?|?TM16_SCL;
GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(TM16_PORT&GPIO_INIT);
TM16_Set_Brig(brig);
}
void?TM16_Display(unsigned?char?dataunsigned?char?di) //顯示函數,data為顯示的數據,0-99,di設置是否顯示小數點,0為都不顯示小數點,1為第一位顯示小數點,2為第二位顯示小數點,3為第一位和第二位都顯示小數點
{
static?unsigned?char?TM16_Display_buf[10]={0x3F0x60x5B0x4F0x660x6D0x7D0x70x7F0x6F};
unsigned?char?geshi;
ge=(int)data%10;
if(!(shi=data/10))?shi=0;
if(di==1)?{ge=TM16_Display_buf[ge]+0x80;shi=TM16_Display_buf[shi];} //第一位顯示小數點
else?if(di==2)?{ge=TM16_Display_buf[ge];shi=TM16_Display
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3428??2017-11-02?17:41??tm1650.c
?????文件?????????927??2017-11-02?17:45??tm1650.h
?????文件??????477329??2018-10-24?08:38??TM1650_datasheet.pdf
評論
共有 條評論