資源簡介
針對研究數(shù)碼管顯示的初學(xué)者,本資源包含了TM1640-16位8段數(shù)碼管的驅(qū)動程序代碼,有助于初步學(xué)習如何驅(qū)動數(shù)碼管顯示

代碼片段和文件信息
#include?“TM1640.h“
unsigned?char?Display_Num[5]?=?{0x6f?0x7f?0x27?0x7d?0x6d}; //共陰數(shù)碼管顯示的數(shù)字
//初始化TM1640函數(shù)
void?TM1640_Init(void)
{
GPIO_InitTypeDef?GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA?ENABLE);
GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_1?|?GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_Init(GPIOA?&GPIO_InitStructure);
}
/**************************************************
?函數(shù)??:命令傳輸開始標志
?參數(shù)??:無
?返回值:?無
?*************************************************/
void?TM1640_Start(void)
{
TM1640_DIN_HIGH;
delay_us(2); //延時函數(shù)自己添加
TM1640_CLK_HIGH;
delay_us(2);
TM1640_DIN_LOW;
delay_us(2);
TM1640_CLK_LOW;
delay_us(2);
}
/**************************************************
?函數(shù)??:命令傳輸結(jié)束標志
?參數(shù)??:無
?返回值:?無
?*************************************************/
void?TM1640_End(void)
{
TM1640_CLK_LOW;
delay_us(2);
TM1640_DIN_LOW;
delay_us(2);
TM1640_CLK_HIGH;
delay_us(2);
TM1640_DIN_HIGH;
delay_us(2);
}
/**************************************************
?函數(shù)??:寫字節(jié)函數(shù)
?參數(shù)??:
dat?---?需要寫入的字節(jié)
?返回值:?無
?*************************************************/
void?TM1640_Write_Byte(unsigned?char?dat)
{
uint8_t?i;
for?(i?=?0;?i?8;?i++)
{
TM1640_CLK_LOW; //CLK的時鐘信號為低電平時,DIN上的信號才能改變
if?(dat?&?0x01) //低位先寫
{
TM1640_DIN_HIGH;
}
else
{
TM1640_DIN_LOW;
}
delay_us(2);
TM1640_CLK_HIGH;
delay_us(2);
dat?>>=?1;
}
}
/************************************************
?函數(shù)名?:?TM1640_Display
?參數(shù)???:?無
?返回值?:??無
?功能???:?數(shù)碼管顯示函數(shù),顯示存放在Display_Num中的數(shù)據(jù)
?*************************************************/
void?TM1640_Display(void)
{
int i;
//設(shè)置數(shù)據(jù)
TM1640_Start();
TM1640_Write_Byte(DATA_COMMAND_Z); //這里是通過地址自動+1方法
TM1640_End();
//設(shè)置地址
TM1640_Start();
TM1640_Write_Byte(ADDR_START); //開始地址是0xco,對應(yīng)DIG1然后地址會自動增加
for(i?=?0;i?5;?i++) //5個的數(shù)碼管
{
TM1640_Write_Byte(Display_Num[i]); //數(shù)碼管顯示的數(shù)據(jù){9?8?7?6?5}
}
TM1640_End();
//控制顯示
TM1640_Start();
TM1640_Write_Byte(DISP_OPEN); //控制顯示
TM1640_End();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2421??2015-12-18?13:13??TM1640\TM1640.c
?????文件?????????955??2015-12-18?13:12??TM1640\TM1640.h
?????文件??????661938??2015-12-17?15:22??TM1640\TM1640_V1.2.pdf
?????目錄???????????0??2015-12-18?13:13??TM1640\
評論
共有 條評論