#include "TM1639.h"
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
unsigned char show4[16],show1[16],show3[16],show2[16],show_led[16];
u8 code_table_cc[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0-F
u8 code_table_cc1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
void TM1639_OutPut_Mode(){
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void TM1639_InPut_Mode(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void CS_control(long STB,u8 bit)
{
switch (STB)
{
case 1:PBout(15)=bit;break;
case 2:PBout(14)=bit;break;
case 3:PBout(13)=bit;break;
case 4:PBout(12)=bit;break;
default:break;
}
}
void delay_xus(u16 x)
{
u16 i=0;
delay_us(100);
#if 0
for(i=0;i<x;i++)
{
delay_us(500);
delay_us(500);
delay_us(500);
}
#endif
}
void out_8bit(u8 output)
{
u8 i=0;
for(i=0;i<8;i++)
{
IIC_SCL2=0;
//delay_xus(500);
if(output&0x01)
{
IIC_SDA2=1;
delay_xus(500);
}
else
{
IIC_SDA2=0;
delay_xus(500);
}
//delay_xus(200);
IIC_SCL2=1;
delay_xus(500);
output=output>>1;
}
IIC_SDA2=0;
delay_xus(500);
IIC_SCL2=0;
delay_xus(500);
}
//*****************************
//写入输入1个字节(8bit)到TM1639
//输出8bit数据
//时钟上升沿写入数据
//*****************************
void outdata(u8 output,u8 STB)
{
u8 i;
CS_control(STB,1);
CS_control(STB,0);
for(i=0;i<8;i++)
{
IIC_SCL2=0;
if(output&0x01)
{
IIC_SDA2=1;
delay_xus(500);
}
else
{
IIC_SDA2=0;
delay_xus(500);
}
IIC_SCL2=1;
delay_xus(500);
output=output>>1;
}
IIC_SDA2=0;
delay_xus(500);
IIC_SCL2=0;
delay_xus(500);
}
//***********************
//读取TM1639输入1个字节(8bit)
//上升沿读取1组数据
/************************/
u8 indata(long STB)
{
u8 i,in=0;
SDA2_IN();
IIC_SDA2=1;
STB=0;
for(i=0;i<8;i++)
{
IIC_SCL2=0;
in=in>>1;
if(READ_SDA2==0)
in=in&0x7f;
else
in=in|0x80;
IIC_SCL2=1;
}
return(in);
}
void Cathode_to_Anode(unsigned char show[16])
{
u8 ydata;
unsigned char cnt1,cnt2,temp,conver[16];
for(cnt1=0;cnt1<16;cnt1++)
{
conver[cnt1]=show[cnt1];
}
for(cnt1=0;cnt1<8;cnt1++)
{
ydata=0x00;
for(cnt2=0;cnt2<8;cnt2++)
{
temp=conver[cnt2];
if((temp&0x01)==1) ydata=ydata|0x80;
else ydata=ydata|0x00;
if(cnt2<7) ydata>>=1;
conver[cnt2]=conver[cnt2]>>1;
}
show_led[cnt1*2]=ydata;
ydata=0x00;
for(cnt2=0;cnt2<8;cnt2++)
{
temp=conver[cnt2+8];
if(temp&0x01) ydata=ydata|0x80;
else ydata=ydata|0x00;
if(cnt2<7) ydata>>=1;
conver[cnt2+8]=conver[cnt2+8]>>1;
}
show_led[cnt1*2+1]=ydata;
}
}
//*****************************
//采用固定地址方式传输地址和数据开始
//采用固定地址方式
//*****************************
void dispaly2(u8 adress,u8 data,long STB)
{
IIC_SDA2=1;
IIC_SCL2=1;
STB=1;
outdata(MD_FIX,STB);
STB=1;
outdata(adress,STB);
outdata(data,STB);
STB=1;
}
//初始化IIC
void TM1639_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
IIC_SCL2=1;
IIC_SDA2=1;
STB1=1;
STB2=1;
STB3=1;
STB4=1;
}
void SeriesOutData(u8 statAddr,u8 *data,u8 len,u8 level,u8 STB)
{
int i;
u8 temp;
IIC_SDA2=1;
IIC_SCL2=1;
outdata(0x40,STB);
outdata(0xc0,STB);
for(i=0;i<16;i++)
{
out_8bit(show_led[i]);
}
outdata(0x8f,STB);
CS_control(STB,1);
}
void OneByteOutData(u8 statAddr,u8 *data,u8 level,long STB)
{
int i;
IIC_SDA2=1;
IIC_SCL2=1;
STB=1;
outdata(MD_AUTO,STB);
STB=1;
outdata(statAddr,STB);
{
outdata(*data&0x0f,STB);
outdata(*data>>4&0x0f,STB);
// ++data;
}
STB=1;
outdata(level,STB);
STB=1;
}
void ClearAll(long STB)
{
int i;
IIC_SDA2=1;
IIC_SCL2=1;
STB3=1;
outdata(MD_AUTO,STB);
STB3=1;
outdata(DIG0,STB);
for(i=0;i<16;i++)
outdata(0x0f,STB);
STB3=1;
outdata(0X80,STB);
STB3=1;
}
TM1639示例+物联网+单片机驱动+stm32+共阴极数码管+数码管显示
5星 · 超过95%的资源 需积分: 5 69 浏览量
2023-05-23
17:12:52
上传
评论 1
收藏 2KB RAR 举报
weixin_43253439
- 粉丝: 0
- 资源: 5
最新资源
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.1-cp39-cp39-manylinux2010-x86-64.whl
- 蓝桥杯2024年第十五届省赛真题-传送阵
- com.qihoo.appstore_300101305.apk
- linux之线程同步一.doc
- keil5配色方案10种
- python烟花代码.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页