#include "TM1628.h"
#include "TM1628.h"
#define uchar u8
//TM1628 IO初始化
void TM1628_IO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能PC端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_14; //LED0-->PA.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8
GPIO_SetBits(GPIOB,GPIO_Pin_15|GPIO_Pin_14); //PA.8 输出高
//PD.2 输出高
}
uchar const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xef,0x6f}; //共阴数码管0-9的编码
uchar KEY[5]={0}; //为存储按键值开辟的数组
//向TM1628发送8位数据,从低位开始------------------------
void send_8bit(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if(dat&0x01)
TM_1628_DIO =1;
else TM_1628_DIO=0;
TM_1628_CLK=0;
TM_1628_CLK=1;
dat=dat>>1;
}
}
//向TM1628发送命令--------------------------------------
void command(uchar com)
{
TM_1628_STB=1;
TM_1628_STB=0;
send_8bit(com);
}
//显示函数,1-7位数码管显示数字0-6----------------------------
void TM1628_display(void)
{
uchar i;
command(0x03); //设置显示模式,7位10段模式
command(0x40); //设置数据命令,采用地址自动加1模式
command(0xc0); //设置显示地址,从00H开始
for(i=0;i<7;i++) //发送显示数据
{
send_8bit(CODE[i]); //从00H起,偶数地址送显示数据
send_8bit(0); //因为SEG9-14均未用到,所以奇数地址送全“0”
}
command(0x8F); //显示控制命令,打开显示并设置为最亮
//read_key(); //读按键值
TM_1628_STB=1;
}
评论12